/trunk/Scribus/scribus/pdflib_core.cpp |
---|
1016,7 → 1016,7 |
{ |
StdFonts.insert("/Helvetica", ""); |
} */ |
QStringList patterns = doc.getUsedPatterns(); |
QStringList patterns = doc.getPatternDependencyList(doc.getUsedPatterns()); |
for (int c = 0; c < patterns.count(); ++c) |
{ |
ScPattern pa = doc.docPatterns[patterns[c]]; |
/trunk/Scribus/scribus/scribusdoc.cpp |
---|
2835,11 → 2835,23 |
results.append(FrameItems.at(c)->patternMask()); |
} |
} |
for (int c = 0; c < results.count(); ++c) |
for (QMap<QString, ScPattern>::Iterator it = docPatterns.begin(); it != docPatterns.end(); ++it) |
{ |
QStringList pats = getUsedPatternsHelper(results[c], results); |
if (!pats.isEmpty()) |
results += pats; |
for (int c = 0; c < it.value().items.count(); ++c) |
{ |
if ((it.value().items.at(c)->GrType == 8) || (it.value().items.at(c)->itemType() == PageItem::Symbol)) |
{ |
const QString& patName = it.value().items.at(c)->pattern(); |
if (!patName.isEmpty() && !results.contains(patName)) |
results.append(patName); |
} |
const QString& pat2 = it.value().items.at(c)->strokePattern(); |
if (!pat2.isEmpty() && !results.contains(pat2)) |
results.append(pat2); |
const QString& pat3 = it.value().items.at(c)->patternMask(); |
if (!pat3.isEmpty() && !results.contains(pat3)) |
results.append(pat3); |
} |
} |
return results; |
} |
2867,13 → 2879,20 |
if (!pat3.isEmpty() && !results.contains(pat3)) |
results.append(currItem->patternMask()); |
} |
QStringList results2 = results; |
for (int c = 0; c < results.count(); ++c) |
{ |
QStringList pats = getUsedPatternsHelper(results[c], results); |
QStringList pats = getUsedPatternsHelper(results[c], results2); |
if (!pats.isEmpty()) |
results += pats; |
{ |
for (int cc = 0; cc < pats.count(); cc++) |
{ |
if (!results2.contains(pats[cc])) |
results2.append(pats[cc]); |
} |
} |
} |
return results; |
return results2; |
} |
else |
return QStringList(); |
2881,6 → 2900,8 |
QStringList ScribusDoc::getUsedPatternsHelper(QString pattern, QStringList &results) |
{ |
if (!docPatterns.contains(pattern)) |
return QStringList(); |
ScPattern *pat = &docPatterns[pattern]; |
QStringList pats; |
pats.clear(); |
2901,15 → 2922,58 |
} |
if (!pats.isEmpty()) |
{ |
results = pats; |
results += pats; |
for (int c = 0; c < pats.count(); ++c) |
{ |
getUsedPatternsHelper(pats[c], results); |
QStringList pp = getUsedPatternsHelper(pats[c], results); |
if (!pp.isEmpty()) |
{ |
for (int cc = 0; cc < pp.count(); cc++) |
{ |
if (!results.contains(pp[cc])) |
results.append(pp[cc]); |
} |
} |
} |
} |
return results; |
} |
QStringList ScribusDoc::getPatternDependencyList(QStringList used) |
{ |
QStringList results; |
QStringList pp; |
QStringList pats = used; |
QStack<QStringList> patternStack; |
patternStack.push(pats); |
while (!pats.isEmpty()) |
{ |
for (int c = 0; c < pats.count(); ++c) |
{ |
pp = getUsedPatternsHelper(pats[c], results); |
if (!pp.isEmpty()) |
results += pp; |
} |
pats = results; |
results.clear(); |
if (!pats.isEmpty()) |
patternStack.push(pats); |
} |
results.clear(); |
while (patternStack.count() != 0) |
{ |
pp = patternStack.pop(); |
for (int c = 0; c < pp.count(); c++) |
{ |
if (!results.contains(pp[c])) |
results.append(pp[c]); |
} |
if (patternStack.count() == 0) |
break; |
} |
return results; |
} |
QStringList ScribusDoc::getUsedSymbols() |
{ |
QStringList results; |
2945,11 → 3009,18 |
results.append(FrameItems.at(c)->strokePattern()); |
} |
} |
for (int c = 0; c < results.count(); ++c) |
for (QMap<QString, ScPattern>::Iterator it = docPatterns.begin(); it != docPatterns.end(); ++it) |
{ |
QStringList pats = getUsedSymbolsHelper(results[c], results); |
if (!pats.isEmpty()) |
results += pats; |
for (int c = 0; c < it.value().items.count(); ++c) |
{ |
if ((!results.contains(it.value().items.at(c)->pattern())) && (it.value().items.at(c)->itemType() == PageItem::Symbol) && (!it.value().items.at(c)->pattern().isEmpty())) |
results.append(it.value().items.at(c)->pattern()); |
if ((!it.value().items.at(c)->strokePattern().isEmpty()) && (it.value().items.at(c)->patternStrokePath)) |
{ |
if (!results.contains(it.value().items.at(c)->strokePattern())) |
results.append(it.value().items.at(c)->strokePattern()); |
} |
} |
} |
return results; |
} |
5503,6 → 5574,16 |
docPatterns[currentEditedSymbol].pattern = currItem->DrawObj_toImage(); |
docPatterns[currentEditedSymbol].width = currItem->gWidth; |
docPatterns[currentEditedSymbol].height = currItem->gHeight; |
if (m_ScMW->patternsDependingOnThis.count() > 1) |
{ |
for (int a = 1; a < m_ScMW->patternsDependingOnThis.count(); a++) |
{ |
Items = &docPatterns[m_ScMW->patternsDependingOnThis[a]].items; |
renumberItemsInListOrder(); |
currItem = Items->at(0); |
docPatterns[m_ScMW->patternsDependingOnThis[a]].pattern = currItem->DrawObj_toImage(); |
} |
} |
if (masterPageMode()) |
{ |
Pages = &MasterPages; |
/trunk/Scribus/scribus/scribusXml.cpp |
---|
2450,7 → 2450,7 |
} |
} |
} |
QStringList patterns = doc->getUsedPatternsSelection(selection); |
QStringList patterns = doc->getPatternDependencyList(doc->getUsedPatternsSelection(selection)); |
for (int c = 0; c < patterns.count(); ++c) |
{ |
ScPattern& pa = doc->docPatterns[patterns[c]]; |
/trunk/Scribus/scribus/scribusdoc.h |
---|
622,6 → 622,7 |
QStringList getUsedPatterns(); |
QStringList getUsedPatternsSelection(Selection* customSelection); |
QStringList getUsedPatternsHelper(QString pattern, QStringList &results); |
QStringList getPatternDependencyList(QStringList used); |
/*! |
* @brief Builds a QStringList of the symbols used within the document |
*/ |
/trunk/Scribus/scribus/scribusview.cpp |
---|
2903,10 → 2903,12 |
void ScribusView::hideSymbolPage() |
{ |
updatesOn(false); |
Deselect(true); |
if (Doc->symbolEditMode()) |
this->requestMode(modeNormal); |
Doc->setSymbolEditMode(false); |
updatesOn(true); |
Doc->setCurrentPage(Doc->Pages->at(0)); |
pageSelector->setEnabled(true); |
resizeContents(qRound((Doc->maxCanvasCoordinate.x() - Doc->minCanvasCoordinate.x()) * m_canvas->scale()), qRound((Doc->maxCanvasCoordinate.y() - Doc->minCanvasCoordinate.y()) * m_canvas->scale())); |
/trunk/Scribus/scribus/scribus.cpp |
---|
8567,7 → 8567,7 |
scrActions["toolsPDFAnnot3D"]->setEnabled(false); |
#endif |
pagePalette->enablePalette(false); |
QStringList patterns2Del; |
patternsDependingOnThis.clear(); |
QStringList mainPatterns = doc->docPatterns.keys(); |
for (int a = 0; a < mainPatterns.count(); a++) |
{ |
8576,13 → 8576,13 |
QStringList subPatterns; |
subPatterns = doc->getUsedPatternsHelper(mainPatterns[a], subPatterns); |
if (subPatterns.contains(temp)) |
patterns2Del.append(mainPatterns[a]); |
patternsDependingOnThis.prepend(mainPatterns[a]); |
} |
} |
patterns2Del.append(temp); |
symbolPalette->editingStart(patterns2Del); |
propertiesPalette->Cpal->hideEditedPatterns(patterns2Del); |
propertiesPalette->Tpal->hideEditedPatterns(patterns2Del); |
patternsDependingOnThis.prepend(temp); |
symbolPalette->editingStart(patternsDependingOnThis); |
propertiesPalette->Cpal->hideEditedPatterns(patternsDependingOnThis); |
propertiesPalette->Tpal->hideEditedPatterns(patternsDependingOnThis); |
updateActiveWindowCaption( tr("Editing Symbol: %1").arg(temp)); |
} |
} |
8589,7 → 8589,6 |
void ScribusMainWindow::editSymbolEnd() |
{ |
view->setScale(storedViewScale); |
view->hideSymbolPage(); |
slotSelect(); |
scrActions["editMasterPages"]->setEnabled(true); |
8629,6 → 8628,7 |
#endif |
pagePalette->enablePalette(true); |
pagePalette->rebuildMasters(); |
view->setScale(storedViewScale); |
doc->setCurrentPage(doc->DocPages.at(storedPageNum)); |
view->setContentsPos(static_cast<int>(storedViewXCoor * storedViewScale), static_cast<int>(storedViewYCoor * storedViewScale)); |
view->DrawNew(); |
/trunk/Scribus/scribus/plugins/fileloader/scribus150format/scribus150format_save.cpp |
---|
913,12 → 913,12 |
void Scribus150Format::writePatterns(ScXmlStreamWriter & docu, const QString& baseDir) |
{ |
QMap<QString, ScPattern>::Iterator itPat; |
for (itPat = m_Doc->docPatterns.begin(); itPat != m_Doc->docPatterns.end(); ++itPat) |
QStringList patterns = m_Doc->getPatternDependencyList(m_Doc->docPatterns.keys()); |
for (int a = 0; a < patterns.count(); a++) |
{ |
docu.writeStartElement("Pattern"); |
docu.writeAttribute("Name",itPat.key()); |
ScPattern pa = itPat.value(); |
docu.writeAttribute("Name", patterns[a]); |
ScPattern pa = m_Doc->docPatterns[patterns[a]]; |
docu.writeAttribute("width", pa.width); |
docu.writeAttribute("height", pa.height); |
docu.writeAttribute("scaleX", pa.scaleX); |
/trunk/Scribus/scribus/plugins/svgexplugin/svgexplugin.cpp |
---|
1945,7 → 1945,7 |
void SVGExPlug::writeBasePatterns() |
{ |
QStringList patterns = m_Doc->getUsedPatterns(); |
QStringList patterns = m_Doc->getPatternDependencyList(m_Doc->getUsedPatterns()); |
for (int c = 0; c < patterns.count(); ++c) |
{ |
QStack<PageItem*> groupStack; |
/trunk/Scribus/scribus/scribus.h |
---|
252,6 → 252,7 |
ScMWMenuManager* scrMenuMgr; |
ActionManager* actionManager; |
QStringList RecentDocs; |
QStringList patternsDependingOnThis; |
public slots: |
void languageChange(); |
/trunk/Scribus/scribus/pslib.cpp |
---|
463,7 → 463,7 |
PutStream(GrayCalc); |
Optimization optim = optimization; |
optimization = OptimizeSize; |
QStringList patterns = m_Doc->getUsedPatterns(); |
QStringList patterns = m_Doc->getPatternDependencyList(m_Doc->getUsedPatterns()); |
for (int c = 0; c < patterns.count(); ++c) |
{ |
ScPattern pa = m_Doc->docPatterns[patterns[c]]; |