[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,
+ >K_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 = ▭
+ 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, ¶graph, 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"><b>Bounds</b></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"><b>Mapping</b></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"><b>Major ticks</b></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"><b>Minor ticks</b></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"><b>Position</b></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"><b>Plot area position</b></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"><b>Error category</b></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"><b>Style</b></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"><b>Values</b></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"><b>_Plot type</b></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"><b>_Subtype</b></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"><b>Description</b></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 = >K_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"><b>Manual position</b></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"><b>Automatic position</b></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,
+ ©_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"><b>Outline</b></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"><b>Line</b></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"><b>Fill</b></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"><b>Marker</b></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"><b>Orientation</b></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 (¤t,
+ G_PARAM_SPEC_VALUE_TYPE (pspec));
+ g_object_get_property (obj, pspec->name, ¤t);
+ doit = g_param_values_cmp (pspec, ¤t, value);
+#if 0
+ g_print ("%2d: old: [%s] new: [%s]\n",
+ g_param_values_cmp (pspec, ¤t, value),
+ g_strdup_value_contents (value),
+ g_strdup_value_contents (¤t));
+#endif
+ g_value_unset (¤t);
+ } 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, ®ression_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, ®ression_stat->ss_total);
+ else
+ err = SUFFIX(go_range_sumsq) (ys, n, ®ression_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, ®ression_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, ®ression_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/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+
+ return $_;
+}
+
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</g;
+ s/>/>/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 < - < but not > - > because it seems its ok to have
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</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 """ if $_ == 34;
+ return "&" if $_ == 38;
+ return "'" if $_ == 39;
+ return "<" 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 í in ì
+#: 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 II. 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 I. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< Part I. GSF Overview</b></a></td>
+<td align="right"><a accesskey="n" href="io.html"><b>Basic Input/Output >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< GnomeVFS</b></a></td>
+<td align="right"><a accesskey="n" href="parsers.html"><b>Stream Parsers >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td> a <span class="type">GError</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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: >= -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><< Zip</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-MS-OLE2.html"><b>MS OLE2 >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> A <span class="type">GIOChannel</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< memory</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GnomeVFS.html"><b>GnomeVFS >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< GIOChannel</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Bononbo.html"><b>Bononbo >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — 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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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><< metadata</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GsfClipData.html"><b>GsfClipData >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — 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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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><< GsfBlob</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Structured-Blobs.html"><b>Structured Blobs >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> the structured storage
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>i</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</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> :</span></td>
+<td> the rest of the names
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>i</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< Stream Sources</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Outfile-writing-structed-files.html"><b>Outfile writing structed files >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>num_bytes</code></em> :</span></td>
+<td> number of bytes to read
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>optional_buffer</code></em> :</span></td>
+<td> NULL, or pointer to destination memory area
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em> :</span></td>
+<td> target offset
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>whence</code></em> :</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> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The input to duplicate
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The input
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em> :</span></td>
+<td> the (fs-sys encoded) filename
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em> :</span></td>
+<td> Offset into source for start of section.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
+<td> Length of section.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</span></td>
+<td> stream to be uncompressed.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</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> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
+<td> the size of the stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> stream to emulate seek for
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>pos</code></em> :</span></td>
+<td> absolute position to seek to
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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: >= 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: >= 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: >= 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><< Basic Input/Output</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Output-to-unstructured-files.html"><b>Output to unstructured files >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td> size of large blocks.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>sb_size</code></em> :</span></td>
+<td> size of small blocks.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td> a kludge to differentiate DocumentSummary from Summary
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>from</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td>an iconv converter to go from utf8 -> 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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>codepage</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td>an iconv converter for <em class="parameter"><code>codepage</code></em> -> 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> :</span></td>
+<td>an iconv convert to go from utf8 -> 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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td>an iconv converter to go from utf8 -> 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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</span></td>
+<td>an iconv converter for single byte encodings <em class="parameter"><code>codepage</code></em> -> 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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> stream to read from
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em> :</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> :</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><< Compression</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-metadata.html"><b>metadata >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_dir</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>args</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< 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 >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>offset</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>whence</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>num_bytes</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td> The printf-style format string
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</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> :</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> :</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> :</span></td>
+<td> The printf-style format string
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>args</code></em> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the output stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>filename</code></em> :</span></td>
+<td> the (fs-sys encoded) filename
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>code</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapee</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>wrapee</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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: >= 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: >= 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><< Input from unstructured files</b></a></td>
+<td align="right"><a accesskey="n" href="sources.html"><b>Stream Sources >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> in utf8.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> name of file to create or replace.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> name of file to create or replace.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td> NULL terminated list of properties
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>var_args</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td> an existing stdio FILE *
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>keep_open</code></em> :</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> :</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> :</span></td>
+<td> root directory in utf8.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>var_args</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> in locale dependent encoding
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td> optionally NULL.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< Outfile writing structed files</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-memory.html"><b>memory >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>container</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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><< GsfClipData</b></a></td>
+<td align="right"><a accesskey="n" href="misc.html"><b>Miscellaneous >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td> in some combination of ascii and utf8
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> The underlying data source.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dst</code></em> :</span></td>
+<td> The target character set.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>src</code></em> :</span></td>
+<td> The source character set.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>field</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< Stream Parsers</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-XML-and-libxml.html"><b>XML and libxml >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>uri</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>cur</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>encoding</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>format</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>has_content</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>start</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>end</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>user</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>has_content</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>start</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>end</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>elem</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>attrs</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> an array of node descriptors
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns</code></em> :</span></td>
+<td> an array of namespace identifiers
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td> The potentially namespace qualified node name.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns_id</code></em> :</span></td>
+<td> The name space id to check
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td> The target node name
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>input</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>str</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>ns_id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>nodes</code></em> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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 <!DOCTYPE .. > 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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val_utf8</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val_utf8</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
+<td> the value
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>precision</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>etype</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>r</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>g</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td> optionally NULL for content
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>data</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>content</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>precision</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>id</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>val</code></em> :</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><< Text</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Zip.html"><b>Zip >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>err</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>method</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>free_dirent</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>is_directory</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dirent</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>child</code></em> :</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)>>3)&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> :</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)&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> :</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)>>1)&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> :</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><< XML and libxml</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Compression.html"><b>Compression >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</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> :</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> :</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> :</span></td>
+<td> The input bytes
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>length</code></em> :</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> :</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> :</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> :</span></td>
+<td> The input bytes
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>length</code></em> :</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> :</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> :</span></td>
+<td> a <span class="type">GIOChannel</span>.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>error</code></em> :</span></td>
+<td> a <span class="type">GError</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> the output device.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>needs_free</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>size</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< Reading and Writing from local files and directories</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GIOChannel.html"><b>GIOChannel >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>value</code></em> :</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> :</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>func</code></em> :</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> :</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> :</span></td>
+<td> the collection
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</span></td>
+<td> the property
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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><< MS OLE2</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-GsfBlob.html"><b>GsfBlob >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 — </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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_finalize</code></em> :</span></td>
+<td>
+@\
+ class_init:
+@\
+ class_init:
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_finalize</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_type</code></em> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>base_finalize</code></em> :</span></td>
+<td>
+@\
+ class_init:
+@\
+ class_init:
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_finalize</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent_type</code></em> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>prefix</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>class_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>instance_init</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>parent</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>init_func</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>iface_type</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>module</code></em> :</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> :</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> :</span></td>
+<td> memory area to be dumped.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</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> :</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> :</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> :</span></td>
+<td> file name suitable for open(2).
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>quoted</code></em> :</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> :</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> :</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> :</span></td>
+<td> A filename or file path.
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>inlen</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>break_lines</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>save</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>break_lines</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>save</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td> input stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>len</code></em> :</span></td>
+<td> max length of data to decode
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>out</code></em> :</span></td>
+<td> output stream
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>state</code></em> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>dat</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>f</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>d</code></em> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>seconds</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>tz</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>b</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>stamp</code></em> :</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> :</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> :</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> :</span></td>
+<td> <span class="type">GValue</span>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><span class="emphasis"><em>Returns</em></span> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_params</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>p_n_params</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>first_property_name</code></em> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>...</code></em> :</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> :</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> :</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> :</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> :</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> :</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> :</span></td>
+<td>
+</td>
+</tr>
+<tr>
+<td>
+<span class="term"><em class="parameter"><code>n_params</code></em> :</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><< Miscellaneous</b></a></td>
+<td align="right"><a accesskey="n" href="ix01.html"><b>Index >></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 "eof" property" link="gsf-Input-from-unstructured-files.html#GsfInput--eof"/>
+ <function name="The "name" property" link="gsf-Input-from-unstructured-files.html#GsfInput--name"/>
+ <function name="The "position" property" link="gsf-Input-from-unstructured-files.html#GsfInput--position"/>
+ <function name="The "remaining" property" link="gsf-Input-from-unstructured-files.html#GsfInput--remaining"/>
+ <function name="The "size" 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 "is-closed" property" link="gsf-Output-to-unstructured-files.html#GsfOutput--is-closed"/>
+ <function name="The "name" property" link="gsf-Output-to-unstructured-files.html#GsfOutput--name"/>
+ <function name="The "position" property" link="gsf-Output-to-unstructured-files.html#GsfOutput--position"/>
+ <function name="The "size" 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 "compression-level" property" link="gsf-Zip.html#GsfInfileZip--compression-level"/>
+ <function name="The "internal-parent" property" link="gsf-Zip.html#GsfInfileZip--internal-parent"/>
+ <function name="The "source" property" link="gsf-Zip.html#GsfInfileZip--source"/>
+ <function name="The "compression-level" property" link="gsf-Zip.html#GsfOutfileZip--compression-level"/>
+ <function name="The "entry-name" property" link="gsf-Zip.html#GsfOutfileZip--entry-name"/>
+ <function name="The "sink" 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 "raw" property" link="gsf-Compression.html#GsfInputGZip--raw"/>
+ <function name="The "source" property" link="gsf-Compression.html#GsfInputGZip--source"/>
+ <function name="The "uncompressed-size" 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 I. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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 I. GSF Overview >></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 I. 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 II. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< GSF Reference Manual</b></a></td>
+<td align="right"><a accesskey="n" href="api.html"><b>Part II. API Reference >></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 II. API Reference">
+<link rel="prev" href="api.html" title="Part II. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< Part II. API Reference</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Input-from-unstructured-files.html"><b>Input from unstructured files >></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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< 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 II. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< Structured Blobs</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-utils.html"><b>utils >></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 II. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< Bononbo</b></a></td>
+<td align="right"><a accesskey="n" href="gsf-Text.html"><b>Text >></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 II. 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 I. GSF Overview">
+<link rel="part" href="api.html" title="Part II. 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><< 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 >></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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> An input (potentially a GsfInfile) holding the blob
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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>
+
+ "<link linkend="GsfInputGZip--raw">raw</link>" <link linkend="gboolean">gboolean</link> : Read / Write / Construct Only
+ "<link linkend="GsfInputGZip--source">source</link>" <link linkend="GsfInput">GsfInput</link> : Read / Write / Construct Only
+ "<link linkend="GsfInputGZip--uncompressed-size">uncompressed-size</link>" <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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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 "<literal>raw</literal>" property</title>
+<programlisting> "raw" <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 "<literal>source</literal>" property</title>
+<programlisting> "source" <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 "<literal>uncompressed-size</literal>" property</title>
+<programlisting> "uncompressed-size" <link linkend="gint64">gint64</link> : Read / Write / Construct Only</programlisting>
+<para>The source's uncompressed size.</para><para>Allowed values: >= -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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> Size of the data in bytes.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data_to_copy</parameter> :</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> :</term>
+<listitem><simpara> location to store error, or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfBlob"><type>GsfBlob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfBlob"><type>GsfBlob</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> Format for the data inside the <parameter>data_blob</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data_blob</parameter> :</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> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> Location to store error, or <literal>NULL</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfClipData"><type>GsfClipData</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ret_size</parameter> :</term>
+<listitem><simpara> Location to return the size of the returned data buffer.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> Location to store error, or <literal>NULL</literal>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the structured storage
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>i</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> A <literal>null</literal> terminated list of names
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara> the rest of the names
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>i</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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>
+
+ "<link linkend="GsfInput--eof">eof</link>" <link linkend="gboolean">gboolean</link> : Read
+ "<link linkend="GsfInput--name">name</link>" <link linkend="gchararray">gchararray</link> : Read
+ "<link linkend="GsfInput--position">position</link>" <link linkend="gint64">gint64</link> : Read
+ "<link linkend="GsfInput--remaining">remaining</link>" <link linkend="gint64">gint64</link> : Read
+ "<link linkend="GsfInput--size">size</link>" <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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>num_bytes</parameter> :</term>
+<listitem><simpara> number of bytes to read
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>optional_buffer</parameter> :</term>
+<listitem><simpara> NULL, or pointer to destination memory area
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter> :</term>
+<listitem><simpara> target offset
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>whence</parameter> :</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> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The input to duplicate
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The input
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>filename</parameter> :</term>
+<listitem><simpara> the (fs-sys encoded) filename
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter> :</term>
+<listitem><simpara> Offset into source for start of section.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara> Length of section.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a non-null <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>output</parameter> :</term>
+<listitem><simpara> a non-null <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> stream to be uncompressed.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> the new name of the stream, or NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara> the size of the stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> stream to emulate seek for
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>pos</parameter> :</term>
+<listitem><simpara> absolute position to seek to
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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 "<literal>eof</literal>" property</title>
+<programlisting> "eof" <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 "<literal>name</literal>" property</title>
+<programlisting> "name" <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 "<literal>position</literal>" property</title>
+<programlisting> "position" <link linkend="gint64">gint64</link> : Read</programlisting>
+<para>The Output's Current Position.</para><para>Allowed values: >= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--remaining"/>The "<literal>remaining</literal>" property</title>
+<programlisting> "remaining" <link linkend="gint64">gint64</link> : Read</programlisting>
+<para>Amount of Data Remaining.</para><para>Allowed values: >= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfInput--size"/>The "<literal>size</literal>" property</title>
+<programlisting> "size" <link linkend="gint64">gint64</link> : Read</programlisting>
+<para>The Input's Size.</para><para>Allowed values: >= 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> :</term>
+<listitem><simpara> A <link linkend="GIOChannel"><type>GIOChannel</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The file on disk that you want to mmap
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> A <link linkend="GError"><type>GError</type></link>, or optionally <literal>null</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The input bytes
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter> :</term>
+<listitem><simpara> The length of <parameter>buf</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>needs_free</parameter> :</term>
+<listitem><simpara> Whether you want this memory to be free'd at object destruction
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The input bytes
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>length</parameter> :</term>
+<listitem><simpara> The length of <parameter>buf</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a <link linkend="GIOChannel"><type>GIOChannel</type></link>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>error</parameter> :</term>
+<listitem><simpara> a <link linkend="GError"><type>GError</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the output device.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>needs_free</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>size</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter> :</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> :</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prop</parameter> :</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> :</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>func</parameter> :</term>
+<listitem><simpara> the function called once for each element in the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user_data</parameter> :</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> :</term>
+<listitem><simpara> the collection
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the property
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>link</parameter> :</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> :</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> :</term>
+<listitem><simpara> The vector to which the GValue will be added
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>value</parameter> :</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> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a <link linkend="GsfInfileMSOle"><type>GsfInfileMSOle</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>res</parameter> :</term>
+<listitem><simpara> 16 byte identifier (often a GUID in MS Windows apps)
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a <link linkend="GsfOutput"><type>GsfOutput</type></link> to hold the OLE2 file
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara> size of large blocks.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>sb_size</parameter> :</term>
+<listitem><simpara> size of small blocks.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> a <link linkend="GsfOutfileMSOle"><type>GsfOutfileMSOle</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>clsid</parameter> :</term>
+<listitem><simpara> 16 byte identifier (often a GUID in MS Windows apps)
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>accum</parameter> :</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>meta_data</parameter> :</term>
+<listitem><simpara> <link linkend="GsfDocMetaData"><type>GsfDocMetaData</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>doc_not_component</parameter> :</term>
+<listitem><simpara> a kludge to differentiate DocumentSummary from Summary
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>from</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>codepage</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> stream to read from
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter> :</term>
+<listitem><simpara> offset into it for start byte of compresse stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfOutfile"><type>GsfOutfile</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> The name of the new child to create
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter> :</term>
+<listitem><simpara> TRUE to create a directory, FALSE to create a plain file
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfOutfile"><type>GsfOutfile</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> The name of the new child to create
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter> :</term>
+<listitem><simpara> TRUE to create a directory, FALSE to create a plain file
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_dir</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>args</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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>
+
+ "<link linkend="GsfOutput--is-closed">is-closed</link>" <link linkend="gboolean">gboolean</link> : Read
+ "<link linkend="GsfOutput--name">name</link>" <link linkend="gchararray">gchararray</link> : Read
+ "<link linkend="GsfOutput--position">position</link>" <link linkend="gint64">gint64</link> : Read
+ "<link linkend="GsfOutput--size">size</link>" <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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>offset</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>whence</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>num_bytes</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>line</parameter> :</term>
+<listitem><simpara> <literal>null</literal> terminated string to write
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter> :</term>
+<listitem><simpara> The printf-style format string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara> the arguments for <parameter>format</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> A <link linkend="GsfOutput"><type>GsfOutput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter> :</term>
+<listitem><simpara> The printf-style format string
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>args</parameter> :</term>
+<listitem><simpara> the arguments for <parameter>format</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> the output stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>filename</parameter> :</term>
+<listitem><simpara> the (fs-sys encoded) filename
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>code</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>wrapee</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>wrapee</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>container</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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 "<literal>is-closed</literal>" property</title>
+<programlisting> "is-closed" <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 "<literal>name</literal>" property</title>
+<programlisting> "name" <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 "<literal>position</literal>" property</title>
+<programlisting> "position" <link linkend="gint64">gint64</link> : Read</programlisting>
+<para>The Output's Current Position.</para><para>Allowed values: >= 0</para>
+<para>Default value: 0</para>
+</refsect2>
+<refsect2><title><anchor id="GsfOutput--size"/>The "<literal>size</literal>" property</title>
+<programlisting> "size" <link linkend="gint64">gint64</link> : Read</programlisting>
+<para>The Output's Size.</para><para>Allowed values: >= 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> :</term>
+<listitem><simpara> in utf8.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> name of file to create or replace.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> name of file to create or replace.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara> NULL terminated list of properties
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The filename corresponding to <parameter>file</parameter>.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>file</parameter> :</term>
+<listitem><simpara> an existing stdio FILE *
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>keep_open</parameter> :</term>
+<listitem><simpara> Should <parameter>file</parameter> be closed when the wrapper is closed
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> root directory in utf8.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> in locale dependent encoding
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> optionally NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> in some combination of ascii and utf8
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The underlying data source.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dst</parameter> :</term>
+<listitem><simpara> The target character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>src</parameter> :</term>
+<listitem><simpara> The source character set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>field</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_finalize</parameter> :</term>
+<listitem><simpara>
+@\
+ class_init:
+@\
+ class_init:
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_finalize</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent_type</parameter> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>init_func</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>base_finalize</parameter> :</term>
+<listitem><simpara>
+@\
+ class_init:
+@\
+ class_init:
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_finalize</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent_type</parameter> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>prefix</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>class_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>instance_init</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>parent</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>module</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>init_func</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>iface_type</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>module</parameter> :</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> :</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> :</term>
+<listitem><simpara> memory area to be dumped.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</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> :</term>
+<listitem><simpara> a <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dump_as_hex</parameter> :</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> :</term>
+<listitem><simpara> file name suitable for open(2).
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>quoted</parameter> :</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> :</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> :</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> :</term>
+<listitem><simpara> A filename or file path.
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>inlen</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>break_lines</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>break_lines</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> input stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</term>
+<listitem><simpara> max length of data to decode
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>out</parameter> :</term>
+<listitem><simpara> output stream
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>state</parameter> :</term>
+<listitem><simpara> holds the number of bits that are stored in <parameter>save</parameter>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>save</parameter> :</term>
+<listitem><simpara> leftover bits that have not yet been decoded
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dat</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>f</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>d</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>seconds</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>tz</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>stamp</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>stamp</parameter> :</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> :</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> :</term>
+<listitem><simpara> <link linkend="GsfDocProp"><type>GsfDocProp</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</term>
+<listitem><simpara> <link linkend="GValue"><type>GValue</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_params</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_n_params</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>first_property_name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>...</parameter> :</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> :</term>
+<listitem><simpara> the GType for which the properties are being set.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>p_params</parameter> :</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> :</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> :</term>
+<listitem><simpara> the name of the first property being set, or NULL.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>var_args</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>n_params</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>uri</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>cur</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>encoding</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>format</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>has_content</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>start</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>end</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>user</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>has_content</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>start</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>end</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>elem</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>attrs</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> an array of node descriptors
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns</parameter> :</term>
+<listitem><simpara> an array of namespace identifiers
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara> The <link linkend="GsfXMLIn"><type>GsfXMLIn</type></link> we are reading from.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>str</parameter> :</term>
+<listitem><simpara> The potentially namespace qualified node name.
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns_id</parameter> :</term>
+<listitem><simpara> The name space id to check
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>name</parameter> :</term>
+<listitem><simpara> The target node name
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>input</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>str</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>ns_id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>nodes</parameter> :</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> :</term>
+<listitem><simpara> <link linkend="GsfXMLInDoc"><type>GsfXMLInDoc</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>handler</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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 <!DOCTYPE .. > content</para>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>xml</parameter> :</term>
+<listitem><simpara> <link linkend="GsfXMLOut"><type>GsfXMLOut</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>type</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val_utf8</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val_utf8</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</term>
+<listitem><simpara> the value
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>precision</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>etype</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>r</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>g</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>b</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara> optionally NULL for content
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>data</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>len</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>content</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>precision</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>id</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>val</parameter> :</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>
+
+ "<link linkend="GsfInfileZip--compression-level">compression-level</link>" <link linkend="gint">gint</link> : Read
+ "<link linkend="GsfInfileZip--internal-parent">internal-parent</link>" <link linkend="GsfInfileZip">GsfInfileZip</link> : Write / Construct Only
+ "<link linkend="GsfInfileZip--source">source</link>" <link linkend="GsfInput">GsfInput</link> : Read / Write / Construct Only
+ "<link linkend="GsfOutfileZip--compression-level">compression-level</link>" <link linkend="gint">gint</link> : Read / Write / Construct Only
+ "<link linkend="GsfOutfileZip--entry-name">entry-name</link>" <link linkend="gchararray">gchararray</link> : Read / Write / Construct Only
+ "<link linkend="GsfOutfileZip--sink">sink</link>" <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> :</term>
+<listitem><simpara> A base <link linkend="GsfInput"><type>GsfInput</type></link>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara> A <link linkend="GError"><type>GError</type></link>, optionally <literal>null</literal>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>err</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>method</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</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> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>free_dirent</parameter> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>is_directory</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>dirent</parameter> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><emphasis>Returns</emphasis> :</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> :</term>
+<listitem><simpara>
+</simpara></listitem></varlistentry>
+<varlistentry><term><parameter>child</parameter> :</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)>>3)&1)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter> :</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)&1)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter> :</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)>>1)&3)
+</programlisting>
+<para>
+
+</para><variablelist role="params">
+<varlistentry><term><parameter>p</parameter> :</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 "<literal>compression-level</literal>" property</title>
+<programlisting> "compression-level" <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 "<literal>internal-parent</literal>" property</title>
+<programlisting> "internal-parent" <link linkend="GsfInfileZip">GsfInfileZip</link> : Write / Construct Only</programlisting>
+<para>Internal use only.</para></refsect2>
+<refsect2><title><anchor id="GsfInfileZip--source"/>The "<literal>source</literal>" property</title>
+<programlisting> "source" <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 "<literal>compression-level</literal>" property</title>
+<programlisting> "compression-level" <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 "<literal>entry-name</literal>" property</title>
+<programlisting> "entry-name" <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 "<literal>sink</literal>" property</title>
+<programlisting> "sink" <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 <!DOCTYPE .. > 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, "<");
+ } else if (*cur == '>') {
+ if (cur != start)
+ gsf_output_write (xml->output, cur-start, start);
+ start = ++cur;
+ gsf_output_write (xml->output, 4, ">");
+ } else if (*cur == '&') {
+ if (cur != start)
+ gsf_output_write (xml->output, cur-start, start);
+ start = ++cur;
+ gsf_output_write (xml->output, 5, "&");
+ } else if (*cur == '"') {
+ if (cur != start)
+ gsf_output_write (xml->output, cur-start, start);
+ start = ++cur;
+ gsf_output_write (xml->output, 6, """);
+ } 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,
+ ¶ms, &n_params,
+ "sink", zip_parent->sink,
+ "entry-name", name,
+ NULL);
+ gsf_property_settings_collect_valist (GSF_OUTFILE_ZIP_TYPE,
+ ¶ms, &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,
+ ×tamp_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 (¶ms[n_params].value, G_PARAM_SPEC_VALUE_TYPE (pspec));
+ G_VALUE_COLLECT (¶ms[n_params].value, var_args, 0, &error);
+ if (error)
+ {
+ g_warning ("%s: %s", G_STRFUNC, error);
+ g_free (error);
+ g_value_unset (¶ms[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 (¶ms[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/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+
+ return $_;
+}
+
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</g;
+ s/>/>/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 < - < but not > - > because it seems its ok to have
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</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 """ if $_ == 34;
+ return "&" if $_ == 38;
+ return "'" if $_ == 39;
+ return "<" 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