diff --git a/talimatname/genel/a/abiword/abiword-3.0.0-librevenge.patch b/talimatname/genel/a/abiword/abiword-3.0.0-librevenge.patch new file mode 100644 index 000000000..9ff7aea24 --- /dev/null +++ b/talimatname/genel/a/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/talimatname/genel/a/abiword/abiword-3.0.1-libwps-0.4.patch b/talimatname/genel/a/abiword/abiword-3.0.1-libwps-0.4.patch new file mode 100644 index 000000000..3c041a63e --- /dev/null +++ b/talimatname/genel/a/abiword/abiword-3.0.1-libwps-0.4.patch @@ -0,0 +1,41 @@ +From 6fcb43935bab90d61858eb1bc0f150c843586c54 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Sat, 6 Jun 2015 21:48:02 +0200 +Subject: [PATCH] adapt to libwps 0.4 + +--- + plugin-configure.m4 | 2 +- + plugins/wordperfect/plugin.m4 | 2 +- + plugins/wordperfect/xp/ie_imp_WordPerfect.cpp | 4 +++- + 3 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/plugins/wordperfect/plugin.m4 b/plugins/wordperfect/plugin.m4 +index 0aadbaf..bc32d48 100644 +--- a/plugins/wordperfect/plugin.m4 ++++ b/plugins/wordperfect/plugin.m4 +@@ -1,6 +1,6 @@ + + wordperfect_pkgs="libwpd-0.10 $gsf_req" +-wordperfect_wps_pkgs='libwps-0.3' ++wordperfect_wps_pkgs='libwps-0.4' + wordperfect_deps="no" + + WORDPERFECT_CFLAGS= +diff --git a/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp b/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp +index bd19971..3e69f79 100644 +--- a/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp ++++ b/plugins/wordperfect/xp/ie_imp_WordPerfect.cpp +@@ -1389,7 +1389,9 @@ UT_Confidence_t IE_Imp_MSWorks_Sniffer::recognizeContents (GsfInput * input) + AbiWordperfectInputStream gsfInput(input); + + libwps::WPSKind kind; +- libwps::WPSConfidence confidence = libwps::WPSDocument::isFileFormatSupported(&gsfInput, kind); ++ libwps::WPSCreator creator; ++ bool needsEncoding = false; ++ libwps::WPSConfidence confidence = libwps::WPSDocument::isFileFormatSupported(&gsfInput, kind, creator, needsEncoding); + + if (kind != libwps::WPS_TEXT) + confidence = libwps::WPS_CONFIDENCE_NONE; +-- +2.4.2 + diff --git a/talimatname/genel/a/abiword/abiword.kur-kos b/talimatname/genel/a/abiword/abiword.kur-kos index 5dedec1b8..9419762f7 100644 --- a/talimatname/genel/a/abiword/abiword.kur-kos +++ b/talimatname/genel/a/abiword/abiword.kur-kos @@ -1 +1 @@ -/usr/bin/update-desktop-database +update-desktop-database diff --git a/talimatname/genel/a/abiword/abiword.okubeni b/talimatname/genel/a/abiword/abiword.okubeni deleted file mode 100644 index 27aab1c67..000000000 --- a/talimatname/genel/a/abiword/abiword.okubeni +++ /dev/null @@ -1,17 +0,0 @@ -1. Fichier de configuration: - -~/.AbiSuite/templates/normal.awt - -2. Choix du bon modèle: - -Choisissez le bon modèle adapté à votre langue et votre locale dans la liste qu'affiche la commande suivante: - -ls /usr/share/abiword-2.9/templates - -Créez le dossier ~/.AbiSuite/templates et copiez-y le normal.awt que vous souhaitez: - -install -v -m750 -d ~/.AbiSuite/templates && -install -v -m640 /usr/share/abiword-2.9/templates/normal.awt- ~/.AbiSuite/templates/normal.awt - -Il est recommandé d'utiliser une police de caractères qui couvre une plus grande couverture comme dejavu-fonts. - diff --git a/talimatname/genel/a/abiword/aiksaurus-plugin.m4 b/talimatname/genel/a/abiword/aiksaurus-plugin.m4 new file mode 100644 index 000000000..c70a00383 --- /dev/null +++ b/talimatname/genel/a/abiword/aiksaurus-plugin.m4 @@ -0,0 +1,46 @@ + +aiksaurus_pkgs="aiksaurus-1.0" +aiksaurus_gtk_pkgs="aiksaurusgtk3-1.0" +aiksaurus_deps="no" + +if test "$enable_aiksaurus" != ""; then + +PKG_CHECK_EXISTS([ $aiksaurus_pkgs ], +[ + aiksaurus_deps="yes" +], [ + test "$enable_aiksaurus" = "auto" && AC_MSG_WARN([aiksaurus plugin: dependencies not satisfied - $aiksaurus_pkgs]) +]) + +fi + +if test "$enable_aiksaurus" = "yes" || \ + test "$aiksaurus_deps" = "yes"; then + +use_builtin_aiksaurus_gtk="no" +if test "$TOOLKIT" = "gtk"; then +PKG_CHECK_EXISTS([ $aiksaurus_gtk_pkgs ], +[ + aiksaurus_pkgs="$aiksaurus_pkgs $aiksaurus_gtk_pkgs" +], [use_builtin_aiksaurus_gtk="yes"]) +fi + +if test "$enable_aiksaurus_builtin" = "yes"; then +AC_MSG_ERROR([aiksaurus plugin: static linking not supported]) +fi + +PKG_CHECK_MODULES(AIKSAURUS,[ $aiksaurus_pkgs ]) + + +test "$enable_aiksaurus" = "auto" && PLUGINS="$PLUGINS aiksaurus" + +AIKSAURUS_CFLAGS="$AIKSAURUS_CFLAGS "'${PLUGIN_CFLAGS}' +AIKSAURUS_LIBS="$AIKSAURUS_LIBS "'${PLUGIN_LIBS}' + +fi + +AM_CONDITIONAL([WITH_BUILTIN_AIKSAURUS_GTK],[ test "x$use_builtin_aiksaurus_gtk" = "xyes" ]) + +AC_SUBST([AIKSAURUS_CFLAGS]) +AC_SUBST([AIKSAURUS_LIBS]) + diff --git a/talimatname/genel/a/abiword/bug13815.patch b/talimatname/genel/a/abiword/bug13815.patch new file mode 100644 index 000000000..88a5ca4c3 --- /dev/null +++ b/talimatname/genel/a/abiword/bug13815.patch @@ -0,0 +1,49 @@ +commit 2ee38d1881aeea27bb49acc450631d813d1f28ba +Author: Hubert Figuière +Date: Wed Dec 7 09:44:01 2016 -0500 + + Bug 13815 - draw event should return TRUE + + This fix the black drawing regression witj Gtk3.22 + +diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.cpp b/src/af/xap/gtk/xap_UnixFrameImpl.cpp +index 780000e..10f8e00 100644 +--- a/src/af/xap/gtk/xap_UnixFrameImpl.cpp ++++ b/src/af/xap/gtk/xap_UnixFrameImpl.cpp +@@ -1208,9 +1208,9 @@ gint XAP_UnixFrameImpl::_fe::delete_event(GtkWidget * w, GdkEvent * /*event*/, g + } + + #if GTK_CHECK_VERSION(3,0,0) +-gint XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr) ++gboolean XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr) + #else +-gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) ++gboolean XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) + #endif + { + XAP_UnixFrameImpl * pUnixFrameImpl = static_cast(g_object_get_data(G_OBJECT(w), "user_data")); +@@ -1243,7 +1243,7 @@ gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent) + pView->draw(&rClip); + #endif + } +- return FALSE; ++ return TRUE; + } + + static bool bScrollWait = false; +diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.h b/src/af/xap/gtk/xap_UnixFrameImpl.h +index 30ee5d8..a0ff57f 100644 +--- a/src/af/xap/gtk/xap_UnixFrameImpl.h ++++ b/src/af/xap/gtk/xap_UnixFrameImpl.h +@@ -152,9 +152,9 @@ protected: + static gint key_release_event(GtkWidget* w, GdkEventKey* e); + static gint delete_event(GtkWidget * w, GdkEvent * /*event*/, gpointer /*data*/); + #if GTK_CHECK_VERSION(3,0,0) +- static gint draw(GtkWidget * w, cairo_t * cr); ++ static gboolean draw(GtkWidget * w, cairo_t * cr); + #else +- static gint expose(GtkWidget * w, GdkEventExpose* pExposeEvent); ++ static gboolean expose(GtkWidget * w, GdkEventExpose* pExposeEvent); + #endif + static gint do_ZoomUpdate( gpointer /* xap_UnixFrame * */ p); + static void vScrollChanged(GtkAdjustment * w, gpointer /*data*/); diff --git a/talimatname/genel/a/abiword/command-plugin.m4 b/talimatname/genel/a/abiword/command-plugin.m4 new file mode 100644 index 000000000..dd010adf6 --- /dev/null +++ b/talimatname/genel/a/abiword/command-plugin.m4 @@ -0,0 +1,47 @@ +command_deps="no" + +if test "$enable_command" != ""; then + if test "$TOOLKIT" != "gtk"; then + command_deps="no" + AC_MSG_WARN([command plugin: only supported on UNIX/gtk platforms]) + else + # stolen from the original plugin.m4 in abiword-plugins + AC_CHECK_HEADER(readline/readline.h,[ + AC_CHECK_HEADER(readline/history.h,[ + AC_CHECK_LIB(readline,readline,[ + command_deps="yes" + ],[ AC_CHECK_LIB(readline,rl_initialize,[ + command_deps="yes" + + ],,) + ],) + ]) + ]) + fi +fi + +if test "$enable_command" = "yes" || \ + test "$command_deps" = "yes"; then + +if test "$enable_command_builtin" = "yes"; then +AC_MSG_ERROR([command plugin: static linking not supported]) +fi + +AC_MSG_CHECKING([command plugin: for readline and friends]) +if test "$command_deps" != "yes"; then + AC_MSG_ERROR([no]) +else + AC_MSG_RESULT([yes]) + COMMAND_LIBS="-lreadline -lhistory $COMMAND_LIBS" +fi + +test "$enable_command" = "auto" && PLUGINS="$PLUGINS command" + +COMMAND_CFLAGS="$COMMAND_CFLAGS "'${PLUGIN_CFLAGS}' +COMMAND_LIBS="$COMMAND_LIBS "'${PLUGIN_LIBS}' + +fi + +AC_SUBST([COMMAND_CFLAGS]) +AC_SUBST([COMMAND_LIBS]) + diff --git a/talimatname/genel/a/abiword/enchant-2.1.patch b/talimatname/genel/a/abiword/enchant-2.1.patch new file mode 100644 index 000000000..010aac100 --- /dev/null +++ b/talimatname/genel/a/abiword/enchant-2.1.patch @@ -0,0 +1,29 @@ +--- abiword-3.0.2/src/af/xap/xp/enchant_checker.cpp.orig 2013-04-07 13:53:03.000000000 +0000 ++++ abiword-3.0.2/src/af/xap/xp/enchant_checker.cpp 2017-11-19 22:54:41.236180298 +0000 +@@ -127,7 +127,7 @@ + pvSugg->addItem (ucszSugg); + } + +- enchant_dict_free_suggestions (m_dict, suggestions); ++ enchant_dict_free_string_list (m_dict, suggestions); + } + + return pvSugg; +@@ -139,7 +139,7 @@ + + if (word && len) { + UT_UTF8String utf8 (word, len); +- enchant_dict_add_to_personal (m_dict, utf8.utf8_str(), utf8.byteLength()); ++ enchant_dict_add (m_dict, utf8.utf8_str(), utf8.byteLength()); + return true; + } + return false; +@@ -150,7 +150,7 @@ + UT_return_val_if_fail (m_dict, false); + + UT_UTF8String ignore (toCorrect, toCorrectLen); +- return enchant_dict_is_in_session (m_dict, ignore.utf8_str(), ignore.byteLength()) != 0; ++ return enchant_dict_is_added (m_dict, ignore.utf8_str(), ignore.byteLength()) != 0; + } + + void EnchantChecker::ignoreWord (const UT_UCSChar *toCorrect, size_t toCorrectLen) diff --git a/talimatname/genel/a/abiword/libical-deprecated.patch b/talimatname/genel/a/abiword/libical-deprecated.patch new file mode 100644 index 000000000..9ca15bee1 --- /dev/null +++ b/talimatname/genel/a/abiword/libical-deprecated.patch @@ -0,0 +1,13 @@ +--- abiword-3.0.2/src/text/ptbl/xp/pd_DocumentRDF.cpp.orig 2015-04-02 03:09:20.000000000 +0000 ++++ abiword-3.0.2/src/text/ptbl/xp/pd_DocumentRDF.cpp 2017-11-19 22:57:49.533304878 +0000 +@@ -2269,8 +2269,8 @@ + icalcomponent_set_uid( c, m_uid.c_str() ); + icalcomponent_set_location( c, m_location.c_str() ); + icalcomponent_set_description( c, m_desc.c_str() ); +- icalcomponent_set_dtstart( c, icaltime_from_timet( m_dtstart, 0 ) ); +- icalcomponent_set_dtend( c, icaltime_from_timet( m_dtend, 0 ) ); ++ icalcomponent_set_dtstart( c, icaltime_from_timet_with_zone( m_dtstart, 0, 0 ) ); ++ icalcomponent_set_dtend( c, icaltime_from_timet_with_zone( m_dtend, 0, 0 ) ); + + char* data = icalcomponent_as_ical_string( c ); + std::ofstream oss( filename.c_str() ); diff --git a/talimatname/genel/a/abiword/python-override.patch b/talimatname/genel/a/abiword/python-override.patch new file mode 100644 index 000000000..4cb58ad39 --- /dev/null +++ b/talimatname/genel/a/abiword/python-override.patch @@ -0,0 +1,31 @@ +From 51787d61993cb3981c18e4cf174fc229734fba1e Mon Sep 17 00:00:00 2001 +From: Jean Brefort +Date: Sun, 6 Dec 2015 11:04:10 +0000 +Subject: [PATCH] Update python override code. Fixes #13745 and #13746, thanks + to David Gutteridge. + +git-svn-id: svn+ssh://svn.abisource.com/svnroot/abiword/trunk@35171 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6 +--- + src/gi-overrides/Abi.py | 2 ++ + src/gi-overrides/Makefile.am | 2 +- + 2 files changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/gi-overrides/Abi.py b/src/gi-overrides/Abi.py +index 666fd61..e3b61b9 100644 +--- a/src/gi-overrides/Abi.py ++++ b/src/gi-overrides/Abi.py +@@ -1,4 +1,6 @@ + import sys ++import gi ++gi.require_version('Gtk', '3.0') + from gi.repository import Gtk + from ..overrides import override + from ..importer import modules +diff --git a/src/gi-overrides/Makefile.am b/src/gi-overrides/Makefile.am +index 7fe3913..60f306d 100644 +--- a/src/gi-overrides/Makefile.am ++++ b/src/gi-overrides/Makefile.am +@@ -1,2 +1,2 @@ +-overridesdir = `python -c "import gi; print gi._overridesdir"` ++overridesdir = `python -c "import gi; print(gi._overridesdir)"` + overrides_PYTHON = Abi.py diff --git a/talimatname/genel/a/abiword/talimat b/talimatname/genel/a/abiword/talimat index a34476504..405620401 100644 --- a/talimatname/genel/a/abiword/talimat +++ b/talimatname/genel/a/abiword/talimat @@ -1,23 +1,74 @@ -# Tanım: Microsoft® Word benzeri basit bir kelime işlemci yazılımı. +# Tanım: Microsoft Word benzeri basit bir kelime işlemci yazılımı. # URL: http://www.abisource.com/ # Paketçi: milisarge -# Gerekler: boost cairo aspell fribidi enchant wv librsvg gtk2 redland rasqal desktop-file-utils gtk3 +# Gerekler: boost cairo aspell fribidi enchant wv icu librsvg gtk2 redland rasqal desktop-file-utils gtk3 goffice # Grup: ofis isim=abiword -surum=3.0.1 -devir=3 -kaynak=(http://www.abisource.com/downloads/$isim/$surum/source/$isim-$surum.tar.gz) +surum=3.0.2 +devir=1 +kaynak=(http://www.abisource.com/downloads/$isim/$surum/source/$isim-$surum.tar.gz + abiword-3.0.0-librevenge.patch + abiword-3.0.1-libwps-0.4.patch + aiksaurus-plugin.m4 + command-plugin.m4 + python-override.patch + bug13815.patch + enchant-2.1.patch + libical-deprecated.patch) derle() { -cd $isim-$surum -./configure --prefix=/usr -make -make DESTDIR=$PKG install + cd $isim-$surum + # fix build with librevenge based import filters + patch -Np0 -i ../abiword-3.0.0-librevenge.patch - # Başlatıcı - sed -i 's/^Exec=/Name[tr]=AbiWord \ - GenericName[tr]=Kelime İşlemci \ - Comment[tr]=Microsoft® Word benzeri basit bir kelime işlemci yazılımı.\ - &/' $PKG/usr/share/applications/$isim.desktop + # Fix libwpd 0.4 detection + patch -Np1 -i ../abiword-3.0.1-libwps-0.4.patch + + # Fix python override code to work with Python 3.x + patch -Np1 -i ../python-override.patch + + # Fix black on black (FS#51667) + # http://bugzilla.abisource.com/show_bug.cgi?id=13815 + patch -Np1 -i ../bug13815.patch + + # Replace deprecated enchant functions + patch -Np1 -i ../enchant-2.1.patch + + # Replace deprecated libical functions + patch -Np1 -i ../libical-deprecated.patch + + # Install missing m4 file + install -m644 ../aiksaurus-plugin.m4 plugins/aiksaurus/plugin.m4 + install -m644 ../command-plugin.m4 plugins/command/plugin.m4 + + # Generate m4 file for configure + find plugins -name plugin.m4 | xargs cat > plugin-configure.m4 + + # enchant-2 naming change + sed -i 's/enchant >=/enchant-2 >=/' configure.ac + + libtoolize --force + autoreconf -fi + ./configure --prefix=/usr \ + --enable-shared \ + --disable-static \ + --enable-clipart \ + --enable-templates \ + --enable-plugins \ + --enable-introspection + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make + make + make DESTDIR=$PKG install + + # Başlatıcı + sed -i 's/^Exec=/Name[tr]=AbiWord \ + GenericName[tr]=Kelime İşlemci \ + Comment[tr]=Microsoft Word benzeri basit bir kelime işlemci yazılımı.\ + &/' $PKG/usr/share/applications/$isim.desktop + + cd src/gi-overrides + sed -i 's/python -c/python2 -c/' Makefile + make DESTDIR="$PKG" PYTHON=python2 install }