From 3d8c47975ad9e1cbca544af2410e66c5b63f6edf Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Tue, 2 Sep 2014 18:28:02 -0300 Subject: abiword: remove libre suffix and add complex pkgrel --- libre/abiword-libre/PKGBUILD | 109 -- libre/abiword-libre/abiword-2.8.6-glib-2.31.patch | 40 - libre/abiword-libre/abiword-2.8.6-libpng15.patch | 100 -- .../abiword-libre/abiword-2.8.6-no-undefined.patch | 21 - libre/abiword-libre/abiword-3.0.0-librevenge.patch | 1186 -------------- libre/abiword-libre/abiword.install | 12 - libre/abiword-libre/compat_libwpg_0_9.patch | 371 ----- libre/abiword-libre/fix_crash_saving_pdf.patch | 86 - libre/abiword-libre/liberation-fonts.patch | 1694 -------------------- libre/abiword/PKGBUILD | 106 ++ libre/abiword/abiword-2.8.6-glib-2.31.patch | 40 + libre/abiword/abiword-2.8.6-libpng15.patch | 100 ++ libre/abiword/abiword-2.8.6-no-undefined.patch | 21 + libre/abiword/abiword-3.0.0-librevenge.patch | 1186 ++++++++++++++ libre/abiword/abiword.install | 12 + libre/abiword/compat_libwpg_0_9.patch | 371 +++++ libre/abiword/fix_crash_saving_pdf.patch | 86 + libre/abiword/liberation-fonts.patch | 1694 ++++++++++++++++++++ 18 files changed, 3616 insertions(+), 3619 deletions(-) delete mode 100644 libre/abiword-libre/PKGBUILD delete mode 100644 libre/abiword-libre/abiword-2.8.6-glib-2.31.patch delete mode 100644 libre/abiword-libre/abiword-2.8.6-libpng15.patch delete mode 100644 libre/abiword-libre/abiword-2.8.6-no-undefined.patch delete mode 100644 libre/abiword-libre/abiword-3.0.0-librevenge.patch delete mode 100644 libre/abiword-libre/abiword.install delete mode 100644 libre/abiword-libre/compat_libwpg_0_9.patch delete mode 100644 libre/abiword-libre/fix_crash_saving_pdf.patch delete mode 100644 libre/abiword-libre/liberation-fonts.patch create mode 100644 libre/abiword/PKGBUILD create mode 100644 libre/abiword/abiword-2.8.6-glib-2.31.patch create mode 100644 libre/abiword/abiword-2.8.6-libpng15.patch create mode 100644 libre/abiword/abiword-2.8.6-no-undefined.patch create mode 100644 libre/abiword/abiword-3.0.0-librevenge.patch create mode 100644 libre/abiword/abiword.install create mode 100644 libre/abiword/compat_libwpg_0_9.patch create mode 100644 libre/abiword/fix_crash_saving_pdf.patch create mode 100644 libre/abiword/liberation-fonts.patch (limited to 'libre') diff --git a/libre/abiword-libre/PKGBUILD b/libre/abiword-libre/PKGBUILD deleted file mode 100644 index 4d48bf983..000000000 --- a/libre/abiword-libre/PKGBUILD +++ /dev/null @@ -1,109 +0,0 @@ -# $Id: PKGBUILD 215017 2014-06-11 14:14:55Z jgc $ -# Contributor (Arch): Giovanni Scafora -# Contributor (Arch): Maël Lavault -# Maintainer: André Silva - -_pkgbase=abiword -pkgbase=abiword-libre -pkgname=('abiword-libre' 'abiword-libre-plugins') -pkgver=3.0.0 -pkgrel=3 -arch=('i686' 'x86_64' 'mips64el') -license=('GPL') -url='http://www.abisource.com' -makedepends=('pkgconfig' 'asio' 'boost' 'fribidi' 'goffice' 'libwmf' 'wv' - 'link-grammar' 'gtkmathview' 'aiksaurus' 'libxslt' 'enchant' - 'libots' 'libwpg' 'librsvg' 'loudmouth' 'libsoup' 'psiconv' - 'redland' 'libical') -options=('!makeflags') -source=(http://abisource.com/downloads/$_pkgbase/$pkgver/source/$_pkgbase-$pkgver.tar.gz - fix_crash_saving_pdf.patch - abiword-3.0.0-librevenge.patch - liberation-fonts.patch) -md5sums=('8d9c41cff3a8fbef8d0c835c65600e65' - 'c3336f5ac7d227ff755c7e42459f20e1' - '6fc2d653d3b814bbfd9b0d71c69c4796' - 'e7ef4d436469ae4b24b0f784b09ab023') - -prepare() { - cd $_pkgbase-$pkgver - - # fix FS#39652 - http://bugzilla.abisource.com/show_bug.cgi?id=13586#c2 - patch -Np2 -i ${srcdir}/fix_crash_saving_pdf.patch - - # fix build with librevenge based import filters - patch -Np0 -i ${srcdir}/abiword-3.0.0-librevenge.patch - - # replace nonfree fonts support to liberation fonts - patch -Np1 -i "${srcdir}/liberation-fonts.patch" - - find plugins -name plugin.m4 | xargs cat > plugin-configure.m4 - - #aclocal -I m4 --install - #autoconf - libtoolize --force - autoreconf -fi -} - - -build() { - cd $_pkgbase-$pkgver - -# Collab plugin is somehow broken: -# part service -#In file included from ./../../../backends/service/xp/RealmConnection.h:33:0, -# from ./../../../backends/service/xp/AbiCollabSaveInterceptor.h:23, -# from ./../../../backends/service/xp/ServiceAccountHandler.h:33, -# from ServiceUnixAccountHandler.h:23, -# from ServiceUnixAccountHandler.cpp:20: -#./../../../core/sync/xp/SynchronizedQueue.h:32:1: error: expected class-name before '{' token -# { -# part tcp -#In file included from ./../../../backends/tcp/xp/IOServerHandler.h:29:0, -# from ./../../../backends/tcp/xp/TCPAccountHandler.h:25, -# from TCPUnixAccountHandler.h:22, -# from TCPUnixAccountHandler.cpp:20: -#./../../../backends/tcp/xp/Session.h:34:63: error: expected class-name before ',' token -# class Session : public Synchronizer, public boost::noncopyable, public boost::enable_shared_from_this - - ./configure --prefix=/usr \ - --enable-shared \ - --disable-static \ - --enable-clipart \ - --enable-templates \ - --disable-builtin-plugins \ - --enable-plugins \ - --disable-collab-backend-service \ - --disable-collab-backend-tcp - make -} - -package_abiword-libre() { - pkgdesc='Fully-featured word processor, without nonfree fonts support' - depends=('fribidi' 'wv' 'goffice' 'librsvg' 'enchant' 'desktop-file-utils' - 'redland' 'libical' 'gtk-update-icon-cache') - install=$_pkgbase.install - optdepends=('abiword-libre-plugins') - conflicts=("abiword-libre-plugins<${pkgver}-${pkgrel}" 'abiword') - replaces=('abiword') - provides=("abiword=$pkgver") - - cd $_pkgbase-$pkgver - make DESTDIR="$pkgdir" install - - # split out plugins, there's no Makefile target for a clean way - mkdir ${srcdir}/_pluginsdir - mv "$pkgdir"/usr/lib/abiword-${pkgver%.*}/plugins ${srcdir}/_pluginsdir -} - -package_abiword-libre-plugins() { - pkgdesc='Additional plugins for Abiword, without nonfree fonts support' - depends=("abiword-libre=${pkgver}-${pkgrel}" 'loudmouth' 'libwpg' 'libwmf' 'link-grammar' - 'gtkmathview' 'aiksaurus' 'libxslt' 'libsoup' 'libots' 'libgsf' 'psiconv') - conflicts=('abiword-plugins') - replaces=('abiword-plugins') - provides=("abiword-plugins=$pkgver") - - install -dm755 ${pkgdir}/usr/lib/abiword-${pkgver%.*} - mv ${srcdir}/_pluginsdir/plugins ${pkgdir}/usr/lib/abiword-${pkgver%.*}/ -} diff --git a/libre/abiword-libre/abiword-2.8.6-glib-2.31.patch b/libre/abiword-libre/abiword-2.8.6-glib-2.31.patch deleted file mode 100644 index 8b938cc25..000000000 --- a/libre/abiword-libre/abiword-2.8.6-glib-2.31.patch +++ /dev/null @@ -1,40 +0,0 @@ ------------------------------------------------------------------------- -r30479 | hub | 2011-11-29 00:39:09 -0500 (Tue, 29 Nov 2011) | 2 lines -Changed paths: - M /abiword/trunk/src/af/util/xp/ut_go_file.h - -Bug 13197: only import glib.h -Patch by Dominique Leuenberger. ------------------------------------------------------------------------- -r30602 | hub | 2012-01-30 02:00:38 -0500 (Mon, 30 Jan 2012) | 2 lines -Changed paths: - M /abiword/trunk/goffice-bits/goffice/app/goffice-app.h - -Bug 13247 - Fix glib headers. Patch by Funda Wang -(safe to backport) ------------------------------------------------------------------------- -Index: src/af/util/xp/ut_go_file.h -=================================================================== ---- src/af/util/xp/ut_go_file.h (revision 30478) -+++ src/af/util/xp/ut_go_file.h (revision 30479) -@@ -31,7 +31,6 @@ - - #include - #include --#include - #include - - G_BEGIN_DECLS -Index: goffice-bits/goffice/app/goffice-app.h -=================================================================== ---- goffice-bits/goffice/app/goffice-app.h (revision 30601) -+++ goffice-bits/goffice/app/goffice-app.h (revision 30602) -@@ -22,7 +22,7 @@ - #ifndef GOFFICE_APP_H - #define GOFFICE_APP_H - --#include -+#include - - G_BEGIN_DECLS - diff --git a/libre/abiword-libre/abiword-2.8.6-libpng15.patch b/libre/abiword-libre/abiword-2.8.6-libpng15.patch deleted file mode 100644 index 7eded4c83..000000000 --- a/libre/abiword-libre/abiword-2.8.6-libpng15.patch +++ /dev/null @@ -1,100 +0,0 @@ -$NetBSD: patch-plugins_bmp_xp_ie__impGraphic__BMP.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $ - -Fix build with png-1.5. - ---- plugins/bmp/xp/ie_impGraphic_BMP.cpp.orig 2009-06-25 04:02:06.000000000 +0000 -+++ plugins/bmp/xp/ie_impGraphic_BMP.cpp -@@ -191,7 +191,10 @@ UT_Error IE_ImpGraphic_BMP::_convertGrap - - /* Clean Up Memory Used */ - -- FREEP(m_pPNGInfo->palette); -+ png_colorp palette; -+ int num_palette; -+ png_get_PLTE( m_pPNG, m_pPNGInfo, &palette, &num_palette ); -+ FREEP(palette); - DELETEP(pBB); - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); - -@@ -313,7 +316,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P - * the normal method of doing things with libpng). REQUIRED unless you - * set up your own error handlers in the png_create_read_struct() earlier. - */ -- if (setjmp(m_pPNG->jmpbuf)) -+ if (setjmp(png_jmpbuf(m_pPNG))) - { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); -@@ -332,7 +335,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P - UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB) - { - /* Reset error handling for libpng */ -- if (setjmp(m_pPNG->jmpbuf)) -+ if (setjmp(png_jmpbuf(m_pPNG))) - { - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); - return UT_ERROR; -@@ -372,7 +375,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P - UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB) - { - /* Reset error handling for libpng */ -- if (setjmp(m_pPNG->jmpbuf)) -+ if (setjmp(png_jmpbuf(m_pPNG))) - { - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); - return UT_ERROR; - -$NetBSD: patch-plugins_garble_xp_abiword-garble-png.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $ - -Fix build with png-1.5. - ---- plugins/garble/xp/abiword-garble-png.cpp.orig 2009-09-05 15:34:44.000000000 +0000 -+++ plugins/garble/xp/abiword-garble-png.cpp -@@ -79,7 +79,7 @@ bool abiword_document::garble_png( void* - png_set_strip_alpha( png_ptr ); - png_set_interlace_handling( png_ptr ); - png_set_bgr( png_ptr ); -- rowbytes = info_ptr->rowbytes; -+ rowbytes = png_get_rowbytes( png_ptr, info_ptr ); - png_destroy_read_struct( &png_ptr, &info_ptr, NULL ); - } - -$NetBSD: patch-af,v 1.12 2011/01/15 15:07:11 wiz Exp $ - -Fix build with png-1.5. - ---- src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp.orig 2009-07-01 04:02:04.000000000 +0000 -+++ src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp -@@ -185,7 +185,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::import - /** needed for the stejmp context */ - UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf) - { -- if (setjmp(m_pPNG->jmpbuf)) -+ if (setjmp(png_jmpbuf(m_pPNG))) - { - DELETEP(m_pPngBB); - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); -@@ -446,7 +446,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::Initia - * the normal method of doing things with libpng). REQUIRED unless you - * set up your own error handlers in the png_create_read_struct() earlier. - */ -- if (setjmp(m_pPNG->jmpbuf)) -+ if (setjmp(png_jmpbuf(m_pPNG))) - { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); -$NetBSD: patch-ae,v 1.21 2011/01/15 15:07:11 wiz Exp $ - -Fix build with png-1.5. - ---- src/af/util/xp/ut_png.cpp.orig 2008-02-24 03:33:07.000000000 +0000 -+++ src/af/util/xp/ut_png.cpp -@@ -71,7 +71,7 @@ bool UT_PNG_getDimensions(const UT_ByteB - * the normal method of doing things with libpng). REQUIRED unless you - * set up your own error handlers in the png_create_read_struct() earlier. - */ -- if (setjmp(png_ptr->jmpbuf)) -+ if (setjmp(png_jmpbuf(png_ptr))) - { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_read_struct(&png_ptr, &info_ptr, static_cast(NULL)); diff --git a/libre/abiword-libre/abiword-2.8.6-no-undefined.patch b/libre/abiword-libre/abiword-2.8.6-no-undefined.patch deleted file mode 100644 index c07000edb..000000000 --- a/libre/abiword-libre/abiword-2.8.6-no-undefined.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -u -r abiword-2.8.6.orig/src/Makefile.am abiword-2.8.6/src/Makefile.am ---- abiword-2.8.6.orig/src/Makefile.am 2009-09-09 15:11:01.000000000 +0200 -+++ abiword-2.8.6/src/Makefile.am 2011-08-02 23:35:51.904761961 +0200 -@@ -107,7 +107,7 @@ - - AbiWord_LDFLAGS = \ - $(DEPS_LIBS) \ -- --no-undefined \ -+ -Wl,--no-undefined \ - -avoid-version \ - -export-dynamic \ - -headerpad_max_install_names -@@ -129,7 +129,7 @@ - - abiword_LDFLAGS = \ - $(platform_ldflags) \ -- --no-undefined \ -+ -Wl,--no-undefined \ - -avoid-version \ - -export-dynamic - diff --git a/libre/abiword-libre/abiword-3.0.0-librevenge.patch b/libre/abiword-libre/abiword-3.0.0-librevenge.patch deleted file mode 100644 index 9ff7aea24..000000000 --- a/libre/abiword-libre/abiword-3.0.0-librevenge.patch +++ /dev/null @@ -1,1186 +0,0 @@ -Index: plugins/wpg/xp/ie_impGraphic_WPG.cpp -=================================================================== ---- plugins/wpg/xp/ie_impGraphic_WPG.cpp (revision 34460) -+++ plugins/wpg/xp/ie_impGraphic_WPG.cpp (working copy) -@@ -31,7 +31,7 @@ - #include - #include - #include --#include -+#include - #include "xap_Module.h" - - using libwpg::WPGraphics; -@@ -38,30 +38,35 @@ - - ABI_PLUGIN_DECLARE("WPG") - --class AbiWordPerfectGraphicsInputStream : public WPXInputStream -+class AbiWordPerfectGraphicsInputStream : public librevenge::RVNGInputStream - { - public: - AbiWordPerfectGraphicsInputStream(GsfInput *input); - ~AbiWordPerfectGraphicsInputStream(); - -- virtual bool isOLEStream(); -- virtual WPXInputStream * getDocumentOLEStream(); -- virtual WPXInputStream * getDocumentOLEStream(const char * name); -+ virtual bool isStructured(); -+ virtual unsigned subStreamCount(); -+ virtual const char* subStreamName(unsigned); -+ bool existsSubStream(const char*); -+ virtual librevenge::RVNGInputStream* getSubStreamByName(const char*); -+ virtual librevenge::RVNGInputStream* getSubStreamById(unsigned); - virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); -- virtual int seek(long offset, WPX_SEEK_TYPE seekType); -+ virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType); - virtual long tell(); -- virtual bool atEOS(); -+ virtual bool isEnd(); - - private: - - GsfInput *m_input; - GsfInfile *m_ole; -+ std::map m_substreams; - }; - - AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : -- WPXInputStream(), -+ librevenge::RVNGInputStream(), - m_input(input), -- m_ole(NULL) -+ m_ole(NULL), -+ m_substreams() - { - g_object_ref(G_OBJECT(input)); - } -@@ -86,50 +91,120 @@ - return buf; - } - --int AbiWordPerfectGraphicsInputStream::seek(long offset, WPX_SEEK_TYPE seekType) -+int AbiWordPerfectGraphicsInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) - { - GSeekType gsfSeekType = G_SEEK_SET; - switch(seekType) - { -- case WPX_SEEK_CUR: -+ case librevenge::RVNG_SEEK_CUR: - gsfSeekType = G_SEEK_CUR; - break; -- case WPX_SEEK_SET: -+ case librevenge::RVNG_SEEK_SET: - gsfSeekType = G_SEEK_SET; - break; -+ case librevenge::RVNG_SEEK_END: -+ gsfSeekType = G_SEEK_END; -+ break; - } - - return gsf_input_seek(m_input, offset, gsfSeekType); - } - --bool AbiWordPerfectGraphicsInputStream::isOLEStream() -+bool AbiWordPerfectGraphicsInputStream::isStructured() - { - if (!m_ole) - m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - -- if (m_ole != NULL) -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) - return true; - - return false; - } - --WPXInputStream * AbiWordPerfectGraphicsInputStream::getDocumentOLEStream() -+unsigned AbiWordPerfectGraphicsInputStream::subStreamCount() - { -- return getDocumentOLEStream("PerfectOffice_MAIN"); -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ int numChildren = gsf_infile_num_children(m_ole); -+ if (numChildren > 0) -+ return numChildren; -+ return 0; -+ } -+ -+ return 0; - } - --WPXInputStream * AbiWordPerfectGraphicsInputStream::getDocumentOLEStream(const char * name) -+const char * AbiWordPerfectGraphicsInputStream::subStreamName(unsigned id) - { -- WPXInputStream *documentStream = NULL; -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - - if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ if ((int)id >= gsf_infile_num_children(m_ole)) -+ { -+ return 0; -+ } -+ std::map::iterator i = m_substreams.lower_bound(id); -+ if (i == m_substreams.end() || m_substreams.key_comp()(id, i->first)) -+ { -+ std::string name = gsf_infile_name_by_index(m_ole, (int)id); -+ i = m_substreams.insert(i, std::map::value_type(id, name)); -+ } -+ return i->second.c_str(); -+ } -+ -+ return 0; -+} -+ -+bool AbiWordPerfectGraphicsInputStream::existsSubStream(const char * name) -+{ -+ if (!m_ole) - m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ - if (m_ole) - { - GsfInput *document = gsf_infile_child_by_name(m_ole, name); - if (document) - { -+ g_object_unref(G_OBJECT (document)); -+ return true; -+ } -+ } -+ -+ return false; -+} -+ -+librevenge::RVNGInputStream * AbiWordPerfectGraphicsInputStream::getSubStreamByName(const char * name) -+{ -+ librevenge::RVNGInputStream *documentStream = NULL; -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ GsfInput *document = gsf_infile_child_by_name(m_ole, name); -+ if (document) -+ { - documentStream = new AbiWordPerfectGraphicsInputStream(document); - g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream - } -@@ -138,12 +213,35 @@ - return documentStream; - } - -+librevenge::RVNGInputStream * AbiWordPerfectGraphicsInputStream::getSubStreamById(unsigned id) -+{ -+ librevenge::RVNGInputStream *documentStream = NULL; -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ GsfInput *document = gsf_infile_child_by_index(m_ole, (int)id); -+ if (document) -+ { -+ documentStream = new AbiWordPerfectGraphicsInputStream(document); -+ g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream -+ } -+ } -+ -+ return documentStream; -+} -+ - long AbiWordPerfectGraphicsInputStream::tell() - { - return gsf_input_tell(m_input); - } - --bool AbiWordPerfectGraphicsInputStream::atEOS() -+bool AbiWordPerfectGraphicsInputStream::isEnd() - { - return gsf_input_eof(m_input); - } -@@ -244,14 +342,24 @@ - UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) - { - AbiWordPerfectGraphicsInputStream gsfInput(input); -- WPXString svgOutput; -- if (WPGraphics::generateSVG(&gsfInput, svgOutput)) -+ librevenge::RVNGString svgOutput; -+ librevenge::RVNGStringVector vec; -+ librevenge::RVNGSVGDrawingGenerator generator(vec, ""); -+ -+ if (!libwpg::WPGraphics::parse(&gsfInput, &generator) || vec.empty() || vec[0].empty()) - { -- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); -- UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); -- g_object_unref(svgInput); -- return result; -+ return UT_ERROR; - } -- return UT_ERROR; -+ -+ svgOutput.append("\n"); -+ svgOutput.append("\n"); -+ svgOutput.append(vec[0]); -+ svgOutput.append("\n"); -+ -+ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); -+ UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); -+ g_object_unref(svgInput); -+ return result; - } - -Index: plugins/wpg/plugin.m4 -=================================================================== ---- plugins/wpg/plugin.m4 (revision 34460) -+++ plugins/wpg/plugin.m4 (working copy) -@@ -1,5 +1,5 @@ - --wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" -+wpg_pkgs="libwpg-0.3 $gsf_req" - wpg_deps="no" - - if test "$enable_wpg" != ""; then -Index: plugins/wordperfect/xp/ie_imp_WordPerfect.h -=================================================================== ---- plugins/wordperfect/xp/ie_imp_WordPerfect.h (revision 34460) -+++ plugins/wordperfect/xp/ie_imp_WordPerfect.h (working copy) -@@ -30,7 +30,7 @@ - #define IE_IMP_WP_H - - #include --#include -+#include - #include "ie_imp.h" - #include "ut_string.h" - #include "ut_string_class.h" -@@ -92,7 +92,7 @@ - IE_Imp ** ppie); - }; - --class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface -+class IE_Imp_WordPerfect : public IE_Imp, public librevenge::RVNGTextInterface - { - public: - IE_Imp_WordPerfect(PD_Document * pDocument); -@@ -101,69 +101,83 @@ - virtual void pasteFromBuffer(PD_DocumentRange * pDocRange, - UT_uint8 * pData, UT_uint32 lenData, const char * szEncoding = 0); - -- virtual void setDocumentMetaData(const WPXPropertyList &propList); -+ virtual void setDocumentMetaData(const librevenge::RVNGPropertyList &propList); - -- virtual void startDocument(); -- virtual void endDocument(); -+ virtual void startDocument(const librevenge::RVNGPropertyList &propList); -+ virtual void endDocument(); - -- virtual void openPageSpan(const WPXPropertyList &propList); -- virtual void closePageSpan() {} -- virtual void openHeader(const WPXPropertyList &propList); -- virtual void closeHeader(); -- virtual void openFooter(const WPXPropertyList &propList); -- virtual void closeFooter(); -+ virtual void defineEmbeddedFont(const librevenge::RVNGPropertyList & /* propList */) {} - -- virtual void openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); -- virtual void closeParagraph() {} -+ virtual void definePageStyle(const librevenge::RVNGPropertyList &) {} -+ virtual void openPageSpan(const librevenge::RVNGPropertyList &propList); -+ virtual void closePageSpan() {} -+ virtual void openHeader(const librevenge::RVNGPropertyList &propList); -+ virtual void closeHeader(); -+ virtual void openFooter(const librevenge::RVNGPropertyList &propList); -+ virtual void closeFooter(); - -- virtual void openSpan(const WPXPropertyList &propList); -- virtual void closeSpan() {} -+ virtual void defineSectionStyle(const librevenge::RVNGPropertyList &) {} -+ virtual void openSection(const librevenge::RVNGPropertyList &propList); -+ virtual void closeSection() {} - -- virtual void openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns); -- virtual void closeSection() {} -+ virtual void defineParagraphStyle(const librevenge::RVNGPropertyList &) {} -+ virtual void openParagraph(const librevenge::RVNGPropertyList &propList); -+ virtual void closeParagraph() {} - -- virtual void insertTab(); -- virtual void insertText(const WPXString &text); -- virtual void insertLineBreak(); -+ virtual void defineCharacterStyle(const librevenge::RVNGPropertyList &) {} -+ virtual void openSpan(const librevenge::RVNGPropertyList &propList); -+ virtual void closeSpan() {} - -- virtual void defineOrderedListLevel(const WPXPropertyList &propList); -- virtual void defineUnorderedListLevel(const WPXPropertyList &propList); -- virtual void openOrderedListLevel(const WPXPropertyList &propList); -- virtual void openUnorderedListLevel(const WPXPropertyList &propList); -- virtual void closeOrderedListLevel(); -- virtual void closeUnorderedListLevel(); -- virtual void openListElement(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); -- virtual void closeListElement() {} -+ virtual void openLink(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeLink() {} - -- virtual void openFootnote(const WPXPropertyList &propList); -- virtual void closeFootnote(); -- virtual void openEndnote(const WPXPropertyList &propList); -- virtual void closeEndnote(); -+ virtual void insertTab(); -+ virtual void insertText(const librevenge::RVNGString &text); -+ virtual void insertSpace(); -+ virtual void insertLineBreak(); -+ virtual void insertField(const librevenge::RVNGPropertyList & /* propList */) {} - -- virtual void openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns); -- virtual void openTableRow(const WPXPropertyList &propList); -- virtual void closeTableRow() {} -- virtual void openTableCell(const WPXPropertyList &propList); -- virtual void closeTableCell() {} -- virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} -- virtual void closeTable(); -+ virtual void openOrderedListLevel(const librevenge::RVNGPropertyList &propList); -+ virtual void openUnorderedListLevel(const librevenge::RVNGPropertyList &propList); -+ virtual void closeOrderedListLevel(); -+ virtual void closeUnorderedListLevel(); -+ virtual void openListElement(const librevenge::RVNGPropertyList &propList); -+ virtual void closeListElement() {} - -- virtual void definePageStyle(const WPXPropertyList&) {} -- virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} -- virtual void defineCharacterStyle(const WPXPropertyList&) {} -- virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} -- virtual void insertSpace() {} -- virtual void insertField(const WPXString&, const WPXPropertyList&) {} -- virtual void openComment(const WPXPropertyList&) {} -- virtual void closeComment() {} -- virtual void openTextBox(const WPXPropertyList&) {} -- virtual void closeTextBox() {} -- virtual void openFrame(const WPXPropertyList&) {} -- virtual void closeFrame() {} -- virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} -- virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} -+ virtual void openFootnote(const librevenge::RVNGPropertyList &propList); -+ virtual void closeFootnote(); -+ virtual void openEndnote(const librevenge::RVNGPropertyList &propList); -+ virtual void closeEndnote(); -+ virtual void openComment(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeComment() {} -+ virtual void openTextBox(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeTextBox() {} - -+ virtual void openTable(const librevenge::RVNGPropertyList &propList); -+ virtual void openTableRow(const librevenge::RVNGPropertyList &propList); -+ virtual void closeTableRow() {} -+ virtual void openTableCell(const librevenge::RVNGPropertyList &propList); -+ virtual void closeTableCell() {} -+ virtual void insertCoveredTableCell(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeTable(); - -+ virtual void openFrame(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeFrame() {} -+ -+ virtual void openGroup(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void closeGroup() {} -+ -+ virtual void defineGraphicStyle(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawRectangle(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawEllipse(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawPolygon(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawPolyline(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawPath(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void drawConnector(const librevenge::RVNGPropertyList & /* propList */) {} -+ -+ virtual void insertBinaryObject(const librevenge::RVNGPropertyList & /* propList */) {} -+ virtual void insertEquation(const librevenge::RVNGPropertyList & /* propList */) {} -+ - protected: - virtual UT_Error _loadFile(GsfInput * input); - UT_Error _appendSection(int numColumns, const float, const float); -Index: plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp -=================================================================== ---- plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp (revision 34460) -+++ plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp (working copy) -@@ -35,7 +35,6 @@ - ABI_PLUGIN_DECLARE("WordPerfect") - - static IE_Imp_WordPerfect_Sniffer * m_ImpSniffer = 0; --static IE_Exp_WordPerfect_Sniffer * m_ExpSniffer = 0; - - #ifdef HAVE_LIBWPS - static IE_Imp_MSWorks_Sniffer * m_MSWorks_ImpSniffer = 0; -@@ -49,13 +48,7 @@ - m_ImpSniffer = new IE_Imp_WordPerfect_Sniffer (); - } - -- if (!m_ExpSniffer) -- { -- m_ExpSniffer = new IE_Exp_WordPerfect_Sniffer (); -- } -- - UT_ASSERT (m_ImpSniffer); -- UT_ASSERT (m_ExpSniffer); - - #ifdef HAVE_LIBWPS - if (!m_MSWorks_ImpSniffer) -@@ -79,7 +72,7 @@ - mi->usage = "No Usage"; - - IE_Imp::registerImporter (m_ImpSniffer); -- //IE_Exp::registerExporter (m_ExpSniffer); -+ - return 1; - } - -@@ -93,18 +86,11 @@ - mi->usage = 0; - - UT_ASSERT (m_ImpSniffer); -- UT_ASSERT (m_ExpSniffer); - - IE_Imp::unregisterImporter (m_ImpSniffer); - delete m_ImpSniffer; - m_ImpSniffer = 0; - -- /* -- IE_Exp::unregisterExporter (m_ExpSniffer); -- delete m_ExpSniffer; -- m_ExpSniffer = 0; -- */ -- - #ifdef HAVE_LIBWPS - IE_Imp::unregisterImporter (m_MSWorks_ImpSniffer); - delete m_MSWorks_ImpSniffer; -Index: plugins/wordperfect/xp/ie_imp_WordPerfect.cpp -=================================================================== ---- plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (revision 34460) -+++ plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (working copy) -@@ -31,6 +31,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -60,42 +62,47 @@ - - // Stream class - --#include -+#include -+#include - - #include - #include - #include -+#include - - #ifdef HAVE_LIBWPS - #include - #endif - --class AbiWordperfectInputStream : public WPXInputStream -+class AbiWordperfectInputStream : public librevenge::RVNGInputStream - { - public: - AbiWordperfectInputStream(GsfInput *input); - ~AbiWordperfectInputStream(); - -- virtual bool isOLEStream(); -- virtual WPXInputStream * getDocumentOLEStream(); -- -- virtual WPXInputStream * getDocumentOLEStream(const char * name); -- -+ virtual bool isStructured(); -+ virtual unsigned subStreamCount(); -+ virtual const char* subStreamName(unsigned); -+ bool existsSubStream(const char*); -+ virtual librevenge::RVNGInputStream* getSubStreamByName(const char*); -+ virtual librevenge::RVNGInputStream* getSubStreamById(unsigned); - virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); -- virtual int seek(long offset, WPX_SEEK_TYPE seekType); -+ virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType); - virtual long tell(); -- virtual bool atEOS(); -+ virtual bool isEnd(); - - private: - - GsfInput *m_input; - GsfInfile *m_ole; -+ std::map m_substreams; - }; - - AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : -- WPXInputStream(), -+ librevenge::RVNGInputStream(), - m_input(input), -- m_ole(NULL) -+ m_ole(NULL), -+ m_substreams() - { - g_object_ref(G_OBJECT(input)); - } -@@ -120,50 +127,120 @@ - return buf; - } - --int AbiWordperfectInputStream::seek(long offset, WPX_SEEK_TYPE seekType) -+int AbiWordperfectInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) - { - GSeekType gsfSeekType = G_SEEK_SET; - switch(seekType) - { -- case WPX_SEEK_CUR: -+ case librevenge::RVNG_SEEK_CUR: - gsfSeekType = G_SEEK_CUR; - break; -- case WPX_SEEK_SET: -+ case librevenge::RVNG_SEEK_SET: - gsfSeekType = G_SEEK_SET; - break; -+ case librevenge::RVNG_SEEK_END: -+ gsfSeekType = G_SEEK_END; -+ break; - } - - return gsf_input_seek(m_input, offset, gsfSeekType); - } - --bool AbiWordperfectInputStream::isOLEStream() -+bool AbiWordperfectInputStream::isStructured() - { - if (!m_ole) - m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - -- if (m_ole != NULL) -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) - return true; - - return false; - } - --WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream() -+unsigned AbiWordperfectInputStream::subStreamCount() - { -- return getDocumentOLEStream("PerfectOffice_MAIN"); -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ int numChildren = gsf_infile_num_children(m_ole); -+ if (numChildren > 0) -+ return numChildren; -+ return 0; -+ } -+ -+ return 0; - } - --WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream(const char * name) -+const char * AbiWordperfectInputStream::subStreamName(unsigned id) - { -- WPXInputStream *documentStream = NULL; -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - - if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ if ((int)id >= gsf_infile_num_children(m_ole)) -+ { -+ return 0; -+ } -+ std::map::iterator i = m_substreams.lower_bound(id); -+ if (i == m_substreams.end() || m_substreams.key_comp()(id, i->first)) -+ { -+ std::string name = gsf_infile_name_by_index(m_ole, (int)id); -+ i = m_substreams.insert(i, std::map::value_type(id, name)); -+ } -+ return i->second.c_str(); -+ } -+ -+ return 0; -+} -+ -+bool AbiWordperfectInputStream::existsSubStream(const char * name) -+{ -+ if (!m_ole) - m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); - -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ - if (m_ole) - { - GsfInput *document = gsf_infile_child_by_name(m_ole, name); - if (document) - { -+ g_object_unref(G_OBJECT (document)); -+ return true; -+ } -+ } -+ -+ return false; -+} -+ -+librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamByName(const char * name) -+{ -+ librevenge::RVNGInputStream *documentStream = NULL; -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ GsfInput *document = gsf_infile_child_by_name(m_ole, name); -+ if (document) -+ { - documentStream = new AbiWordperfectInputStream(document); - g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream - } -@@ -172,12 +249,35 @@ - return documentStream; - } - -+librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamById(unsigned id) -+{ -+ librevenge::RVNGInputStream *documentStream = NULL; -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); -+ -+ if (!m_ole) -+ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); -+ -+ if (m_ole) -+ { -+ GsfInput *document = gsf_infile_child_by_index(m_ole, (int)id); -+ if (document) -+ { -+ documentStream = new AbiWordperfectInputStream(document); -+ g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream -+ } -+ } -+ -+ return documentStream; -+} -+ - long AbiWordperfectInputStream::tell() - { - return gsf_input_tell(m_input); - } - --bool AbiWordperfectInputStream::atEOS() -+bool AbiWordperfectInputStream::isEnd() - { - return gsf_input_eof(m_input); - } -@@ -247,13 +347,13 @@ - { - AbiWordperfectInputStream gsfInput(input); - -- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); -- -+ libwpd::WPDConfidence confidence = libwpd::WPDocument::isFileFormatSupported(&gsfInput); -+ - switch (confidence) - { -- case WPD_CONFIDENCE_NONE: -+ case libwpd::WPD_CONFIDENCE_NONE: - return UT_CONFIDENCE_ZILCH; -- case WPD_CONFIDENCE_EXCELLENT: -+ case libwpd::WPD_CONFIDENCE_EXCELLENT: - return UT_CONFIDENCE_PERFECT; - default: - return UT_CONFIDENCE_ZILCH; -@@ -312,9 +412,9 @@ - UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) - { - AbiWordperfectInputStream gsfInput(input); -- WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); -+ libwpd::WPDResult error = libwpd::WPDocument::parse(&gsfInput, static_cast(this), NULL); - -- if (error != WPD_OK) -+ if (error != libwpd::WPD_OK) - { - UT_DEBUGMSG(("AbiWordPerfect: ERROR: %i!\n", (int)error)); - return UT_IE_IMPORTERROR; -@@ -329,7 +429,7 @@ - // nada - } - --void IE_Imp_WordPerfect::setDocumentMetaData(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::setDocumentMetaData(const librevenge::RVNGPropertyList &propList) - { - if (propList["dc:author"]) - getDoc()->setMetaDataProp(PD_META_KEY_CREATOR, propList["dc:author"]->getStr().cstr()); -@@ -339,15 +439,15 @@ - getDoc()->setMetaDataProp(PD_META_KEY_PUBLISHER, propList["dc:publisher"]->getStr().cstr()); - if (propList["dc:type"]) - getDoc()->setMetaDataProp(PD_META_KEY_TYPE, propList["dc:category"]->getStr().cstr()); -- if (propList["libwpd:keywords"]) -- getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["libwpd:keywords"]->getStr().cstr()); -+ if (propList["librevenge:keywords"]) -+ getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["librevenge:keywords"]->getStr().cstr()); - if (propList["dc:language"]) - getDoc()->setMetaDataProp(PD_META_KEY_LANGUAGE, propList["dc:language"]->getStr().cstr()); -- if (propList["libwpd:abstract"]) -- getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["libwpd:abstract"]->getStr().cstr()); -+ if (propList["librevenge:abstract"]) -+ getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["librevenge:abstract"]->getStr().cstr()); - } - --void IE_Imp_WordPerfect::startDocument() -+void IE_Imp_WordPerfect::startDocument(const librevenge::RVNGPropertyList & /* propList */) - { - UT_DEBUGMSG(("AbiWordPerfect: startDocument\n")); - } -@@ -357,7 +457,7 @@ - UT_DEBUGMSG(("AbiWordPerfect: endDocument\n")); - } - --void IE_Imp_WordPerfect::openPageSpan(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::openPageSpan(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: openPageSpan\n")); -@@ -378,7 +478,7 @@ - - } - --void IE_Imp_WordPerfect::openHeader(const WPXPropertyList & /*propList*/) -+void IE_Imp_WordPerfect::openHeader(const librevenge::RVNGPropertyList & /*propList*/) - { - m_bHdrFtrOpenCount++; - -@@ -420,7 +520,7 @@ - */ - } - --void IE_Imp_WordPerfect::openFooter(const WPXPropertyList & /*propList*/) -+void IE_Imp_WordPerfect::openFooter(const librevenge::RVNGPropertyList & /*propList*/) - { - m_bHdrFtrOpenCount++; - // see above comments re: openHeader -@@ -432,7 +532,7 @@ - // see above comments re: closeHeader - } - --void IE_Imp_WordPerfect::openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops) -+void IE_Imp_WordPerfect::openParagraph(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: openParagraph()\n")); -@@ -478,13 +578,15 @@ - (int)(m_topMargin*72), (int)(m_bottomMargin*72), m_leftMarginOffset, m_rightMarginOffset, m_textIndent, lineSpacing); - propBuffer += tmpBuffer; - -- if (tabStops.count() > 0) // Append the tabstop information -+ const librevenge::RVNGPropertyListVector *tabStops = propList.child("style:tab-stops"); -+ -+ if (tabStops && tabStops->count()) // Append the tabstop information - { - propBuffer += "; tabstops:"; - tmpBuffer = ""; -- WPXPropertyListVector::Iter i(tabStops); -- for (i.rewind(); i.next();) -- { -+ librevenge::RVNGPropertyListVector::Iter i(*tabStops); -+ for (i.rewind(); i.next();) -+ { - propBuffer += tmpBuffer; - if (i()["style:position"]) - { -@@ -515,8 +617,8 @@ - propBuffer += "0"; - - tmpBuffer = ","; -- } -- } -+ } -+ } - - - -@@ -543,7 +645,7 @@ - } - } - --void IE_Imp_WordPerfect::openSpan(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::openSpan(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: Appending current text properties\n")); -@@ -614,13 +716,14 @@ - X_CheckDocumentError(appendFmt(propsArray)); - } - --void IE_Imp_WordPerfect::openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns) -+void IE_Imp_WordPerfect::openSection(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: openSection\n")); - - float marginLeft = 0.0f, marginRight = 0.0f; -- int columnsCount = ((columns.count() == 0) ? 1 : columns.count()); -+ const librevenge::RVNGPropertyListVector *columns = propList.child("style:columns"); -+ int columnsCount = ((!columns || !columns->count()) ? 1 : columns->count()); - - // TODO: support spaceAfter - if (propList["fo:start-indent"]) -@@ -647,7 +750,7 @@ - X_CheckDocumentError(appendSpan(&ucs,1)); - } - --void IE_Imp_WordPerfect::insertText(const WPXString &text) -+void IE_Imp_WordPerfect::insertText(const librevenge::RVNGString &text) - { - if (m_bHdrFtrOpenCount) return; // HACK - if (text.len()) -@@ -658,6 +761,15 @@ - } - } - -+void IE_Imp_WordPerfect::insertSpace() -+{ -+ if (m_bHdrFtrOpenCount) return; // HACK -+ UT_DEBUGMSG(("AbiWordPerfect: insertSpace\n")); -+ -+ UT_UCS4Char ucs = UCS_SPACE; -+ X_CheckDocumentError(appendSpan(&ucs,1)); -+} -+ - void IE_Imp_WordPerfect::insertLineBreak() - { - if (m_bHdrFtrOpenCount) return; // HACK -@@ -668,12 +780,11 @@ - } - - -- --void IE_Imp_WordPerfect::defineOrderedListLevel(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::openOrderedListLevel(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK -- UT_DEBUGMSG(("AbiWordPerfect: defineOrderedListLevel\n")); -- -+ UT_DEBUGMSG(("AbiWordPerfect: openOrderedListLevel\n")); -+ - int listID = 0, startingNumber = 0, level = 1; - char listType = '1'; - UT_UTF8String textBeforeNumber, textAfterNumber; -@@ -680,12 +791,12 @@ - float listLeftOffset = 0.0f; - float listMinLabelWidth = 0.0f; - -- if (propList["libwpd:id"]) -- listID = propList["libwpd:id"]->getInt(); -+ if (propList["librevenge:id"]) -+ listID = propList["librevenge:id"]->getInt(); - if (propList["text:start-value"]) - startingNumber = propList["text:start-value"]->getInt(); -- if (propList["libwpd:level"]) -- level = propList["libwpd:level"]->getInt(); -+ if (propList["librevenge:level"]) -+ level = propList["librevenge:level"]->getInt(); - if (propList["style:num-prefix"]) - textBeforeNumber += propList["style:num-prefix"]->getStr().cstr(); - if (propList["style:num-suffix"]) -@@ -716,22 +827,38 @@ - m_pCurrentListDefinition->setListMinLabelWidth(level, listMinLabelWidth); - _updateDocumentOrderedListDefinition(m_pCurrentListDefinition, level, listType, textBeforeNumber, textAfterNumber, startingNumber); - } -+ -+ m_iCurrentListLevel++; - } - --void IE_Imp_WordPerfect::defineUnorderedListLevel(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::closeOrderedListLevel() - { - if (m_bHdrFtrOpenCount) return; // HACK -- UT_DEBUGMSG(("AbiWordPerfect: defineUnorderedListLevel\n")); -+ UT_DEBUGMSG(("AbiWordPerfect: closeOrderedListLevel (level: %i)\n", m_iCurrentListLevel)); -+ UT_ASSERT(m_iCurrentListLevel > 0); -+ -+ // every time we close a list level, the level above it is normally renumbered to start at "1" -+ // again. this code takes care of that. -+ if (m_iCurrentListLevel < (WP6_NUM_LIST_LEVELS-1)) -+ m_pCurrentListDefinition->setLevelNumber(m_iCurrentListLevel + 1, 0); -+ -+ m_iCurrentListLevel--; -+} - -+void IE_Imp_WordPerfect::openUnorderedListLevel(const librevenge::RVNGPropertyList &propList) -+{ -+ if (m_bHdrFtrOpenCount) return; // HACK -+ UT_DEBUGMSG(("AbiWordPerfect: openUNorderedListLevel\n")); -+ - int listID = 0, level = 1; -- WPXString textBeforeNumber, textAfterNumber; -+ librevenge::RVNGString textBeforeNumber, textAfterNumber; - float listLeftOffset = 0.0f; - float listMinLabelWidth = 0.0f; - -- if (propList["libwpd:id"]) -- listID = propList["libwpd:id"]->getInt(); -- if (propList["libwpd:level"]) -- level = propList["libwpd:level"]->getInt(); -+ if (propList["librevenge:id"]) -+ listID = propList["librevenge:id"]->getInt(); -+ if (propList["librevenge:level"]) -+ level = propList["librevenge:level"]->getInt(); - if (propList["text:space-before"]) - listLeftOffset = propList["text:space-before"]->getDouble(); - if (propList["text:min-label-width"]) -@@ -752,39 +879,10 @@ - m_pCurrentListDefinition->setListMinLabelWidth(level, listMinLabelWidth); - _updateDocumentUnorderedListDefinition(m_pCurrentListDefinition, level); - } --} - --//void IE_Imp_WordPerfect::openOrderedListLevel(const int listID) --void IE_Imp_WordPerfect::openOrderedListLevel(const WPXPropertyList & /*propList*/) --{ -- if (m_bHdrFtrOpenCount) return; // HACK -- UT_DEBUGMSG(("AbiWordPerfect: openOrderedListLevel\n")); -- - m_iCurrentListLevel++; - } - --void IE_Imp_WordPerfect::closeOrderedListLevel() --{ -- if (m_bHdrFtrOpenCount) return; // HACK -- UT_DEBUGMSG(("AbiWordPerfect: closeOrderedListLevel (level: %i)\n", m_iCurrentListLevel)); -- UT_ASSERT(m_iCurrentListLevel > 0); -- -- // every time we close a list level, the level above it is normally renumbered to start at "1" -- // again. this code takes care of that. -- if (m_iCurrentListLevel < (WP6_NUM_LIST_LEVELS-1)) -- m_pCurrentListDefinition->setLevelNumber(m_iCurrentListLevel + 1, 0); -- -- m_iCurrentListLevel--; --} -- --void IE_Imp_WordPerfect::openUnorderedListLevel(const WPXPropertyList & /*propList*/) --{ -- if (m_bHdrFtrOpenCount) return; // HACK -- UT_DEBUGMSG(("AbiWordPerfect: openUNorderedListLevel\n")); -- -- m_iCurrentListLevel++; --} -- - void IE_Imp_WordPerfect::closeUnorderedListLevel() - { - if (m_bHdrFtrOpenCount) return; // HACK -@@ -796,7 +894,7 @@ - - // ASSUMPTION: We assume that unordered lists will always pass a number of "0". unpredictable behaviour - // may result otherwise --void IE_Imp_WordPerfect::openListElement(const WPXPropertyList &propList, const WPXPropertyListVector & /*tabStops*/) -+void IE_Imp_WordPerfect::openListElement(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: openListElement\n")); -@@ -885,7 +983,7 @@ - X_CheckDocumentError(appendSpan(&ucs,1)); - } - --void IE_Imp_WordPerfect::openFootnote(const WPXPropertyList & /*propList*/) -+void IE_Imp_WordPerfect::openFootnote(const librevenge::RVNGPropertyList & /*propList*/) - { - if (m_bHdrFtrOpenCount) return; // HACK - -@@ -934,7 +1032,7 @@ - X_CheckDocumentError(appendStrux(PTX_EndFootnote,NULL)); - } - --void IE_Imp_WordPerfect::openEndnote(const WPXPropertyList & /*propList*/) -+void IE_Imp_WordPerfect::openEndnote(const librevenge::RVNGPropertyList & /*propList*/) - { - if (m_bHdrFtrOpenCount) return; // HACK - const gchar** propsArray = NULL; -@@ -975,7 +1073,7 @@ - X_CheckDocumentError(appendStrux(PTX_EndEndnote,NULL)); - } - --void IE_Imp_WordPerfect::openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns) -+void IE_Imp_WordPerfect::openTable(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - // TODO: handle 'marginLeftOffset' and 'marginRightOffset' -@@ -1000,14 +1098,18 @@ - } - } - -- propBuffer += "table-column-props:"; -- WPXPropertyListVector::Iter i(columns); -- for (i.rewind(); i.next();) -+ const librevenge::RVNGPropertyListVector *columns = propList.child("librevenge:table-columns"); -+ if (columns) - { -- UT_String tmpBuffer; -- if (i()["style:column-width"]) -- UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr()); -- propBuffer += tmpBuffer; -+ propBuffer += "table-column-props:"; -+ librevenge::RVNGPropertyListVector::Iter i(*columns); -+ for (i.rewind(); i.next();) -+ { -+ UT_String tmpBuffer; -+ if (i()["style:column-width"]) -+ UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr()); -+ propBuffer += tmpBuffer; -+ } - } - - const gchar* propsArray[3]; -@@ -1018,7 +1120,7 @@ - X_CheckDocumentError(appendStrux(PTX_SectionTable, propsArray)); - } - --void IE_Imp_WordPerfect::openTableRow(const WPXPropertyList & /*propList*/) -+void IE_Imp_WordPerfect::openTableRow(const librevenge::RVNGPropertyList & /*propList*/) - { - if (m_bHdrFtrOpenCount) return; // HACK - UT_DEBUGMSG(("AbiWordPerfect: openRow\n")); -@@ -1030,14 +1132,14 @@ - m_bInCell = false; - } - --void IE_Imp_WordPerfect::openTableCell(const WPXPropertyList &propList) -+void IE_Imp_WordPerfect::openTableCell(const librevenge::RVNGPropertyList &propList) - { - if (m_bHdrFtrOpenCount) return; // HACK - int col =0, row = 0, colSpan = 0, rowSpan = 0; -- if (propList["libwpd:column"]) -- col = propList["libwpd:column"]->getInt(); -- if (propList["libwpd:row"]) -- row = propList["libwpd:row"]->getInt(); -+ if (propList["librevenge:column"]) -+ col = propList["librevenge:column"]->getInt(); -+ if (propList["librevenge:row"]) -+ row = propList["librevenge:row"]->getInt(); - if (propList["table:number-columns-spanned"]) - colSpan = propList["table:number-columns-spanned"]->getInt(); - if (propList["table:number-rows-spanned"]) -@@ -1247,9 +1349,9 @@ - virtual UT_Error _loadFile(GsfInput * input) - { - AbiWordperfectInputStream gsfInput(input); -- WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); -+ libwps::WPSResult error = libwps::WPSDocument::parse(&gsfInput, static_cast(this)); - -- if (error != WPS_OK) -+ if (error != libwps::WPS_OK) - { - UT_DEBUGMSG(("AbiMSWorks: ERROR: %i!\n", (int)error)); - return UT_IE_IMPORTERROR; -@@ -1286,13 +1388,17 @@ - { - AbiWordperfectInputStream gsfInput(input); - -- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); -+ libwps::WPSKind kind; -+ libwps::WPSConfidence confidence = libwps::WPSDocument::isFileFormatSupported(&gsfInput, kind); -+ -+ if (kind != libwps::WPS_TEXT) -+ confidence = libwps::WPS_CONFIDENCE_NONE; - - switch (confidence) - { -- case WPS_CONFIDENCE_NONE: -+ case libwps::WPS_CONFIDENCE_NONE: - return UT_CONFIDENCE_ZILCH; -- case WPS_CONFIDENCE_EXCELLENT: -+ case libwps::WPS_CONFIDENCE_EXCELLENT: - return UT_CONFIDENCE_PERFECT; - default: - return UT_CONFIDENCE_ZILCH; -Index: plugins/wordperfect/xp/Makefile.am -=================================================================== ---- plugins/wordperfect/xp/Makefile.am (revision 34460) -+++ plugins/wordperfect/xp/Makefile.am (working copy) -@@ -6,8 +6,6 @@ - -DABI_BUILD_VERSION=\"$(VERSION)\" - - libxp_la_SOURCES = \ -- ie_exp_WordPerfect.cpp \ -- ie_exp_WordPerfect.h \ - ie_impexp_WordPerfect.cpp \ - ie_impexp_WordPerfect.h \ - ie_imp_WordPerfect.cpp \ -Index: plugins/wordperfect/xp/ie_impexp_WordPerfect.h -=================================================================== ---- plugins/wordperfect/xp/ie_impexp_WordPerfect.h (revision 34460) -+++ plugins/wordperfect/xp/ie_impexp_WordPerfect.h (working copy) -@@ -24,7 +24,6 @@ - */ - - #include "ie_imp_WordPerfect.h" --#include "ie_exp_WordPerfect.h" - #include "xap_Module.h" - - #define IE_MIMETYPE_WP_51 "application/wordperfect5.1" -Index: plugins/wordperfect/plugin.m4 -=================================================================== ---- plugins/wordperfect/plugin.m4 (revision 34460) -+++ plugins/wordperfect/plugin.m4 (working copy) -@@ -1,6 +1,6 @@ - --wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" --wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' -+wordperfect_pkgs="libwpd-0.10 $gsf_req" -+wordperfect_wps_pkgs='libwps-0.3' - wordperfect_deps="no" - - WORDPERFECT_CFLAGS= -@@ -29,7 +29,7 @@ - - PKG_CHECK_EXISTS([ $wordperfect_wps_pkgs ], - [ -- wp_deps_pkgs="$wp_deps_pkgs $wordperfect_wps_pkgs" -+ wp_deps_pkgs="$wordperfect_wps_pkgs $wp_deps_pkgs" - WPS_DEFINE=" -DHAVE_LIBWPS" - ]) - - diff --git a/libre/abiword-libre/abiword.install b/libre/abiword-libre/abiword.install deleted file mode 100644 index cc4abc0b6..000000000 --- a/libre/abiword-libre/abiword.install +++ /dev/null @@ -1,12 +0,0 @@ -post_install() { - update-desktop-database -q - gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor -} - -post_upgrade() { - post_install $1 -} - -post_remove() { - post_install $1 -} diff --git a/libre/abiword-libre/compat_libwpg_0_9.patch b/libre/abiword-libre/compat_libwpg_0_9.patch deleted file mode 100644 index cf36e188e..000000000 --- a/libre/abiword-libre/compat_libwpg_0_9.patch +++ /dev/null @@ -1,371 +0,0 @@ -diff -Nur abiword-2.8.6.orig//plugin-configure.m4 abiword-2.8.6/plugin-configure.m4 ---- abiword-2.8.6.orig//plugin-configure.m4 2010-06-13 14:17:27.000000000 -0700 -+++ abiword-2.8.6/plugin-configure.m4 2010-12-06 13:59:43.083048588 -0800 -@@ -794,7 +794,7 @@ - AC_SUBST([OPENXML_LIBS]) - - --wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" -+wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" - wpg_deps="no" - - if test "$enable_wpg" != ""; then -@@ -1497,8 +1497,8 @@ - AC_SUBST([EML_LIBS]) - - --wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" --wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' -+wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" -+wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' - wordperfect_deps="no" - - WORDPERFECT_CFLAGS= -diff -Nur abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 abiword-2.8.6/plugins/wordperfect/plugin.m4 ---- abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 2010-05-30 07:50:46.000000000 -0700 -+++ abiword-2.8.6/plugins/wordperfect/plugin.m4 2010-12-06 13:59:53.929715254 -0800 -@@ -1,6 +1,6 @@ - --wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" --wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' -+wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" -+wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' - wordperfect_deps="no" - - WORDPERFECT_CFLAGS= -diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp ---- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-02-06 13:06:11.000000000 -0800 -+++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-12-06 13:59:53.926381921 -0800 -@@ -60,7 +60,7 @@ - - // Stream class - --#include -+#include - - #include - #include -@@ -70,12 +70,7 @@ - #include - #endif - --class AbiWordperfectInputStream : --#ifdef HAVE_LIBWPS -- public WPSInputStream --#else -- public WPXInputStream --#endif -+class AbiWordperfectInputStream : public WPXInputStream - { - public: - AbiWordperfectInputStream(GsfInput *input); -@@ -86,7 +81,7 @@ - - virtual WPXInputStream * getDocumentOLEStream(const char * name); - -- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); -+ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); - virtual int seek(long offset, WPX_SEEK_TYPE seekType); - virtual long tell(); - virtual bool atEOS(); -@@ -98,11 +93,7 @@ - }; - - AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : --#ifdef HAVE_LIBWPS -- WPSInputStream(), --#else -- WPXInputStream(true), --#endif -+ WPXInputStream(), - m_input(input), - m_ole(NULL) - { -@@ -117,9 +108,9 @@ - g_object_unref(G_OBJECT(m_input)); - } - --const uint8_t * AbiWordperfectInputStream::read(size_t numBytes, size_t &numBytesRead) -+const unsigned char * AbiWordperfectInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) - { -- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); -+ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); - - if (buf == NULL) - numBytesRead = 0; -@@ -256,19 +247,12 @@ - { - AbiWordperfectInputStream gsfInput(input); - -- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput, true); -+ WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); - - switch (confidence) - { - case WPD_CONFIDENCE_NONE: -- // libwpd > 0.7.1 reports POOR if the text file is plain text (that _could_ be a WP4x document) -- // however, we'll let the text importer handle such cases -- case WPD_CONFIDENCE_POOR: - return UT_CONFIDENCE_ZILCH; -- case WPD_CONFIDENCE_LIKELY: -- return UT_CONFIDENCE_SOSO; -- case WPD_CONFIDENCE_GOOD: -- return UT_CONFIDENCE_GOOD; - case WPD_CONFIDENCE_EXCELLENT: - return UT_CONFIDENCE_PERFECT; - default: -@@ -328,7 +312,7 @@ - UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) - { - AbiWordperfectInputStream gsfInput(input); -- WPDResult error = WPDocument::parse(&gsfInput, static_cast(this)); -+ WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); - - if (error != WPD_OK) - { -@@ -381,9 +365,9 @@ - float marginLeft = 1.0f, marginRight = 1.0f; - - if (propList["fo:margin-left"]) -- marginLeft = propList["fo:margin-left"]->getFloat(); -+ marginLeft = propList["fo:margin-left"]->getDouble(); - if (propList["fo:margin-right"]) -- marginRight = propList["fo:margin-right"]->getFloat(); -+ marginRight = propList["fo:margin-right"]->getDouble(); - - if (marginLeft != m_leftPageMargin || marginRight != m_rightPageMargin /* || */ - /* marginTop != m_marginBottom || marginBottom != m_marginBottom */ ) -@@ -456,15 +440,15 @@ - float marginTop = 0.0f, marginBottom = 0.0f; - float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f; - if (propList["fo:margin-top"]) -- marginTop = propList["fo:margin-top"]->getFloat(); -+ marginTop = propList["fo:margin-top"]->getDouble(); - if (propList["fo:margin-bottom"]) -- marginBottom = propList["fo:margin-bottom"]->getFloat(); -+ marginBottom = propList["fo:margin-bottom"]->getDouble(); - if (propList["fo:margin-left"]) -- marginLeft = propList["fo:margin-left"]->getFloat(); -+ marginLeft = propList["fo:margin-left"]->getDouble(); - if (propList["fo:margin-right"]) -- marginRight = propList["fo:margin-right"]->getFloat(); -+ marginRight = propList["fo:margin-right"]->getDouble(); - if (propList["fo:text-indent"]) -- textIndent = propList["fo:text-indent"]->getFloat(); -+ textIndent = propList["fo:text-indent"]->getDouble(); - - m_topMargin = marginTop; - m_bottomMargin = marginBottom; -@@ -487,7 +471,7 @@ - - float lineSpacing = 1.0f; - if (propList["fo:line-height"]) -- lineSpacing = propList["fo:line-height"]->getFloat(); -+ lineSpacing = propList["fo:line-height"]->getDouble(); - - UT_String tmpBuffer; - UT_String_sprintf(tmpBuffer, "; margin-top:%.4fin; margin-bottom:%.4fin; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f", -@@ -504,7 +488,7 @@ - propBuffer += tmpBuffer; - if (i()["style:position"]) - { -- UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getFloat()); -+ UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble()); - propBuffer += tmpBuffer; - } - -@@ -640,9 +624,9 @@ - - // TODO: support spaceAfter - if (propList["fo:margin-left"]) -- marginLeft = propList["fo:margin-left"]->getFloat(); -+ marginLeft = propList["fo:margin-left"]->getDouble(); - if (propList["fo:margin-right"]) -- marginRight = propList["fo:margin-right"]->getFloat(); -+ marginRight = propList["fo:margin-right"]->getDouble(); - - if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount) - m_bSectionChanged = true; -@@ -709,9 +693,9 @@ - if (propList["style:num-format"]) - listType = propList["style:num-format"]->getStr().cstr()[0]; - if (propList["text:space-before"]) -- listLeftOffset = propList["text:space-before"]->getFloat(); -+ listLeftOffset = propList["text:space-before"]->getDouble(); - if (propList["text:min-label-width"]) -- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); -+ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); - - if (!m_pCurrentListDefinition || - m_pCurrentListDefinition->getOutlineHash() != listID || -@@ -749,9 +733,9 @@ - if (propList["libwpd:level"]) - level = propList["libwpd:level"]->getInt(); - if (propList["text:space-before"]) -- listLeftOffset = propList["text:space-before"]->getFloat(); -+ listLeftOffset = propList["text:space-before"]->getDouble(); - if (propList["text:min-label-width"]) -- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); -+ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); - - if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID) - { -@@ -871,10 +855,10 @@ - - UT_String_sprintf(tempBuffer, "margin-left:%.4fin; ", m_pCurrentListDefinition->getListLeftOffset(m_iCurrentListLevel) - + m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) -- - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); -+ - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); - propBuffer += tempBuffer; - UT_String_sprintf(tempBuffer, "text-indent:%.4fin", - m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) -- + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); -+ + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); - propBuffer += tempBuffer; - - listAttribs[attribsCount++] = PT_PROPS_ATTRIBUTE_NAME; -@@ -1263,7 +1247,7 @@ - virtual UT_Error _loadFile(GsfInput * input) - { - AbiWordperfectInputStream gsfInput(input); -- WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); -+ WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); - - if (error != WPS_OK) - { -@@ -1302,18 +1286,12 @@ - { - AbiWordperfectInputStream gsfInput(input); - -- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput, true); -+ WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); - - switch (confidence) - { - case WPS_CONFIDENCE_NONE: - return UT_CONFIDENCE_ZILCH; -- case WPS_CONFIDENCE_POOR: -- return UT_CONFIDENCE_POOR; -- case WPS_CONFIDENCE_LIKELY: -- return UT_CONFIDENCE_SOSO; -- case WPS_CONFIDENCE_GOOD: -- return UT_CONFIDENCE_GOOD; - case WPS_CONFIDENCE_EXCELLENT: - return UT_CONFIDENCE_PERFECT; - default: -diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h ---- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h 2009-06-19 01:55:49.000000000 -0700 -+++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h 2010-12-06 13:59:53.929715254 -0800 -@@ -30,13 +30,7 @@ - #define IE_IMP_WP_H - - #include --#ifdef _WIN32 --#define POINT WPX_POINT --#endif - #include --#ifdef _WIN32 --#undef POINT --#endif - #include "ie_imp.h" - #include "ut_string.h" - #include "ut_string_class.h" -@@ -98,7 +92,7 @@ - IE_Imp ** ppie); - }; - --class IE_Imp_WordPerfect : public IE_Imp, public WPXHLListenerImpl -+class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface - { - public: - IE_Imp_WordPerfect(PD_Document * pDocument); -@@ -154,6 +148,21 @@ - virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} - virtual void closeTable(); - -+ virtual void definePageStyle(const WPXPropertyList&) {} -+ virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} -+ virtual void defineCharacterStyle(const WPXPropertyList&) {} -+ virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} -+ virtual void insertSpace() {} -+ virtual void insertField(const WPXString&, const WPXPropertyList&) {} -+ virtual void openComment(const WPXPropertyList&) {} -+ virtual void closeComment() {} -+ virtual void openTextBox(const WPXPropertyList&) {} -+ virtual void closeTextBox() {} -+ virtual void openFrame(const WPXPropertyList&) {} -+ virtual void closeFrame() {} -+ virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} -+ virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} -+ - - protected: - virtual UT_Error _loadFile(GsfInput * input); -diff -Nur abiword-2.8.6.orig//plugins/wpg/plugin.m4 abiword-2.8.6/plugins/wpg/plugin.m4 ---- abiword-2.8.6.orig//plugins/wpg/plugin.m4 2010-05-30 07:50:46.000000000 -0700 -+++ abiword-2.8.6/plugins/wpg/plugin.m4 2010-12-06 13:59:53.929715254 -0800 -@@ -1,5 +1,5 @@ - --wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" -+wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" - wpg_deps="no" - - if test "$enable_wpg" != ""; then -diff -Nur abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp ---- abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp 2008-08-15 14:52:32.000000000 -0700 -+++ abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp 2010-12-06 13:59:53.923048588 -0800 -@@ -31,11 +31,10 @@ - #include - #include - #include --#include -+#include - #include "xap_Module.h" - - using libwpg::WPGraphics; --using libwpg::WPGString; - - ABI_PLUGIN_DECLARE("WPG") - -@@ -48,7 +47,7 @@ - virtual bool isOLEStream(); - virtual WPXInputStream * getDocumentOLEStream(); - virtual WPXInputStream * getDocumentOLEStream(const char * name); -- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); -+ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); - virtual int seek(long offset, WPX_SEEK_TYPE seekType); - virtual long tell(); - virtual bool atEOS(); -@@ -60,7 +59,7 @@ - }; - - AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : -- WPXInputStream(true), -+ WPXInputStream(), - m_input(input), - m_ole(NULL) - { -@@ -75,9 +74,9 @@ - g_object_unref(G_OBJECT(m_input)); - } - --const uint8_t * AbiWordPerfectGraphicsInputStream::read(size_t numBytes, size_t &numBytesRead) -+const unsigned char * AbiWordPerfectGraphicsInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) - { -- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); -+ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); - - if (buf == NULL) - numBytesRead = 0; -@@ -245,10 +244,10 @@ - UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) - { - AbiWordPerfectGraphicsInputStream gsfInput(input); -- WPGString svgOutput; -+ WPXString svgOutput; - if (WPGraphics::generateSVG(&gsfInput, svgOutput)) - { -- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.length(), false); -+ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); - UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); - g_object_unref(svgInput); - return result; diff --git a/libre/abiword-libre/fix_crash_saving_pdf.patch b/libre/abiword-libre/fix_crash_saving_pdf.patch deleted file mode 100644 index 6dd78c7f9..000000000 --- a/libre/abiword-libre/fix_crash_saving_pdf.patch +++ /dev/null @@ -1,86 +0,0 @@ ---- abiword/trunk/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp 2013/12/23 03:20:34 33661 -+++ abiword/trunk/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp 2013/12/28 02:04:39 33662 -@@ -36,42 +36,60 @@ - - mode = _fv_text_handle_get_mode (handle); - -- if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START) -+ if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START) { - handles->updateSelectionStart ((UT_sint32)x, (UT_sint32)y); -+ } - else { -- if (mode == FV_TEXT_HANDLE_MODE_SELECTION) -+ if (mode == FV_TEXT_HANDLE_MODE_SELECTION) { - handles->updateSelectionEnd ((UT_sint32)x, (UT_sint32)y); -- else -+ } -+ else { - handles->updateCursor((UT_sint32)x, (UT_sint32)y); -+ } - } - } - - FV_UnixSelectionHandles::FV_UnixSelectionHandles(FV_View *view, FV_Selection selection) - : FV_SelectionHandles (view, selection) -+ , m_text_handle(NULL) - { - XAP_Frame * pFrame = static_cast(m_pView->getParentData()); -- XAP_UnixFrameImpl * pFrameImpl =static_cast( pFrame->getFrameImpl()); -- GtkWidget * pWidget = pFrameImpl->getViewWidget(); -- -- m_text_handle = _fv_text_handle_new (pWidget); -- _fv_text_handle_set_relative_to (m_text_handle, -- gtk_widget_get_window (pWidget)); -- g_signal_connect (m_text_handle, "handle-dragged", -- G_CALLBACK(handle_dragged_cb), this); -+ // When saving to PDF (and printing) we don't have a frame -+ // See bug 13586 -+ if (pFrame) { -+ XAP_UnixFrameImpl * pFrameImpl = static_cast(pFrame->getFrameImpl()); -+ GtkWidget * pWidget = pFrameImpl->getViewWidget(); -+ -+ m_text_handle = _fv_text_handle_new (pWidget); -+ _fv_text_handle_set_relative_to (m_text_handle, -+ gtk_widget_get_window (pWidget)); -+ g_signal_connect (m_text_handle, "handle-dragged", -+ G_CALLBACK(handle_dragged_cb), this); -+ } - } - - FV_UnixSelectionHandles::~FV_UnixSelectionHandles() - { -+ if(!m_text_handle) { -+ return; -+ } - g_object_unref (m_text_handle); - } - - void FV_UnixSelectionHandles::hide() - { -+ if(!m_text_handle) { -+ return; -+ } - _fv_text_handle_set_mode (m_text_handle, FV_TEXT_HANDLE_MODE_NONE); - } - - void FV_UnixSelectionHandles::setCursorCoords(UT_sint32 x, UT_sint32 y, UT_uint32 height, bool visible) - { -+ if(!m_text_handle) { -+ return; -+ } -+ - GdkRectangle rect; - - _fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_CURSOR); -@@ -92,6 +110,10 @@ - void FV_UnixSelectionHandles::setSelectionCoords(UT_sint32 start_x, UT_sint32 start_y, UT_uint32 start_height, bool start_visible, - UT_sint32 end_x, UT_sint32 end_y, UT_uint32 end_height, bool end_visible) - { -+ if(!m_text_handle) { -+ return; -+ } -+ - GdkRectangle rect; - - _fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_SELECTION); - diff --git a/libre/abiword-libre/liberation-fonts.patch b/libre/abiword-libre/liberation-fonts.patch deleted file mode 100644 index 1660c3ead..000000000 --- a/libre/abiword-libre/liberation-fonts.patch +++ /dev/null @@ -1,1694 +0,0 @@ -diff --git a/plugins/latex/xp/ie_exp_LaTeX.cpp b/plugins/latex/xp/ie_exp_LaTeX.cpp -index f3d56c6..d5a77ef 100644 ---- a/plugins/latex/xp/ie_exp_LaTeX.cpp -+++ b/plugins/latex/xp/ie_exp_LaTeX.cpp -@@ -1046,7 +1046,7 @@ void s_LaTeX_Listener::_openSpan(PT_AttrPropIndex api) - m_pie->write("\\texttt{"); - m_NumCloseBrackets++; - } -- if (!strcmp("Arial", szValue) || -+ if (!strcmp("Liberation Sans", szValue) || - !strcmp("Helvetic", szValue) || - !strcmp("Luxi Sans",szValue)) { - m_pie->write("\\textsf{"); -diff --git a/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp b/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp -index ed167dc..e0831c9 100644 ---- a/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp -+++ b/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp -@@ -59,7 +59,7 @@ void ODi_FontFaceDecls::startElement (const gchar* pName, - fontFamily = pFontFamily; - - if (pFontFamily && (pFontFamily[0] == '\'') && (pFontFamily[strlen(pFontFamily)-1] == '\'')) { -- // e.g.: Turns a "'Times New Roman'" into a "Times New Roman". -+ // e.g.: Turns a "'Liberation Serif'" into a "Liberation Serif". - // OpenOffice.org sometimes adds those extra "'" surrounding the - // font family name if it's composed by more than one word. - m_fontFamilies[pStyleName] = -diff --git a/plugins/openwriter/xp/ie_exp_OpenWriter.cpp b/plugins/openwriter/xp/ie_exp_OpenWriter.cpp -index 1fab89a..a399c59 100644 ---- a/plugins/openwriter/xp/ie_exp_OpenWriter.cpp -+++ b/plugins/openwriter/xp/ie_exp_OpenWriter.cpp -@@ -900,12 +900,12 @@ bool OO_StylesWriter::writeStyles(PD_Document * pDoc, GsfOutfile * oo, OO_Styles - { - "\n", - "\n", -- "\n", -+ "\n", - "\n", - "\n", - "\n", - "\n", -- "\n", -+ "\n", - "\n" - }; - -diff --git a/plugins/openxml/common/xp/OXML_FontManager.cpp b/plugins/openxml/common/xp/OXML_FontManager.cpp -index 41b719d..2c53c1a 100644 ---- a/plugins/openxml/common/xp/OXML_FontManager.cpp -+++ b/plugins/openxml/common/xp/OXML_FontManager.cpp -@@ -34,7 +34,7 @@ - #include - - OXML_FontManager::OXML_FontManager() : -- m_defaultFont("Times New Roman") -+ m_defaultFont("Liberation Serif") - { - m_major_rts.clear(); - m_minor_rts.clear(); -diff --git a/plugins/openxml/common/xp/OXML_List.cpp b/plugins/openxml/common/xp/OXML_List.cpp -index 5bcb47a..88dba7e 100644 ---- a/plugins/openxml/common/xp/OXML_List.cpp -+++ b/plugins/openxml/common/xp/OXML_List.cpp -@@ -258,7 +258,7 @@ UT_Error OXML_List::serialize(IE_Exp_OpenXML* exporter) - txt = txt.replace(index+1, 1, 1, '1'+i); - } - -- std::string fontFamily("Times New Roman"); -+ std::string fontFamily("Liberation Serif"); - const gchar* listType = "bullet"; - switch(type) - { -diff --git a/plugins/passepartout/xp/ie_exp_Passepartout.cpp b/plugins/passepartout/xp/ie_exp_Passepartout.cpp -index e18e7f1..eec9367 100644 ---- a/plugins/passepartout/xp/ie_exp_Passepartout.cpp -+++ b/plugins/passepartout/xp/ie_exp_Passepartout.cpp -@@ -318,7 +318,7 @@ void Passepartout_Listener::_openBlock(PT_AttrPropIndex api) - } - else - { -- TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Times New Roman" ); -+ TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Liberation Serif" ); - m_pie->write(TempStr.utf8_str()); - } - -@@ -426,7 +426,7 @@ void Passepartout_Listener::_openFont(PT_AttrPropIndex api) - } - else - { -- TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Times New Roman" ); -+ TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Liberation Serif" ); - m_pie->write(TempStr.utf8_str()); - } - -diff --git a/plugins/t602/xp/ie_imp_T602.cpp b/plugins/t602/xp/ie_imp_T602.cpp -index a57a9e2..f7f2301 100644 ---- a/plugins/t602/xp/ie_imp_T602.cpp -+++ b/plugins/t602/xp/ie_imp_T602.cpp -@@ -620,7 +620,7 @@ switch (c) - case 0x01: - m_sfont ^=1; - if (m_sfont & 1) -- { m_size=static_cast(0.8*m_basesize); m_family="Arial"; -+ { m_size=static_cast(0.8*m_basesize); m_family="Liberation Sans"; - /* FIXME? -> .profile?*/ } - else - { m_size=m_basesize; m_family=m_basefamily; } -diff --git a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp -index 4c8d23c..6bcfd6d 100644 ---- a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp -+++ b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp -@@ -234,7 +234,7 @@ GR_Font * GR_UnixCairoGraphics::getGUIFont(void) - const char *guiFontName = pango_font_description_get_family(tempStyle->font_desc); - #endif - if (!guiFontName) -- guiFontName = "'Times New Roman'"; -+ guiFontName = "'Liberation Serif'"; - - UT_UTF8String s = XAP_EncodingManager::get_instance()->getLanguageISOName(); - -diff --git a/src/af/gr/xp/gr_CairoGraphics.cpp b/src/af/gr/xp/gr_CairoGraphics.cpp -index 224b883..38ef911 100644 ---- a/src/af/gr/xp/gr_CairoGraphics.cpp -+++ b/src/af/gr/xp/gr_CairoGraphics.cpp -@@ -776,8 +776,8 @@ bool GR_CairoGraphics::shape(GR_ShapingInfo & si, GR_RenderInfo *& ri) - - /* - * Pango does a royally bad job of the font substitution in -- * pango_itemize(): it will happily return 'Times New Roman' as -- * font when we have requested 'Arial', even though the latter is -+ * pango_itemize(): it will happily return 'Liberation Serif' as -+ * font when we have requested 'Liberation Sans', even though the latter is - * present and has the necessary coverage. Consequently we have to - * do the font substitution manually even on the first shapping. - * -@@ -3054,7 +3054,7 @@ GR_Font * GR_CairoGraphics::getDefaultFont(GR_Font::FontFamilyEnum f, - - case GR_Font::FF_Technical: - case GR_Font::FF_BiDi: -- pszFontFamily = "Arial"; -+ pszFontFamily = "Liberation Sans"; - break; - - default: -diff --git a/src/af/util/xp/ut_misc.cpp b/src/af/util/xp/ut_misc.cpp -index 52246c3..bcd5a6d 100644 ---- a/src/af/util/xp/ut_misc.cpp -+++ b/src/af/util/xp/ut_misc.cpp -@@ -570,7 +570,7 @@ const gchar ** UT_setPropsToValue(const gchar ** props, const gchar * value) - } - - /*! -- splits the xml property string (font-size:24pt;font-face:Arial') into names and values -+ splits the xml property string (font-size:24pt;font-face:Liberation Sans') into names and values - and stores them in an array - - the caller has to delete[] the array; the process is destructive to props -diff --git a/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib b/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib -index f21c815..e284cc9 100644 ---- a/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib -+++ b/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib -@@ -10910,7 +10910,7 @@ - 624 - - -- Times New Roman -+ Liberation Serif - _popUpItemAction: - - $class -diff --git a/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp b/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp -index bf94333..f77b40b 100644 ---- a/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp -+++ b/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp -@@ -904,7 +904,7 @@ gint XAP_UnixDialog_FileOpenSaveAs::previewPicture (void) - - const gchar * file_name = gtk_file_chooser_get_uri (m_FC); - -- GR_Font * fnt = pGr->findFont("Times New Roman", -+ GR_Font * fnt = pGr->findFont("Liberation Serif", - "normal", "", "normal", - "", "12pt", - pSS->getLanguageName()); -diff --git a/src/af/xap/win/xap_Win32Dlg_About.cpp b/src/af/xap/win/xap_Win32Dlg_About.cpp -index 2cc4aa6..3aec3f0 100644 ---- a/src/af/xap/win/xap_Win32Dlg_About.cpp -+++ b/src/af/xap/win/xap_Win32Dlg_About.cpp -@@ -289,7 +289,7 @@ void XAP_Win32Dialog_About::runModal(XAP_Frame * pFrame) - lf.lfWeight = 0; - HFONT hfontSmall = CreateFontIndirectW(&lf); - -- wcscpy(lf.lfFaceName, L"Arial"); -+ wcscpy(lf.lfFaceName, L"Liberation Sans"); - lf.lfHeight = 36; - lf.lfWeight = FW_BOLD; - HFONT hfontHeading = CreateFontIndirectW(&lf); -diff --git a/src/af/xap/xp/xap_Dlg_FontChooser.cpp b/src/af/xap/xp/xap_Dlg_FontChooser.cpp -index 56ad605..8a89eb5 100644 ---- a/src/af/xap/xp/xap_Dlg_FontChooser.cpp -+++ b/src/af/xap/xp/xap_Dlg_FontChooser.cpp -@@ -570,7 +570,7 @@ void XAP_Preview_FontPreview::draw(const UT_Rect *clip) - std::string sWeight = getVal("font-weight"); - - if(sFamily.empty()) -- sFamily = "Times New Roman"; -+ sFamily = "Liberation Serif"; - - if(sStyle.empty()) - sStyle = "normal"; -diff --git a/src/af/xap/xp/xap_Dlg_Zoom.cpp b/src/af/xap/xp/xap_Dlg_Zoom.cpp -index 25f1a38..c025206 100644 ---- a/src/af/xap/xp/xap_Dlg_Zoom.cpp -+++ b/src/af/xap/xp/xap_Dlg_Zoom.cpp -@@ -124,7 +124,7 @@ void XAP_Dialog_Zoom::_createPreviewFromGC(GR_Graphics * gc, - UT_ASSERT(m_zoomPreview); - - m_zoomPreview->setWindowSize(width, height); -- m_zoomPreview->setString("10-pt Times New Roman"); -+ m_zoomPreview->setString("10-pt Liberation Serif"); - m_zoomPreview->setFont(XAP_Preview_Zoom::font_NORMAL); - m_zoomPreview->setZoomPercent(m_zoomPercent); - -diff --git a/src/af/xap/xp/xap_Preview_Zoom.cpp b/src/af/xap/xp/xap_Preview_Zoom.cpp -index 3ac69e1..0fdae0e 100644 ---- a/src/af/xap/xp/xap_Preview_Zoom.cpp -+++ b/src/af/xap/xp/xap_Preview_Zoom.cpp -@@ -63,7 +63,7 @@ void XAP_Preview_Zoom::setFont(XAP_Preview_Zoom::tFont f) - { - case XAP_Preview_Zoom::font_NORMAL: - sprintf (fontString, "%dpt", (10 * m_zoomPercent / 100)); -- found = m_gc->findFont("Times New Roman", -+ found = m_gc->findFont("Liberation Serif", - "normal", "", "normal", - "", fontString, - NULL); -diff --git a/src/text/fmt/xp/fl_BlockLayout.cpp b/src/text/fmt/xp/fl_BlockLayout.cpp -index f56e1f5..f0d8dd5 100644 ---- a/src/text/fmt/xp/fl_BlockLayout.cpp -+++ b/src/text/fmt/xp/fl_BlockLayout.cpp -@@ -10260,7 +10260,7 @@ void fl_BlockLayout::StartList( const gchar * style, pf_Frag_Strux* prevSDH) - szDec="."; - if(!szFont) - { -- szFont = "Times New Roman"; -+ szFont = "Liberation Serif"; - UT_ASSERT(UT_SHOULD_NOT_HAPPEN); - } - } -diff --git a/src/text/fmt/xp/fp_Line.cpp b/src/text/fmt/xp/fp_Line.cpp -index 8be126c..ede4ddd 100644 ---- a/src/text/fmt/xp/fp_Line.cpp -+++ b/src/text/fmt/xp/fp_Line.cpp -@@ -1856,7 +1856,7 @@ void fp_Line::_doClearScreenFromRunToEnd(UT_sint32 runIndex) - pRun = m_vecRuns.getNthItem(_getRunLogIndx(runIndex)); - - // Handle case where character extends behind the left side -- // like italic Times New Roman f. Clear a litle bit before if -+ // like italic Liberation Serif f. Clear a litle bit before if - // there is clear screen there - UT_sint32 j = runIndex - 1; - -diff --git a/src/text/fmt/xp/fp_TextRun.cpp b/src/text/fmt/xp/fp_TextRun.cpp -index 0e93665..ddb46cb 100644 ---- a/src/text/fmt/xp/fp_TextRun.cpp -+++ b/src/text/fmt/xp/fp_TextRun.cpp -@@ -1442,7 +1442,7 @@ void fp_TextRun::_clearScreen(bool /* bFullLineHeightRect */) - - // - // Handle case where character extend behind the left side -- // like italic Times New Roman f -+ // like italic Liberation Serif f - // - fp_Line * thisLine = getLine(); - fp_Run * pPrev = getPrevRun(); -diff --git a/src/text/fmt/xp/fv_View.cpp b/src/text/fmt/xp/fv_View.cpp -index 38cf5cf..360f99d 100644 ---- a/src/text/fmt/xp/fv_View.cpp -+++ b/src/text/fmt/xp/fv_View.cpp -@@ -586,9 +586,9 @@ FV_View::FV_View(XAP_App * pApp, void* pParentData, FL_DocLayout* pLayout) - s += pCountry; - } - -- // do a fuzzy match for Times New Roman -+ // do a fuzzy match for Liberation Serif - const char * pszFamily = -- GR_Graphics::findNearestFont ("Times New Roman", -+ GR_Graphics::findNearestFont ("Liberation Serif", - "normal", "normal", - "normal", "normal", - "12pt", s.utf8_str()); -diff --git a/src/text/ptbl/xp/pp_Property.cpp b/src/text/ptbl/xp/pp_Property.cpp -index 2c9a27b..c191b38 100644 ---- a/src/text/ptbl/xp/pp_Property.cpp -+++ b/src/text/ptbl/xp/pp_Property.cpp -@@ -104,7 +104,7 @@ static PP_Property _props[] = - - { "field-color", "dcdcdc", true, NULL, PP_LEVEL_FIELD}, - { "field-font", "NULL", true, NULL, PP_LEVEL_FIELD}, -- { "font-family", "Times New Roman", true, NULL, PP_LEVEL_CHAR}, -+ { "font-family", "Liberation Serif", true, NULL, PP_LEVEL_CHAR}, - { "font-size", "12pt", true, NULL, PP_LEVEL_CHAR}, // MS word defaults to 10pt, but it just seems too small - { "font-stretch", "normal", true, NULL, PP_LEVEL_CHAR}, - { "font-style", "normal", true, NULL, PP_LEVEL_CHAR}, -diff --git a/src/text/ptbl/xp/pp_Revision.cpp b/src/text/ptbl/xp/pp_Revision.cpp -index 47a9976..ebfc7f5 100644 ---- a/src/text/ptbl/xp/pp_Revision.cpp -+++ b/src/text/ptbl/xp/pp_Revision.cpp -@@ -436,7 +436,7 @@ void PP_RevisionAttr::_init(const gchar *r) - return; - - // the string we are parsing looks like -- // "+1,-2,!3{font-family: Times New Roman}" -+ // "+1,-2,!3{font-family: Liberation Serif}" - - // first duplicate the string so we can play with it ... - char * s = (char*) g_strdup(r); -diff --git a/src/text/ptbl/xp/pp_Revision.h b/src/text/ptbl/xp/pp_Revision.h -index f093ef0..9f77e84 100644 ---- a/src/text/ptbl/xp/pp_Revision.h -+++ b/src/text/ptbl/xp/pp_Revision.h -@@ -116,7 +116,7 @@ class ABI_EXPORT PP_Revision: public PP_AttrProp - where n is a numerical id of the revision and props is regular - property string, for instance - -- font-family:Times New Roman -+ font-family:Liberation Serif - - revoval of property/attribute is indicated by setting to -/-, e.g., - -diff --git a/src/text/ptbl/xp/pt_PT_Styles.cpp b/src/text/ptbl/xp/pt_PT_Styles.cpp -index 3829f0d..c9f370c 100644 ---- a/src/text/ptbl/xp/pt_PT_Styles.cpp -+++ b/src/text/ptbl/xp/pt_PT_Styles.cpp -@@ -176,7 +176,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) - s += pCountry; - } - -- const char* pszFamily = XAP_App::findNearestFont("Times New Roman", -+ const char* pszFamily = XAP_App::findNearestFont("Liberation Serif", - "normal", "", - "normal", "", "12pt", - s.utf8_str()); -@@ -188,7 +188,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) - "text-indent:0in; text-position:normal; line-height:1.0; " - "color:000000; bgcolor:transparent; widows:2", pszFamily); - -- pszFamily = XAP_App::findNearestFont("Arial", "normal", "", -+ pszFamily = XAP_App::findNearestFont("Liberation Sans", "normal", "", - "normal", "", "12pt", s.utf8_str()); - - // used to set the dom-dir of the style here, but we do not want to do that. The -@@ -263,7 +263,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) - UT_String_sprintf(stTmp, list_fmt, "Arrowhead List","0", LIST_DEFAULT_INDENT, LIST_DEFAULT_INDENT_LABEL, "transparent", "%L", pszFamily, "NULL"); - _s("Arrowhead List",false, "P", "", "Current Settings", stTmp.c_str()); - -- // pszFamily is the nearest font to Arial found in the system -+ // pszFamily is the nearest font to Liberation Sans found in the system - UT_String_sprintf(stTmp, "tabstops:0.3in/L0; list-style:Numbered List; " - "start-value:1; margin-left:0.0in; text-indent:0.0in; " - "field-color:transparent; list-delim:%%L.; field-font:%s; " -@@ -274,7 +274,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) - _s("Numbered Heading 2",true,"P","Heading 2","Normal", stTmp.c_str()); - _s("Numbered Heading 3",true,"P","Heading 3","Normal", stTmp.c_str()); - -- // pszFamily is the nearest font to Arial found in the system -+ // pszFamily is the nearest font to Liberation Sans found in the system - - UT_String_sprintf(stTmp, list_fmt, "Numbered List", "1",LIST_DEFAULT_INDENT, LIST_DEFAULT_INDENT_LABEL, "transparent", "%L.", "NULL", "."); - -diff --git a/src/wp/ap/xp/ap_Dialog_Lists.cpp b/src/wp/ap/xp/ap_Dialog_Lists.cpp -index 5aa32cb..dfeb4c1 100644 ---- a/src/wp/ap/xp/ap_Dialog_Lists.cpp -+++ b/src/wp/ap/xp/ap_Dialog_Lists.cpp -@@ -1109,7 +1109,7 @@ void AP_Lists_preview::setData(const gchar * pszFont,float fAlign,float fIndent) - // - if(!pszFont || strcmp(pszFont,"NULL")== 0) - { -- m_pFont = m_gc->findFont("Times New Roman", -+ m_pFont = m_gc->findFont("Liberation Serif", - "normal", "", "normal", - "", "16pt", NULL); - } -diff --git a/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp b/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp -index ecfdfcb..db3a518 100644 ---- a/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp -+++ b/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp -@@ -88,7 +88,7 @@ AP_Preview_PageNumbers::AP_Preview_PageNumbers (GR_Graphics * gc) - char fontString [10]; - sprintf(fontString, "%dpt", 8); - -- GR_Font * found = m_gc->findFont("Times New Roman", "normal", -+ GR_Font * found = m_gc->findFont("Liberation Serif", "normal", - "", "normal", "", fontString, - NULL); - -diff --git a/src/wp/ap/xp/ap_Preview_Annotation.cpp b/src/wp/ap/xp/ap_Preview_Annotation.cpp -index 5068315..91571e3 100644 ---- a/src/wp/ap/xp/ap_Preview_Annotation.cpp -+++ b/src/wp/ap/xp/ap_Preview_Annotation.cpp -@@ -95,7 +95,7 @@ void AP_Preview_Annotation::setSizeFromAnnotation(void) - pG = pView->getGraphics(); - - UT_return_if_fail(pG); -- GR_Font * pFont = pG->findFont("Times New Roman", "normal", -+ GR_Font * pFont = pG->findFont("Liberation Serif", "normal", - "normal", "normal", - "normal", "12pt", - NULL); -@@ -124,7 +124,7 @@ void AP_Preview_Annotation::draw(const UT_Rect *clip) - UT_RGBColor FGcolor(0,0,0); - UT_RGBColor BGcolor(m_clrBackground); - -- m_pFont = m_gc->findFont("Times New Roman", "normal", -+ m_pFont = m_gc->findFont("Liberation Serif", "normal", - "normal", "normal", - "normal", "12pt", - NULL); -diff --git a/src/wp/ap/xp/ap_Preview_Paragraph.cpp b/src/wp/ap/xp/ap_Preview_Paragraph.cpp -index fc4dc38..fba04f1 100644 ---- a/src/wp/ap/xp/ap_Preview_Paragraph.cpp -+++ b/src/wp/ap/xp/ap_Preview_Paragraph.cpp -@@ -540,7 +540,7 @@ void AP_Preview_Paragraph::draw(const UT_Rect *clip) - bool AP_Preview_Paragraph::_loadDrawFont(const char *name) - { - // we draw at 7 points in this preview -- GR_Font * font = m_gc->findFont(name ? name : "Times New Roman", -+ GR_Font * font = m_gc->findFont(name ? name : "Liberation Serif", - "normal", "", "normal", - "", "7pt", - NULL); // might need to get the real lang -diff --git a/src/wp/impexp/xp/ie_imp_MsWord_97.cpp b/src/wp/impexp/xp/ie_imp_MsWord_97.cpp -index 4673f80..d194004 100644 ---- a/src/wp/impexp/xp/ie_imp_MsWord_97.cpp -+++ b/src/wp/impexp/xp/ie_imp_MsWord_97.cpp -@@ -628,10 +628,10 @@ s_fieldFontForListStyle (MSWordListIdType id) - return "NULL"; - - case WLNF_UPPER_LETTER: // upper letter -- return "Times New Roman"; -+ return "Liberation Serif"; - - case WLNF_LOWER_LETTER: // lower letter -- return "Times New Roman"; -+ return "Liberation Serif"; - - case WLNF_BULLETS: // bullet list - UT_DEBUGMSG(("Fieldfont set to symbol \n")); -@@ -639,11 +639,11 @@ s_fieldFontForListStyle (MSWordListIdType id) - - case WLNF_EUROPEAN_ARABIC: - case WLNF_ORDINAL: // ordinal -- return "Times New Roman"; -+ return "Liberation Serif"; - - default: -- UT_DEBUGMSG(("unknown list type %d field-font set to Times New Roman \n",id)); -- return "Times New Roman"; -+ UT_DEBUGMSG(("unknown list type %d field-font set to Liberation Serif \n",id)); -+ return "Liberation Serif"; - } - } - -@@ -5250,7 +5250,7 @@ void IE_Imp_MsWord_97::_generateCharProps(UT_String &s, const CHP * achp, wvPars - if(fname) - s += fname; - else -- s += "Times New Roman"; -+ s += "Liberation Serif"; - FREEP(fname); - } - -diff --git a/src/wp/impexp/xp/ie_imp_RTF.cpp b/src/wp/impexp/xp/ie_imp_RTF.cpp -index 97a6f29..3177c9c 100644 ---- a/src/wp/impexp/xp/ie_imp_RTF.cpp -+++ b/src/wp/impexp/xp/ie_imp_RTF.cpp -@@ -6313,11 +6313,11 @@ bool IE_Imp_RTF::buildCharacterProps(std::string & propBuffer) - // {\f83\fnil\fcharset0\fprq0{\*\panose 00000000000000000000} ;} - // note the empty slot after the panose entry - // later it gets referenced: {\b\f83\fs24\cf1\cgrid0 Malte Cornils -- // this turns those into "Times New Roman" for now, as a hack to keep from crashing -+ // this turns those into "Liberation Serif" for now, as a hack to keep from crashing - if ( pFont->m_pFontName != NULL ) - propBuffer += pFont->m_pFontName; - else -- propBuffer += "Times New Roman"; -+ propBuffer += "Liberation Serif"; - } - if (m_currentRTFState.m_charProps.m_hasColour) - { -@@ -9034,7 +9034,7 @@ bool IE_Imp_RTF::ReadFontTable() - { - // NB: Ignores whitespace until we've seen non-whitespace data. - // This means we pick up the spaces in font names like -- // "Times New Roman", but it also means that any font names -+ // "Liberation Serif", but it also means that any font names - // that genuinely start with spaces will have them discarded. - // This is hopefully not a problem. - tokenType = NextToken(keyword, ¶meter,& paramUsed, -@@ -9102,11 +9102,11 @@ bool IE_Imp_RTF::ReadFontTable() - // It's possible that the font name will be empty. This might happend - // because the font table didn't specify a name, or because the \ansicpgN - // command was invalid, in which case the mbtowc convertion might fail. -- // In these cases, substitute "Times New Roman". -+ // In these cases, substitute "Liberation Serif". - if (!sFontNamesAndPanose[SFontTableState::MainFontName].length()) - { -- UT_DEBUGMSG(("RTF: Font Index %d: Substituting \"Times New Roman\" for missing font name.\n", fontIndex)); -- sFontNamesAndPanose[SFontTableState::MainFontName] = "Times New Roman"; -+ UT_DEBUGMSG(("RTF: Font Index %d: Substituting \"Liberation Serif\" for missing font name.\n", fontIndex)); -+ sFontNamesAndPanose[SFontTableState::MainFontName] = "Liberation Serif"; - } - // Validate and post-process the Panose string. - if (!PostProcessAndValidatePanose(sFontNamesAndPanose[SFontTableState::Panose])) -diff --git a/user/wp/readme.abw b/user/wp/readme.abw -index 7bf2cdc..48e3bb6 100644 ---- a/user/wp/readme.abw -+++ b/user/wp/readme.abw -@@ -16,9 +16,9 @@ - - - -- -- -- -+ -+ -+ - - -
-diff --git a/user/wp/templates/Business-Letter.awt b/user/wp/templates/Business-Letter.awt -index 524558a..9448277 100644 ---- a/user/wp/templates/Business-Letter.awt -+++ b/user/wp/templates/Business-Letter.awt -@@ -19,14 +19,14 @@ - - - -- -- -- -+ -+ -+ - -- -- -- -- -+ -+ -+ -+ - - -
-diff --git a/user/wp/templates/Business-Report.awt b/user/wp/templates/Business-Report.awt -index c2e85c9..f2f5b16 100644 ---- a/user/wp/templates/Business-Report.awt -+++ b/user/wp/templates/Business-Report.awt -@@ -21,7 +21,7 @@ -

-

-

Title

--

Subtitle

-+

Subtitle

-

-

Release 1.0

-

-@@ -99,11 +99,11 @@ -
-

-

--

Heading 1

-+

Heading 1

-

text

--

Heading 2

-+

Heading 2

-

text

--

Heading 3

-+

Heading 3

-

-
-
-diff --git a/user/wp/templates/Employee-Directory.awt b/user/wp/templates/Employee-Directory.awt -index c4f7ebc..b0faa54 100644 ---- a/user/wp/templates/Employee-Directory.awt -+++ b/user/wp/templates/Employee-Directory.awt -@@ -10,9 +10,9 @@ - - -
--

Company Name

--

Directory of Employees

--

-+

Company Name

-+

Directory of Employees

-+

-

-

-

-@@ -36,59 +36,59 @@ -

Normal Style (123) 555-1212

-

-

--

Department Name

--

The big boss upstairs (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

--

--

Department Name

--

The big boss upstairs (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

--

--

Department Name

--

The big boss upstairs (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

--

--

Department Name

--

The big boss upstairs (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

Last Name, First Name (123) 555-1212

--

--

--

General Numbers

--

Front Desk (123) 555-1212

--

Security (123) 555-1212

--

Building Management (123) 555-1212

--

Other General Numbers (123) 555-1212

-+

Department Name

-+

The big boss upstairs (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

-+

-+

Department Name

-+

The big boss upstairs (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

-+

-+

Department Name

-+

The big boss upstairs (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

-+

-+

Department Name

-+

The big boss upstairs (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

Last Name, First Name (123) 555-1212

-+

-+

-+

General Numbers

-+

Front Desk (123) 555-1212

-+

Security (123) 555-1212

-+

Building Management (123) 555-1212

-+

Other General Numbers (123) 555-1212

-
- - -diff --git a/user/wp/templates/Fax-Coversheet.awt b/user/wp/templates/Fax-Coversheet.awt -index acc7ba8..cc5779c 100644 ---- a/user/wp/templates/Fax-Coversheet.awt -+++ b/user/wp/templates/Fax-Coversheet.awt -@@ -10,26 +10,26 @@ - - -
--

Company Name

--

Company Address Line 1

--

Company Address Line 2

--

Company Address Line 3

--

--

FAX

--

TO: From:

--

Fax: Pages:

--

Phone: Date:

-+

Company Name

-+

Company Address Line 1

-+

Company Address Line 2

-+

Company Address Line 3

-+

-+

FAX

-+

TO: From:

-+

Fax: Pages:

-+

Phone: Date:

-

-

Re: CC:

-

-

--

 Urgent  For Review  Please Comment  Please Reply  Please Recycle

--

-+

 Urgent  For Review  Please Comment  Please Reply  Please Recycle

-+

-

-

--

Comments

-+

Comments

-

--

This text should the replaced with your comments about the fax and any additional comment to the receiver.

-+

This text should the replaced with your comments about the fax and any additional comment to the receiver.

-
- - -diff --git a/user/wp/templates/Friendly-Letter.awt b/user/wp/templates/Friendly-Letter.awt -index 5a25db1..2e687fc 100644 ---- a/user/wp/templates/Friendly-Letter.awt -+++ b/user/wp/templates/Friendly-Letter.awt -@@ -16,12 +16,12 @@ - - - -- -- -- -- -- -- -+ -+ -+ -+ -+ -+ - - -
-diff --git a/user/wp/templates/Memo.awt b/user/wp/templates/Memo.awt -index 79b5538..560a4cd 100644 ---- a/user/wp/templates/Memo.awt -+++ b/user/wp/templates/Memo.awt -@@ -14,10 +14,10 @@ - Fri Mar 12 21:07:56 2004 - - -- -- -- -- -+ -+ -+ -+ - - - -@@ -59,10 +59,10 @@ -

The box that this text is in uses AbiWord's table support to draw the border. You can either allow the border to fit to the size of the text as it is now, or press <ENTER> repeatedly at the end of your memo to expand the border to fill the rest of the page.

-

Don't forget to change the header and footer before printing! If you wish to save this memo for later and ensure that the date above is saved as today's (not automatically updating), select it and type the desired date text over it.

-

The styles used in this document for correct conversion, import, export, and HTML are:

--

Heading 1 for Company Name

--

Heading 2 for Slogan

--

Heading 3 for "Date:", "To:", etc.

--

Normal for body text

-+

Heading 1 for Company Name

-+

Heading 2 for Slogan

-+

Heading 3 for "Date:", "To:", etc.

-+

Normal for body text

- - -

-diff --git a/user/wp/templates/Press-Release.awt b/user/wp/templates/Press-Release.awt -index 708bce7..4d8bac1 100644 ---- a/user/wp/templates/Press-Release.awt -+++ b/user/wp/templates/Press-Release.awt -@@ -16,19 +16,19 @@ - - - -- -- -- -- -+ -+ -+ -+ - - - -- -+ - - - - -- -+ - - - -@@ -36,19 +36,19 @@ - - - -- -- -- -+ -+ -+ - - - - -- -- -- -+ -+ -+ - - -- -+ - - - -@@ -77,7 +77,7 @@ -

- - --

FOR IMMEDIATE RELEASE

-+

FOR IMMEDIATE RELEASE

-
- -

-diff --git a/user/wp/templates/Resume.awt b/user/wp/templates/Resume.awt -index 1e61cdd..8eda0b7 100644 ---- a/user/wp/templates/Resume.awt -+++ b/user/wp/templates/Resume.awt -@@ -14,11 +14,11 @@ - Fri Mar 12 22:08:25 2004 - - -- -- -- -- -- -+ -+ -+ -+ -+ - - -
-diff --git a/user/wp/templates/normal.awt b/user/wp/templates/normal.awt -index 4c83f82..e7fcb00 100644 ---- a/user/wp/templates/normal.awt -+++ b/user/wp/templates/normal.awt -@@ -9,7 +9,7 @@ - - - -- -+ - - - -diff --git a/user/wp/templates/normal.awt-am_ET b/user/wp/templates/normal.awt-am_ET -index cb1a8d4..c7b7707 100644 ---- a/user/wp/templates/normal.awt-am_ET -+++ b/user/wp/templates/normal.awt-am_ET -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ar b/user/wp/templates/normal.awt-ar -index 9aa7a5c..0cd8882 100644 ---- a/user/wp/templates/normal.awt-ar -+++ b/user/wp/templates/normal.awt-ar -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ar_EG b/user/wp/templates/normal.awt-ar_EG -index 5fcf2d1..b920dcc 100644 ---- a/user/wp/templates/normal.awt-ar_EG -+++ b/user/wp/templates/normal.awt-ar_EG -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ar_SA b/user/wp/templates/normal.awt-ar_SA -index 09c1bbb..12ad0d6 100644 ---- a/user/wp/templates/normal.awt-ar_SA -+++ b/user/wp/templates/normal.awt-ar_SA -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-bg_BG b/user/wp/templates/normal.awt-bg_BG -index df6f2bf..d789046 100644 ---- a/user/wp/templates/normal.awt-bg_BG -+++ b/user/wp/templates/normal.awt-bg_BG -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ca_ES b/user/wp/templates/normal.awt-ca_ES -index 0a337a2..69fecfd 100644 ---- a/user/wp/templates/normal.awt-ca_ES -+++ b/user/wp/templates/normal.awt-ca_ES -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-cs_CZ b/user/wp/templates/normal.awt-cs_CZ -index 3e5e87e..d2cb937 100644 ---- a/user/wp/templates/normal.awt-cs_CZ -+++ b/user/wp/templates/normal.awt-cs_CZ -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-da_DK b/user/wp/templates/normal.awt-da_DK -index 6ce3d83..f8706cb 100644 ---- a/user/wp/templates/normal.awt-da_DK -+++ b/user/wp/templates/normal.awt-da_DK -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-de b/user/wp/templates/normal.awt-de -index 8faa619..c0c18f7 100644 ---- a/user/wp/templates/normal.awt-de -+++ b/user/wp/templates/normal.awt-de -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-de_AT b/user/wp/templates/normal.awt-de_AT -index 9abfde1..d0ec20e 100644 ---- a/user/wp/templates/normal.awt-de_AT -+++ b/user/wp/templates/normal.awt-de_AT -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-de_CH b/user/wp/templates/normal.awt-de_CH -index 0aa531a..24b0f8d 100644 ---- a/user/wp/templates/normal.awt-de_CH -+++ b/user/wp/templates/normal.awt-de_CH -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-de_DE b/user/wp/templates/normal.awt-de_DE -index 0190408..6372e78 100644 ---- a/user/wp/templates/normal.awt-de_DE -+++ b/user/wp/templates/normal.awt-de_DE -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-div_MV b/user/wp/templates/normal.awt-div_MV -index 9a8c50e..88270ce 100644 ---- a/user/wp/templates/normal.awt-div_MV -+++ b/user/wp/templates/normal.awt-div_MV -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-el_GR b/user/wp/templates/normal.awt-el_GR -index e1c8de5..1db03a4 100644 ---- a/user/wp/templates/normal.awt-el_GR -+++ b/user/wp/templates/normal.awt-el_GR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_AU b/user/wp/templates/normal.awt-en_AU -index c7fa4c9..0e29beb 100644 ---- a/user/wp/templates/normal.awt-en_AU -+++ b/user/wp/templates/normal.awt-en_AU -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_CA b/user/wp/templates/normal.awt-en_CA -index 3729a04..cff6807 100644 ---- a/user/wp/templates/normal.awt-en_CA -+++ b/user/wp/templates/normal.awt-en_CA -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_GB b/user/wp/templates/normal.awt-en_GB -index 14b8bcf..55364cd 100644 ---- a/user/wp/templates/normal.awt-en_GB -+++ b/user/wp/templates/normal.awt-en_GB -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_IE b/user/wp/templates/normal.awt-en_IE -index 95e3fc7..7b0c3a5 100644 ---- a/user/wp/templates/normal.awt-en_IE -+++ b/user/wp/templates/normal.awt-en_IE -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_NZ b/user/wp/templates/normal.awt-en_NZ -index 70016d2..0871e93 100644 ---- a/user/wp/templates/normal.awt-en_NZ -+++ b/user/wp/templates/normal.awt-en_NZ -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-en_ZA b/user/wp/templates/normal.awt-en_ZA -index ebe7ee3..c4f7795 100644 ---- a/user/wp/templates/normal.awt-en_ZA -+++ b/user/wp/templates/normal.awt-en_ZA -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-es b/user/wp/templates/normal.awt-es -index 12c611c..a2067e0 100644 ---- a/user/wp/templates/normal.awt-es -+++ b/user/wp/templates/normal.awt-es -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-es_AR b/user/wp/templates/normal.awt-es_AR -index 87130b5..fc8ac38 100644 ---- a/user/wp/templates/normal.awt-es_AR -+++ b/user/wp/templates/normal.awt-es_AR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-es_ES b/user/wp/templates/normal.awt-es_ES -index 87130b5..fc8ac38 100644 ---- a/user/wp/templates/normal.awt-es_ES -+++ b/user/wp/templates/normal.awt-es_ES -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-es_IR b/user/wp/templates/normal.awt-es_IR -index 4d3e321..33c7144 100644 ---- a/user/wp/templates/normal.awt-es_IR -+++ b/user/wp/templates/normal.awt-es_IR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-es_MX b/user/wp/templates/normal.awt-es_MX -index 52c3411..2522a82 100644 ---- a/user/wp/templates/normal.awt-es_MX -+++ b/user/wp/templates/normal.awt-es_MX -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fa_IR b/user/wp/templates/normal.awt-fa_IR -index db24783..a0f0bde 100644 ---- a/user/wp/templates/normal.awt-fa_IR -+++ b/user/wp/templates/normal.awt-fa_IR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fi_FI b/user/wp/templates/normal.awt-fi_FI -index 1471a71..b65fa66 100644 ---- a/user/wp/templates/normal.awt-fi_FI -+++ b/user/wp/templates/normal.awt-fi_FI -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fr b/user/wp/templates/normal.awt-fr -index 4e94583..67ae7c2 100644 ---- a/user/wp/templates/normal.awt-fr -+++ b/user/wp/templates/normal.awt-fr -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fr_BE b/user/wp/templates/normal.awt-fr_BE -index 8b310c4..d4b7723 100644 ---- a/user/wp/templates/normal.awt-fr_BE -+++ b/user/wp/templates/normal.awt-fr_BE -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fr_CA b/user/wp/templates/normal.awt-fr_CA -index e673aac..c3bb3fd 100644 ---- a/user/wp/templates/normal.awt-fr_CA -+++ b/user/wp/templates/normal.awt-fr_CA -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fr_CH b/user/wp/templates/normal.awt-fr_CH -index 1888a71..eb4b5de 100644 ---- a/user/wp/templates/normal.awt-fr_CH -+++ b/user/wp/templates/normal.awt-fr_CH -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-fr_FR b/user/wp/templates/normal.awt-fr_FR -index f877981..0f523f6 100644 ---- a/user/wp/templates/normal.awt-fr_FR -+++ b/user/wp/templates/normal.awt-fr_FR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-gl_ES b/user/wp/templates/normal.awt-gl_ES -index 7f4876b..006645e 100644 ---- a/user/wp/templates/normal.awt-gl_ES -+++ b/user/wp/templates/normal.awt-gl_ES -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-he b/user/wp/templates/normal.awt-he -index a3da00f..f1a238f 100644 ---- a/user/wp/templates/normal.awt-he -+++ b/user/wp/templates/normal.awt-he -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-he_IL b/user/wp/templates/normal.awt-he_IL -index 98d81eb..e78e16b 100644 ---- a/user/wp/templates/normal.awt-he_IL -+++ b/user/wp/templates/normal.awt-he_IL -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-hu_HU b/user/wp/templates/normal.awt-hu_HU -index d79154f..0dd6026 100644 ---- a/user/wp/templates/normal.awt-hu_HU -+++ b/user/wp/templates/normal.awt-hu_HU -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-it_IT b/user/wp/templates/normal.awt-it_IT -index a72f1d4..1121843 100644 ---- a/user/wp/templates/normal.awt-it_IT -+++ b/user/wp/templates/normal.awt-it_IT -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ja_JP b/user/wp/templates/normal.awt-ja_JP -index 4f379e1..351fdd6 100644 ---- a/user/wp/templates/normal.awt-ja_JP -+++ b/user/wp/templates/normal.awt-ja_JP -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-lt_LT b/user/wp/templates/normal.awt-lt_LT -index e9d6ec1..b66be4a 100644 ---- a/user/wp/templates/normal.awt-lt_LT -+++ b/user/wp/templates/normal.awt-lt_LT -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-nb_NO b/user/wp/templates/normal.awt-nb_NO -index 1b6398f..5cdf741 100644 ---- a/user/wp/templates/normal.awt-nb_NO -+++ b/user/wp/templates/normal.awt-nb_NO -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-nl_NL b/user/wp/templates/normal.awt-nl_NL -index 0f8b299..4be5de2 100644 ---- a/user/wp/templates/normal.awt-nl_NL -+++ b/user/wp/templates/normal.awt-nl_NL -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-nn_NO b/user/wp/templates/normal.awt-nn_NO -index 981d577..1a36ad3 100644 ---- a/user/wp/templates/normal.awt-nn_NO -+++ b/user/wp/templates/normal.awt-nn_NO -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-pl_PL b/user/wp/templates/normal.awt-pl_PL -index 0405d45..7f32223 100644 ---- a/user/wp/templates/normal.awt-pl_PL -+++ b/user/wp/templates/normal.awt-pl_PL -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ps b/user/wp/templates/normal.awt-ps -index 971e62f..e5e674f 100644 ---- a/user/wp/templates/normal.awt-ps -+++ b/user/wp/templates/normal.awt-ps -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-pt_BR b/user/wp/templates/normal.awt-pt_BR -index bdf4c09..4d85f5c 100644 ---- a/user/wp/templates/normal.awt-pt_BR -+++ b/user/wp/templates/normal.awt-pt_BR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-pt_PT b/user/wp/templates/normal.awt-pt_PT -index 7a44c3e..e1b766e 100644 ---- a/user/wp/templates/normal.awt-pt_PT -+++ b/user/wp/templates/normal.awt-pt_PT -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ru b/user/wp/templates/normal.awt-ru -index c34fd94..6e29dfd 100644 ---- a/user/wp/templates/normal.awt-ru -+++ b/user/wp/templates/normal.awt-ru -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ru_RU b/user/wp/templates/normal.awt-ru_RU -index b07198e..4f435ea 100644 ---- a/user/wp/templates/normal.awt-ru_RU -+++ b/user/wp/templates/normal.awt-ru_RU -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-sk_SK b/user/wp/templates/normal.awt-sk_SK -index d03a1a5..bb04b0e 100644 ---- a/user/wp/templates/normal.awt-sk_SK -+++ b/user/wp/templates/normal.awt-sk_SK -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-sl b/user/wp/templates/normal.awt-sl -index 2dfcf1a..e874715 100644 ---- a/user/wp/templates/normal.awt-sl -+++ b/user/wp/templates/normal.awt-sl -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-sv b/user/wp/templates/normal.awt-sv -index d0f5163..82aa982 100644 ---- a/user/wp/templates/normal.awt-sv -+++ b/user/wp/templates/normal.awt-sv -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-sv_SE b/user/wp/templates/normal.awt-sv_SE -index 932da12..55d9e8c 100644 ---- a/user/wp/templates/normal.awt-sv_SE -+++ b/user/wp/templates/normal.awt-sv_SE -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-syr b/user/wp/templates/normal.awt-syr -index 72b77ad..3bd9503 100644 ---- a/user/wp/templates/normal.awt-syr -+++ b/user/wp/templates/normal.awt-syr -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-tr b/user/wp/templates/normal.awt-tr -index 489bc0a..2497b35 100644 ---- a/user/wp/templates/normal.awt-tr -+++ b/user/wp/templates/normal.awt-tr -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-tr_TR b/user/wp/templates/normal.awt-tr_TR -index bf775c8..bfd3982 100644 ---- a/user/wp/templates/normal.awt-tr_TR -+++ b/user/wp/templates/normal.awt-tr_TR -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-uk_UA b/user/wp/templates/normal.awt-uk_UA -index 6c759ad..76cbd8c 100644 ---- a/user/wp/templates/normal.awt-uk_UA -+++ b/user/wp/templates/normal.awt-uk_UA -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-ur_PK b/user/wp/templates/normal.awt-ur_PK -index 00cc1c7..8fcaf67 100644 ---- a/user/wp/templates/normal.awt-ur_PK -+++ b/user/wp/templates/normal.awt-ur_PK -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-yi b/user/wp/templates/normal.awt-yi -index e25ac13..02ffba4 100644 ---- a/user/wp/templates/normal.awt-yi -+++ b/user/wp/templates/normal.awt-yi -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-zh_CN b/user/wp/templates/normal.awt-zh_CN -index d103911..3a949bc 100644 ---- a/user/wp/templates/normal.awt-zh_CN -+++ b/user/wp/templates/normal.awt-zh_CN -@@ -9,7 +9,7 @@ - - - -- -+ - - -
-diff --git a/user/wp/templates/normal.awt-zh_TW b/user/wp/templates/normal.awt-zh_TW -index 3570d5e..8a2cdd7 100644 ---- a/user/wp/templates/normal.awt-zh_TW -+++ b/user/wp/templates/normal.awt-zh_TW -@@ -9,7 +9,7 @@ - - - -- -+ - - -
diff --git a/libre/abiword/PKGBUILD b/libre/abiword/PKGBUILD new file mode 100644 index 000000000..70eccc2ca --- /dev/null +++ b/libre/abiword/PKGBUILD @@ -0,0 +1,106 @@ +# $Id: PKGBUILD 215017 2014-06-11 14:14:55Z jgc $ +# Contributor (Arch): Giovanni Scafora +# Contributor (Arch): Maël Lavault +# Maintainer: André Silva + +pkgbase=abiword +pkgname=('abiword' 'abiword-plugins') +pkgver=3.0.0 +pkgrel=3.parabola1 +arch=('i686' 'x86_64' 'mips64el') +license=('GPL') +url='http://www.abisource.com' +makedepends=('pkgconfig' 'asio' 'boost' 'fribidi' 'goffice' 'libwmf' 'wv' + 'link-grammar' 'gtkmathview' 'aiksaurus' 'libxslt' 'enchant' + 'libots' 'libwpg' 'librsvg' 'loudmouth' 'libsoup' 'psiconv' + 'redland' 'libical') +options=('!makeflags') +source=(http://abisource.com/downloads/$pkgbase/$pkgver/source/$pkgbase-$pkgver.tar.gz + fix_crash_saving_pdf.patch + abiword-3.0.0-librevenge.patch + liberation-fonts.patch) +md5sums=('8d9c41cff3a8fbef8d0c835c65600e65' + 'c3336f5ac7d227ff755c7e42459f20e1' + '6fc2d653d3b814bbfd9b0d71c69c4796' + 'e7ef4d436469ae4b24b0f784b09ab023') + +prepare() { + cd $pkgbase-$pkgver + + # fix FS#39652 - http://bugzilla.abisource.com/show_bug.cgi?id=13586#c2 + patch -Np2 -i ${srcdir}/fix_crash_saving_pdf.patch + + # fix build with librevenge based import filters + patch -Np0 -i ${srcdir}/abiword-3.0.0-librevenge.patch + + # replace nonfree fonts support to liberation fonts + patch -Np1 -i "${srcdir}/liberation-fonts.patch" + + find plugins -name plugin.m4 | xargs cat > plugin-configure.m4 + + #aclocal -I m4 --install + #autoconf + libtoolize --force + autoreconf -fi +} + + +build() { + cd $pkgbase-$pkgver + +# Collab plugin is somehow broken: +# part service +#In file included from ./../../../backends/service/xp/RealmConnection.h:33:0, +# from ./../../../backends/service/xp/AbiCollabSaveInterceptor.h:23, +# from ./../../../backends/service/xp/ServiceAccountHandler.h:33, +# from ServiceUnixAccountHandler.h:23, +# from ServiceUnixAccountHandler.cpp:20: +#./../../../core/sync/xp/SynchronizedQueue.h:32:1: error: expected class-name before '{' token +# { +# part tcp +#In file included from ./../../../backends/tcp/xp/IOServerHandler.h:29:0, +# from ./../../../backends/tcp/xp/TCPAccountHandler.h:25, +# from TCPUnixAccountHandler.h:22, +# from TCPUnixAccountHandler.cpp:20: +#./../../../backends/tcp/xp/Session.h:34:63: error: expected class-name before ',' token +# class Session : public Synchronizer, public boost::noncopyable, public boost::enable_shared_from_this + + ./configure --prefix=/usr \ + --enable-shared \ + --disable-static \ + --enable-clipart \ + --enable-templates \ + --disable-builtin-plugins \ + --enable-plugins \ + --disable-collab-backend-service \ + --disable-collab-backend-tcp + make +} + +package_abiword() { + pkgdesc='Fully-featured word processor, without nonfree fonts support' + depends=('fribidi' 'wv' 'goffice' 'librsvg' 'enchant' 'desktop-file-utils' + 'redland' 'libical' 'gtk-update-icon-cache') + install=$pkgbase.install + optdepends=('abiword-plugins') + conflicts=("abiword-plugins<${pkgver}-${pkgrel}" 'abiword-libre') + replaces=('abiword-libre') + + cd $pkgbase-$pkgver + make DESTDIR="$pkgdir" install + + # split out plugins, there's no Makefile target for a clean way + mkdir ${srcdir}/_pluginsdir + mv "$pkgdir"/usr/lib/abiword-${pkgver%.*}/plugins ${srcdir}/_pluginsdir +} + +package_abiword-plugins() { + pkgdesc='Additional plugins for Abiword, without nonfree fonts support' + depends=("abiword=${pkgver}-${pkgrel}" 'loudmouth' 'libwpg' 'libwmf' 'link-grammar' + 'gtkmathview' 'aiksaurus' 'libxslt' 'libsoup' 'libots' 'libgsf' 'psiconv') + conflicts=('abiword-libre-plugins') + replaces=('abiword-libre-plugins') + + install -dm755 ${pkgdir}/usr/lib/abiword-${pkgver%.*} + mv ${srcdir}/_pluginsdir/plugins ${pkgdir}/usr/lib/abiword-${pkgver%.*}/ +} diff --git a/libre/abiword/abiword-2.8.6-glib-2.31.patch b/libre/abiword/abiword-2.8.6-glib-2.31.patch new file mode 100644 index 000000000..8b938cc25 --- /dev/null +++ b/libre/abiword/abiword-2.8.6-glib-2.31.patch @@ -0,0 +1,40 @@ +------------------------------------------------------------------------ +r30479 | hub | 2011-11-29 00:39:09 -0500 (Tue, 29 Nov 2011) | 2 lines +Changed paths: + M /abiword/trunk/src/af/util/xp/ut_go_file.h + +Bug 13197: only import glib.h +Patch by Dominique Leuenberger. +------------------------------------------------------------------------ +r30602 | hub | 2012-01-30 02:00:38 -0500 (Mon, 30 Jan 2012) | 2 lines +Changed paths: + M /abiword/trunk/goffice-bits/goffice/app/goffice-app.h + +Bug 13247 - Fix glib headers. Patch by Funda Wang +(safe to backport) +------------------------------------------------------------------------ +Index: src/af/util/xp/ut_go_file.h +=================================================================== +--- src/af/util/xp/ut_go_file.h (revision 30478) ++++ src/af/util/xp/ut_go_file.h (revision 30479) +@@ -31,7 +31,6 @@ + + #include + #include +-#include + #include + + G_BEGIN_DECLS +Index: goffice-bits/goffice/app/goffice-app.h +=================================================================== +--- goffice-bits/goffice/app/goffice-app.h (revision 30601) ++++ goffice-bits/goffice/app/goffice-app.h (revision 30602) +@@ -22,7 +22,7 @@ + #ifndef GOFFICE_APP_H + #define GOFFICE_APP_H + +-#include ++#include + + G_BEGIN_DECLS + diff --git a/libre/abiword/abiword-2.8.6-libpng15.patch b/libre/abiword/abiword-2.8.6-libpng15.patch new file mode 100644 index 000000000..7eded4c83 --- /dev/null +++ b/libre/abiword/abiword-2.8.6-libpng15.patch @@ -0,0 +1,100 @@ +$NetBSD: patch-plugins_bmp_xp_ie__impGraphic__BMP.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $ + +Fix build with png-1.5. + +--- plugins/bmp/xp/ie_impGraphic_BMP.cpp.orig 2009-06-25 04:02:06.000000000 +0000 ++++ plugins/bmp/xp/ie_impGraphic_BMP.cpp +@@ -191,7 +191,10 @@ UT_Error IE_ImpGraphic_BMP::_convertGrap + + /* Clean Up Memory Used */ + +- FREEP(m_pPNGInfo->palette); ++ png_colorp palette; ++ int num_palette; ++ png_get_PLTE( m_pPNG, m_pPNGInfo, &palette, &num_palette ); ++ FREEP(palette); + DELETEP(pBB); + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + +@@ -313,7 +316,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ +- if (setjmp(m_pPNG->jmpbuf)) ++ if (setjmp(png_jmpbuf(m_pPNG))) + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); +@@ -332,7 +335,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + UT_Error IE_ImpGraphic_BMP::Convert_BMP_Pallet(UT_ByteBuf* pBB) + { + /* Reset error handling for libpng */ +- if (setjmp(m_pPNG->jmpbuf)) ++ if (setjmp(png_jmpbuf(m_pPNG))) + { + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + return UT_ERROR; +@@ -372,7 +375,7 @@ UT_Error IE_ImpGraphic_BMP::Initialize_P + UT_Error IE_ImpGraphic_BMP::Convert_BMP(UT_ByteBuf* pBB) + { + /* Reset error handling for libpng */ +- if (setjmp(m_pPNG->jmpbuf)) ++ if (setjmp(png_jmpbuf(m_pPNG))) + { + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); + return UT_ERROR; + +$NetBSD: patch-plugins_garble_xp_abiword-garble-png.cpp,v 1.1 2011/02/01 10:48:15 wiz Exp $ + +Fix build with png-1.5. + +--- plugins/garble/xp/abiword-garble-png.cpp.orig 2009-09-05 15:34:44.000000000 +0000 ++++ plugins/garble/xp/abiword-garble-png.cpp +@@ -79,7 +79,7 @@ bool abiword_document::garble_png( void* + png_set_strip_alpha( png_ptr ); + png_set_interlace_handling( png_ptr ); + png_set_bgr( png_ptr ); +- rowbytes = info_ptr->rowbytes; ++ rowbytes = png_get_rowbytes( png_ptr, info_ptr ); + png_destroy_read_struct( &png_ptr, &info_ptr, NULL ); + } + +$NetBSD: patch-af,v 1.12 2011/01/15 15:07:11 wiz Exp $ + +Fix build with png-1.5. + +--- src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp.orig 2009-07-01 04:02:04.000000000 +0000 ++++ src/wp/impexp/gtk/ie_impGraphic_GdkPixbuf.cpp +@@ -185,7 +185,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::import + /** needed for the stejmp context */ + UT_Error IE_ImpGraphic_GdkPixbuf::_png_write(GdkPixbuf * pixbuf) + { +- if (setjmp(m_pPNG->jmpbuf)) ++ if (setjmp(png_jmpbuf(m_pPNG))) + { + DELETEP(m_pPngBB); + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); +@@ -446,7 +446,7 @@ UT_Error IE_ImpGraphic_GdkPixbuf::Initia + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ +- if (setjmp(m_pPNG->jmpbuf)) ++ if (setjmp(png_jmpbuf(m_pPNG))) + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_write_struct(&m_pPNG, &m_pPNGInfo); +$NetBSD: patch-ae,v 1.21 2011/01/15 15:07:11 wiz Exp $ + +Fix build with png-1.5. + +--- src/af/util/xp/ut_png.cpp.orig 2008-02-24 03:33:07.000000000 +0000 ++++ src/af/util/xp/ut_png.cpp +@@ -71,7 +71,7 @@ bool UT_PNG_getDimensions(const UT_ByteB + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. + */ +- if (setjmp(png_ptr->jmpbuf)) ++ if (setjmp(png_jmpbuf(png_ptr))) + { + /* Free all of the memory associated with the png_ptr and info_ptr */ + png_destroy_read_struct(&png_ptr, &info_ptr, static_cast(NULL)); diff --git a/libre/abiword/abiword-2.8.6-no-undefined.patch b/libre/abiword/abiword-2.8.6-no-undefined.patch new file mode 100644 index 000000000..c07000edb --- /dev/null +++ b/libre/abiword/abiword-2.8.6-no-undefined.patch @@ -0,0 +1,21 @@ +diff -u -r abiword-2.8.6.orig/src/Makefile.am abiword-2.8.6/src/Makefile.am +--- abiword-2.8.6.orig/src/Makefile.am 2009-09-09 15:11:01.000000000 +0200 ++++ abiword-2.8.6/src/Makefile.am 2011-08-02 23:35:51.904761961 +0200 +@@ -107,7 +107,7 @@ + + AbiWord_LDFLAGS = \ + $(DEPS_LIBS) \ +- --no-undefined \ ++ -Wl,--no-undefined \ + -avoid-version \ + -export-dynamic \ + -headerpad_max_install_names +@@ -129,7 +129,7 @@ + + abiword_LDFLAGS = \ + $(platform_ldflags) \ +- --no-undefined \ ++ -Wl,--no-undefined \ + -avoid-version \ + -export-dynamic + diff --git a/libre/abiword/abiword-3.0.0-librevenge.patch b/libre/abiword/abiword-3.0.0-librevenge.patch new file mode 100644 index 000000000..9ff7aea24 --- /dev/null +++ b/libre/abiword/abiword-3.0.0-librevenge.patch @@ -0,0 +1,1186 @@ +Index: plugins/wpg/xp/ie_impGraphic_WPG.cpp +=================================================================== +--- plugins/wpg/xp/ie_impGraphic_WPG.cpp (revision 34460) ++++ plugins/wpg/xp/ie_impGraphic_WPG.cpp (working copy) +@@ -31,7 +31,7 @@ + #include + #include + #include +-#include ++#include + #include "xap_Module.h" + + using libwpg::WPGraphics; +@@ -38,30 +38,35 @@ + + ABI_PLUGIN_DECLARE("WPG") + +-class AbiWordPerfectGraphicsInputStream : public WPXInputStream ++class AbiWordPerfectGraphicsInputStream : public librevenge::RVNGInputStream + { + public: + AbiWordPerfectGraphicsInputStream(GsfInput *input); + ~AbiWordPerfectGraphicsInputStream(); + +- virtual bool isOLEStream(); +- virtual WPXInputStream * getDocumentOLEStream(); +- virtual WPXInputStream * getDocumentOLEStream(const char * name); ++ virtual bool isStructured(); ++ virtual unsigned subStreamCount(); ++ virtual const char* subStreamName(unsigned); ++ bool existsSubStream(const char*); ++ virtual librevenge::RVNGInputStream* getSubStreamByName(const char*); ++ virtual librevenge::RVNGInputStream* getSubStreamById(unsigned); + virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); +- virtual int seek(long offset, WPX_SEEK_TYPE seekType); ++ virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType); + virtual long tell(); +- virtual bool atEOS(); ++ virtual bool isEnd(); + + private: + + GsfInput *m_input; + GsfInfile *m_ole; ++ std::map m_substreams; + }; + + AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : +- WPXInputStream(), ++ librevenge::RVNGInputStream(), + m_input(input), +- m_ole(NULL) ++ m_ole(NULL), ++ m_substreams() + { + g_object_ref(G_OBJECT(input)); + } +@@ -86,50 +91,120 @@ + return buf; + } + +-int AbiWordPerfectGraphicsInputStream::seek(long offset, WPX_SEEK_TYPE seekType) ++int AbiWordPerfectGraphicsInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) + { + GSeekType gsfSeekType = G_SEEK_SET; + switch(seekType) + { +- case WPX_SEEK_CUR: ++ case librevenge::RVNG_SEEK_CUR: + gsfSeekType = G_SEEK_CUR; + break; +- case WPX_SEEK_SET: ++ case librevenge::RVNG_SEEK_SET: + gsfSeekType = G_SEEK_SET; + break; ++ case librevenge::RVNG_SEEK_END: ++ gsfSeekType = G_SEEK_END; ++ break; + } + + return gsf_input_seek(m_input, offset, gsfSeekType); + } + +-bool AbiWordPerfectGraphicsInputStream::isOLEStream() ++bool AbiWordPerfectGraphicsInputStream::isStructured() + { + if (!m_ole) + m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + +- if (m_ole != NULL) ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) + return true; + + return false; + } + +-WPXInputStream * AbiWordPerfectGraphicsInputStream::getDocumentOLEStream() ++unsigned AbiWordPerfectGraphicsInputStream::subStreamCount() + { +- return getDocumentOLEStream("PerfectOffice_MAIN"); ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ int numChildren = gsf_infile_num_children(m_ole); ++ if (numChildren > 0) ++ return numChildren; ++ return 0; ++ } ++ ++ return 0; + } + +-WPXInputStream * AbiWordPerfectGraphicsInputStream::getDocumentOLEStream(const char * name) ++const char * AbiWordPerfectGraphicsInputStream::subStreamName(unsigned id) + { +- WPXInputStream *documentStream = NULL; ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + + if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ if ((int)id >= gsf_infile_num_children(m_ole)) ++ { ++ return 0; ++ } ++ std::map::iterator i = m_substreams.lower_bound(id); ++ if (i == m_substreams.end() || m_substreams.key_comp()(id, i->first)) ++ { ++ std::string name = gsf_infile_name_by_index(m_ole, (int)id); ++ i = m_substreams.insert(i, std::map::value_type(id, name)); ++ } ++ return i->second.c_str(); ++ } ++ ++ return 0; ++} ++ ++bool AbiWordPerfectGraphicsInputStream::existsSubStream(const char * name) ++{ ++ if (!m_ole) + m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ + if (m_ole) + { + GsfInput *document = gsf_infile_child_by_name(m_ole, name); + if (document) + { ++ g_object_unref(G_OBJECT (document)); ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++librevenge::RVNGInputStream * AbiWordPerfectGraphicsInputStream::getSubStreamByName(const char * name) ++{ ++ librevenge::RVNGInputStream *documentStream = NULL; ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ GsfInput *document = gsf_infile_child_by_name(m_ole, name); ++ if (document) ++ { + documentStream = new AbiWordPerfectGraphicsInputStream(document); + g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream + } +@@ -138,12 +213,35 @@ + return documentStream; + } + ++librevenge::RVNGInputStream * AbiWordPerfectGraphicsInputStream::getSubStreamById(unsigned id) ++{ ++ librevenge::RVNGInputStream *documentStream = NULL; ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ GsfInput *document = gsf_infile_child_by_index(m_ole, (int)id); ++ if (document) ++ { ++ documentStream = new AbiWordPerfectGraphicsInputStream(document); ++ g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream ++ } ++ } ++ ++ return documentStream; ++} ++ + long AbiWordPerfectGraphicsInputStream::tell() + { + return gsf_input_tell(m_input); + } + +-bool AbiWordPerfectGraphicsInputStream::atEOS() ++bool AbiWordPerfectGraphicsInputStream::isEnd() + { + return gsf_input_eof(m_input); + } +@@ -244,14 +342,24 @@ + UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) + { + AbiWordPerfectGraphicsInputStream gsfInput(input); +- WPXString svgOutput; +- if (WPGraphics::generateSVG(&gsfInput, svgOutput)) ++ librevenge::RVNGString svgOutput; ++ librevenge::RVNGStringVector vec; ++ librevenge::RVNGSVGDrawingGenerator generator(vec, ""); ++ ++ if (!libwpg::WPGraphics::parse(&gsfInput, &generator) || vec.empty() || vec[0].empty()) + { +- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); +- UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); +- g_object_unref(svgInput); +- return result; ++ return UT_ERROR; + } +- return UT_ERROR; ++ ++ svgOutput.append("\n"); ++ svgOutput.append("\n"); ++ svgOutput.append(vec[0]); ++ svgOutput.append("\n"); ++ ++ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); ++ UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); ++ g_object_unref(svgInput); ++ return result; + } + +Index: plugins/wpg/plugin.m4 +=================================================================== +--- plugins/wpg/plugin.m4 (revision 34460) ++++ plugins/wpg/plugin.m4 (working copy) +@@ -1,5 +1,5 @@ + +-wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" ++wpg_pkgs="libwpg-0.3 $gsf_req" + wpg_deps="no" + + if test "$enable_wpg" != ""; then +Index: plugins/wordperfect/xp/ie_imp_WordPerfect.h +=================================================================== +--- plugins/wordperfect/xp/ie_imp_WordPerfect.h (revision 34460) ++++ plugins/wordperfect/xp/ie_imp_WordPerfect.h (working copy) +@@ -30,7 +30,7 @@ + #define IE_IMP_WP_H + + #include +-#include ++#include + #include "ie_imp.h" + #include "ut_string.h" + #include "ut_string_class.h" +@@ -92,7 +92,7 @@ + IE_Imp ** ppie); + }; + +-class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface ++class IE_Imp_WordPerfect : public IE_Imp, public librevenge::RVNGTextInterface + { + public: + IE_Imp_WordPerfect(PD_Document * pDocument); +@@ -101,69 +101,83 @@ + virtual void pasteFromBuffer(PD_DocumentRange * pDocRange, + UT_uint8 * pData, UT_uint32 lenData, const char * szEncoding = 0); + +- virtual void setDocumentMetaData(const WPXPropertyList &propList); ++ virtual void setDocumentMetaData(const librevenge::RVNGPropertyList &propList); + +- virtual void startDocument(); +- virtual void endDocument(); ++ virtual void startDocument(const librevenge::RVNGPropertyList &propList); ++ virtual void endDocument(); + +- virtual void openPageSpan(const WPXPropertyList &propList); +- virtual void closePageSpan() {} +- virtual void openHeader(const WPXPropertyList &propList); +- virtual void closeHeader(); +- virtual void openFooter(const WPXPropertyList &propList); +- virtual void closeFooter(); ++ virtual void defineEmbeddedFont(const librevenge::RVNGPropertyList & /* propList */) {} + +- virtual void openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); +- virtual void closeParagraph() {} ++ virtual void definePageStyle(const librevenge::RVNGPropertyList &) {} ++ virtual void openPageSpan(const librevenge::RVNGPropertyList &propList); ++ virtual void closePageSpan() {} ++ virtual void openHeader(const librevenge::RVNGPropertyList &propList); ++ virtual void closeHeader(); ++ virtual void openFooter(const librevenge::RVNGPropertyList &propList); ++ virtual void closeFooter(); + +- virtual void openSpan(const WPXPropertyList &propList); +- virtual void closeSpan() {} ++ virtual void defineSectionStyle(const librevenge::RVNGPropertyList &) {} ++ virtual void openSection(const librevenge::RVNGPropertyList &propList); ++ virtual void closeSection() {} + +- virtual void openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns); +- virtual void closeSection() {} ++ virtual void defineParagraphStyle(const librevenge::RVNGPropertyList &) {} ++ virtual void openParagraph(const librevenge::RVNGPropertyList &propList); ++ virtual void closeParagraph() {} + +- virtual void insertTab(); +- virtual void insertText(const WPXString &text); +- virtual void insertLineBreak(); ++ virtual void defineCharacterStyle(const librevenge::RVNGPropertyList &) {} ++ virtual void openSpan(const librevenge::RVNGPropertyList &propList); ++ virtual void closeSpan() {} + +- virtual void defineOrderedListLevel(const WPXPropertyList &propList); +- virtual void defineUnorderedListLevel(const WPXPropertyList &propList); +- virtual void openOrderedListLevel(const WPXPropertyList &propList); +- virtual void openUnorderedListLevel(const WPXPropertyList &propList); +- virtual void closeOrderedListLevel(); +- virtual void closeUnorderedListLevel(); +- virtual void openListElement(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops); +- virtual void closeListElement() {} ++ virtual void openLink(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeLink() {} + +- virtual void openFootnote(const WPXPropertyList &propList); +- virtual void closeFootnote(); +- virtual void openEndnote(const WPXPropertyList &propList); +- virtual void closeEndnote(); ++ virtual void insertTab(); ++ virtual void insertText(const librevenge::RVNGString &text); ++ virtual void insertSpace(); ++ virtual void insertLineBreak(); ++ virtual void insertField(const librevenge::RVNGPropertyList & /* propList */) {} + +- virtual void openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns); +- virtual void openTableRow(const WPXPropertyList &propList); +- virtual void closeTableRow() {} +- virtual void openTableCell(const WPXPropertyList &propList); +- virtual void closeTableCell() {} +- virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} +- virtual void closeTable(); ++ virtual void openOrderedListLevel(const librevenge::RVNGPropertyList &propList); ++ virtual void openUnorderedListLevel(const librevenge::RVNGPropertyList &propList); ++ virtual void closeOrderedListLevel(); ++ virtual void closeUnorderedListLevel(); ++ virtual void openListElement(const librevenge::RVNGPropertyList &propList); ++ virtual void closeListElement() {} + +- virtual void definePageStyle(const WPXPropertyList&) {} +- virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} +- virtual void defineCharacterStyle(const WPXPropertyList&) {} +- virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} +- virtual void insertSpace() {} +- virtual void insertField(const WPXString&, const WPXPropertyList&) {} +- virtual void openComment(const WPXPropertyList&) {} +- virtual void closeComment() {} +- virtual void openTextBox(const WPXPropertyList&) {} +- virtual void closeTextBox() {} +- virtual void openFrame(const WPXPropertyList&) {} +- virtual void closeFrame() {} +- virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} +- virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} ++ virtual void openFootnote(const librevenge::RVNGPropertyList &propList); ++ virtual void closeFootnote(); ++ virtual void openEndnote(const librevenge::RVNGPropertyList &propList); ++ virtual void closeEndnote(); ++ virtual void openComment(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeComment() {} ++ virtual void openTextBox(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeTextBox() {} + ++ virtual void openTable(const librevenge::RVNGPropertyList &propList); ++ virtual void openTableRow(const librevenge::RVNGPropertyList &propList); ++ virtual void closeTableRow() {} ++ virtual void openTableCell(const librevenge::RVNGPropertyList &propList); ++ virtual void closeTableCell() {} ++ virtual void insertCoveredTableCell(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeTable(); + ++ virtual void openFrame(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeFrame() {} ++ ++ virtual void openGroup(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void closeGroup() {} ++ ++ virtual void defineGraphicStyle(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawRectangle(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawEllipse(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawPolygon(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawPolyline(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawPath(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void drawConnector(const librevenge::RVNGPropertyList & /* propList */) {} ++ ++ virtual void insertBinaryObject(const librevenge::RVNGPropertyList & /* propList */) {} ++ virtual void insertEquation(const librevenge::RVNGPropertyList & /* propList */) {} ++ + protected: + virtual UT_Error _loadFile(GsfInput * input); + UT_Error _appendSection(int numColumns, const float, const float); +Index: plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp +=================================================================== +--- plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp (revision 34460) ++++ plugins/wordperfect/xp/ie_impexp_WordPerfect.cpp (working copy) +@@ -35,7 +35,6 @@ + ABI_PLUGIN_DECLARE("WordPerfect") + + static IE_Imp_WordPerfect_Sniffer * m_ImpSniffer = 0; +-static IE_Exp_WordPerfect_Sniffer * m_ExpSniffer = 0; + + #ifdef HAVE_LIBWPS + static IE_Imp_MSWorks_Sniffer * m_MSWorks_ImpSniffer = 0; +@@ -49,13 +48,7 @@ + m_ImpSniffer = new IE_Imp_WordPerfect_Sniffer (); + } + +- if (!m_ExpSniffer) +- { +- m_ExpSniffer = new IE_Exp_WordPerfect_Sniffer (); +- } +- + UT_ASSERT (m_ImpSniffer); +- UT_ASSERT (m_ExpSniffer); + + #ifdef HAVE_LIBWPS + if (!m_MSWorks_ImpSniffer) +@@ -79,7 +72,7 @@ + mi->usage = "No Usage"; + + IE_Imp::registerImporter (m_ImpSniffer); +- //IE_Exp::registerExporter (m_ExpSniffer); ++ + return 1; + } + +@@ -93,18 +86,11 @@ + mi->usage = 0; + + UT_ASSERT (m_ImpSniffer); +- UT_ASSERT (m_ExpSniffer); + + IE_Imp::unregisterImporter (m_ImpSniffer); + delete m_ImpSniffer; + m_ImpSniffer = 0; + +- /* +- IE_Exp::unregisterExporter (m_ExpSniffer); +- delete m_ExpSniffer; +- m_ExpSniffer = 0; +- */ +- + #ifdef HAVE_LIBWPS + IE_Imp::unregisterImporter (m_MSWorks_ImpSniffer); + delete m_MSWorks_ImpSniffer; +Index: plugins/wordperfect/xp/ie_imp_WordPerfect.cpp +=================================================================== +--- plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (revision 34460) ++++ plugins/wordperfect/xp/ie_imp_WordPerfect.cpp (working copy) +@@ -31,6 +31,8 @@ + #include + #include + #include ++#include ++#include + #include + #include + #include +@@ -60,42 +62,47 @@ + + // Stream class + +-#include ++#include ++#include + + #include + #include + #include ++#include + + #ifdef HAVE_LIBWPS + #include + #endif + +-class AbiWordperfectInputStream : public WPXInputStream ++class AbiWordperfectInputStream : public librevenge::RVNGInputStream + { + public: + AbiWordperfectInputStream(GsfInput *input); + ~AbiWordperfectInputStream(); + +- virtual bool isOLEStream(); +- virtual WPXInputStream * getDocumentOLEStream(); +- +- virtual WPXInputStream * getDocumentOLEStream(const char * name); +- ++ virtual bool isStructured(); ++ virtual unsigned subStreamCount(); ++ virtual const char* subStreamName(unsigned); ++ bool existsSubStream(const char*); ++ virtual librevenge::RVNGInputStream* getSubStreamByName(const char*); ++ virtual librevenge::RVNGInputStream* getSubStreamById(unsigned); + virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); +- virtual int seek(long offset, WPX_SEEK_TYPE seekType); ++ virtual int seek(long offset, librevenge::RVNG_SEEK_TYPE seekType); + virtual long tell(); +- virtual bool atEOS(); ++ virtual bool isEnd(); + + private: + + GsfInput *m_input; + GsfInfile *m_ole; ++ std::map m_substreams; + }; + + AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : +- WPXInputStream(), ++ librevenge::RVNGInputStream(), + m_input(input), +- m_ole(NULL) ++ m_ole(NULL), ++ m_substreams() + { + g_object_ref(G_OBJECT(input)); + } +@@ -120,50 +127,120 @@ + return buf; + } + +-int AbiWordperfectInputStream::seek(long offset, WPX_SEEK_TYPE seekType) ++int AbiWordperfectInputStream::seek(long offset, librevenge::RVNG_SEEK_TYPE seekType) + { + GSeekType gsfSeekType = G_SEEK_SET; + switch(seekType) + { +- case WPX_SEEK_CUR: ++ case librevenge::RVNG_SEEK_CUR: + gsfSeekType = G_SEEK_CUR; + break; +- case WPX_SEEK_SET: ++ case librevenge::RVNG_SEEK_SET: + gsfSeekType = G_SEEK_SET; + break; ++ case librevenge::RVNG_SEEK_END: ++ gsfSeekType = G_SEEK_END; ++ break; + } + + return gsf_input_seek(m_input, offset, gsfSeekType); + } + +-bool AbiWordperfectInputStream::isOLEStream() ++bool AbiWordperfectInputStream::isStructured() + { + if (!m_ole) + m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + +- if (m_ole != NULL) ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) + return true; + + return false; + } + +-WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream() ++unsigned AbiWordperfectInputStream::subStreamCount() + { +- return getDocumentOLEStream("PerfectOffice_MAIN"); ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ int numChildren = gsf_infile_num_children(m_ole); ++ if (numChildren > 0) ++ return numChildren; ++ return 0; ++ } ++ ++ return 0; + } + +-WPXInputStream * AbiWordperfectInputStream::getDocumentOLEStream(const char * name) ++const char * AbiWordperfectInputStream::subStreamName(unsigned id) + { +- WPXInputStream *documentStream = NULL; ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + + if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ if ((int)id >= gsf_infile_num_children(m_ole)) ++ { ++ return 0; ++ } ++ std::map::iterator i = m_substreams.lower_bound(id); ++ if (i == m_substreams.end() || m_substreams.key_comp()(id, i->first)) ++ { ++ std::string name = gsf_infile_name_by_index(m_ole, (int)id); ++ i = m_substreams.insert(i, std::map::value_type(id, name)); ++ } ++ return i->second.c_str(); ++ } ++ ++ return 0; ++} ++ ++bool AbiWordperfectInputStream::existsSubStream(const char * name) ++{ ++ if (!m_ole) + m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); + ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ + if (m_ole) + { + GsfInput *document = gsf_infile_child_by_name(m_ole, name); + if (document) + { ++ g_object_unref(G_OBJECT (document)); ++ return true; ++ } ++ } ++ ++ return false; ++} ++ ++librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamByName(const char * name) ++{ ++ librevenge::RVNGInputStream *documentStream = NULL; ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ GsfInput *document = gsf_infile_child_by_name(m_ole, name); ++ if (document) ++ { + documentStream = new AbiWordperfectInputStream(document); + g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream + } +@@ -172,12 +249,35 @@ + return documentStream; + } + ++librevenge::RVNGInputStream * AbiWordperfectInputStream::getSubStreamById(unsigned id) ++{ ++ librevenge::RVNGInputStream *documentStream = NULL; ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_msole_new (m_input, NULL)); ++ ++ if (!m_ole) ++ m_ole = GSF_INFILE(gsf_infile_zip_new (m_input, NULL)); ++ ++ if (m_ole) ++ { ++ GsfInput *document = gsf_infile_child_by_index(m_ole, (int)id); ++ if (document) ++ { ++ documentStream = new AbiWordperfectInputStream(document); ++ g_object_unref(G_OBJECT (document)); // the only reference should be encapsulated within the new stream ++ } ++ } ++ ++ return documentStream; ++} ++ + long AbiWordperfectInputStream::tell() + { + return gsf_input_tell(m_input); + } + +-bool AbiWordperfectInputStream::atEOS() ++bool AbiWordperfectInputStream::isEnd() + { + return gsf_input_eof(m_input); + } +@@ -247,13 +347,13 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); +- ++ libwpd::WPDConfidence confidence = libwpd::WPDocument::isFileFormatSupported(&gsfInput); ++ + switch (confidence) + { +- case WPD_CONFIDENCE_NONE: ++ case libwpd::WPD_CONFIDENCE_NONE: + return UT_CONFIDENCE_ZILCH; +- case WPD_CONFIDENCE_EXCELLENT: ++ case libwpd::WPD_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: + return UT_CONFIDENCE_ZILCH; +@@ -312,9 +412,9 @@ + UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); ++ libwpd::WPDResult error = libwpd::WPDocument::parse(&gsfInput, static_cast(this), NULL); + +- if (error != WPD_OK) ++ if (error != libwpd::WPD_OK) + { + UT_DEBUGMSG(("AbiWordPerfect: ERROR: %i!\n", (int)error)); + return UT_IE_IMPORTERROR; +@@ -329,7 +429,7 @@ + // nada + } + +-void IE_Imp_WordPerfect::setDocumentMetaData(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::setDocumentMetaData(const librevenge::RVNGPropertyList &propList) + { + if (propList["dc:author"]) + getDoc()->setMetaDataProp(PD_META_KEY_CREATOR, propList["dc:author"]->getStr().cstr()); +@@ -339,15 +439,15 @@ + getDoc()->setMetaDataProp(PD_META_KEY_PUBLISHER, propList["dc:publisher"]->getStr().cstr()); + if (propList["dc:type"]) + getDoc()->setMetaDataProp(PD_META_KEY_TYPE, propList["dc:category"]->getStr().cstr()); +- if (propList["libwpd:keywords"]) +- getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["libwpd:keywords"]->getStr().cstr()); ++ if (propList["librevenge:keywords"]) ++ getDoc()->setMetaDataProp(PD_META_KEY_KEYWORDS, propList["librevenge:keywords"]->getStr().cstr()); + if (propList["dc:language"]) + getDoc()->setMetaDataProp(PD_META_KEY_LANGUAGE, propList["dc:language"]->getStr().cstr()); +- if (propList["libwpd:abstract"]) +- getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["libwpd:abstract"]->getStr().cstr()); ++ if (propList["librevenge:abstract"]) ++ getDoc()->setMetaDataProp(PD_META_KEY_DESCRIPTION, propList["librevenge:abstract"]->getStr().cstr()); + } + +-void IE_Imp_WordPerfect::startDocument() ++void IE_Imp_WordPerfect::startDocument(const librevenge::RVNGPropertyList & /* propList */) + { + UT_DEBUGMSG(("AbiWordPerfect: startDocument\n")); + } +@@ -357,7 +457,7 @@ + UT_DEBUGMSG(("AbiWordPerfect: endDocument\n")); + } + +-void IE_Imp_WordPerfect::openPageSpan(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::openPageSpan(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: openPageSpan\n")); +@@ -378,7 +478,7 @@ + + } + +-void IE_Imp_WordPerfect::openHeader(const WPXPropertyList & /*propList*/) ++void IE_Imp_WordPerfect::openHeader(const librevenge::RVNGPropertyList & /*propList*/) + { + m_bHdrFtrOpenCount++; + +@@ -420,7 +520,7 @@ + */ + } + +-void IE_Imp_WordPerfect::openFooter(const WPXPropertyList & /*propList*/) ++void IE_Imp_WordPerfect::openFooter(const librevenge::RVNGPropertyList & /*propList*/) + { + m_bHdrFtrOpenCount++; + // see above comments re: openHeader +@@ -432,7 +532,7 @@ + // see above comments re: closeHeader + } + +-void IE_Imp_WordPerfect::openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops) ++void IE_Imp_WordPerfect::openParagraph(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: openParagraph()\n")); +@@ -478,13 +578,15 @@ + (int)(m_topMargin*72), (int)(m_bottomMargin*72), m_leftMarginOffset, m_rightMarginOffset, m_textIndent, lineSpacing); + propBuffer += tmpBuffer; + +- if (tabStops.count() > 0) // Append the tabstop information ++ const librevenge::RVNGPropertyListVector *tabStops = propList.child("style:tab-stops"); ++ ++ if (tabStops && tabStops->count()) // Append the tabstop information + { + propBuffer += "; tabstops:"; + tmpBuffer = ""; +- WPXPropertyListVector::Iter i(tabStops); +- for (i.rewind(); i.next();) +- { ++ librevenge::RVNGPropertyListVector::Iter i(*tabStops); ++ for (i.rewind(); i.next();) ++ { + propBuffer += tmpBuffer; + if (i()["style:position"]) + { +@@ -515,8 +617,8 @@ + propBuffer += "0"; + + tmpBuffer = ","; +- } +- } ++ } ++ } + + + +@@ -543,7 +645,7 @@ + } + } + +-void IE_Imp_WordPerfect::openSpan(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::openSpan(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: Appending current text properties\n")); +@@ -614,13 +716,14 @@ + X_CheckDocumentError(appendFmt(propsArray)); + } + +-void IE_Imp_WordPerfect::openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns) ++void IE_Imp_WordPerfect::openSection(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: openSection\n")); + + float marginLeft = 0.0f, marginRight = 0.0f; +- int columnsCount = ((columns.count() == 0) ? 1 : columns.count()); ++ const librevenge::RVNGPropertyListVector *columns = propList.child("style:columns"); ++ int columnsCount = ((!columns || !columns->count()) ? 1 : columns->count()); + + // TODO: support spaceAfter + if (propList["fo:start-indent"]) +@@ -647,7 +750,7 @@ + X_CheckDocumentError(appendSpan(&ucs,1)); + } + +-void IE_Imp_WordPerfect::insertText(const WPXString &text) ++void IE_Imp_WordPerfect::insertText(const librevenge::RVNGString &text) + { + if (m_bHdrFtrOpenCount) return; // HACK + if (text.len()) +@@ -658,6 +761,15 @@ + } + } + ++void IE_Imp_WordPerfect::insertSpace() ++{ ++ if (m_bHdrFtrOpenCount) return; // HACK ++ UT_DEBUGMSG(("AbiWordPerfect: insertSpace\n")); ++ ++ UT_UCS4Char ucs = UCS_SPACE; ++ X_CheckDocumentError(appendSpan(&ucs,1)); ++} ++ + void IE_Imp_WordPerfect::insertLineBreak() + { + if (m_bHdrFtrOpenCount) return; // HACK +@@ -668,12 +780,11 @@ + } + + +- +-void IE_Imp_WordPerfect::defineOrderedListLevel(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::openOrderedListLevel(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK +- UT_DEBUGMSG(("AbiWordPerfect: defineOrderedListLevel\n")); +- ++ UT_DEBUGMSG(("AbiWordPerfect: openOrderedListLevel\n")); ++ + int listID = 0, startingNumber = 0, level = 1; + char listType = '1'; + UT_UTF8String textBeforeNumber, textAfterNumber; +@@ -680,12 +791,12 @@ + float listLeftOffset = 0.0f; + float listMinLabelWidth = 0.0f; + +- if (propList["libwpd:id"]) +- listID = propList["libwpd:id"]->getInt(); ++ if (propList["librevenge:id"]) ++ listID = propList["librevenge:id"]->getInt(); + if (propList["text:start-value"]) + startingNumber = propList["text:start-value"]->getInt(); +- if (propList["libwpd:level"]) +- level = propList["libwpd:level"]->getInt(); ++ if (propList["librevenge:level"]) ++ level = propList["librevenge:level"]->getInt(); + if (propList["style:num-prefix"]) + textBeforeNumber += propList["style:num-prefix"]->getStr().cstr(); + if (propList["style:num-suffix"]) +@@ -716,22 +827,38 @@ + m_pCurrentListDefinition->setListMinLabelWidth(level, listMinLabelWidth); + _updateDocumentOrderedListDefinition(m_pCurrentListDefinition, level, listType, textBeforeNumber, textAfterNumber, startingNumber); + } ++ ++ m_iCurrentListLevel++; + } + +-void IE_Imp_WordPerfect::defineUnorderedListLevel(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::closeOrderedListLevel() + { + if (m_bHdrFtrOpenCount) return; // HACK +- UT_DEBUGMSG(("AbiWordPerfect: defineUnorderedListLevel\n")); ++ UT_DEBUGMSG(("AbiWordPerfect: closeOrderedListLevel (level: %i)\n", m_iCurrentListLevel)); ++ UT_ASSERT(m_iCurrentListLevel > 0); ++ ++ // every time we close a list level, the level above it is normally renumbered to start at "1" ++ // again. this code takes care of that. ++ if (m_iCurrentListLevel < (WP6_NUM_LIST_LEVELS-1)) ++ m_pCurrentListDefinition->setLevelNumber(m_iCurrentListLevel + 1, 0); ++ ++ m_iCurrentListLevel--; ++} + ++void IE_Imp_WordPerfect::openUnorderedListLevel(const librevenge::RVNGPropertyList &propList) ++{ ++ if (m_bHdrFtrOpenCount) return; // HACK ++ UT_DEBUGMSG(("AbiWordPerfect: openUNorderedListLevel\n")); ++ + int listID = 0, level = 1; +- WPXString textBeforeNumber, textAfterNumber; ++ librevenge::RVNGString textBeforeNumber, textAfterNumber; + float listLeftOffset = 0.0f; + float listMinLabelWidth = 0.0f; + +- if (propList["libwpd:id"]) +- listID = propList["libwpd:id"]->getInt(); +- if (propList["libwpd:level"]) +- level = propList["libwpd:level"]->getInt(); ++ if (propList["librevenge:id"]) ++ listID = propList["librevenge:id"]->getInt(); ++ if (propList["librevenge:level"]) ++ level = propList["librevenge:level"]->getInt(); + if (propList["text:space-before"]) + listLeftOffset = propList["text:space-before"]->getDouble(); + if (propList["text:min-label-width"]) +@@ -752,39 +879,10 @@ + m_pCurrentListDefinition->setListMinLabelWidth(level, listMinLabelWidth); + _updateDocumentUnorderedListDefinition(m_pCurrentListDefinition, level); + } +-} + +-//void IE_Imp_WordPerfect::openOrderedListLevel(const int listID) +-void IE_Imp_WordPerfect::openOrderedListLevel(const WPXPropertyList & /*propList*/) +-{ +- if (m_bHdrFtrOpenCount) return; // HACK +- UT_DEBUGMSG(("AbiWordPerfect: openOrderedListLevel\n")); +- + m_iCurrentListLevel++; + } + +-void IE_Imp_WordPerfect::closeOrderedListLevel() +-{ +- if (m_bHdrFtrOpenCount) return; // HACK +- UT_DEBUGMSG(("AbiWordPerfect: closeOrderedListLevel (level: %i)\n", m_iCurrentListLevel)); +- UT_ASSERT(m_iCurrentListLevel > 0); +- +- // every time we close a list level, the level above it is normally renumbered to start at "1" +- // again. this code takes care of that. +- if (m_iCurrentListLevel < (WP6_NUM_LIST_LEVELS-1)) +- m_pCurrentListDefinition->setLevelNumber(m_iCurrentListLevel + 1, 0); +- +- m_iCurrentListLevel--; +-} +- +-void IE_Imp_WordPerfect::openUnorderedListLevel(const WPXPropertyList & /*propList*/) +-{ +- if (m_bHdrFtrOpenCount) return; // HACK +- UT_DEBUGMSG(("AbiWordPerfect: openUNorderedListLevel\n")); +- +- m_iCurrentListLevel++; +-} +- + void IE_Imp_WordPerfect::closeUnorderedListLevel() + { + if (m_bHdrFtrOpenCount) return; // HACK +@@ -796,7 +894,7 @@ + + // ASSUMPTION: We assume that unordered lists will always pass a number of "0". unpredictable behaviour + // may result otherwise +-void IE_Imp_WordPerfect::openListElement(const WPXPropertyList &propList, const WPXPropertyListVector & /*tabStops*/) ++void IE_Imp_WordPerfect::openListElement(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: openListElement\n")); +@@ -885,7 +983,7 @@ + X_CheckDocumentError(appendSpan(&ucs,1)); + } + +-void IE_Imp_WordPerfect::openFootnote(const WPXPropertyList & /*propList*/) ++void IE_Imp_WordPerfect::openFootnote(const librevenge::RVNGPropertyList & /*propList*/) + { + if (m_bHdrFtrOpenCount) return; // HACK + +@@ -934,7 +1032,7 @@ + X_CheckDocumentError(appendStrux(PTX_EndFootnote,NULL)); + } + +-void IE_Imp_WordPerfect::openEndnote(const WPXPropertyList & /*propList*/) ++void IE_Imp_WordPerfect::openEndnote(const librevenge::RVNGPropertyList & /*propList*/) + { + if (m_bHdrFtrOpenCount) return; // HACK + const gchar** propsArray = NULL; +@@ -975,7 +1073,7 @@ + X_CheckDocumentError(appendStrux(PTX_EndEndnote,NULL)); + } + +-void IE_Imp_WordPerfect::openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns) ++void IE_Imp_WordPerfect::openTable(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + // TODO: handle 'marginLeftOffset' and 'marginRightOffset' +@@ -1000,14 +1098,18 @@ + } + } + +- propBuffer += "table-column-props:"; +- WPXPropertyListVector::Iter i(columns); +- for (i.rewind(); i.next();) ++ const librevenge::RVNGPropertyListVector *columns = propList.child("librevenge:table-columns"); ++ if (columns) + { +- UT_String tmpBuffer; +- if (i()["style:column-width"]) +- UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr()); +- propBuffer += tmpBuffer; ++ propBuffer += "table-column-props:"; ++ librevenge::RVNGPropertyListVector::Iter i(*columns); ++ for (i.rewind(); i.next();) ++ { ++ UT_String tmpBuffer; ++ if (i()["style:column-width"]) ++ UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr()); ++ propBuffer += tmpBuffer; ++ } + } + + const gchar* propsArray[3]; +@@ -1018,7 +1120,7 @@ + X_CheckDocumentError(appendStrux(PTX_SectionTable, propsArray)); + } + +-void IE_Imp_WordPerfect::openTableRow(const WPXPropertyList & /*propList*/) ++void IE_Imp_WordPerfect::openTableRow(const librevenge::RVNGPropertyList & /*propList*/) + { + if (m_bHdrFtrOpenCount) return; // HACK + UT_DEBUGMSG(("AbiWordPerfect: openRow\n")); +@@ -1030,14 +1132,14 @@ + m_bInCell = false; + } + +-void IE_Imp_WordPerfect::openTableCell(const WPXPropertyList &propList) ++void IE_Imp_WordPerfect::openTableCell(const librevenge::RVNGPropertyList &propList) + { + if (m_bHdrFtrOpenCount) return; // HACK + int col =0, row = 0, colSpan = 0, rowSpan = 0; +- if (propList["libwpd:column"]) +- col = propList["libwpd:column"]->getInt(); +- if (propList["libwpd:row"]) +- row = propList["libwpd:row"]->getInt(); ++ if (propList["librevenge:column"]) ++ col = propList["librevenge:column"]->getInt(); ++ if (propList["librevenge:row"]) ++ row = propList["librevenge:row"]->getInt(); + if (propList["table:number-columns-spanned"]) + colSpan = propList["table:number-columns-spanned"]->getInt(); + if (propList["table:number-rows-spanned"]) +@@ -1247,9 +1349,9 @@ + virtual UT_Error _loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); ++ libwps::WPSResult error = libwps::WPSDocument::parse(&gsfInput, static_cast(this)); + +- if (error != WPS_OK) ++ if (error != libwps::WPS_OK) + { + UT_DEBUGMSG(("AbiMSWorks: ERROR: %i!\n", (int)error)); + return UT_IE_IMPORTERROR; +@@ -1286,13 +1388,17 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); ++ libwps::WPSKind kind; ++ libwps::WPSConfidence confidence = libwps::WPSDocument::isFileFormatSupported(&gsfInput, kind); ++ ++ if (kind != libwps::WPS_TEXT) ++ confidence = libwps::WPS_CONFIDENCE_NONE; + + switch (confidence) + { +- case WPS_CONFIDENCE_NONE: ++ case libwps::WPS_CONFIDENCE_NONE: + return UT_CONFIDENCE_ZILCH; +- case WPS_CONFIDENCE_EXCELLENT: ++ case libwps::WPS_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: + return UT_CONFIDENCE_ZILCH; +Index: plugins/wordperfect/xp/Makefile.am +=================================================================== +--- plugins/wordperfect/xp/Makefile.am (revision 34460) ++++ plugins/wordperfect/xp/Makefile.am (working copy) +@@ -6,8 +6,6 @@ + -DABI_BUILD_VERSION=\"$(VERSION)\" + + libxp_la_SOURCES = \ +- ie_exp_WordPerfect.cpp \ +- ie_exp_WordPerfect.h \ + ie_impexp_WordPerfect.cpp \ + ie_impexp_WordPerfect.h \ + ie_imp_WordPerfect.cpp \ +Index: plugins/wordperfect/xp/ie_impexp_WordPerfect.h +=================================================================== +--- plugins/wordperfect/xp/ie_impexp_WordPerfect.h (revision 34460) ++++ plugins/wordperfect/xp/ie_impexp_WordPerfect.h (working copy) +@@ -24,7 +24,6 @@ + */ + + #include "ie_imp_WordPerfect.h" +-#include "ie_exp_WordPerfect.h" + #include "xap_Module.h" + + #define IE_MIMETYPE_WP_51 "application/wordperfect5.1" +Index: plugins/wordperfect/plugin.m4 +=================================================================== +--- plugins/wordperfect/plugin.m4 (revision 34460) ++++ plugins/wordperfect/plugin.m4 (working copy) +@@ -1,6 +1,6 @@ + +-wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" +-wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' ++wordperfect_pkgs="libwpd-0.10 $gsf_req" ++wordperfect_wps_pkgs='libwps-0.3' + wordperfect_deps="no" + + WORDPERFECT_CFLAGS= +@@ -29,7 +29,7 @@ + + PKG_CHECK_EXISTS([ $wordperfect_wps_pkgs ], + [ +- wp_deps_pkgs="$wp_deps_pkgs $wordperfect_wps_pkgs" ++ wp_deps_pkgs="$wordperfect_wps_pkgs $wp_deps_pkgs" + WPS_DEFINE=" -DHAVE_LIBWPS" + ]) + + diff --git a/libre/abiword/abiword.install b/libre/abiword/abiword.install new file mode 100644 index 000000000..cc4abc0b6 --- /dev/null +++ b/libre/abiword/abiword.install @@ -0,0 +1,12 @@ +post_install() { + update-desktop-database -q + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +} + +post_upgrade() { + post_install $1 +} + +post_remove() { + post_install $1 +} diff --git a/libre/abiword/compat_libwpg_0_9.patch b/libre/abiword/compat_libwpg_0_9.patch new file mode 100644 index 000000000..cf36e188e --- /dev/null +++ b/libre/abiword/compat_libwpg_0_9.patch @@ -0,0 +1,371 @@ +diff -Nur abiword-2.8.6.orig//plugin-configure.m4 abiword-2.8.6/plugin-configure.m4 +--- abiword-2.8.6.orig//plugin-configure.m4 2010-06-13 14:17:27.000000000 -0700 ++++ abiword-2.8.6/plugin-configure.m4 2010-12-06 13:59:43.083048588 -0800 +@@ -794,7 +794,7 @@ + AC_SUBST([OPENXML_LIBS]) + + +-wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" ++wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" + wpg_deps="no" + + if test "$enable_wpg" != ""; then +@@ -1497,8 +1497,8 @@ + AC_SUBST([EML_LIBS]) + + +-wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" +-wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' ++wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" ++wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' + wordperfect_deps="no" + + WORDPERFECT_CFLAGS= +diff -Nur abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 abiword-2.8.6/plugins/wordperfect/plugin.m4 +--- abiword-2.8.6.orig//plugins/wordperfect/plugin.m4 2010-05-30 07:50:46.000000000 -0700 ++++ abiword-2.8.6/plugins/wordperfect/plugin.m4 2010-12-06 13:59:53.929715254 -0800 +@@ -1,6 +1,6 @@ + +-wordperfect_pkgs="libwpd-0.8 >= 0.8.0 $gsf_req" +-wordperfect_wps_pkgs='libwps-0.1 >= 0.1.0' ++wordperfect_pkgs="libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0 $gsf_req" ++wordperfect_wps_pkgs='libwps-0.2 >= 0.1.0' + wordperfect_deps="no" + + WORDPERFECT_CFLAGS= +diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp +--- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-02-06 13:06:11.000000000 -0800 ++++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp 2010-12-06 13:59:53.926381921 -0800 +@@ -60,7 +60,7 @@ + + // Stream class + +-#include ++#include + + #include + #include +@@ -70,12 +70,7 @@ + #include + #endif + +-class AbiWordperfectInputStream : +-#ifdef HAVE_LIBWPS +- public WPSInputStream +-#else +- public WPXInputStream +-#endif ++class AbiWordperfectInputStream : public WPXInputStream + { + public: + AbiWordperfectInputStream(GsfInput *input); +@@ -86,7 +81,7 @@ + + virtual WPXInputStream * getDocumentOLEStream(const char * name); + +- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); ++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); + virtual int seek(long offset, WPX_SEEK_TYPE seekType); + virtual long tell(); + virtual bool atEOS(); +@@ -98,11 +93,7 @@ + }; + + AbiWordperfectInputStream::AbiWordperfectInputStream(GsfInput *input) : +-#ifdef HAVE_LIBWPS +- WPSInputStream(), +-#else +- WPXInputStream(true), +-#endif ++ WPXInputStream(), + m_input(input), + m_ole(NULL) + { +@@ -117,9 +108,9 @@ + g_object_unref(G_OBJECT(m_input)); + } + +-const uint8_t * AbiWordperfectInputStream::read(size_t numBytes, size_t &numBytesRead) ++const unsigned char * AbiWordperfectInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) + { +- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); ++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); + + if (buf == NULL) + numBytesRead = 0; +@@ -256,19 +247,12 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput, true); ++ WPDConfidence confidence = WPDocument::isFileFormatSupported(&gsfInput); + + switch (confidence) + { + case WPD_CONFIDENCE_NONE: +- // libwpd > 0.7.1 reports POOR if the text file is plain text (that _could_ be a WP4x document) +- // however, we'll let the text importer handle such cases +- case WPD_CONFIDENCE_POOR: + return UT_CONFIDENCE_ZILCH; +- case WPD_CONFIDENCE_LIKELY: +- return UT_CONFIDENCE_SOSO; +- case WPD_CONFIDENCE_GOOD: +- return UT_CONFIDENCE_GOOD; + case WPD_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: +@@ -328,7 +312,7 @@ + UT_Error IE_Imp_WordPerfect::_loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPDResult error = WPDocument::parse(&gsfInput, static_cast(this)); ++ WPDResult error = WPDocument::parse(&gsfInput, static_cast(this), NULL); + + if (error != WPD_OK) + { +@@ -381,9 +365,9 @@ + float marginLeft = 1.0f, marginRight = 1.0f; + + if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); ++ marginLeft = propList["fo:margin-left"]->getDouble(); + if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ marginRight = propList["fo:margin-right"]->getDouble(); + + if (marginLeft != m_leftPageMargin || marginRight != m_rightPageMargin /* || */ + /* marginTop != m_marginBottom || marginBottom != m_marginBottom */ ) +@@ -456,15 +440,15 @@ + float marginTop = 0.0f, marginBottom = 0.0f; + float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f; + if (propList["fo:margin-top"]) +- marginTop = propList["fo:margin-top"]->getFloat(); ++ marginTop = propList["fo:margin-top"]->getDouble(); + if (propList["fo:margin-bottom"]) +- marginBottom = propList["fo:margin-bottom"]->getFloat(); ++ marginBottom = propList["fo:margin-bottom"]->getDouble(); + if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); ++ marginLeft = propList["fo:margin-left"]->getDouble(); + if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ marginRight = propList["fo:margin-right"]->getDouble(); + if (propList["fo:text-indent"]) +- textIndent = propList["fo:text-indent"]->getFloat(); ++ textIndent = propList["fo:text-indent"]->getDouble(); + + m_topMargin = marginTop; + m_bottomMargin = marginBottom; +@@ -487,7 +471,7 @@ + + float lineSpacing = 1.0f; + if (propList["fo:line-height"]) +- lineSpacing = propList["fo:line-height"]->getFloat(); ++ lineSpacing = propList["fo:line-height"]->getDouble(); + + UT_String tmpBuffer; + UT_String_sprintf(tmpBuffer, "; margin-top:%.4fin; margin-bottom:%.4fin; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f", +@@ -504,7 +488,7 @@ + propBuffer += tmpBuffer; + if (i()["style:position"]) + { +- UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getFloat()); ++ UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble()); + propBuffer += tmpBuffer; + } + +@@ -640,9 +624,9 @@ + + // TODO: support spaceAfter + if (propList["fo:margin-left"]) +- marginLeft = propList["fo:margin-left"]->getFloat(); ++ marginLeft = propList["fo:margin-left"]->getDouble(); + if (propList["fo:margin-right"]) +- marginRight = propList["fo:margin-right"]->getFloat(); ++ marginRight = propList["fo:margin-right"]->getDouble(); + + if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount) + m_bSectionChanged = true; +@@ -709,9 +693,9 @@ + if (propList["style:num-format"]) + listType = propList["style:num-format"]->getStr().cstr()[0]; + if (propList["text:space-before"]) +- listLeftOffset = propList["text:space-before"]->getFloat(); ++ listLeftOffset = propList["text:space-before"]->getDouble(); + if (propList["text:min-label-width"]) +- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); ++ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); + + if (!m_pCurrentListDefinition || + m_pCurrentListDefinition->getOutlineHash() != listID || +@@ -749,9 +733,9 @@ + if (propList["libwpd:level"]) + level = propList["libwpd:level"]->getInt(); + if (propList["text:space-before"]) +- listLeftOffset = propList["text:space-before"]->getFloat(); ++ listLeftOffset = propList["text:space-before"]->getDouble(); + if (propList["text:min-label-width"]) +- listMinLabelWidth = propList["text:min-label-width"]->getFloat(); ++ listMinLabelWidth = propList["text:min-label-width"]->getDouble(); + + if (!m_pCurrentListDefinition || m_pCurrentListDefinition->getOutlineHash() != listID) + { +@@ -871,10 +855,10 @@ + + UT_String_sprintf(tempBuffer, "margin-left:%.4fin; ", m_pCurrentListDefinition->getListLeftOffset(m_iCurrentListLevel) + + m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) +- - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); ++ - (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); + propBuffer += tempBuffer; + UT_String_sprintf(tempBuffer, "text-indent:%.4fin", - m_pCurrentListDefinition->getListMinLabelWidth(m_iCurrentListLevel) +- + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getFloat() : 0.0f)); ++ + (propList["fo:text-indent"] ? propList["fo:text-indent"]->getDouble() : 0.0f)); + propBuffer += tempBuffer; + + listAttribs[attribsCount++] = PT_PROPS_ATTRIBUTE_NAME; +@@ -1263,7 +1247,7 @@ + virtual UT_Error _loadFile(GsfInput * input) + { + AbiWordperfectInputStream gsfInput(input); +- WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); ++ WPSResult error = WPSDocument::parse(&gsfInput, static_cast(this)); + + if (error != WPS_OK) + { +@@ -1302,18 +1286,12 @@ + { + AbiWordperfectInputStream gsfInput(input); + +- WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput, true); ++ WPSConfidence confidence = WPSDocument::isFileFormatSupported(&gsfInput); + + switch (confidence) + { + case WPS_CONFIDENCE_NONE: + return UT_CONFIDENCE_ZILCH; +- case WPS_CONFIDENCE_POOR: +- return UT_CONFIDENCE_POOR; +- case WPS_CONFIDENCE_LIKELY: +- return UT_CONFIDENCE_SOSO; +- case WPS_CONFIDENCE_GOOD: +- return UT_CONFIDENCE_GOOD; + case WPS_CONFIDENCE_EXCELLENT: + return UT_CONFIDENCE_PERFECT; + default: +diff -Nur abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h +--- abiword-2.8.6.orig//plugins/wordperfect/xp/ie_imp_WordPerfect.h 2009-06-19 01:55:49.000000000 -0700 ++++ abiword-2.8.6/plugins/wordperfect/xp/ie_imp_WordPerfect.h 2010-12-06 13:59:53.929715254 -0800 +@@ -30,13 +30,7 @@ + #define IE_IMP_WP_H + + #include +-#ifdef _WIN32 +-#define POINT WPX_POINT +-#endif + #include +-#ifdef _WIN32 +-#undef POINT +-#endif + #include "ie_imp.h" + #include "ut_string.h" + #include "ut_string_class.h" +@@ -98,7 +92,7 @@ + IE_Imp ** ppie); + }; + +-class IE_Imp_WordPerfect : public IE_Imp, public WPXHLListenerImpl ++class IE_Imp_WordPerfect : public IE_Imp, public WPXDocumentInterface + { + public: + IE_Imp_WordPerfect(PD_Document * pDocument); +@@ -154,6 +148,21 @@ + virtual void insertCoveredTableCell(const WPXPropertyList & /*propList*/) {} + virtual void closeTable(); + ++ virtual void definePageStyle(const WPXPropertyList&) {} ++ virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} ++ virtual void defineCharacterStyle(const WPXPropertyList&) {} ++ virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {} ++ virtual void insertSpace() {} ++ virtual void insertField(const WPXString&, const WPXPropertyList&) {} ++ virtual void openComment(const WPXPropertyList&) {} ++ virtual void closeComment() {} ++ virtual void openTextBox(const WPXPropertyList&) {} ++ virtual void closeTextBox() {} ++ virtual void openFrame(const WPXPropertyList&) {} ++ virtual void closeFrame() {} ++ virtual void insertBinaryObject(const WPXPropertyList&, const WPXBinaryData&) {} ++ virtual void insertEquation(const WPXPropertyList&, const WPXString&) {} ++ + + protected: + virtual UT_Error _loadFile(GsfInput * input); +diff -Nur abiword-2.8.6.orig//plugins/wpg/plugin.m4 abiword-2.8.6/plugins/wpg/plugin.m4 +--- abiword-2.8.6.orig//plugins/wpg/plugin.m4 2010-05-30 07:50:46.000000000 -0700 ++++ abiword-2.8.6/plugins/wpg/plugin.m4 2010-12-06 13:59:53.929715254 -0800 +@@ -1,5 +1,5 @@ + +-wpg_pkgs="$gsf_req libwpg-0.1 >= 0.1.0 libwpd-0.8 >= 0.8.0" ++wpg_pkgs="$gsf_req libwpg-0.2 >= 0.2.0 libwpd-0.9 >= 0.9.0 libwpd-stream-0.9 >= 0.9.0" + wpg_deps="no" + + if test "$enable_wpg" != ""; then +diff -Nur abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp +--- abiword-2.8.6.orig//plugins/wpg/xp/ie_impGraphic_WPG.cpp 2008-08-15 14:52:32.000000000 -0700 ++++ abiword-2.8.6/plugins/wpg/xp/ie_impGraphic_WPG.cpp 2010-12-06 13:59:53.923048588 -0800 +@@ -31,11 +31,10 @@ + #include + #include + #include +-#include ++#include + #include "xap_Module.h" + + using libwpg::WPGraphics; +-using libwpg::WPGString; + + ABI_PLUGIN_DECLARE("WPG") + +@@ -48,7 +47,7 @@ + virtual bool isOLEStream(); + virtual WPXInputStream * getDocumentOLEStream(); + virtual WPXInputStream * getDocumentOLEStream(const char * name); +- virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead); ++ virtual const unsigned char *read(unsigned long numBytes, unsigned long &numBytesRead); + virtual int seek(long offset, WPX_SEEK_TYPE seekType); + virtual long tell(); + virtual bool atEOS(); +@@ -60,7 +59,7 @@ + }; + + AbiWordPerfectGraphicsInputStream::AbiWordPerfectGraphicsInputStream(GsfInput *input) : +- WPXInputStream(true), ++ WPXInputStream(), + m_input(input), + m_ole(NULL) + { +@@ -75,9 +74,9 @@ + g_object_unref(G_OBJECT(m_input)); + } + +-const uint8_t * AbiWordPerfectGraphicsInputStream::read(size_t numBytes, size_t &numBytesRead) ++const unsigned char * AbiWordPerfectGraphicsInputStream::read(unsigned long numBytes, unsigned long &numBytesRead) + { +- const uint8_t *buf = gsf_input_read(m_input, numBytes, NULL); ++ const unsigned char *buf = gsf_input_read(m_input, numBytes, NULL); + + if (buf == NULL) + numBytesRead = 0; +@@ -245,10 +244,10 @@ + UT_Error IE_Imp_WordPerfectGraphics::importGraphic(GsfInput *input, FG_Graphic **ppfg) + { + AbiWordPerfectGraphicsInputStream gsfInput(input); +- WPGString svgOutput; ++ WPXString svgOutput; + if (WPGraphics::generateSVG(&gsfInput, svgOutput)) + { +- GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.length(), false); ++ GsfInput * svgInput = gsf_input_memory_new((const guint8*)svgOutput.cstr(), svgOutput.len(), false); + UT_Error result = IE_ImpGraphic::loadGraphic(svgInput, IE_ImpGraphic::fileTypeForSuffix(".svg"), ppfg); + g_object_unref(svgInput); + return result; diff --git a/libre/abiword/fix_crash_saving_pdf.patch b/libre/abiword/fix_crash_saving_pdf.patch new file mode 100644 index 000000000..6dd78c7f9 --- /dev/null +++ b/libre/abiword/fix_crash_saving_pdf.patch @@ -0,0 +1,86 @@ +--- abiword/trunk/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp 2013/12/23 03:20:34 33661 ++++ abiword/trunk/src/text/fmt/gtk/fv_UnixSelectionHandles.cpp 2013/12/28 02:04:39 33662 +@@ -36,42 +36,60 @@ + + mode = _fv_text_handle_get_mode (handle); + +- if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START) ++ if (pos == FV_TEXT_HANDLE_POSITION_SELECTION_START) { + handles->updateSelectionStart ((UT_sint32)x, (UT_sint32)y); ++ } + else { +- if (mode == FV_TEXT_HANDLE_MODE_SELECTION) ++ if (mode == FV_TEXT_HANDLE_MODE_SELECTION) { + handles->updateSelectionEnd ((UT_sint32)x, (UT_sint32)y); +- else ++ } ++ else { + handles->updateCursor((UT_sint32)x, (UT_sint32)y); ++ } + } + } + + FV_UnixSelectionHandles::FV_UnixSelectionHandles(FV_View *view, FV_Selection selection) + : FV_SelectionHandles (view, selection) ++ , m_text_handle(NULL) + { + XAP_Frame * pFrame = static_cast(m_pView->getParentData()); +- XAP_UnixFrameImpl * pFrameImpl =static_cast( pFrame->getFrameImpl()); +- GtkWidget * pWidget = pFrameImpl->getViewWidget(); +- +- m_text_handle = _fv_text_handle_new (pWidget); +- _fv_text_handle_set_relative_to (m_text_handle, +- gtk_widget_get_window (pWidget)); +- g_signal_connect (m_text_handle, "handle-dragged", +- G_CALLBACK(handle_dragged_cb), this); ++ // When saving to PDF (and printing) we don't have a frame ++ // See bug 13586 ++ if (pFrame) { ++ XAP_UnixFrameImpl * pFrameImpl = static_cast(pFrame->getFrameImpl()); ++ GtkWidget * pWidget = pFrameImpl->getViewWidget(); ++ ++ m_text_handle = _fv_text_handle_new (pWidget); ++ _fv_text_handle_set_relative_to (m_text_handle, ++ gtk_widget_get_window (pWidget)); ++ g_signal_connect (m_text_handle, "handle-dragged", ++ G_CALLBACK(handle_dragged_cb), this); ++ } + } + + FV_UnixSelectionHandles::~FV_UnixSelectionHandles() + { ++ if(!m_text_handle) { ++ return; ++ } + g_object_unref (m_text_handle); + } + + void FV_UnixSelectionHandles::hide() + { ++ if(!m_text_handle) { ++ return; ++ } + _fv_text_handle_set_mode (m_text_handle, FV_TEXT_HANDLE_MODE_NONE); + } + + void FV_UnixSelectionHandles::setCursorCoords(UT_sint32 x, UT_sint32 y, UT_uint32 height, bool visible) + { ++ if(!m_text_handle) { ++ return; ++ } ++ + GdkRectangle rect; + + _fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_CURSOR); +@@ -92,6 +110,10 @@ + void FV_UnixSelectionHandles::setSelectionCoords(UT_sint32 start_x, UT_sint32 start_y, UT_uint32 start_height, bool start_visible, + UT_sint32 end_x, UT_sint32 end_y, UT_uint32 end_height, bool end_visible) + { ++ if(!m_text_handle) { ++ return; ++ } ++ + GdkRectangle rect; + + _fv_text_handle_set_mode(m_text_handle, FV_TEXT_HANDLE_MODE_SELECTION); + diff --git a/libre/abiword/liberation-fonts.patch b/libre/abiword/liberation-fonts.patch new file mode 100644 index 000000000..1660c3ead --- /dev/null +++ b/libre/abiword/liberation-fonts.patch @@ -0,0 +1,1694 @@ +diff --git a/plugins/latex/xp/ie_exp_LaTeX.cpp b/plugins/latex/xp/ie_exp_LaTeX.cpp +index f3d56c6..d5a77ef 100644 +--- a/plugins/latex/xp/ie_exp_LaTeX.cpp ++++ b/plugins/latex/xp/ie_exp_LaTeX.cpp +@@ -1046,7 +1046,7 @@ void s_LaTeX_Listener::_openSpan(PT_AttrPropIndex api) + m_pie->write("\\texttt{"); + m_NumCloseBrackets++; + } +- if (!strcmp("Arial", szValue) || ++ if (!strcmp("Liberation Sans", szValue) || + !strcmp("Helvetic", szValue) || + !strcmp("Luxi Sans",szValue)) { + m_pie->write("\\textsf{"); +diff --git a/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp b/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp +index ed167dc..e0831c9 100644 +--- a/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp ++++ b/plugins/opendocument/imp/xp/ODi_FontFaceDecls.cpp +@@ -59,7 +59,7 @@ void ODi_FontFaceDecls::startElement (const gchar* pName, + fontFamily = pFontFamily; + + if (pFontFamily && (pFontFamily[0] == '\'') && (pFontFamily[strlen(pFontFamily)-1] == '\'')) { +- // e.g.: Turns a "'Times New Roman'" into a "Times New Roman". ++ // e.g.: Turns a "'Liberation Serif'" into a "Liberation Serif". + // OpenOffice.org sometimes adds those extra "'" surrounding the + // font family name if it's composed by more than one word. + m_fontFamilies[pStyleName] = +diff --git a/plugins/openwriter/xp/ie_exp_OpenWriter.cpp b/plugins/openwriter/xp/ie_exp_OpenWriter.cpp +index 1fab89a..a399c59 100644 +--- a/plugins/openwriter/xp/ie_exp_OpenWriter.cpp ++++ b/plugins/openwriter/xp/ie_exp_OpenWriter.cpp +@@ -900,12 +900,12 @@ bool OO_StylesWriter::writeStyles(PD_Document * pDoc, GsfOutfile * oo, OO_Styles + { + "\n", + "\n", +- "\n", ++ "\n", + "\n", + "\n", + "\n", + "\n", +- "\n", ++ "\n", + "\n" + }; + +diff --git a/plugins/openxml/common/xp/OXML_FontManager.cpp b/plugins/openxml/common/xp/OXML_FontManager.cpp +index 41b719d..2c53c1a 100644 +--- a/plugins/openxml/common/xp/OXML_FontManager.cpp ++++ b/plugins/openxml/common/xp/OXML_FontManager.cpp +@@ -34,7 +34,7 @@ + #include + + OXML_FontManager::OXML_FontManager() : +- m_defaultFont("Times New Roman") ++ m_defaultFont("Liberation Serif") + { + m_major_rts.clear(); + m_minor_rts.clear(); +diff --git a/plugins/openxml/common/xp/OXML_List.cpp b/plugins/openxml/common/xp/OXML_List.cpp +index 5bcb47a..88dba7e 100644 +--- a/plugins/openxml/common/xp/OXML_List.cpp ++++ b/plugins/openxml/common/xp/OXML_List.cpp +@@ -258,7 +258,7 @@ UT_Error OXML_List::serialize(IE_Exp_OpenXML* exporter) + txt = txt.replace(index+1, 1, 1, '1'+i); + } + +- std::string fontFamily("Times New Roman"); ++ std::string fontFamily("Liberation Serif"); + const gchar* listType = "bullet"; + switch(type) + { +diff --git a/plugins/passepartout/xp/ie_exp_Passepartout.cpp b/plugins/passepartout/xp/ie_exp_Passepartout.cpp +index e18e7f1..eec9367 100644 +--- a/plugins/passepartout/xp/ie_exp_Passepartout.cpp ++++ b/plugins/passepartout/xp/ie_exp_Passepartout.cpp +@@ -318,7 +318,7 @@ void Passepartout_Listener::_openBlock(PT_AttrPropIndex api) + } + else + { +- TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Times New Roman" ); ++ TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Liberation Serif" ); + m_pie->write(TempStr.utf8_str()); + } + +@@ -426,7 +426,7 @@ void Passepartout_Listener::_openFont(PT_AttrPropIndex api) + } + else + { +- TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Times New Roman" ); ++ TempStr = UT_UTF8String_sprintf(" font-family=\"%s\"", "Liberation Serif" ); + m_pie->write(TempStr.utf8_str()); + } + +diff --git a/plugins/t602/xp/ie_imp_T602.cpp b/plugins/t602/xp/ie_imp_T602.cpp +index a57a9e2..f7f2301 100644 +--- a/plugins/t602/xp/ie_imp_T602.cpp ++++ b/plugins/t602/xp/ie_imp_T602.cpp +@@ -620,7 +620,7 @@ switch (c) + case 0x01: + m_sfont ^=1; + if (m_sfont & 1) +- { m_size=static_cast(0.8*m_basesize); m_family="Arial"; ++ { m_size=static_cast(0.8*m_basesize); m_family="Liberation Sans"; + /* FIXME? -> .profile?*/ } + else + { m_size=m_basesize; m_family=m_basefamily; } +diff --git a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp +index 4c8d23c..6bcfd6d 100644 +--- a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp ++++ b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp +@@ -234,7 +234,7 @@ GR_Font * GR_UnixCairoGraphics::getGUIFont(void) + const char *guiFontName = pango_font_description_get_family(tempStyle->font_desc); + #endif + if (!guiFontName) +- guiFontName = "'Times New Roman'"; ++ guiFontName = "'Liberation Serif'"; + + UT_UTF8String s = XAP_EncodingManager::get_instance()->getLanguageISOName(); + +diff --git a/src/af/gr/xp/gr_CairoGraphics.cpp b/src/af/gr/xp/gr_CairoGraphics.cpp +index 224b883..38ef911 100644 +--- a/src/af/gr/xp/gr_CairoGraphics.cpp ++++ b/src/af/gr/xp/gr_CairoGraphics.cpp +@@ -776,8 +776,8 @@ bool GR_CairoGraphics::shape(GR_ShapingInfo & si, GR_RenderInfo *& ri) + + /* + * Pango does a royally bad job of the font substitution in +- * pango_itemize(): it will happily return 'Times New Roman' as +- * font when we have requested 'Arial', even though the latter is ++ * pango_itemize(): it will happily return 'Liberation Serif' as ++ * font when we have requested 'Liberation Sans', even though the latter is + * present and has the necessary coverage. Consequently we have to + * do the font substitution manually even on the first shapping. + * +@@ -3054,7 +3054,7 @@ GR_Font * GR_CairoGraphics::getDefaultFont(GR_Font::FontFamilyEnum f, + + case GR_Font::FF_Technical: + case GR_Font::FF_BiDi: +- pszFontFamily = "Arial"; ++ pszFontFamily = "Liberation Sans"; + break; + + default: +diff --git a/src/af/util/xp/ut_misc.cpp b/src/af/util/xp/ut_misc.cpp +index 52246c3..bcd5a6d 100644 +--- a/src/af/util/xp/ut_misc.cpp ++++ b/src/af/util/xp/ut_misc.cpp +@@ -570,7 +570,7 @@ const gchar ** UT_setPropsToValue(const gchar ** props, const gchar * value) + } + + /*! +- splits the xml property string (font-size:24pt;font-face:Arial') into names and values ++ splits the xml property string (font-size:24pt;font-face:Liberation Sans') into names and values + and stores them in an array + + the caller has to delete[] the array; the process is destructive to props +diff --git a/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib b/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib +index f21c815..e284cc9 100644 +--- a/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib ++++ b/src/af/xap/cocoa/xap_CocoaToolPalette.nib/keyedobjects.nib +@@ -10910,7 +10910,7 @@ + 624 + + +- Times New Roman ++ Liberation Serif + _popUpItemAction: + + $class +diff --git a/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp b/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp +index bf94333..f77b40b 100644 +--- a/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp ++++ b/src/af/xap/gtk/xap_UnixDlg_FileOpenSaveAs.cpp +@@ -904,7 +904,7 @@ gint XAP_UnixDialog_FileOpenSaveAs::previewPicture (void) + + const gchar * file_name = gtk_file_chooser_get_uri (m_FC); + +- GR_Font * fnt = pGr->findFont("Times New Roman", ++ GR_Font * fnt = pGr->findFont("Liberation Serif", + "normal", "", "normal", + "", "12pt", + pSS->getLanguageName()); +diff --git a/src/af/xap/win/xap_Win32Dlg_About.cpp b/src/af/xap/win/xap_Win32Dlg_About.cpp +index 2cc4aa6..3aec3f0 100644 +--- a/src/af/xap/win/xap_Win32Dlg_About.cpp ++++ b/src/af/xap/win/xap_Win32Dlg_About.cpp +@@ -289,7 +289,7 @@ void XAP_Win32Dialog_About::runModal(XAP_Frame * pFrame) + lf.lfWeight = 0; + HFONT hfontSmall = CreateFontIndirectW(&lf); + +- wcscpy(lf.lfFaceName, L"Arial"); ++ wcscpy(lf.lfFaceName, L"Liberation Sans"); + lf.lfHeight = 36; + lf.lfWeight = FW_BOLD; + HFONT hfontHeading = CreateFontIndirectW(&lf); +diff --git a/src/af/xap/xp/xap_Dlg_FontChooser.cpp b/src/af/xap/xp/xap_Dlg_FontChooser.cpp +index 56ad605..8a89eb5 100644 +--- a/src/af/xap/xp/xap_Dlg_FontChooser.cpp ++++ b/src/af/xap/xp/xap_Dlg_FontChooser.cpp +@@ -570,7 +570,7 @@ void XAP_Preview_FontPreview::draw(const UT_Rect *clip) + std::string sWeight = getVal("font-weight"); + + if(sFamily.empty()) +- sFamily = "Times New Roman"; ++ sFamily = "Liberation Serif"; + + if(sStyle.empty()) + sStyle = "normal"; +diff --git a/src/af/xap/xp/xap_Dlg_Zoom.cpp b/src/af/xap/xp/xap_Dlg_Zoom.cpp +index 25f1a38..c025206 100644 +--- a/src/af/xap/xp/xap_Dlg_Zoom.cpp ++++ b/src/af/xap/xp/xap_Dlg_Zoom.cpp +@@ -124,7 +124,7 @@ void XAP_Dialog_Zoom::_createPreviewFromGC(GR_Graphics * gc, + UT_ASSERT(m_zoomPreview); + + m_zoomPreview->setWindowSize(width, height); +- m_zoomPreview->setString("10-pt Times New Roman"); ++ m_zoomPreview->setString("10-pt Liberation Serif"); + m_zoomPreview->setFont(XAP_Preview_Zoom::font_NORMAL); + m_zoomPreview->setZoomPercent(m_zoomPercent); + +diff --git a/src/af/xap/xp/xap_Preview_Zoom.cpp b/src/af/xap/xp/xap_Preview_Zoom.cpp +index 3ac69e1..0fdae0e 100644 +--- a/src/af/xap/xp/xap_Preview_Zoom.cpp ++++ b/src/af/xap/xp/xap_Preview_Zoom.cpp +@@ -63,7 +63,7 @@ void XAP_Preview_Zoom::setFont(XAP_Preview_Zoom::tFont f) + { + case XAP_Preview_Zoom::font_NORMAL: + sprintf (fontString, "%dpt", (10 * m_zoomPercent / 100)); +- found = m_gc->findFont("Times New Roman", ++ found = m_gc->findFont("Liberation Serif", + "normal", "", "normal", + "", fontString, + NULL); +diff --git a/src/text/fmt/xp/fl_BlockLayout.cpp b/src/text/fmt/xp/fl_BlockLayout.cpp +index f56e1f5..f0d8dd5 100644 +--- a/src/text/fmt/xp/fl_BlockLayout.cpp ++++ b/src/text/fmt/xp/fl_BlockLayout.cpp +@@ -10260,7 +10260,7 @@ void fl_BlockLayout::StartList( const gchar * style, pf_Frag_Strux* prevSDH) + szDec="."; + if(!szFont) + { +- szFont = "Times New Roman"; ++ szFont = "Liberation Serif"; + UT_ASSERT(UT_SHOULD_NOT_HAPPEN); + } + } +diff --git a/src/text/fmt/xp/fp_Line.cpp b/src/text/fmt/xp/fp_Line.cpp +index 8be126c..ede4ddd 100644 +--- a/src/text/fmt/xp/fp_Line.cpp ++++ b/src/text/fmt/xp/fp_Line.cpp +@@ -1856,7 +1856,7 @@ void fp_Line::_doClearScreenFromRunToEnd(UT_sint32 runIndex) + pRun = m_vecRuns.getNthItem(_getRunLogIndx(runIndex)); + + // Handle case where character extends behind the left side +- // like italic Times New Roman f. Clear a litle bit before if ++ // like italic Liberation Serif f. Clear a litle bit before if + // there is clear screen there + UT_sint32 j = runIndex - 1; + +diff --git a/src/text/fmt/xp/fp_TextRun.cpp b/src/text/fmt/xp/fp_TextRun.cpp +index 0e93665..ddb46cb 100644 +--- a/src/text/fmt/xp/fp_TextRun.cpp ++++ b/src/text/fmt/xp/fp_TextRun.cpp +@@ -1442,7 +1442,7 @@ void fp_TextRun::_clearScreen(bool /* bFullLineHeightRect */) + + // + // Handle case where character extend behind the left side +- // like italic Times New Roman f ++ // like italic Liberation Serif f + // + fp_Line * thisLine = getLine(); + fp_Run * pPrev = getPrevRun(); +diff --git a/src/text/fmt/xp/fv_View.cpp b/src/text/fmt/xp/fv_View.cpp +index 38cf5cf..360f99d 100644 +--- a/src/text/fmt/xp/fv_View.cpp ++++ b/src/text/fmt/xp/fv_View.cpp +@@ -586,9 +586,9 @@ FV_View::FV_View(XAP_App * pApp, void* pParentData, FL_DocLayout* pLayout) + s += pCountry; + } + +- // do a fuzzy match for Times New Roman ++ // do a fuzzy match for Liberation Serif + const char * pszFamily = +- GR_Graphics::findNearestFont ("Times New Roman", ++ GR_Graphics::findNearestFont ("Liberation Serif", + "normal", "normal", + "normal", "normal", + "12pt", s.utf8_str()); +diff --git a/src/text/ptbl/xp/pp_Property.cpp b/src/text/ptbl/xp/pp_Property.cpp +index 2c9a27b..c191b38 100644 +--- a/src/text/ptbl/xp/pp_Property.cpp ++++ b/src/text/ptbl/xp/pp_Property.cpp +@@ -104,7 +104,7 @@ static PP_Property _props[] = + + { "field-color", "dcdcdc", true, NULL, PP_LEVEL_FIELD}, + { "field-font", "NULL", true, NULL, PP_LEVEL_FIELD}, +- { "font-family", "Times New Roman", true, NULL, PP_LEVEL_CHAR}, ++ { "font-family", "Liberation Serif", true, NULL, PP_LEVEL_CHAR}, + { "font-size", "12pt", true, NULL, PP_LEVEL_CHAR}, // MS word defaults to 10pt, but it just seems too small + { "font-stretch", "normal", true, NULL, PP_LEVEL_CHAR}, + { "font-style", "normal", true, NULL, PP_LEVEL_CHAR}, +diff --git a/src/text/ptbl/xp/pp_Revision.cpp b/src/text/ptbl/xp/pp_Revision.cpp +index 47a9976..ebfc7f5 100644 +--- a/src/text/ptbl/xp/pp_Revision.cpp ++++ b/src/text/ptbl/xp/pp_Revision.cpp +@@ -436,7 +436,7 @@ void PP_RevisionAttr::_init(const gchar *r) + return; + + // the string we are parsing looks like +- // "+1,-2,!3{font-family: Times New Roman}" ++ // "+1,-2,!3{font-family: Liberation Serif}" + + // first duplicate the string so we can play with it ... + char * s = (char*) g_strdup(r); +diff --git a/src/text/ptbl/xp/pp_Revision.h b/src/text/ptbl/xp/pp_Revision.h +index f093ef0..9f77e84 100644 +--- a/src/text/ptbl/xp/pp_Revision.h ++++ b/src/text/ptbl/xp/pp_Revision.h +@@ -116,7 +116,7 @@ class ABI_EXPORT PP_Revision: public PP_AttrProp + where n is a numerical id of the revision and props is regular + property string, for instance + +- font-family:Times New Roman ++ font-family:Liberation Serif + + revoval of property/attribute is indicated by setting to -/-, e.g., + +diff --git a/src/text/ptbl/xp/pt_PT_Styles.cpp b/src/text/ptbl/xp/pt_PT_Styles.cpp +index 3829f0d..c9f370c 100644 +--- a/src/text/ptbl/xp/pt_PT_Styles.cpp ++++ b/src/text/ptbl/xp/pt_PT_Styles.cpp +@@ -176,7 +176,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) + s += pCountry; + } + +- const char* pszFamily = XAP_App::findNearestFont("Times New Roman", ++ const char* pszFamily = XAP_App::findNearestFont("Liberation Serif", + "normal", "", + "normal", "", "12pt", + s.utf8_str()); +@@ -188,7 +188,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) + "text-indent:0in; text-position:normal; line-height:1.0; " + "color:000000; bgcolor:transparent; widows:2", pszFamily); + +- pszFamily = XAP_App::findNearestFont("Arial", "normal", "", ++ pszFamily = XAP_App::findNearestFont("Liberation Sans", "normal", "", + "normal", "", "12pt", s.utf8_str()); + + // used to set the dom-dir of the style here, but we do not want to do that. The +@@ -263,7 +263,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) + UT_String_sprintf(stTmp, list_fmt, "Arrowhead List","0", LIST_DEFAULT_INDENT, LIST_DEFAULT_INDENT_LABEL, "transparent", "%L", pszFamily, "NULL"); + _s("Arrowhead List",false, "P", "", "Current Settings", stTmp.c_str()); + +- // pszFamily is the nearest font to Arial found in the system ++ // pszFamily is the nearest font to Liberation Sans found in the system + UT_String_sprintf(stTmp, "tabstops:0.3in/L0; list-style:Numbered List; " + "start-value:1; margin-left:0.0in; text-indent:0.0in; " + "field-color:transparent; list-delim:%%L.; field-font:%s; " +@@ -274,7 +274,7 @@ bool pt_PieceTable::_loadBuiltinStyles(void) + _s("Numbered Heading 2",true,"P","Heading 2","Normal", stTmp.c_str()); + _s("Numbered Heading 3",true,"P","Heading 3","Normal", stTmp.c_str()); + +- // pszFamily is the nearest font to Arial found in the system ++ // pszFamily is the nearest font to Liberation Sans found in the system + + UT_String_sprintf(stTmp, list_fmt, "Numbered List", "1",LIST_DEFAULT_INDENT, LIST_DEFAULT_INDENT_LABEL, "transparent", "%L.", "NULL", "."); + +diff --git a/src/wp/ap/xp/ap_Dialog_Lists.cpp b/src/wp/ap/xp/ap_Dialog_Lists.cpp +index 5aa32cb..dfeb4c1 100644 +--- a/src/wp/ap/xp/ap_Dialog_Lists.cpp ++++ b/src/wp/ap/xp/ap_Dialog_Lists.cpp +@@ -1109,7 +1109,7 @@ void AP_Lists_preview::setData(const gchar * pszFont,float fAlign,float fIndent) + // + if(!pszFont || strcmp(pszFont,"NULL")== 0) + { +- m_pFont = m_gc->findFont("Times New Roman", ++ m_pFont = m_gc->findFont("Liberation Serif", + "normal", "", "normal", + "", "16pt", NULL); + } +diff --git a/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp b/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp +index ecfdfcb..db3a518 100644 +--- a/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp ++++ b/src/wp/ap/xp/ap_Dialog_PageNumbers.cpp +@@ -88,7 +88,7 @@ AP_Preview_PageNumbers::AP_Preview_PageNumbers (GR_Graphics * gc) + char fontString [10]; + sprintf(fontString, "%dpt", 8); + +- GR_Font * found = m_gc->findFont("Times New Roman", "normal", ++ GR_Font * found = m_gc->findFont("Liberation Serif", "normal", + "", "normal", "", fontString, + NULL); + +diff --git a/src/wp/ap/xp/ap_Preview_Annotation.cpp b/src/wp/ap/xp/ap_Preview_Annotation.cpp +index 5068315..91571e3 100644 +--- a/src/wp/ap/xp/ap_Preview_Annotation.cpp ++++ b/src/wp/ap/xp/ap_Preview_Annotation.cpp +@@ -95,7 +95,7 @@ void AP_Preview_Annotation::setSizeFromAnnotation(void) + pG = pView->getGraphics(); + + UT_return_if_fail(pG); +- GR_Font * pFont = pG->findFont("Times New Roman", "normal", ++ GR_Font * pFont = pG->findFont("Liberation Serif", "normal", + "normal", "normal", + "normal", "12pt", + NULL); +@@ -124,7 +124,7 @@ void AP_Preview_Annotation::draw(const UT_Rect *clip) + UT_RGBColor FGcolor(0,0,0); + UT_RGBColor BGcolor(m_clrBackground); + +- m_pFont = m_gc->findFont("Times New Roman", "normal", ++ m_pFont = m_gc->findFont("Liberation Serif", "normal", + "normal", "normal", + "normal", "12pt", + NULL); +diff --git a/src/wp/ap/xp/ap_Preview_Paragraph.cpp b/src/wp/ap/xp/ap_Preview_Paragraph.cpp +index fc4dc38..fba04f1 100644 +--- a/src/wp/ap/xp/ap_Preview_Paragraph.cpp ++++ b/src/wp/ap/xp/ap_Preview_Paragraph.cpp +@@ -540,7 +540,7 @@ void AP_Preview_Paragraph::draw(const UT_Rect *clip) + bool AP_Preview_Paragraph::_loadDrawFont(const char *name) + { + // we draw at 7 points in this preview +- GR_Font * font = m_gc->findFont(name ? name : "Times New Roman", ++ GR_Font * font = m_gc->findFont(name ? name : "Liberation Serif", + "normal", "", "normal", + "", "7pt", + NULL); // might need to get the real lang +diff --git a/src/wp/impexp/xp/ie_imp_MsWord_97.cpp b/src/wp/impexp/xp/ie_imp_MsWord_97.cpp +index 4673f80..d194004 100644 +--- a/src/wp/impexp/xp/ie_imp_MsWord_97.cpp ++++ b/src/wp/impexp/xp/ie_imp_MsWord_97.cpp +@@ -628,10 +628,10 @@ s_fieldFontForListStyle (MSWordListIdType id) + return "NULL"; + + case WLNF_UPPER_LETTER: // upper letter +- return "Times New Roman"; ++ return "Liberation Serif"; + + case WLNF_LOWER_LETTER: // lower letter +- return "Times New Roman"; ++ return "Liberation Serif"; + + case WLNF_BULLETS: // bullet list + UT_DEBUGMSG(("Fieldfont set to symbol \n")); +@@ -639,11 +639,11 @@ s_fieldFontForListStyle (MSWordListIdType id) + + case WLNF_EUROPEAN_ARABIC: + case WLNF_ORDINAL: // ordinal +- return "Times New Roman"; ++ return "Liberation Serif"; + + default: +- UT_DEBUGMSG(("unknown list type %d field-font set to Times New Roman \n",id)); +- return "Times New Roman"; ++ UT_DEBUGMSG(("unknown list type %d field-font set to Liberation Serif \n",id)); ++ return "Liberation Serif"; + } + } + +@@ -5250,7 +5250,7 @@ void IE_Imp_MsWord_97::_generateCharProps(UT_String &s, const CHP * achp, wvPars + if(fname) + s += fname; + else +- s += "Times New Roman"; ++ s += "Liberation Serif"; + FREEP(fname); + } + +diff --git a/src/wp/impexp/xp/ie_imp_RTF.cpp b/src/wp/impexp/xp/ie_imp_RTF.cpp +index 97a6f29..3177c9c 100644 +--- a/src/wp/impexp/xp/ie_imp_RTF.cpp ++++ b/src/wp/impexp/xp/ie_imp_RTF.cpp +@@ -6313,11 +6313,11 @@ bool IE_Imp_RTF::buildCharacterProps(std::string & propBuffer) + // {\f83\fnil\fcharset0\fprq0{\*\panose 00000000000000000000} ;} + // note the empty slot after the panose entry + // later it gets referenced: {\b\f83\fs24\cf1\cgrid0 Malte Cornils +- // this turns those into "Times New Roman" for now, as a hack to keep from crashing ++ // this turns those into "Liberation Serif" for now, as a hack to keep from crashing + if ( pFont->m_pFontName != NULL ) + propBuffer += pFont->m_pFontName; + else +- propBuffer += "Times New Roman"; ++ propBuffer += "Liberation Serif"; + } + if (m_currentRTFState.m_charProps.m_hasColour) + { +@@ -9034,7 +9034,7 @@ bool IE_Imp_RTF::ReadFontTable() + { + // NB: Ignores whitespace until we've seen non-whitespace data. + // This means we pick up the spaces in font names like +- // "Times New Roman", but it also means that any font names ++ // "Liberation Serif", but it also means that any font names + // that genuinely start with spaces will have them discarded. + // This is hopefully not a problem. + tokenType = NextToken(keyword, ¶meter,& paramUsed, +@@ -9102,11 +9102,11 @@ bool IE_Imp_RTF::ReadFontTable() + // It's possible that the font name will be empty. This might happend + // because the font table didn't specify a name, or because the \ansicpgN + // command was invalid, in which case the mbtowc convertion might fail. +- // In these cases, substitute "Times New Roman". ++ // In these cases, substitute "Liberation Serif". + if (!sFontNamesAndPanose[SFontTableState::MainFontName].length()) + { +- UT_DEBUGMSG(("RTF: Font Index %d: Substituting \"Times New Roman\" for missing font name.\n", fontIndex)); +- sFontNamesAndPanose[SFontTableState::MainFontName] = "Times New Roman"; ++ UT_DEBUGMSG(("RTF: Font Index %d: Substituting \"Liberation Serif\" for missing font name.\n", fontIndex)); ++ sFontNamesAndPanose[SFontTableState::MainFontName] = "Liberation Serif"; + } + // Validate and post-process the Panose string. + if (!PostProcessAndValidatePanose(sFontNamesAndPanose[SFontTableState::Panose])) +diff --git a/user/wp/readme.abw b/user/wp/readme.abw +index 7bf2cdc..48e3bb6 100644 +--- a/user/wp/readme.abw ++++ b/user/wp/readme.abw +@@ -16,9 +16,9 @@ + + + +- +- +- ++ ++ ++ + + +
+diff --git a/user/wp/templates/Business-Letter.awt b/user/wp/templates/Business-Letter.awt +index 524558a..9448277 100644 +--- a/user/wp/templates/Business-Letter.awt ++++ b/user/wp/templates/Business-Letter.awt +@@ -19,14 +19,14 @@ + + + +- +- +- ++ ++ ++ + +- +- +- +- ++ ++ ++ ++ + + +
+diff --git a/user/wp/templates/Business-Report.awt b/user/wp/templates/Business-Report.awt +index c2e85c9..f2f5b16 100644 +--- a/user/wp/templates/Business-Report.awt ++++ b/user/wp/templates/Business-Report.awt +@@ -21,7 +21,7 @@ +

+

+

Title

+-

Subtitle

++

Subtitle

+

+

Release 1.0

+

+@@ -99,11 +99,11 @@ +
+

+

+-

Heading 1

++

Heading 1

+

text

+-

Heading 2

++

Heading 2

+

text

+-

Heading 3

++

Heading 3

+

+
+
+diff --git a/user/wp/templates/Employee-Directory.awt b/user/wp/templates/Employee-Directory.awt +index c4f7ebc..b0faa54 100644 +--- a/user/wp/templates/Employee-Directory.awt ++++ b/user/wp/templates/Employee-Directory.awt +@@ -10,9 +10,9 @@ + + +
+-

Company Name

+-

Directory of Employees

+-

++

Company Name

++

Directory of Employees

++

+

+

+

+@@ -36,59 +36,59 @@ +

Normal Style (123) 555-1212

+

+

+-

Department Name

+-

The big boss upstairs (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

+-

+-

Department Name

+-

The big boss upstairs (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

+-

+-

Department Name

+-

The big boss upstairs (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

+-

+-

Department Name

+-

The big boss upstairs (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

Last Name, First Name (123) 555-1212

+-

+-

+-

General Numbers

+-

Front Desk (123) 555-1212

+-

Security (123) 555-1212

+-

Building Management (123) 555-1212

+-

Other General Numbers (123) 555-1212

++

Department Name

++

The big boss upstairs (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

++

++

Department Name

++

The big boss upstairs (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

++

++

Department Name

++

The big boss upstairs (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

++

++

Department Name

++

The big boss upstairs (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

Last Name, First Name (123) 555-1212

++

++

++

General Numbers

++

Front Desk (123) 555-1212

++

Security (123) 555-1212

++

Building Management (123) 555-1212

++

Other General Numbers (123) 555-1212

+
+ + +diff --git a/user/wp/templates/Fax-Coversheet.awt b/user/wp/templates/Fax-Coversheet.awt +index acc7ba8..cc5779c 100644 +--- a/user/wp/templates/Fax-Coversheet.awt ++++ b/user/wp/templates/Fax-Coversheet.awt +@@ -10,26 +10,26 @@ + + +
+-

Company Name

+-

Company Address Line 1

+-

Company Address Line 2

+-

Company Address Line 3

+-

+-

FAX

+-

TO: From:

+-

Fax: Pages:

+-

Phone: Date:

++

Company Name

++

Company Address Line 1

++

Company Address Line 2

++

Company Address Line 3

++

++

FAX

++

TO: From:

++

Fax: Pages:

++

Phone: Date:

+

+

Re: CC:

+

+

+-

 Urgent  For Review  Please Comment  Please Reply  Please Recycle

+-

++

 Urgent  For Review  Please Comment  Please Reply  Please Recycle

++

+

+

+-

Comments

++

Comments

+

+-

This text should the replaced with your comments about the fax and any additional comment to the receiver.

++

This text should the replaced with your comments about the fax and any additional comment to the receiver.

+
+ + +diff --git a/user/wp/templates/Friendly-Letter.awt b/user/wp/templates/Friendly-Letter.awt +index 5a25db1..2e687fc 100644 +--- a/user/wp/templates/Friendly-Letter.awt ++++ b/user/wp/templates/Friendly-Letter.awt +@@ -16,12 +16,12 @@ + + + +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ + + +
+diff --git a/user/wp/templates/Memo.awt b/user/wp/templates/Memo.awt +index 79b5538..560a4cd 100644 +--- a/user/wp/templates/Memo.awt ++++ b/user/wp/templates/Memo.awt +@@ -14,10 +14,10 @@ + Fri Mar 12 21:07:56 2004 + + +- +- +- +- ++ ++ ++ ++ + + + +@@ -59,10 +59,10 @@ +

The box that this text is in uses AbiWord's table support to draw the border. You can either allow the border to fit to the size of the text as it is now, or press <ENTER> repeatedly at the end of your memo to expand the border to fill the rest of the page.

+

Don't forget to change the header and footer before printing! If you wish to save this memo for later and ensure that the date above is saved as today's (not automatically updating), select it and type the desired date text over it.

+

The styles used in this document for correct conversion, import, export, and HTML are:

+-

Heading 1 for Company Name

+-

Heading 2 for Slogan

+-

Heading 3 for "Date:", "To:", etc.

+-

Normal for body text

++

Heading 1 for Company Name

++

Heading 2 for Slogan

++

Heading 3 for "Date:", "To:", etc.

++

Normal for body text

+ + +

+diff --git a/user/wp/templates/Press-Release.awt b/user/wp/templates/Press-Release.awt +index 708bce7..4d8bac1 100644 +--- a/user/wp/templates/Press-Release.awt ++++ b/user/wp/templates/Press-Release.awt +@@ -16,19 +16,19 @@ + + + +- +- +- +- ++ ++ ++ ++ + + + +- ++ + + + + +- ++ + + + +@@ -36,19 +36,19 @@ + + + +- +- +- ++ ++ ++ + + + + +- +- +- ++ ++ ++ + + +- ++ + + + +@@ -77,7 +77,7 @@ +

+ + +-

FOR IMMEDIATE RELEASE

++

FOR IMMEDIATE RELEASE

+
+ +

+diff --git a/user/wp/templates/Resume.awt b/user/wp/templates/Resume.awt +index 1e61cdd..8eda0b7 100644 +--- a/user/wp/templates/Resume.awt ++++ b/user/wp/templates/Resume.awt +@@ -14,11 +14,11 @@ + Fri Mar 12 22:08:25 2004 + + +- +- +- +- +- ++ ++ ++ ++ ++ + + +
+diff --git a/user/wp/templates/normal.awt b/user/wp/templates/normal.awt +index 4c83f82..e7fcb00 100644 +--- a/user/wp/templates/normal.awt ++++ b/user/wp/templates/normal.awt +@@ -9,7 +9,7 @@ + + + +- ++ + + + +diff --git a/user/wp/templates/normal.awt-am_ET b/user/wp/templates/normal.awt-am_ET +index cb1a8d4..c7b7707 100644 +--- a/user/wp/templates/normal.awt-am_ET ++++ b/user/wp/templates/normal.awt-am_ET +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ar b/user/wp/templates/normal.awt-ar +index 9aa7a5c..0cd8882 100644 +--- a/user/wp/templates/normal.awt-ar ++++ b/user/wp/templates/normal.awt-ar +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ar_EG b/user/wp/templates/normal.awt-ar_EG +index 5fcf2d1..b920dcc 100644 +--- a/user/wp/templates/normal.awt-ar_EG ++++ b/user/wp/templates/normal.awt-ar_EG +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ar_SA b/user/wp/templates/normal.awt-ar_SA +index 09c1bbb..12ad0d6 100644 +--- a/user/wp/templates/normal.awt-ar_SA ++++ b/user/wp/templates/normal.awt-ar_SA +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-bg_BG b/user/wp/templates/normal.awt-bg_BG +index df6f2bf..d789046 100644 +--- a/user/wp/templates/normal.awt-bg_BG ++++ b/user/wp/templates/normal.awt-bg_BG +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ca_ES b/user/wp/templates/normal.awt-ca_ES +index 0a337a2..69fecfd 100644 +--- a/user/wp/templates/normal.awt-ca_ES ++++ b/user/wp/templates/normal.awt-ca_ES +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-cs_CZ b/user/wp/templates/normal.awt-cs_CZ +index 3e5e87e..d2cb937 100644 +--- a/user/wp/templates/normal.awt-cs_CZ ++++ b/user/wp/templates/normal.awt-cs_CZ +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-da_DK b/user/wp/templates/normal.awt-da_DK +index 6ce3d83..f8706cb 100644 +--- a/user/wp/templates/normal.awt-da_DK ++++ b/user/wp/templates/normal.awt-da_DK +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-de b/user/wp/templates/normal.awt-de +index 8faa619..c0c18f7 100644 +--- a/user/wp/templates/normal.awt-de ++++ b/user/wp/templates/normal.awt-de +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-de_AT b/user/wp/templates/normal.awt-de_AT +index 9abfde1..d0ec20e 100644 +--- a/user/wp/templates/normal.awt-de_AT ++++ b/user/wp/templates/normal.awt-de_AT +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-de_CH b/user/wp/templates/normal.awt-de_CH +index 0aa531a..24b0f8d 100644 +--- a/user/wp/templates/normal.awt-de_CH ++++ b/user/wp/templates/normal.awt-de_CH +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-de_DE b/user/wp/templates/normal.awt-de_DE +index 0190408..6372e78 100644 +--- a/user/wp/templates/normal.awt-de_DE ++++ b/user/wp/templates/normal.awt-de_DE +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-div_MV b/user/wp/templates/normal.awt-div_MV +index 9a8c50e..88270ce 100644 +--- a/user/wp/templates/normal.awt-div_MV ++++ b/user/wp/templates/normal.awt-div_MV +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-el_GR b/user/wp/templates/normal.awt-el_GR +index e1c8de5..1db03a4 100644 +--- a/user/wp/templates/normal.awt-el_GR ++++ b/user/wp/templates/normal.awt-el_GR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_AU b/user/wp/templates/normal.awt-en_AU +index c7fa4c9..0e29beb 100644 +--- a/user/wp/templates/normal.awt-en_AU ++++ b/user/wp/templates/normal.awt-en_AU +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_CA b/user/wp/templates/normal.awt-en_CA +index 3729a04..cff6807 100644 +--- a/user/wp/templates/normal.awt-en_CA ++++ b/user/wp/templates/normal.awt-en_CA +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_GB b/user/wp/templates/normal.awt-en_GB +index 14b8bcf..55364cd 100644 +--- a/user/wp/templates/normal.awt-en_GB ++++ b/user/wp/templates/normal.awt-en_GB +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_IE b/user/wp/templates/normal.awt-en_IE +index 95e3fc7..7b0c3a5 100644 +--- a/user/wp/templates/normal.awt-en_IE ++++ b/user/wp/templates/normal.awt-en_IE +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_NZ b/user/wp/templates/normal.awt-en_NZ +index 70016d2..0871e93 100644 +--- a/user/wp/templates/normal.awt-en_NZ ++++ b/user/wp/templates/normal.awt-en_NZ +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-en_ZA b/user/wp/templates/normal.awt-en_ZA +index ebe7ee3..c4f7795 100644 +--- a/user/wp/templates/normal.awt-en_ZA ++++ b/user/wp/templates/normal.awt-en_ZA +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-es b/user/wp/templates/normal.awt-es +index 12c611c..a2067e0 100644 +--- a/user/wp/templates/normal.awt-es ++++ b/user/wp/templates/normal.awt-es +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-es_AR b/user/wp/templates/normal.awt-es_AR +index 87130b5..fc8ac38 100644 +--- a/user/wp/templates/normal.awt-es_AR ++++ b/user/wp/templates/normal.awt-es_AR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-es_ES b/user/wp/templates/normal.awt-es_ES +index 87130b5..fc8ac38 100644 +--- a/user/wp/templates/normal.awt-es_ES ++++ b/user/wp/templates/normal.awt-es_ES +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-es_IR b/user/wp/templates/normal.awt-es_IR +index 4d3e321..33c7144 100644 +--- a/user/wp/templates/normal.awt-es_IR ++++ b/user/wp/templates/normal.awt-es_IR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-es_MX b/user/wp/templates/normal.awt-es_MX +index 52c3411..2522a82 100644 +--- a/user/wp/templates/normal.awt-es_MX ++++ b/user/wp/templates/normal.awt-es_MX +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fa_IR b/user/wp/templates/normal.awt-fa_IR +index db24783..a0f0bde 100644 +--- a/user/wp/templates/normal.awt-fa_IR ++++ b/user/wp/templates/normal.awt-fa_IR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fi_FI b/user/wp/templates/normal.awt-fi_FI +index 1471a71..b65fa66 100644 +--- a/user/wp/templates/normal.awt-fi_FI ++++ b/user/wp/templates/normal.awt-fi_FI +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fr b/user/wp/templates/normal.awt-fr +index 4e94583..67ae7c2 100644 +--- a/user/wp/templates/normal.awt-fr ++++ b/user/wp/templates/normal.awt-fr +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fr_BE b/user/wp/templates/normal.awt-fr_BE +index 8b310c4..d4b7723 100644 +--- a/user/wp/templates/normal.awt-fr_BE ++++ b/user/wp/templates/normal.awt-fr_BE +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fr_CA b/user/wp/templates/normal.awt-fr_CA +index e673aac..c3bb3fd 100644 +--- a/user/wp/templates/normal.awt-fr_CA ++++ b/user/wp/templates/normal.awt-fr_CA +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fr_CH b/user/wp/templates/normal.awt-fr_CH +index 1888a71..eb4b5de 100644 +--- a/user/wp/templates/normal.awt-fr_CH ++++ b/user/wp/templates/normal.awt-fr_CH +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-fr_FR b/user/wp/templates/normal.awt-fr_FR +index f877981..0f523f6 100644 +--- a/user/wp/templates/normal.awt-fr_FR ++++ b/user/wp/templates/normal.awt-fr_FR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-gl_ES b/user/wp/templates/normal.awt-gl_ES +index 7f4876b..006645e 100644 +--- a/user/wp/templates/normal.awt-gl_ES ++++ b/user/wp/templates/normal.awt-gl_ES +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-he b/user/wp/templates/normal.awt-he +index a3da00f..f1a238f 100644 +--- a/user/wp/templates/normal.awt-he ++++ b/user/wp/templates/normal.awt-he +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-he_IL b/user/wp/templates/normal.awt-he_IL +index 98d81eb..e78e16b 100644 +--- a/user/wp/templates/normal.awt-he_IL ++++ b/user/wp/templates/normal.awt-he_IL +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-hu_HU b/user/wp/templates/normal.awt-hu_HU +index d79154f..0dd6026 100644 +--- a/user/wp/templates/normal.awt-hu_HU ++++ b/user/wp/templates/normal.awt-hu_HU +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-it_IT b/user/wp/templates/normal.awt-it_IT +index a72f1d4..1121843 100644 +--- a/user/wp/templates/normal.awt-it_IT ++++ b/user/wp/templates/normal.awt-it_IT +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ja_JP b/user/wp/templates/normal.awt-ja_JP +index 4f379e1..351fdd6 100644 +--- a/user/wp/templates/normal.awt-ja_JP ++++ b/user/wp/templates/normal.awt-ja_JP +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-lt_LT b/user/wp/templates/normal.awt-lt_LT +index e9d6ec1..b66be4a 100644 +--- a/user/wp/templates/normal.awt-lt_LT ++++ b/user/wp/templates/normal.awt-lt_LT +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-nb_NO b/user/wp/templates/normal.awt-nb_NO +index 1b6398f..5cdf741 100644 +--- a/user/wp/templates/normal.awt-nb_NO ++++ b/user/wp/templates/normal.awt-nb_NO +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-nl_NL b/user/wp/templates/normal.awt-nl_NL +index 0f8b299..4be5de2 100644 +--- a/user/wp/templates/normal.awt-nl_NL ++++ b/user/wp/templates/normal.awt-nl_NL +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-nn_NO b/user/wp/templates/normal.awt-nn_NO +index 981d577..1a36ad3 100644 +--- a/user/wp/templates/normal.awt-nn_NO ++++ b/user/wp/templates/normal.awt-nn_NO +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-pl_PL b/user/wp/templates/normal.awt-pl_PL +index 0405d45..7f32223 100644 +--- a/user/wp/templates/normal.awt-pl_PL ++++ b/user/wp/templates/normal.awt-pl_PL +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ps b/user/wp/templates/normal.awt-ps +index 971e62f..e5e674f 100644 +--- a/user/wp/templates/normal.awt-ps ++++ b/user/wp/templates/normal.awt-ps +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-pt_BR b/user/wp/templates/normal.awt-pt_BR +index bdf4c09..4d85f5c 100644 +--- a/user/wp/templates/normal.awt-pt_BR ++++ b/user/wp/templates/normal.awt-pt_BR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-pt_PT b/user/wp/templates/normal.awt-pt_PT +index 7a44c3e..e1b766e 100644 +--- a/user/wp/templates/normal.awt-pt_PT ++++ b/user/wp/templates/normal.awt-pt_PT +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ru b/user/wp/templates/normal.awt-ru +index c34fd94..6e29dfd 100644 +--- a/user/wp/templates/normal.awt-ru ++++ b/user/wp/templates/normal.awt-ru +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ru_RU b/user/wp/templates/normal.awt-ru_RU +index b07198e..4f435ea 100644 +--- a/user/wp/templates/normal.awt-ru_RU ++++ b/user/wp/templates/normal.awt-ru_RU +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-sk_SK b/user/wp/templates/normal.awt-sk_SK +index d03a1a5..bb04b0e 100644 +--- a/user/wp/templates/normal.awt-sk_SK ++++ b/user/wp/templates/normal.awt-sk_SK +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-sl b/user/wp/templates/normal.awt-sl +index 2dfcf1a..e874715 100644 +--- a/user/wp/templates/normal.awt-sl ++++ b/user/wp/templates/normal.awt-sl +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-sv b/user/wp/templates/normal.awt-sv +index d0f5163..82aa982 100644 +--- a/user/wp/templates/normal.awt-sv ++++ b/user/wp/templates/normal.awt-sv +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-sv_SE b/user/wp/templates/normal.awt-sv_SE +index 932da12..55d9e8c 100644 +--- a/user/wp/templates/normal.awt-sv_SE ++++ b/user/wp/templates/normal.awt-sv_SE +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-syr b/user/wp/templates/normal.awt-syr +index 72b77ad..3bd9503 100644 +--- a/user/wp/templates/normal.awt-syr ++++ b/user/wp/templates/normal.awt-syr +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-tr b/user/wp/templates/normal.awt-tr +index 489bc0a..2497b35 100644 +--- a/user/wp/templates/normal.awt-tr ++++ b/user/wp/templates/normal.awt-tr +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-tr_TR b/user/wp/templates/normal.awt-tr_TR +index bf775c8..bfd3982 100644 +--- a/user/wp/templates/normal.awt-tr_TR ++++ b/user/wp/templates/normal.awt-tr_TR +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-uk_UA b/user/wp/templates/normal.awt-uk_UA +index 6c759ad..76cbd8c 100644 +--- a/user/wp/templates/normal.awt-uk_UA ++++ b/user/wp/templates/normal.awt-uk_UA +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-ur_PK b/user/wp/templates/normal.awt-ur_PK +index 00cc1c7..8fcaf67 100644 +--- a/user/wp/templates/normal.awt-ur_PK ++++ b/user/wp/templates/normal.awt-ur_PK +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-yi b/user/wp/templates/normal.awt-yi +index e25ac13..02ffba4 100644 +--- a/user/wp/templates/normal.awt-yi ++++ b/user/wp/templates/normal.awt-yi +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-zh_CN b/user/wp/templates/normal.awt-zh_CN +index d103911..3a949bc 100644 +--- a/user/wp/templates/normal.awt-zh_CN ++++ b/user/wp/templates/normal.awt-zh_CN +@@ -9,7 +9,7 @@ + + + +- ++ + + +
+diff --git a/user/wp/templates/normal.awt-zh_TW b/user/wp/templates/normal.awt-zh_TW +index 3570d5e..8a2cdd7 100644 +--- a/user/wp/templates/normal.awt-zh_TW ++++ b/user/wp/templates/normal.awt-zh_TW +@@ -9,7 +9,7 @@ + + + +- ++ + + +
-- cgit v1.2.3