View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008056 | Scribus | Import / Export | public | 2009-05-18 00:34 | 2024-03-17 07:52 |
Reporter | renm | Assigned To | ale | ||
Priority | normal | Severity | major | Reproducibility | always |
Status | assigned | Resolution | open | ||
Platform | Linux | OS | Ubuntu x86_64 | OS Version | 9.04 |
Product Version | 1.3.5svn | ||||
Target Version | 1.5.4 | ||||
Summary | 0008056: [WIP PATCH] Import pages with linked text frames breaks the links | ||||
Description | Try to import the pages from other sla file (create new pages in current sla) and find out the result pages do not look exactly like the original. After imported, the linked text frames lose the link at the page boundary. The original 'indent' paragraph breaks between pages, and at beginning of the 2nd page, the text will start with 'indent' style text as a new paragraph (the original would be continue text flow). Workaround is to relink all of them manually. For 1.3.3.x, you have to change the first paragraph on each of the following pages to 'non-indent' style to mimic the original layout since there is no way to relink the filled frame in version 1.3.3.x. | ||||
Tags | #rottenpatch | ||||
Patch | Yes | ||||
has duplicate | 0008740 | closed | jghali | Text box links lost when importing pages |
has duplicate | 0008778 | closed | christoph_s | importing pages from a scribus document: text frames are not linked properly |
has duplicate | 0010316 | closed | jghali | Importing an SLA doc with linked text frames |
has duplicate | 0010753 | closed | jghali | Importing pages loses text frame linking |
has duplicate | 0011110 | closed | jghali | Import SLA looses links between linked text frames |
has duplicate | 0011155 | closed | jghali | Import pages doesn't import link information |
has duplicate | 0012128 | closed | jghali | Importing Scribus 1.4 pages with text frames forward linked across pages |
has duplicate | 0012764 | closed | When importing another .sla-file, the textbox-concatenations get lost | |
has duplicate | 0012981 | closed | jghali | link of textframes through pages broken on import |
has duplicate | 0013099 | closed | jghali | Importing linked text frames |
has duplicate | 0013208 | closed | jghali | Import features only imports 1 page of .sla document properly on Scribus 1.4.2 |
has duplicate | 0016228 | closed | jghali | Importing another sla file does not create linked frames when adding pages |
related to | 0012018 | closed | jghali | Undo does not behave as expected with linked Text Frames |
related to | 0011240 | closed | cbradney | With or without crash; linked textframes unlinked |
related to | 0008602 | confirmed | Master Pages don't respect linked text frames |
|
I dont get that 'Indent' problem. http://bugs.scribus.net/view.php?id=10316 (Fixed) describes in details various faulty SLA Import behaviours. Beside unlinking of text frames, 2 phenomenons happen in some cases : - loss of elements in the masterpage (not imported) - all linked frames are imported twice : once linked but empty, 2nd not linked but with text in first frame. |
|
Same with 1.4.3 : linked text frames are not linked in the document where they have been imported. Besides, it seems that masterpages elements are not imported neither. |
|
Same with 1.5 0011408 is also related to restoring links between text frames, but when undoing some page delete. |
|
I upload a sample 2 pages document, with 2 textframes on each page, all of them linked in a 4 frames chain. As a consequence, there is a link on each page and a link that crosses the page boundary. When imported with "Page(s) > Import" into another document, all frames are imported, the links on each page is imported, but not the link across page boundaries. That's because Scribus150Format::loadPage loads ONE page at a time, with no view of the global job being done. |
|
|
|
I upload patch that fixes the issue. Please test and merge when possible. |
|
I upload improved version of patch. It shouldnt change now. Some explanations : - a new unknownLinks variable is added to Scribus150Format class. This variable of class QMap gather the links where the destination doesnt exist yet when the link is imported. Later on, when that frame is imported, it is recognised and the link is created. - when importaing many pages (for "Page Import" menu action) pageLoad is first called with PageNumber set to -1 so as to clear the unknownLinks set. When the pageLoad action is finished it is called once more with PageNumber set to -1 : it enables to display a warning message when some links that could not be imported are left (because theyr destination has not been imported). And it clears the unknownLinks that are now useless. How to test : - create doc1 - import all pages of doc2 having linked links across pages : links should be imported too (that's the fix !) - import only one page of doc2 : link can not be imported since destination frame is on not imported page. A nice warning is issued. |
|
jl_importlinks_2.diff (6,060 bytes)
Index: scribus/plugins/fileloader/scribus150format/scribus150format.cpp =================================================================== --- scribus/plugins/fileloader/scribus150format/scribus150format.cpp (révision 18833) +++ scribus/plugins/fileloader/scribus150format/scribus150format.cpp (copie de travail) @@ -66,6 +66,7 @@ Scribus150Format::~Scribus150Format() { unregisterAll(); + qDebug () << "Scribus150Format::~Scribus150Format DESTRUCTOR"; // never called } void Scribus150Format::languageChange() @@ -5610,14 +5611,25 @@ return !reader.hasError(); } +// pageNumber can be <0 when begining and ending the loads of a set of pages bool Scribus150Format::loadPage(const QString & fileName, int pageNumber, bool Mpage, QString renamedPageName) { // qDebug() << QString("loading page %2 from file '%1' from 1.3.x plugin").arg(fileName).arg(pageNumber); + if (m_Doc==0 || m_AvailableFonts==0) + return false; + + if (pageNumber <0) // called both for init and end { - Q_ASSERT(m_Doc==0 || m_AvailableFonts==0); - return false; + if (unknownLinks.size()) + QMessageBox::information (m_ScMW, + CommonStrings::trWarning, + tr("Scribus was unable to import %1 link(s) toward not imported frame(s).").arg(unknownLinks.size()), + CommonStrings::tr_OK); + unknownLinks.clear(); + return true; } + ParagraphStyle vg; Xp = 0.0; Yp = 0.0; @@ -5908,8 +5919,22 @@ newItem->LayerID = layerTrans.value(newItem->LayerID, newItem->LayerID); if (isNewFormat) { - if (itemInfo.nextItem != -1) + int startItemID (unknownLinks.key(itemInfo.itemID,0)); + if (startItemID) // found previously missing destination of an imported link ? + { + PageItem * Its = LinkID[startItemID]; + PageItem * Itn = LinkID[itemInfo.itemID]; + if (!Its->testLinkCandidate(Itn)) + qDebug() << "Scribus150Format::loadPage : Link Corruption Found from " << startItemID << "to "<< itemInfo.itemID; + else + { + Its->link(Itn); + unknownLinks.remove(startItemID); + } + } + if (itemInfo.nextItem != -1) { itemNext[itemInfo.itemID] = itemInfo.nextItem; + }; if (itemInfo.item->isTableItem) TableItems.append(itemInfo.item); if (itemInfo.isWeldFlag) @@ -6044,7 +6069,8 @@ PageItem * Itn = LinkID[lc.value()]; if (!Its->testLinkCandidate(Itn)) { - qDebug() << "scribus150format: corruption in linked textframes detected"; + qDebug() << "scribus150format: Found link from " << lc.key() << "to yet unloaded frame"<< lc.value(); + unknownLinks[lc.key()]=lc.value(); continue; } Its->link(Itn); @@ -6105,7 +6131,7 @@ PageItem * Itn = m_Doc->DocItems.at(itemRemap[lc.value()]); if (!Its->testLinkCandidate(Itn)) { - qDebug() << "scribus150format: corruption in linked textframes detected"; + qDebug() << "scribus150format: Found link from " << lc.key() << "to yet unloaded frame"<< lc.value(); continue; } Its->link(Itn); Index: scribus/plugins/fileloader/scribus150format/scribus150format.h =================================================================== --- scribus/plugins/fileloader/scribus150format/scribus150format.h (révision 18833) +++ scribus/plugins/fileloader/scribus150format/scribus150format.h (copie de travail) @@ -19,6 +19,7 @@ #include <QMap> #include <QProgressBar> #include <QString> +#include <QMessageBox> class QIODevice; @@ -190,7 +191,8 @@ void SetItemProps(ScXmlStreamWriter& docu, PageItem* item, const QString& baseDir, bool newFormat); QMap<QString, QString> parStyleMap; - + + QMap<int, int> unknownLinks; // in pageLoad only as for now : items that remain unlinked because linked frame is in yet unloaded page QMap<int, int> itemRemap; QMap<int, int> itemNext; QMap<int, int> itemRemapF; Index: scribus/scribus.cpp =================================================================== --- scribus/scribus.cpp (révision 18833) +++ scribus/scribus.cpp (copie de travail) @@ -3865,11 +3865,13 @@ UndoTransaction* activeTransaction = NULL; if(UndoManager::undoEnabled()) activeTransaction = new UndoTransaction(undoManager->beginTransaction(Um::ImportPage, Um::IGroup, Um::ImportPage, 0, Um::ILock)); - if (dia->exec()) { mainWindowStatusLabel->setText( tr("Importing Pages...")); qApp->setOverrideCursor(QCursor(Qt::WaitCursor)); + + const QString FromFilename (dia->getFromDoc()); + std::vector<int> pageNs; parsePagesString(dia->getPageNumbers(), &pageNs, dia->getPageCounter()); int startPage=0, nrToImport=pageNs.size(); @@ -3877,7 +3879,7 @@ if (doc->masterPageMode()) { if (nrToImport > 1) - loadPage(dia->getFromDoc(), pageNs[0] - 1, false); + loadPage(FromFilename, pageNs[0] - 1, false); doIt = false; } else if (dia->getCreatePageChecked()) @@ -3930,16 +3932,18 @@ mainWindowProgressBar->reset(); mainWindowProgressBar->setMaximum(nrToImport); int counter = startPage; + loadPage(FromFilename, -1, false); // init clean unknownLinks for (int i = 0; i < nrToImport; ++i) { view->GotoPa(counter); - loadPage(dia->getFromDoc(), pageNs[i] - 1, false); + loadPage(FromFilename, pageNs[i] - 1, false); counter++; mainWindowProgressBar->setValue(i + 1); } view->GotoPa(startPage); mainWindowProgressBar->reset(); mainWindowStatusLabel->setText( tr("Import done")); + loadPage(FromFilename, -1, false); // end load clean } else { |
|
In loadPages, the first call with -1 is meant to be sure to initialise unknownLinks. Since it should be allready empty normally ATM, this "begin" init is not strictly required (but IMO it's not bad to have that "begin" because it balances the "end" -1 call. for example, it might later be usefull for some other loadplugin or some other import page feature to be managed ?). |
|
Same here with 1.4.5.svn (19285) and 1.5.0.svn (19288). |
|
The proposed patch for scribus 1.5 fixes this bug. The proposed patch does not fix the same bug that occur when scribus 1.5 imports some 1.4 document. IMO This patch should be taken as it is and be merged in trunk as is. |
|
So the proposal with this patch is to implement it for 1.5svn without backporting. Probably will break backward compatibility functionality, right? |
|
1.5 SLA can not be opened into Scribus 1.4. That's not an issue. There is no backward compatibility issue. The proposed patch fixes the described issue when importing 1.5 SLA into scribus 1.5. It's not backportable to scribus 1.4 because scribus 1.4 only opens 1.4 SLA and the fix doesnt tackle the import of 1.4 SLA. |
|
fixed typo in bug summary Question: Will this patch fix 0011240 ? |
|
@kunda : This patch fixes the import bug regarding broken links. That's all. It doesnt improve any not-related crash behaviour. |
|
Please merge this patch. |
|
when reviewing, please make sure that if (it.key() < m_Doc->Items->count()) Its = m_Doc->DocItems.at(it.key()); can be converted to if (it.key() < m_Doc->DocItems->count()) Its = m_Doc->DocItems.at(it.key()); and please document in scribusdoc.h what's the difference between DocItems and Items... |
|
ale, have you tested the patch ? Can you confirm it works well ? |
|
no, jluc, i did not test the patch. i skimmed through it and noticed that it makes things even more complex. i've now refactored the Scribus150Format::pageLoad() to be easier to read and changed it to support importing multiple page at a time. i'm now trying to sort out what are the dependencies in scribus.cpp. you patch was very useful to find out where i should look at, but adding one more list, that persist among calls (i guess...), did not look like the right solution to me... |
|
ScribusMainWindow::loadPage() is used by - ScribusMainWindow::slotPageImport(): we need to add a callback that shows the counter and updates the screen. - plugins/scriptplugin/cmdpage.cpp: we probably need to have importPage() and importPages()... - plugins/scriptplugin_py2x/cmdpage.cpp: |
|
first part of a new patch: https://gitlab.com/scribus/scribus/merge_requests/17/diffs please review it, before i go on with the second part. - this patch does not change scribus behavior. - there is some refactoring. - it adds a "loadPage" that accepts a list of pages instead of a single page. - before accepting the patch, you need to correctly indent the for loop! in the last commit i've reduced the indent to allow a review of the patch (otherwise, all lines are marked as changed...) it's loosely inspired by jluc patch. i also attach the diff for the next step: - it does not correctly work, yet - THE ATTACHED PATCH IS NOT THE SAME AS THE ONE IN THE MERGE REQUEST LINKED ABOVE and needs the first patch to be accepted. import-textchain-secondstep.diff (12,169 bytes)
diff --git a/scribus/fileloader.cpp b/scribus/fileloader.cpp index 50e9c997d..5f1eae3db 100644 --- a/scribus/fileloader.cpp +++ b/scribus/fileloader.cpp @@ -173,7 +173,7 @@ int FileLoader::testFile() return ret; } -bool FileLoader::loadPage(ScribusDoc* currDoc, int PageToLoad, bool Mpage, const QString& renamedPageName) +bool FileLoader::loadPage(ScribusDoc* currDoc, std::vector<int> PageToLoad, bool Mpage, std::function<void(int)> updateViewCallabck, const QString& renamedPageName) { bool ret = false; // newReplacement = false; @@ -192,7 +192,9 @@ bool FileLoader::loadPage(ScribusDoc* currDoc, int PageToLoad, bool Mpage, const if (m_fileType == FORMATID_SLA13XIMPORT || m_fileType == FORMATID_SLA134IMPORT || m_fileType == FORMATID_SLA150IMPORT) { it->plug->setupTargets(currDoc, nullptr, currDoc->scMW(), currDoc->scMW()->mainWindowProgressBar, &(m_prefsManager.appPrefs.fontPrefs.AvailFonts)); + it->plug->setUpdateViewCallback(updateViewCallabck); ret = it->plug->loadPage(m_fileName, PageToLoad, Mpage, renamedPageName); + it->plug->setUpdateViewCallback(); // if (ret) // it->plug->getReplacedFontData(newReplacement, ReplacedFonts, dummyScFaces); } diff --git a/scribus/fileloader.h b/scribus/fileloader.h index b1210904a..c1f9e3fa9 100644 --- a/scribus/fileloader.h +++ b/scribus/fileloader.h @@ -26,6 +26,7 @@ class SCFonts; class PrefsManager; class FileFormat; class multiLine; +class vector; class SCRIBUS_API FileLoader : public QObject { @@ -37,7 +38,7 @@ public: int fileType() const { return m_fileType; } int testFile(); - bool loadPage(ScribusDoc* currDoc, int PageToLoad, bool Mpage, const QString& renamedPageName=QString()); + bool loadPage(ScribusDoc* currDoc, std::vector<int> PageToLoad, bool Mpage, std::function<void(int)> updateViewCallabck, const QString& renamedPageName=QString()); bool loadFile(ScribusDoc* currDoc); bool saveFile(const QString& fileName, ScribusDoc *doc, QString *savedFile = nullptr); bool readStyles(ScribusDoc* doc, StyleSet<ParagraphStyle> &docParagraphStyles); diff --git a/scribus/loadsaveplugin.cpp b/scribus/loadsaveplugin.cpp index ae660e5bf..6a0178de2 100644 --- a/scribus/loadsaveplugin.cpp +++ b/scribus/loadsaveplugin.cpp @@ -13,6 +13,8 @@ for which a new license (GPL+exception) is in place. #include "plugins/formatidlist.h" +#include <vector> + #include <QList> #include <QMessageBox> @@ -399,6 +401,11 @@ void LoadSavePlugin::getReplacedFontData(bool & /*getNewReplacement*/, QMap<QStr { } +bool LoadSavePlugin::loadPage(const QString & /*fileName*/, std::vector<int> /*pageNumbers*/, bool /*Mpage*/, const QString& /*renamedPageName*/) +{ + return false; +} + bool LoadSavePlugin::loadPage(const QString& /*fileName*/, int /*pageNumber*/, bool /*Mpage*/, const QString& /*renamedPageName*/) { return false; diff --git a/scribus/loadsaveplugin.h b/scribus/loadsaveplugin.h index 1bf162898..17db33672 100644 --- a/scribus/loadsaveplugin.h +++ b/scribus/loadsaveplugin.h @@ -16,6 +16,9 @@ for which a new license (GPL+exception) is in place. #include <QStringList> #include <QList> +#include <functional> +#include <vector> + class FileFormat; //TODO REmove includes one day class ScribusView; @@ -108,7 +111,9 @@ class SCRIBUS_API LoadSavePlugin : public ScPlugin virtual void setupTargets(ScribusDoc *targetDoc, ScribusView* targetView, ScribusMainWindow* targetMW, QProgressBar* targetMWPRogressBar, SCFonts* targetAvailableFonts); virtual void getReplacedFontData(bool & getNewReplacement, QMap<QString,QString> &getReplacedFonts, QList<ScFace> &getDummyScFaces); + virtual bool loadPage(const QString & fileName, std::vector<int> pageNumbers, bool Mpage, const QString& renamedPageName=QString()); virtual bool loadPage(const QString & fileName, int pageNumber, bool Mpage, const QString& renamedPageName=QString()); + void setUpdateViewCallback(std::function<void(int)> callback = {}) { this->viewUpdateCallback = callback; } virtual bool readStyles(const QString& fileName, ScribusDoc* doc, StyleSet<ParagraphStyle> &docParagraphStyles); virtual bool readCharStyles(const QString& fileName, ScribusDoc* doc, StyleSet<CharStyle> &docCharStyles); virtual bool readLineStyles(const QString& fileName, QHash<QString, multiLine> *Sty); @@ -143,6 +148,7 @@ class SCRIBUS_API LoadSavePlugin : public ScPlugin SCFonts* m_AvailableFonts; QString m_lastSavedFile; UndoManager * const undoManager; + std::function<void(int)> viewUpdateCallback = [](int i) {}; private: // A list of all supported formats. This is maintained by plugins diff --git a/scribus/plugins/fileloader/scribus150format/scribus150format.cpp b/scribus/plugins/fileloader/scribus150format/scribus150format.cpp index ba7c805c2..0e4ecdbb4 100644 --- a/scribus/plugins/fileloader/scribus150format/scribus150format.cpp +++ b/scribus/plugins/fileloader/scribus150format/scribus150format.cpp @@ -44,6 +44,8 @@ for which a new license (GPL+exception) is in place. #include "pageitem_spiral.h" #include "pagestructs.h" +#include <vector> + #include <QApplication> #include <QByteArray> #include <QCursor> @@ -5979,7 +5981,7 @@ bool Scribus150Format::readLatexInfo(PageItem_LatexFrame* latexitem, ScXmlStream return !reader.hasError(); } -bool Scribus150Format::loadPage(const QString & fileName, QList<int> pageNumbers, bool Mpage, const QString& renamedPageName) +bool Scribus150Format::loadPage(const QString & fileName, std::vector<int> pageNumbers, bool Mpage, const QString& renamedPageName) { // qDebug() << QString("loading page %2 from file '%1' from 1.3.x plugin").arg(fileName).arg(pageNumber); if (m_Doc==nullptr || m_AvailableFonts==nullptr) @@ -5997,6 +5999,8 @@ bool Scribus150Format::loadPage(const QString & fileName, QList<int> pageNumbers for (const int pageNumber: pageNumbers) { + if (viewUpdateCallback) + viewUpdateCallback(pageNumber); ParagraphStyle vg; Xp = 0.0; Yp = 0.0; @@ -6541,7 +6545,7 @@ bool Scribus150Format::loadPage(const QString & fileName, QList<int> pageNumbers bool Scribus150Format::loadPage(const QString & fileName, int pageNumber, bool Mpage, const QString& renamedPageName) { - QList<int> pageNumbers = {pageNumber}; + std::vector<int> pageNumbers = {pageNumber}; return loadPage(fileName, pageNumbers, Mpage, renamedPageName); } diff --git a/scribus/plugins/fileloader/scribus150format/scribus150format.h b/scribus/plugins/fileloader/scribus150format/scribus150format.h index 7972d5b8f..4b806fd3e 100644 --- a/scribus/plugins/fileloader/scribus150format/scribus150format.h +++ b/scribus/plugins/fileloader/scribus150format/scribus150format.h @@ -56,8 +56,8 @@ class PLUGIN_API Scribus150Format : public LoadSavePlugin virtual void addToMainWindowMenu(ScribusMainWindow *) {}; // Special features - .sla page extraction support - virtual bool loadPage(const QString & fileName, QList<int> pageNumbers, bool Mpage, const QString& renamedPageName=QString()); - virtual bool loadPage(const QString & fileName, int pageNumber, bool Mpage, const QString& renamedPageName=QString()); + bool loadPage(const QString & fileName, std::vector<int> pageNumbers, bool Mpage, const QString& renamedPageName=QString()) override; + bool loadPage(const QString & fileName, int pageNumber, bool Mpage, const QString& renamedPageName=QString()) override; virtual bool readStyles(const QString& fileName, ScribusDoc* doc, StyleSet<ParagraphStyle> &docParagraphStyles); virtual bool readCharStyles(const QString& fileName, ScribusDoc* doc, StyleSet<CharStyle> &docCharStyles); virtual bool readLineStyles(const QString& fileName, QHash<QString, multiLine> *Sty); diff --git a/scribus/scribus.cpp b/scribus/scribus.cpp index 239ede923..9b0406261 100644 --- a/scribus/scribus.cpp +++ b/scribus/scribus.cpp @@ -3348,13 +3348,15 @@ bool ScribusMainWindow::slotPageImport() mainWindowProgressBar->reset(); mainWindowProgressBar->setMaximum(nrToImport); int counter = startPage; - for (int i = 0; i < nrToImport; ++i) - { - view->GotoPa(counter); - loadPage(dia->getFromDoc(), pageNs[i] - 1, false); + auto refresh = [this, &counter](int i) { + this->view->GotoPa(counter); counter++; - mainWindowProgressBar->setValue(i + 1); - } + this->mainWindowProgressBar->setValue(i + 1); + qDebug() << i; + }; + + loadPage(dia->getFromDoc(), pageNs, false, refresh); + view->GotoPa(startPage); mainWindowProgressBar->reset(); m_mainWindowStatusLabel->setText( tr("Import done")); @@ -3375,52 +3377,58 @@ bool ScribusMainWindow::slotPageImport() bool ScribusMainWindow::loadPage(const QString& fileName, int Nr, bool Mpa, const QString& renamedPageName) { - bool ret = false; - if (!fileName.isEmpty()) + return loadPage(fileName, {Nr}, Mpa, [](int i){}, renamedPageName); +} + +bool ScribusMainWindow::loadPage(const QString& fileName, std::vector<int> pageNumbers, bool Mpa, std::function<void(int)> updateView, const QString& renamedPageName) +{ + if (fileName.isEmpty()) + return false; + + FileLoader *fl = new FileLoader(fileName); + if (fl->testFile() == -1) + { + delete fl; + return false; + } + doc->setLoading(true); + int oldItemsCount = doc->Items->count(); + + if (!fl->loadPage(doc, pageNumbers, Mpa, updateView, renamedPageName)) { - FileLoader *fl = new FileLoader(fileName); - if (fl->testFile() == -1) - { - delete fl; - return false; - } - doc->setLoading(true); - int oldItemsCount = doc->Items->count(); - if (!fl->loadPage(doc, Nr, Mpa, renamedPageName)) - { - delete fl; - doc->setLoading(false); - return false; - } delete fl; - if (ScCore->haveCMS() && doc->cmsSettings().CMSinUse) - { - recalcColors(); - doc->RecalcPictures(&ScCore->InputProfiles, &ScCore->InputProfilesCMYK); - } - int docItemsCount=doc->Items->count(); - for (int i = oldItemsCount; i < docItemsCount; ++i) - { - PageItem *ite = doc->Items->at(i); - if ((ite->asTextFrame()) && (ite->isBookmark)) - AddBookMark(ite); - } - propertiesPalette->updateColorList(); - contentPalette->updateColorList(); - emit UpdateRequest(reqArrowStylesUpdate | reqLineStylesUpdate | reqStyleComboDocUpdate | reqInlinePalUpdate); - symbolPalette->updateSymbolList(); - slotDocCh(); - rebuildLayersList(); - updateLayerMenu(); - layerPalette->rebuildList(); doc->setLoading(false); - ret = true; + return false; + } + delete fl; + if (ScCore->haveCMS() && doc->cmsSettings().CMSinUse) + { + recalcColors(); + doc->RecalcPictures(&ScCore->InputProfiles, &ScCore->InputProfilesCMYK); + } + int docItemsCount=doc->Items->count(); + for (int i = oldItemsCount; i < docItemsCount; ++i) + { + PageItem *ite = doc->Items->at(i); + if ((ite->asTextFrame()) && (ite->isBookmark)) + AddBookMark(ite); } + propertiesPalette->updateColorList(); + contentPalette->updateColorList(); + emit UpdateRequest(reqArrowStylesUpdate | reqLineStylesUpdate | reqStyleComboDocUpdate | reqInlinePalUpdate); + symbolPalette->updateSymbolList(); + slotDocCh(); + rebuildLayersList(); + updateLayerMenu(); + layerPalette->rebuildList(); + doc->setLoading(false); + if (!Mpa) pagePalette->Rebuild(); view->reformPages(); view->DrawNew(); - return ret; + + return true; } bool ScribusMainWindow::loadDoc(const QString& fileName) diff --git a/scribus/scribus.h b/scribus/scribus.h index 6c2015229..96ddd74ed 100644 --- a/scribus/scribus.h +++ b/scribus/scribus.h @@ -54,6 +54,8 @@ class QMdiSubWindow; class QQuickView; // application specific includes +#include <functional> + #include "scribusapi.h" #include "scribusdoc.h" #include "styleoptions.h" @@ -321,6 +323,7 @@ public slots: void newFileFromTemplate(); bool slotPageImport(); bool loadPage(const QString& fileName, int Nr, bool Mpa, const QString& renamedPageName=QString()); + bool loadPage(const QString& fileName, std::vector<int> pageNumbers, bool Mpa, std::function<void(int)> updateView, const QString& renamedPageName=QString()); void GotoLa(int l); void slotGetContent(); void slotGetContent2(); // kk2006 |
|
any review? people are complaining about the behavior in the internets... |
|
I did a quick review.. best if @jghali takes a look now. |
|
I opened a issue for importing breaking linked text frames, and it was closed as a duplicate of this one. If there are patched releases built, I'm happy to test my process with them as this is a major blocker for me. |
|
https://forums.scribus.net/index.php/topic,4881.msg22594.html |
|
<strike>stupid</strike> people in the internet keep complaining... https://forums.scribus.net/index.php/topic,5002.msg23009.html#msg23009 |
Date Modified | Username | Field | Change |
---|---|---|---|
2009-05-18 00:34 | renm | New Issue | |
2010-01-23 19:08 | jghali | Relationship added | has duplicate 0008740 |
2010-02-07 00:52 | christoph_s | Relationship added | has duplicate 0008778 |
2011-10-12 22:24 | jghali | Relationship added | has duplicate 0010316 |
2011-10-13 10:34 | JLuc | Note Added: 0027015 | |
2012-06-15 13:15 | jghali | Relationship added | has duplicate 0010753 |
2012-10-09 18:27 | jghali | Relationship added | has duplicate 0011110 |
2012-11-06 13:31 | jghali | Relationship added | has duplicate 0011155 |
2013-01-27 16:56 | JLuc | Note Added: 0029770 | |
2014-02-09 14:45 | JLuc | Tag Attached: easyhack | |
2014-02-09 14:47 | JLuc | Note Added: 0031294 | |
2014-02-09 21:18 | JLuc | Note Edited: 0031294 | |
2014-02-09 21:19 | JLuc | Note Edited: 0031294 | |
2014-02-23 11:24 | JLuc | Tag Detached: easyhack | |
2014-02-23 11:26 | JLuc | Note Edited: 0031294 | |
2014-02-23 11:36 | JLuc | Note Edited: 0031294 | |
2014-02-23 11:36 | JLuc | Note Edited: 0031294 | |
2014-02-23 12:44 | JLuc | Note Edited: 0031294 | |
2014-02-23 13:00 | JLuc | File Added: page with linked frames import.sla | |
2014-02-23 13:04 | JLuc | Note Added: 0031375 | |
2014-02-23 13:04 | JLuc | Note Edited: 0031375 | |
2014-02-23 13:17 | JLuc | File Deleted: page with linked frames import.sla | |
2014-02-23 13:18 | JLuc | File Added: 2page with linked frames to import.sla | |
2014-02-23 13:19 | JLuc | Note Edited: 0027015 | |
2014-02-25 01:17 | JLuc | File Added: jl_unknownlinks.diff | |
2014-02-25 01:18 | JLuc | Note Added: 0031380 | |
2014-02-25 11:32 | JLuc | Note Added: 0031382 | |
2014-02-25 11:32 | JLuc | File Deleted: jl_unknownlinks.diff | |
2014-02-25 11:33 | JLuc | File Added: jl_importlinks_2.diff | |
2014-02-25 11:35 | JLuc | Note Edited: 0031382 | |
2014-02-25 11:45 | JLuc | Note Edited: 0031382 | |
2014-02-26 08:56 | JLuc | Note Added: 0031404 | |
2014-03-06 10:34 | JLuc | Note Edited: 0031404 | |
2014-03-08 21:49 | jghali | Relationship added | has duplicate 0012128 |
2014-06-28 14:43 | FirasH | Note Added: 0032355 | |
2014-06-28 14:43 | FirasH | Status | new => confirmed |
2014-07-20 23:27 | Kunda | Relationship added | related to 0012018 |
2014-07-20 23:30 | Kunda | Summary | Import pages with linked text frames will break the link that acrosses the pages => [PATCH] Import pages with linked text frames will break the link that acrosses the pages |
2014-07-21 19:49 | JLuc | Note Added: 0032891 | |
2014-07-22 11:31 | Kunda | Summary | [PATCH] Import pages with linked text frames will break the link that acrosses the pages => [PATCH] Import pages with linked text frames will break the link that across pages |
2014-07-22 11:31 | Kunda | Description Updated | |
2014-08-21 11:50 | Kunda | Relationship added | related to 0011240 |
2014-09-02 13:04 | Kunda | Note Added: 0033457 | |
2014-09-02 15:31 | JLuc | Note Added: 0033460 | |
2014-09-02 16:55 | JLuc | Note Edited: 0033460 | |
2014-09-02 16:55 | JLuc | Note Edited: 0033460 | |
2014-09-04 23:23 | Kunda | Note Added: 0033503 | |
2014-09-04 23:23 | Kunda | Summary | [PATCH] Import pages with linked text frames will break the link that across pages => [PATCH] Import pages with linked text frames will break the link across pages |
2014-09-04 23:24 | Kunda | Note Edited: 0033503 | |
2014-10-11 16:05 | JLuc | Note Edited: 0033460 | |
2014-10-11 16:06 | JLuc | Note Added: 0033976 | |
2014-10-11 16:56 | JLuc | Relationship added | has duplicate 0012764 |
2014-10-12 07:47 | JLuc | Note Edited: 0033976 | |
2014-10-24 22:57 | Kunda | Patch | => Yes |
2015-04-07 20:53 | jghali | Relationship added | has duplicate 0012981 |
2015-04-08 19:37 | Kunda | Target Version | => 1.5.1 |
2015-05-29 17:25 | jghali | Relationship added | has duplicate 0013099 |
2015-05-30 07:54 | JLuc | Note Added: 0035289 | |
2015-07-06 21:20 | jghali | Relationship added | has duplicate 0013208 |
2016-01-23 17:17 | cbradney | Target Version | 1.5.1 => 1.5.3 |
2016-12-08 22:04 | Kunda | Target Version | 1.5.3 => 1.5.4 |
2019-11-13 08:44 | ale | Relationship added | related to 0008602 |
2019-11-13 08:48 | ale | Assigned To | => ale |
2019-11-13 08:48 | ale | Status | confirmed => assigned |
2019-11-13 08:48 | ale | Build | C-C-T-F-C1.8.6-64bit => C-C-T-F-C1.8.6-64bit |
2019-11-13 10:00 | JLuc | Tag Attached: #rottenpatch | |
2019-11-13 11:36 | JLuc | Summary | [PATCH] Import pages with linked text frames will break the link across pages => [PATCH] Import pages with linked text frames breaks the links |
2019-11-14 20:07 | ale | Summary | [PATCH] Import pages with linked text frames breaks the links => [OLD PATCH] Import pages with linked text frames breaks the links |
2019-11-15 10:46 | ale | Note Added: 0047084 | |
2019-11-15 11:12 | JLuc | Note Added: 0047085 | |
2019-11-15 12:55 | ale | Note Added: 0047086 | |
2019-11-15 12:58 | ale | Note Added: 0047087 | |
2019-11-18 09:41 | ale | Summary | [OLD PATCH] Import pages with linked text frames breaks the links => [WIP PATCH] Import pages with linked text frames breaks the links |
2019-11-18 09:45 | ale | File Added: import-textchain-secondstep.diff | |
2019-11-18 09:45 | ale | Note Added: 0047100 | |
2019-11-18 09:46 | ale | Note Edited: 0047100 | |
2019-11-18 09:47 | ale | Note Edited: 0047100 | |
2020-08-22 15:42 | ale | Note Added: 0047987 | |
2020-08-31 21:05 | cbradney | Note Added: 0048001 | |
2020-09-02 12:25 | jghali | Relationship added | has duplicate 0016228 |
2020-09-02 13:26 | AndreasDavour | Note Added: 0048020 | |
2024-02-06 11:51 | ale | Note Added: 0050968 | |
2024-03-17 07:31 | ale | Note Added: 0051048 | |
2024-03-17 07:51 | ale | Note Edited: 0051048 | |
2024-03-17 07:52 | ale | Note Edited: 0051048 |