338,151 → 338,149 |
PrefsContext* dirs = PrefsManager::instance().prefsFile->getContext("dirs"); |
QString wdir = dirs->get("editformats", "."); |
CustomFDialog dia(this, wdir, tr("Open"), tr("documents (*.sla *.sla.gz *.scd *.scd.gz);;All Files (*)")); |
if (dia.exec() == QDialog::Accepted) |
{ |
QString selectedFile = dia.selectedFile(); |
dirs->set("editformats", selectedFile.left(selectedFile.lastIndexOf("/"))); |
if (dia.exec() != QDialog::Accepted) |
return; |
|
StyleSet<ParagraphStyle> tmpParaStyles; |
StyleSet<CharStyle> tmpCharStyles; |
QHash<QString, multiLine> tmpLineStyles; |
QString selectedFile = dia.selectedFile(); |
dirs->set("editformats", selectedFile.left(selectedFile.lastIndexOf("/"))); |
|
m_doc->loadStylesFromFile(selectedFile, &tmpParaStyles, &tmpCharStyles, &tmpLineStyles); |
StyleSet<ParagraphStyle> tmpParaStyles; |
StyleSet<CharStyle> tmpCharStyles; |
QHash<QString, multiLine> tmpLineStyles; |
|
m_doc->loadStylesFromFile(selectedFile, &tmpParaStyles, &tmpCharStyles, &tmpLineStyles); |
|
// FIXME Once all styles are derived from Style remove this and make a proper |
// implementation |
// Start hack |
|
SMParagraphStyle *pstyle = nullptr; |
SMCharacterStyle *cstyle = nullptr; |
SMLineStyle *lstyle = nullptr; |
for (int i = 0; i < m_items.count(); ++i) |
{ |
pstyle = dynamic_cast<SMParagraphStyle*>(m_items.at(i)); |
if (pstyle) |
break; |
} |
for (int i = 0; i < m_items.count(); ++i) |
{ |
cstyle = dynamic_cast<SMCharacterStyle*>(m_items.at(i)); |
if (cstyle) |
break; |
} |
for (int i = 0; i < m_items.count(); ++i) |
{ |
lstyle = dynamic_cast<SMLineStyle*>(m_items.at(i)); |
if (lstyle) |
break; |
} |
SMParagraphStyle *pstyle = nullptr; |
SMCharacterStyle *cstyle = nullptr; |
SMLineStyle *lstyle = nullptr; |
for (int i = 0; i < m_items.count(); ++i) |
{ |
pstyle = dynamic_cast<SMParagraphStyle*>(m_items.at(i)); |
if (pstyle) |
break; |
} |
for (int i = 0; i < m_items.count(); ++i) |
{ |
cstyle = dynamic_cast<SMCharacterStyle*>(m_items.at(i)); |
if (cstyle) |
break; |
} |
for (int i = 0; i < m_items.count(); ++i) |
{ |
lstyle = dynamic_cast<SMLineStyle*>(m_items.at(i)); |
if (lstyle) |
break; |
} |
|
Q_ASSERT(pstyle && cstyle && lstyle); |
Q_ASSERT(pstyle && cstyle && lstyle); |
|
SMStyleImport *dia2 = new SMStyleImport(this, &tmpParaStyles, &tmpCharStyles, &tmpLineStyles); |
SMStyleImport *dia2 = new SMStyleImport(this, &tmpParaStyles, &tmpCharStyles, &tmpLineStyles); |
// end hack |
|
//#7315 QList<QPair<QString, QString> > selected; |
if (dia2->exec()) |
{ |
if (dia2->exec()) |
{ |
//#7385 if (!m_isEditMode) |
//#7385 slotOk(); |
QStringList neededColors; |
neededColors.clear(); |
QStringList neededColors; |
neededColors.clear(); |
|
foreach (const QString& aStyle, dia2->paragraphStyles()) |
foreach (const QString& aStyle, dia2->paragraphStyles()) |
{ |
ParagraphStyle& sty(tmpParaStyles[tmpParaStyles.find(aStyle)]); |
if (dia2->clashRename()) |
{ |
ParagraphStyle& sty(tmpParaStyles[tmpParaStyles.find(aStyle)]); |
if (dia2->clashRename()) |
{ |
sty.setName(pstyle->getUniqueName(sty.name())); |
sty.setName(pstyle->getUniqueName(sty.name())); |
pstyle->tmpStyles()->create(sty); |
} |
else |
{ |
if (pstyle->tmpStyles()->find(sty.name()) >= 0) |
(*(pstyle->tmpStyles()))[pstyle->tmpStyles()->find(/*it.data()*/aStyle)] = sty; |
else |
pstyle->tmpStyles()->create(sty); |
} |
else |
{ |
if (pstyle->tmpStyles()->find(sty.name()) >= 0) |
(*(pstyle->tmpStyles()))[pstyle->tmpStyles()->find(/*it.data()*/aStyle)] = sty; |
else |
pstyle->tmpStyles()->create(sty); |
} |
} |
//#7315 selected << QPair<QString, QString>(pstyle->typeName(), sty.name()); |
if ((!m_doc->PageColors.contains(sty.charStyle().strokeColor())) && (!neededColors.contains(sty.charStyle().strokeColor()))) |
neededColors.append(sty.charStyle().strokeColor()); |
if ((!m_doc->PageColors.contains(sty.charStyle().fillColor())) && (!neededColors.contains(sty.charStyle().fillColor()))) |
neededColors.append(sty.charStyle().fillColor()); |
} |
if ((!m_doc->PageColors.contains(sty.charStyle().strokeColor())) && (!neededColors.contains(sty.charStyle().strokeColor()))) |
neededColors.append(sty.charStyle().strokeColor()); |
if ((!m_doc->PageColors.contains(sty.charStyle().fillColor())) && (!neededColors.contains(sty.charStyle().fillColor()))) |
neededColors.append(sty.charStyle().fillColor()); |
} |
|
foreach (const QString& aStyle, dia2->characterStyles()) |
foreach (const QString& aStyle, dia2->characterStyles()) |
{ |
CharStyle& sty(tmpCharStyles[tmpCharStyles.find(/*it.data()*/aStyle)]); |
if (dia2->clashRename()) |
{ |
CharStyle& sty(tmpCharStyles[tmpCharStyles.find(/*it.data()*/aStyle)]); |
if (dia2->clashRename()) |
{ |
sty.setName(cstyle->getUniqueName(sty.name())); |
sty.setName(cstyle->getUniqueName(sty.name())); |
cstyle->tmpStyles()->create(sty); |
} |
else |
{ |
if (cstyle->tmpStyles()->find(sty.name()) >= 0) |
(*(cstyle->tmpStyles()))[cstyle->tmpStyles()->find(/*it.data()*/aStyle)] = sty; |
else |
cstyle->tmpStyles()->create(sty); |
} |
else |
{ |
if (cstyle->tmpStyles()->find(sty.name()) >= 0) |
(*(cstyle->tmpStyles()))[cstyle->tmpStyles()->find(/*it.data()*/aStyle)] = sty; |
else |
cstyle->tmpStyles()->create(sty); |
} |
} |
//#7315 selected << QPair<QString, QString>(cstyle->typeName(), sty.name()); |
if ((!m_doc->PageColors.contains(sty.strokeColor())) && (!neededColors.contains(sty.strokeColor()))) |
neededColors.append(sty.strokeColor()); |
if ((!m_doc->PageColors.contains(sty.fillColor())) && (!neededColors.contains(sty.fillColor()))) |
neededColors.append(sty.fillColor()); |
} |
if ((!m_doc->PageColors.contains(sty.strokeColor())) && (!neededColors.contains(sty.strokeColor()))) |
neededColors.append(sty.strokeColor()); |
if ((!m_doc->PageColors.contains(sty.fillColor())) && (!neededColors.contains(sty.fillColor()))) |
neededColors.append(sty.fillColor()); |
} |
|
foreach (const QString& aStyle, dia2->lineStyles()) |
{ |
multiLine &sty = tmpLineStyles[/*it.data()*/aStyle]; |
QString styName = aStyle; |
foreach (const QString& aStyle, dia2->lineStyles()) |
{ |
multiLine &sty = tmpLineStyles[/*it.data()*/aStyle]; |
QString styName = aStyle; |
|
if (dia2->clashRename()) |
styName = lstyle->getUniqueName(aStyle); |
if (dia2->clashRename()) |
styName = lstyle->getUniqueName(aStyle); |
|
lstyle->m_tmpLines[styName] = sty; |
lstyle->m_tmpLines[styName] = sty; |
//#7315 selected << QPair<QString, QString>(lstyle->typeName(), styName); |
|
for (int i = 0; i < sty.count(); ++i) |
{ |
if ((!m_doc->PageColors.contains(sty[i].Color)) && (!neededColors.contains(sty[i].Color))) |
neededColors.append(sty[i].Color); |
} |
for (int i = 0; i < sty.count(); ++i) |
{ |
if ((!m_doc->PageColors.contains(sty[i].Color)) && (!neededColors.contains(sty[i].Color))) |
neededColors.append(sty[i].Color); |
} |
} |
|
if (!neededColors.isEmpty()) |
if (!neededColors.isEmpty()) |
{ |
FileLoader fl(selectedFile); |
if (fl.testFile() == -1) |
{ //TODO put in nice user warning |
delete dia2; |
return; |
} |
ColorList LColors; |
if (fl.readColors(LColors)) |
{ |
FileLoader fl(selectedFile); |
if (fl.testFile() == -1) |
{ //TODO put in nice user warning |
delete dia2; |
return; |
} |
ColorList LColors; |
if (fl.readColors(LColors)) |
ColorList::Iterator itc; |
for (itc = LColors.begin(); itc != LColors.end(); ++itc) |
{ |
ColorList::Iterator itc; |
for (itc = LColors.begin(); itc != LColors.end(); ++itc) |
{ |
if (neededColors.contains(itc.key())) |
m_doc->PageColors.insert(itc.key(), itc.value()); |
} |
if (neededColors.contains(itc.key())) |
m_doc->PageColors.insert(itc.key(), itc.value()); |
} |
} |
} |
delete dia2; |
} |
delete dia2; |
// Start hack part 2 |
pstyle->setCurrentDoc(m_doc); |
cstyle->setCurrentDoc(m_doc); |
pstyle->setCurrentDoc(m_doc); |
cstyle->setCurrentDoc(m_doc); |
// end hack part 2 |
reloadStyleView(false); |
reloadStyleView(false); |
//#7315 setSelection(selected); |
slotDirty(); |
slotDirty(); |
//#7315 slotSetupWidget(); |
slotApply();//#7315 |
} |
else |
return; |
slotApply();//#7315 |
} |
|
void StyleManager::setSelection(const QList<QPair<QString, QString> > &selected) |
515,27 → 513,27 |
if (!m_isEditMode) |
slotOk(); // switch to edit mode for cloning |
|
if (!m_rcStyle.isNull()) |
if (m_rcStyle.isNull()) |
return; |
|
QTreeWidgetItemIterator it(styleView); |
while (*it) |
{ |
QTreeWidgetItemIterator it(styleView); |
while (*it) |
StyleViewItem *item = dynamic_cast<StyleViewItem*>(*it); |
if (item && !item->isRoot()) |
{ |
StyleViewItem *item = dynamic_cast<StyleViewItem*>(*it); |
if (item && !item->isRoot()) |
if (item->rootName() == m_styleClassesSP[m_rcType] && |
item->text(0) == m_rcStyle) |
{ |
if (item->rootName() == m_styleClassesSP[m_rcType] && |
item->text(0) == m_rcStyle) |
{ |
styleView->setCurrentItem(item); |
item->setSelected(true); |
break; |
} |
styleView->setCurrentItem(item); |
item->setSelected(true); |
break; |
} |
++it; |
} |
m_rcStyle.clear(); |
m_rcType.clear(); |
++it; |
} |
m_rcStyle.clear(); |
m_rcType.clear(); |
} |
|
|
873,56 → 871,57 |
|
void StyleManager::addNewType(StyleItem *item, bool loadFromDoc) |
{ |
if (item) { |
m_item = item; |
if (!item) |
return; |
|
QList<StyleName> styles = m_item->styles(loadFromDoc); |
StyleViewItem *rootItem = new StyleViewItem(styleView, m_item->typeName()); |
styleView->expandItem(rootItem); |
QMap<QString, StyleViewItem*> sitems; |
m_item = item; |
|
for (int i = 0; i < styles.count(); ++i) // set the list of styles of this type |
QList<StyleName> styles = m_item->styles(loadFromDoc); |
StyleViewItem *rootItem = new StyleViewItem(styleView, m_item->typeName()); |
styleView->expandItem(rootItem); |
QMap<QString, StyleViewItem*> sitems; |
|
for (int i = 0; i < styles.count(); ++i) // set the list of styles of this type |
{ |
StyleViewItem *sitem; |
if (styles[i].second.isNull()) |
{ |
StyleViewItem *sitem; |
if (styles[i].second.isNull()) |
sitem = new StyleViewItem(rootItem, styles[i].first, m_item->typeName()); |
} |
else if (sitems.contains(styles[i].second)) |
{ |
StyleViewItem *parent = sitems[styles[i].second]; |
sitem = new StyleViewItem(parent, styles[i].first, m_item->typeName()); |
styleView->expandItem(parent); |
} |
else |
{ |
bool postpone = false; |
// search if parent is in remaining styles |
for (int j = i+1; j < styles.count(); ++j) |
{ |
sitem = new StyleViewItem(rootItem, styles[i].first, m_item->typeName()); |
} |
else if (sitems.contains(styles[i].second)) |
{ |
StyleViewItem *parent = sitems[styles[i].second]; |
sitem = new StyleViewItem(parent, styles[i].first, m_item->typeName()); |
styleView->expandItem(parent); |
} |
else |
{ |
bool postpone = false; |
// search if parent is in remaining styles |
for (int j = i+1; j < styles.count(); ++j) |
if (styles[j].first == styles[i].second) |
{ |
if (styles[j].first == styles[i].second) |
{ |
styles.append(styles[i]); // postpone |
postpone = true; |
} |
styles.append(styles[i]); // postpone |
postpone = true; |
} |
if (postpone) |
continue; |
qDebug() << QString("stylemanager: unknown parent '%1' of %2 style '%3'").arg(styles[i].second, m_item->typeName(), styles[i].first); |
sitem = new StyleViewItem(rootItem, styles[i].first, m_item->typeName()); |
} |
if (postpone) |
continue; |
qDebug() << QString("stylemanager: unknown parent '%1' of %2 style '%3'").arg(styles[i].second, m_item->typeName(), styles[i].first); |
sitem = new StyleViewItem(rootItem, styles[i].first, m_item->typeName()); |
} |
|
sitems[styles[i].first] = sitem; |
QString shortcutValue(m_item->shortcut(sitem->text(NAME_COL))); |
sitem->setText(SHORTCUT_COL, shortcutValue); |
sitems[styles[i].first] = sitem; |
QString shortcutValue(m_item->shortcut(sitem->text(NAME_COL))); |
sitem->setText(SHORTCUT_COL, shortcutValue); |
|
QString key = sitem->rootName() + SEPARATOR + sitem->text(NAME_COL); |
if (m_styleActions.contains(key)) |
continue; |
QString key = sitem->rootName() + SEPARATOR + sitem->text(NAME_COL); |
if (m_styleActions.contains(key)) |
continue; |
|
m_styleActions[key] = new ScrAction(ScrAction::DataQString, QPixmap(), QPixmap(), tr("&Apply"), shortcutValue, m_doc->view(), key); |
connect(m_styleActions[key], SIGNAL(triggeredData(QString)), this, SLOT(slotApplyStyle(QString))); |
} |
m_styleActions[key] = new ScrAction(ScrAction::DataQString, QPixmap(), QPixmap(), tr("&Apply"), shortcutValue, m_doc->view(), key); |
connect(m_styleActions[key], SIGNAL(triggeredData(QString)), this, SLOT(slotApplyStyle(QString))); |
} |
} |
|
1022,17 → 1021,17 |
|
void StyleManager::insertShortcutPage(QTabWidget *twidget) |
{ |
if (twidget) |
if (!twidget) |
return; |
|
if (!m_shortcutWidget) |
{ |
if (!m_shortcutWidget) |
{ |
m_shortcutWidget = new ShortcutWidget(nullptr); |
m_shortcutWidget->setAllowedModifiers(Qt::META|Qt::CTRL|Qt::SHIFT|Qt::ALT,0); |
connect(m_shortcutWidget, SIGNAL(newKey(const QString&)), |
this, SLOT(slotShortcutChanged(const QString&))); |
} |
twidget->addTab(m_shortcutWidget, tr("Shortcut")); |
m_shortcutWidget = new ShortcutWidget(nullptr); |
m_shortcutWidget->setAllowedModifiers(Qt::META|Qt::CTRL|Qt::SHIFT|Qt::ALT,0); |
connect(m_shortcutWidget, SIGNAL(newKey(const QString&)), |
this, SLOT(slotShortcutChanged(const QString&))); |
} |
twidget->addTab(m_shortcutWidget, tr("Shortcut")); |
} |
|
void StyleManager::slotNameChanged(const QString& name) |