Author: fschmid
Date: Thu May  5 09:59:58 2016
New Revision: 21282

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=21282
Log:
Fixed Bug #14010: ODT Importer Append completely overwrites text frame

Modified:
    trunk/Scribus/scribus/gtgettext.cpp
    trunk/Scribus/scribus/plugins/gettext/docxim/docxim.cpp
    trunk/Scribus/scribus/plugins/gettext/docxim/docxim.h
    trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.cpp
    trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.h
    trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.cpp
    trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.h
    trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.cpp
    trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.h
    trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.cpp
    trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.h

Modified: trunk/Scribus/scribus/gtgettext.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/gtgettext.cpp
==============================================================================
--- trunk/Scribus/scribus/gtgettext.cpp (original)
+++ trunk/Scribus/scribus/gtgettext.cpp Thu May  5 09:59:58 2016
@@ -223,7 +223,7 @@
        // Pointer for the loaded plugin.
        void* gtplugin;
        // Type definition for GetText pointer in the function in question.
-       typedef void (*gt2ptr)(QString filename, QString encoding, bool 
textOnly, bool prefix, PageItem *textframe);
+       typedef void (*gt2ptr)(QString filename, QString encoding, bool 
textOnly, bool prefix, bool append, PageItem *textframe);
        // Type definition for GetText pointer in the function in question.
        typedef void (*sdem)(QString filename, QString encoding, bool textOnly, 
gtWriter *writer);
        // The point to the above.
@@ -246,7 +246,7 @@
                if (!append)
                        importItem->itemText.clear();
                // Execute the importer's "GetText2" method.
-               (*fp_GetText2)(filePath, encoding, textOnly, prefix, 
importItem);
+               (*fp_GetText2)(filePath, encoding, textOnly, prefix, append, 
importItem);
        }  // if (!fp_GetText2)        
        else
        {

Modified: trunk/Scribus/scribus/plugins/gettext/docxim/docxim.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/docxim/docxim.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/docxim/docxim.cpp     (original)
+++ trunk/Scribus/scribus/plugins/gettext/docxim/docxim.cpp     Thu May  5 
09:59:58 2016
@@ -34,17 +34,18 @@
        return QStringList("docx");
 }
 
-void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
PageItem *textItem)
-{
-       DocXIm* docxim = new DocXIm(filename, textItem, textOnly, prefix);
+void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
bool append, PageItem *textItem)
+{
+       DocXIm* docxim = new DocXIm(filename, textItem, textOnly, prefix, 
append);
        delete docxim;
 }
 
-DocXIm::DocXIm(QString fileName, PageItem *textItem, bool textOnly, bool 
prefix)
+DocXIm::DocXIm(QString fileName, PageItem *textItem, bool textOnly, bool 
prefix, bool append)
 {
        m_Doc = textItem->doc();
        m_item = textItem;
        m_prefixName = prefix;
+       m_append = append;
        themePart = "";
        docPart = "";
        stylePart = "";
@@ -274,6 +275,15 @@
        {
                qDebug() << "Error loading File" << errorMsg << "at Line" << 
errorLine << "Column" << errorColumn;
                return;
+       }
+       if (!m_append)
+       {
+               QString pStyleD = CommonStrings::DefaultParagraphStyle;
+               ParagraphStyle newStyle;
+               newStyle.setDefaultStyle(false);
+               newStyle.setParent(pStyleD);
+               textItem->itemText.clear();
+               textItem->itemText.setDefaultStyle(newStyle);
        }
        textItem->itemText.setDefaultStyle(defaultParagraphStyle);
        QDomElement docElem = designMapDom.documentElement();
@@ -598,6 +608,15 @@
                qDebug() << "Error loading File" << errorMsg << "at Line" << 
errorLine << "Column" << errorColumn;
                return;
        }
+       if (!m_append)
+       {
+               QString pStyleD = CommonStrings::DefaultParagraphStyle;
+               ParagraphStyle newStyle;
+               newStyle.setDefaultStyle(false);
+               newStyle.setParent(pStyleD);
+               textItem->itemText.clear();
+               textItem->itemText.setDefaultStyle(newStyle);
+       }
        currentParagraphStyle.setParent(CommonStrings::DefaultParagraphStyle);
        
currentParagraphStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle);
        
currentParagraphStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing);

Modified: trunk/Scribus/scribus/plugins/gettext/docxim/docxim.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/docxim/docxim.h
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/docxim/docxim.h       (original)
+++ trunk/Scribus/scribus/plugins/gettext/docxim/docxim.h       Thu May  5 
09:59:58 2016
@@ -22,14 +22,14 @@
 #include <QHash>
 class ScZipHandler;
 
-extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, PageItem *textItem);
+extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, bool append, PageItem *textItem);
 extern "C" PLUGIN_API QString FileFormatName();
 extern "C" PLUGIN_API QStringList FileExtensions();
 
 class DocXIm
 {
        public:
-               DocXIm(QString fileName, PageItem *textItem, bool textOnly, 
bool prefix);
+               DocXIm(QString fileName, PageItem *textItem, bool textOnly, 
bool prefix, bool append);
                ~DocXIm();
        private:
                void parseContentTypes();
@@ -50,6 +50,7 @@
                ScribusDoc* m_Doc;
                PageItem* m_item;
                bool m_prefixName;
+               bool m_append;
                ParagraphStyle defaultParagraphStyle;
                ParagraphStyle currentParagraphStyle;
                QHash<QString, QString> map_ID_to_Name;

Modified: trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.cpp  (original)
+++ trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.cpp  Thu May  5 
09:59:58 2016
@@ -40,17 +40,18 @@
        return ret;
 }
 
-void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
PageItem *textItem)
-{
-       ODTIm* docxim = new ODTIm(filename, textItem, textOnly, prefix);
+void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
bool append, PageItem *textItem)
+{
+       ODTIm* docxim = new ODTIm(filename, textItem, textOnly, prefix, append);
        delete docxim;
 }
 
-ODTIm::ODTIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix)
+ODTIm::ODTIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix, 
bool append)
 {
        m_Doc = textItem->doc();
        m_item = textItem;
        m_prefixName = prefix;
+       m_append = append;
        QFileInfo fi = QFileInfo(fileName);
        QString ext = fi.suffix().toLower();
        if (ext == "fodt")
@@ -259,13 +260,16 @@
 
 void ODTIm::parseRawText(QDomElement &elem, PageItem* item)
 {
-       int posC = 0;
        QString pStyleD = CommonStrings::DefaultParagraphStyle;
        ParagraphStyle newStyle;
        newStyle.setDefaultStyle(false);
        newStyle.setParent(pStyleD);
-       item->itemText.clear();
-       item->itemText.setDefaultStyle(newStyle);
+       if (!m_append)
+       {
+               item->itemText.clear();
+               item->itemText.setDefaultStyle(newStyle);
+       }
+       int posC = item->itemText.length();
        for(QDomNode para = elem.firstChild(); !para.isNull(); para = 
para.nextSibling())
        {
                if ((para.nodeName() == "text:p") || (para.nodeName() == 
"text:h"))
@@ -788,7 +792,6 @@
 
 void ODTIm::parseText(QDomElement &elem, PageItem* item, ObjStyleODT 
&tmpOStyle)
 {
-       int posC = 0;
        QString pStyleD = CommonStrings::DefaultParagraphStyle;
        ParagraphStyle newStyle;
        newStyle.setDefaultStyle(false);
@@ -797,9 +800,13 @@
        CharStyle nstyle = ttx.charStyle();
        newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing);
        newStyle.setLineSpacing(nstyle.fontSize() / 10.0);
-       item->itemText.clear();
-       item->itemText.setDefaultStyle(newStyle);
-       item->setFirstLineOffset(FLOPFontAscent);
+       if (!m_append)
+       {
+               item->itemText.clear();
+               item->itemText.setDefaultStyle(newStyle);
+               item->setFirstLineOffset(FLOPFontAscent);
+       }
+       int posC = item->itemText.length();
        for(QDomNode para = elem.firstChild(); !para.isNull(); para = 
para.nextSibling())
        {
                if ((para.nodeName() == "text:p") || (para.nodeName() == 
"text:h"))

Modified: trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.h
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.h    (original)
+++ trunk/Scribus/scribus/plugins/gettext/odt2im/importodt.h    Thu May  5 
09:59:58 2016
@@ -23,7 +23,7 @@
 #include <QHash>
 class ScZipHandler;
 
-extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, PageItem *textItem);
+extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, bool append, PageItem *textItem);
 extern "C" PLUGIN_API QString FileFormatName();
 extern "C" PLUGIN_API QStringList FileExtensions();
 
@@ -91,7 +91,7 @@
 class ODTIm
 {
        public:
-               ODTIm(QString fileName, PageItem *textItem, bool textOnly, bool 
prefix);
+               ODTIm(QString fileName, PageItem *textItem, bool textOnly, bool 
prefix, bool append);
                ~ODTIm();
        private:
                struct DrawStyle
@@ -155,6 +155,7 @@
                ScribusDoc* m_Doc;
                PageItem* m_item;
                bool m_prefixName;
+               bool m_append;
                QHash<QString, QString> map_ID_to_Name;
                QHash<QString, QString> m_fontMap;
                QHash<QString, DrawStyle> m_Styles;

Modified: trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.cpp       (original)
+++ trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.cpp       Thu May  5 
09:59:58 2016
@@ -30,7 +30,7 @@
        return QStringList("rtf");
 }
 
-void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
PageItem *textItem)
+void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
bool append, PageItem *textItem)
 {
        QFile f(filename);
        if (f.open(QIODevice::ReadOnly))
@@ -41,6 +41,15 @@
                buffer.open(QIODevice::ReadOnly);
                RtfReader::SlaDocumentRtfOutput *output = new 
RtfReader::SlaDocumentRtfOutput(textItem, textItem->doc(), prefix);
                RtfReader::Reader reader;
+               if (!append)
+               {
+                       QString pStyleD = CommonStrings::DefaultParagraphStyle;
+                       ParagraphStyle newStyle;
+                       newStyle.setDefaultStyle(false);
+                       newStyle.setParent(pStyleD);
+                       textItem->itemText.clear();
+                       textItem->itemText.setDefaultStyle(newStyle);
+               }
                reader.parseFromDeviceTo(&buffer, output);
                textItem->itemText.trim();
                textItem->itemText.invalidateLayout();

Modified: trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.h
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.h (original)
+++ trunk/Scribus/scribus/plugins/gettext/rtfim/rtfim.h Thu May  5 09:59:58 2016
@@ -18,7 +18,7 @@
 
 #include <QString>
 
-extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, PageItem *textItem);
+extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, bool append, PageItem *textItem);
 extern "C" PLUGIN_API QString FileFormatName();
 extern "C" PLUGIN_API QStringList FileExtensions();
 

Modified: trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.cpp       (original)
+++ trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.cpp       Thu May  5 
09:59:58 2016
@@ -37,17 +37,17 @@
        return QStringList("xtg");
 }
 
-void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
PageItem *textItem)
+void GetText2(QString filename, QString encoding, bool textOnly, bool prefix, 
bool append, PageItem *textItem)
 {
-       XtgIm* xtgim = new XtgIm(filename, textItem, textOnly, prefix);
+       XtgIm* xtgim = new XtgIm(filename, textItem, textOnly, prefix, append);
        delete xtgim;
 }
 
 /********************************Class 
XtgIm***********************************/
 
-XtgIm::XtgIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix)
+XtgIm::XtgIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix, 
bool append)
 {
-       XtgScanner *scanner = new XtgScanner(fileName, textItem, textOnly, 
prefix);
+       XtgScanner *scanner = new XtgScanner(fileName, textItem, textOnly, 
prefix, append);
        scanner->xtgParse();
        delete scanner;
 }

Modified: trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.h
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.h (original)
+++ trunk/Scribus/scribus/plugins/gettext/xtgim/xtgim.h Thu May  5 09:59:58 2016
@@ -35,14 +35,14 @@
 
 class StyleManager;
 
-extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, PageItem *textItem);
+extern "C" PLUGIN_API void GetText2(QString filename, QString encoding, bool 
textOnly, bool prefix, bool append, PageItem *textItem);
 extern "C" PLUGIN_API QString FileFormatName();
 extern "C" PLUGIN_API QStringList FileExtensions();
 
 class XtgIm
 {
 public:
-       XtgIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix);
+       XtgIm(QString fileName, PageItem *textItem, bool textOnly, bool prefix, 
bool append);
        ~XtgIm();
 };
 #endif                 /* XTGIM_H */

Modified: trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.cpp
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.cpp  (original)
+++ trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.cpp  Thu May  5 
09:59:58 2016
@@ -39,10 +39,11 @@
 #include "util.h"
 
 
-XtgScanner::XtgScanner(QString filename, PageItem *item, bool textOnly, bool 
prefix)
+XtgScanner::XtgScanner(QString filename, PageItem *item, bool textOnly, bool 
prefix, bool append)
 {
        m_item = item;
        importTextOnly = textOnly;
+       m_append = append;
        loadRawBytes(filename, input_Buffer);
        top = 0;
        if ((input_Buffer[0] == '\xFF') && (input_Buffer[1] == '\xFE'))
@@ -1502,6 +1503,15 @@
 void XtgScanner::xtgParse()
 {
        /* Enter the default mode as textMode */
+       if (!m_append)
+       {
+               QString pStyleD = CommonStrings::DefaultParagraphStyle;
+               ParagraphStyle newStyle;
+               newStyle.setDefaultStyle(false);
+               newStyle.setParent(pStyleD);
+               m_item->itemText.clear();
+               m_item->itemText.setDefaultStyle(newStyle);
+       }
        enterState(textMode);
        currentParagraphStyle.setParent(CommonStrings::DefaultParagraphStyle);
        
currentParagraphStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle);

Modified: trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.h
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=21282&path=/trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.h
==============================================================================
--- trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.h    (original)
+++ trunk/Scribus/scribus/plugins/gettext/xtgim/xtgscanner.h    Thu May  5 
09:59:58 2016
@@ -64,6 +64,7 @@
        PageItem* m_item;
        bool importTextOnly;
        bool m_prefixName;
+       bool m_append;
        /**
         \variable Flag variables used in the scanner
         */
@@ -111,7 +112,7 @@
        bool m_isItalic;
        
 public:
-       XtgScanner(QString filename, PageItem* item, bool textOnly, bool 
prefix);
+       XtgScanner(QString filename, PageItem* item, bool textOnly, bool 
prefix, bool append);
        ~XtgScanner();
 
        /**


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to