void gtAction::createParagraphStyle(gtParagraphStyle* pstyle) { ScribusDoc* currDoc=textFrame->doc(); for (int i = 0; i < currDoc->paragraphStyles().count(); ++i) { if (currDoc->paragraphStyles()[i].name() == pstyle->getName()) return; } gtFont* font = pstyle->getFont(); ParagraphStyle vg; setParaStyleAttributes(pstyle, vg); setCharStyleAttributes(font, vg.charStyle()); // Maybe set those attributes when target is the frame /*vg.charStyle().setShadowXOffset(50); vg.charStyle().setShadowYOffset(-50); vg.charStyle().setOutlineWidth(10); vg.charStyle().setScaleH(1000); vg.charStyle().setScaleV(1000); vg.charStyle().setBaselineOffset(0); vg.charStyle().setTracking(0); vg.charStyle().setUnderlineOffset(textFrame->doc()->typographicSettings.valueUnderlinePos); vg.charStyle().setUnderlineWidth(textFrame->doc()->typographicSettings.valueUnderlineWidth); vg.charStyle().setStrikethruOffset(textFrame->doc()->typographicSettings.valueStrikeThruPos); vg.charStyle().setStrikethruWidth(textFrame->doc()->typographicSettings.valueStrikeThruPos);*/ StyleSet<ParagraphStyle> tmp; tmp.create(vg); textFrame->doc()->redefineStyles(tmp, false); m_ScMW->propertiesPalette->textPal->updateParagraphStyles(); }
void PropertiesPalette_Text::updateStyle(const ParagraphStyle& newCurrent) { if (!m_ScMW || m_ScMW->scriptIsRunning()) return; const CharStyle& charStyle = newCurrent.charStyle(); advancedWidgets->updateStyle(newCurrent); colorWidgets->updateStyle(newCurrent); optMargins->updateStyle(newCurrent); orphanBox->updateStyle (newCurrent); parEffectWidgets->updateStyle(newCurrent); showFontFace(charStyle.font().scName()); showFontSize(charStyle.fontSize()); bool tmp = m_haveItem; m_haveItem = false; setupLineSpacingSpinbox(newCurrent.lineSpacingMode(), newCurrent.lineSpacing()); lineSpacingModeCombo->setCurrentIndex(newCurrent.lineSpacingMode()); textAlignment->setStyle(newCurrent.alignment()); m_haveItem = tmp; }
void gtAction::updateParagraphStyle(int pstyleIndex, gtParagraphStyle* pstyle) { gtFont* font = pstyle->getFont(); ParagraphStyle vg; setParaStyleAttributes(pstyle, vg); setCharStyleAttributes(font, vg.charStyle()); // Maybe set those attributes when target is the frame /*vg.charStyle().setShadowXOffset(50); vg.charStyle().setShadowYOffset(-50); vg.charStyle().setOutlineWidth(10); vg.charStyle().setScaleH(1000); vg.charStyle().setScaleV(1000); vg.charStyle().setBaselineOffset(0); vg.charStyle().setTracking(0); vg.charStyle().setUnderlineOffset(textFrame->doc()->typographicSettings.valueUnderlinePos); vg.charStyle().setUnderlineWidth(textFrame->doc()->typographicSettings.valueUnderlineWidth); vg.charStyle().setStrikethruOffset(textFrame->doc()->typographicSettings.valueStrikeThruPos); vg.charStyle().setStrikethruWidth(textFrame->doc()->typographicSettings.valueStrikeThruPos);*/ StyleSet<ParagraphStyle> tmp; tmp.create(vg); textFrame->doc()->redefineStyles(tmp, false); if (vg.name() != textFrame->doc()->paragraphStyles()[pstyleIndex].name()) { QMap<QString, QString> map; map[textFrame->doc()->paragraphStyles()[pstyleIndex].name()] = vg.name(); textFrame->doc()->replaceStyles(map); } }
QList<TextShaper::TextRun> TextShaper::itemizeBiDi() { QList<TextRun> textRuns; UBiDi *obj = ubidi_open(); UErrorCode err = U_ZERO_ERROR; UBiDiLevel parLevel = UBIDI_LTR; ParagraphStyle style = m_story.paragraphStyle(m_firstChar); if (style.direction() == ParagraphStyle::RTL) parLevel = UBIDI_RTL; ubidi_setPara(obj, (const UChar*) m_text.utf16(), m_text.length(), parLevel, NULL, &err); if (U_SUCCESS(err)) { int32_t count = ubidi_countRuns(obj, &err); if (U_SUCCESS(err)) { textRuns.reserve(count); for (int32_t i = 0; i < count; i++) { int32_t start, length; UBiDiDirection dir = ubidi_getVisualRun(obj, i, &start, &length); textRuns.append(TextRun(start, length, dir)); } } } ubidi_close(obj); return textRuns; }
void PropertyWidget_Distance::handleTabs() { if (m_doc && m_item) { PageItem_TextFrame *tItem = m_item->asTextFrame(); if (tItem == 0) return; const ParagraphStyle& style(m_doc->appMode == modeEdit ? tItem->currentStyle() : tItem->itemText.defaultStyle()); TabManager *dia = new TabManager(this, m_doc->unitIndex(), style.tabValues(), tItem->columnWidth()); if (dia->exec()) { if (m_doc->appMode != modeEdit) { ParagraphStyle newStyle(m_item->itemText.defaultStyle()); newStyle.setTabValues(dia->tmpTab); Selection tempSelection(this, false); tempSelection.addItem(m_item, true); m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection); } else { ParagraphStyle newStyle; newStyle.setTabValues(dia->tmpTab); m_doc->itemSelection_ApplyParagraphStyle(newStyle); } m_item->update(); } delete dia; } }
void PropertyWidget_ParEffect::handlePEIndent(bool indent) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setParEffectIndent(indent); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handlePEOffset(double offset) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setParEffectOffset(offset / m_unitRatio); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handleNumStart(int start) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setNumStart(start); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handleNumSuffix(QString suffix) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setNumSuffix(suffix); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handleDropCapLines(int dcLines) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setDropCapLines(dcLines); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handlePECharStyle(QString name) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; newStyle.setPeCharStyleName(name); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handleBulletStr(QString bulStr) { if (!m_doc || !m_item) return; ParagraphStyle newStyle; if (bulStr.isEmpty()) bulStr = QChar(0x2022); newStyle.setBulletStr(bulStr); handleChanges(m_item, newStyle); }
void PropertyWidget_ParEffect::handleNumName(QString numName) { if (!m_doc || !m_item) return; disconnectSignals(); ParagraphStyle newStyle; if (numName == "<local block>") { newStyle.setNumOther(true); newStyle.setNumHigher(true); newStyle.setNumRestart(NSRstory); } else { NumStruct * numS = m_doc->numerations.value(numName); Q_ASSERT(numS); int level = qMin(numLevelSpin->value(), numS->m_counters.count()) -1; numLevelSpin->setValue(level +1); newStyle.setNumLevel(level); Numeration num = numS->m_nums[level]; numFormatCombo->setCurrentIndex((int) num.numFormat); numStart->setValue(num.start); numPrefix->setText(num.prefix); numSuffix->setText(num.suffix); } newStyle.setNumPrefix(numPrefix->text()); newStyle.setNumSuffix(numSuffix->text()); newStyle.setNumName(numName); newStyle.setNumFormat((NumFormat) numFormatCombo->currentIndex()); handleChanges(m_item, newStyle); connectSignals(); }
void begin (const Xml_string& /*tagname*/, Xml_attr attr) { ParagraphStyle* pstyle = this->dig->top<ParagraphStyle>(); ParagraphStyle::TabRecord tb; tb.tabPosition = parseDouble(attr["pos"]); tb.tabFillChar = QChar(parseInt(attr["fillChar"])); tb.tabType = parseInt(attr["type"]); QList<ParagraphStyle::TabRecord> tabs = pstyle->tabValues(); tabs.append(tb); pstyle->setTabValues(tabs); }
void ParagraphStyle::eraseStyle(const ParagraphStyle& other) { other.validate(); Style::eraseStyle(other); m_cstyle.eraseCharStyle(other.charStyle()); m_cstyleContext.invalidate(); #define ATTRDEF(attr_TYPE, attr_GETTER, attr_NAME, attr_DEFAULT) \ if (!inh_##attr_NAME && m_##attr_NAME == other.m_##attr_NAME) \ reset##attr_NAME(); #include "paragraphstyle.attrdefs.cxx" #undef ATTRDEF }
void ParagraphStyle::setStyle(const ParagraphStyle & other) { other.validate(); setParent(other.parent()); m_contextversion = -1; m_cstyle.setStyle(other.charStyle()); m_cstyleContext.invalidate(); #define ATTRDEF(attr_TYPE, attr_GETTER, attr_NAME, attr_DEFAULT) \ inh_##attr_NAME = other.inh_##attr_NAME; \ m_##attr_NAME = other.m_##attr_NAME; #include "paragraphstyle.attrdefs.cxx" #undef ATTRDEF }
void XtgScanner::applyCStyle2() { //apply normal character style sheet <@$> define = 0; flushText(); QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; newStyle.setParent(pStyle); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); currentCharStyle = newStyle.charStyle(); currentCharStyle.setFontSize(120.0); styleEffects = ScStyle_None; currentCharStyle.setFeatures(styleEffects.featureList()); }
ParagraphStyle::ParagraphStyle(const ParagraphStyle& other) : Style(other), m_cstyleContext(NULL), m_cstyleContextIsInh(other.m_cstyleContextIsInh), m_cstyle(other.charStyle()) { if (m_cstyleContextIsInh) m_cstyle.setContext(NULL); else m_cstyle.setContext(other.charStyle().context()); m_cstyleContext.setDefaultStyle( &m_cstyle ); // qDebug() << QString("ParagraphStyle(%2) %1").arg(reinterpret_cast<uint>(&other)).arg(reinterpret_cast<uint>(this)); other.validate(); #define ATTRDEF(attr_TYPE, attr_GETTER, attr_NAME, attr_DEFAULT) \ m_##attr_NAME = other.m_##attr_NAME; \ inh_##attr_NAME = other.inh_##attr_NAME; #include "paragraphstyle.attrdefs.cxx" #undef ATTRDEF }
void PropertyWidget_Advanced::handleMaxGlyphExtension() { if (!m_doc || !m_item || !m_ScMW || m_ScMW->scriptIsRunning()) return; PageItem *i2 = m_item; if (m_doc->appMode == modeEditTable) i2 = m_item->asTable()->activeCell().textFrame(); if (i2 != NULL) { Selection tempSelection(this, false); tempSelection.addItem(i2, true); ParagraphStyle newStyle; newStyle.setMaxGlyphExtension(maxGlyphExtSpinBox->value() / 100.0); m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection); } }
void ParagraphStyle::applyStyle(const ParagraphStyle& other) { if (other.hasParent() && (other.parent() != Style::INHERIT_PARENT)) { setStyle(other); return; } Style::applyStyle(other); m_cstyle.applyCharStyle(other.charStyle()); m_cstyleContext.invalidate(); #define ATTRDEF(attr_TYPE, attr_GETTER, attr_NAME, attr_DEFAULT) \ if (! other.inh_##attr_NAME) \ set##attr_NAME(other.m_##attr_NAME); #include "paragraphstyle.attrdefs.cxx" #undef ATTRDEF }
PageItem_NoteFrame::PageItem_NoteFrame(NotesStyle *nStyle, ScribusDoc *doc, double x, double y, double w, double h, double w2, QString fill, QString outline) : PageItem_TextFrame(doc, x, y, w, h, w2, fill, outline) { m_nstyle = nStyle; m_masterFrame = NULL; itemText.clear(); AnName = generateUniqueCopyName(nStyle->isEndNotes() ? tr("Endnote frame ") + m_nstyle->name() : tr("Footnote frame ") + m_nstyle->name(), false); AutoName = false; //endnotes frame will saved with name setUName(AnName); //set default style for note frame ParagraphStyle newStyle; if (nStyle->notesParStyle().isEmpty() || (nStyle->notesParStyle() == tr("No Style"))) { if (nStyle->isEndNotes()) //set default doc style newStyle.setParent(m_Doc->paragraphStyles()[0].name()); else { newStyle.setParent(m_masterFrame->itemText.defaultStyle().parent()); newStyle.applyStyle(m_masterFrame->currentStyle()); } } else newStyle.setParent(nStyle->notesParStyle()); itemText.blockSignals(true); itemText.setDefaultStyle(newStyle); itemText.blockSignals(false); textFlowModeVal = TextFlowUsesFrameShape; setColumns(1); if (m_nstyle->isAutoNotesHeight()) m_SizeVLocked = true; else m_SizeVLocked = false; if (m_nstyle->isAutoNotesWidth()) m_SizeHLocked = true; else m_SizeHLocked = false; if (m_nstyle->isAutoNotesHeight() && m_nstyle->isAutoNotesWidth()) m_SizeLocked = true; else m_SizeLocked = false; deleteIt = false; }
void PropertyWidget_Advanced::updateStyle(const ParagraphStyle& newCurrent) { if (!m_ScMW || m_ScMW->scriptIsRunning()) return; const CharStyle& charStyle = newCurrent.charStyle(); showTextScaleH(charStyle.scaleH()); showTextScaleV(charStyle.scaleV()); showTracking(charStyle.tracking()); showBaseLineOffset(charStyle.baselineOffset()); minWordTrackingSpinBox->showValue(newCurrent.minWordTracking() * 100.0); normWordTrackingSpinBox->showValue(newCurrent.charStyle().wordTracking() * 100.0); minGlyphExtSpinBox->showValue(newCurrent.minGlyphExtension() * 100.0); maxGlyphExtSpinBox->showValue(newCurrent.maxGlyphExtension() * 100.0); }
void PageItem_NoteFrame::setNS(NotesStyle *nStyle, PageItem_TextFrame* master) { m_nstyle = nStyle; if (master != NULL) m_masterFrame = master; itemText.clear(); AnName = generateUniqueCopyName(m_nstyle->isEndNotes() ? "Endnote frame " + m_nstyle->name() : "Footnote frame " + m_nstyle->name(), false); setUName(AnName); //set default style for note frame ParagraphStyle newStyle; if (nStyle->notesParStyle().isEmpty() || (nStyle->notesParStyle() == tr("No Style"))) { if (nStyle->isEndNotes() || (m_masterFrame == NULL)) { //set default doc style newStyle.setParent(m_Doc->paragraphStyles()[0].name()); } else if (master != NULL) { newStyle.setParent(m_masterFrame->itemText.defaultStyle().parent()); newStyle.applyStyle(m_masterFrame->currentStyle()); } } else newStyle.setParent(nStyle->notesParStyle()); itemText.blockSignals(true); itemText.setDefaultStyle(newStyle); itemText.blockSignals(false); if (m_nstyle->isAutoNotesHeight()) m_SizeVLocked = true; else m_SizeVLocked = false; if (m_nstyle->isAutoNotesWidth()) m_SizeHLocked = true; else m_SizeHLocked = false; if (m_nstyle->isAutoNotesHeight() && m_nstyle->isAutoNotesWidth()) m_SizeLocked = true; else m_SizeLocked = false; }
int findParagraphStyle(ScribusDoc* doc, const ParagraphStyle& parStyle) { bool named = !parStyle.name().isEmpty(); //qDebug() << QString("looking up %1/ %2").arg(parStyle.name()).arg(parStyle.alignment()); if (named) { for (int i=0; i < doc->paragraphStyles().count(); ++i) { //qDebug() << QString("%1 %2").arg(i).arg(doc->paragraphStyles()[i].name()); if (parStyle.name() == doc->paragraphStyles()[i].name()) { return i; } } assert(false); return -1; } else { return -1; } }
void PropertyWidget_TextColor::updateStyle(const ParagraphStyle& newCurrent) { if (!m_ScMW || m_ScMW->scriptIsRunning()) return; const CharStyle& charStyle = newCurrent.charStyle(); showOutlineW (charStyle.outlineWidth()); showShadowOffset(charStyle.shadowXOffset(), charStyle.shadowYOffset()); showTextColors(charStyle.strokeColor(), charStyle.fillColor(), charStyle.strokeShade(), charStyle.fillShade()); showTextEffects(charStyle.effects()); showStrikeThru(charStyle.strikethruOffset() , charStyle.strikethruWidth()); showUnderline (charStyle.underlineOffset(), charStyle.underlineWidth()); }
void PropertyWidget_ParEffect::handleNumLevel(int level) { if (!m_doc || !m_item) return; if ((numComboBox->currentText() != "<local block>") && level == numLevelSpin->maximum()) { NumStruct * numS = m_doc->numerations.value(numComboBox->currentText()); Q_ASSERT(numS); while (level > numS->m_counters.count()) { numS->m_counters.append(0); Numeration num; num.numFormat = (NumFormat) numFormatCombo->currentIndex(); num.prefix = numPrefix->text(); num.suffix = numSuffix->text(); num.start = numStart->value(); numS->m_nums.append(num); } } ParagraphStyle newStyle; newStyle.setNumLevel(level -1); handleChanges(m_item, newStyle); }
void end (const Xml_string& /*tagname*/) { ParagraphStyle* pstyle = this->dig->top<ParagraphStyle>(1); CharStyle* cstyle = this->dig->top<CharStyle>(0); pstyle->charStyle() = *cstyle; }
/*! 02.01.2007 - 05.01.2007 : Joachim Neu : Create a paragraph style. Special thanks go to avox for helping me! */ PyObject *scribus_createparagraphstyle(PyObject* /* self */, PyObject* args, PyObject* keywords) { char* keywordargs[] = { const_cast<char*>("name"), const_cast<char*>("linespacingmode"), const_cast<char*>("linespacing"), const_cast<char*>("alignment"), const_cast<char*>("leftmargin"), const_cast<char*>("rightmargin"), const_cast<char*>("gapbefore"), const_cast<char*>("gapafter"), const_cast<char*>("firstindent"), const_cast<char*>("hasdropcap"), const_cast<char*>("dropcaplines"), const_cast<char*>("dropcapoffset"), const_cast<char*>("charstyle"), NULL}; char *Name = const_cast<char*>(""), *CharStyle = const_cast<char*>(""); int LineSpacingMode = 0, LineSpacing = 15, Alignment = 0, LeftMargin = 0, RightMargin = 0, GapBefore = 0, GapAfter = 0, FirstIndent = 0, DropCapLines = 2, DropCapOffset = 0, HasDropCap = 0; if (!PyArg_ParseTupleAndKeywords(args, keywords, "es|iiiiiiiiiiies", keywordargs, "utf-8", &Name, &LineSpacingMode, &LineSpacing, &Alignment, &LeftMargin, &RightMargin, &GapBefore, &GapAfter, &FirstIndent, &HasDropCap, &DropCapLines, &DropCapOffset, "utf-8", &CharStyle)) return NULL; if(!checkHaveDocument()) return NULL; if (Name == EMPTY_STRING) { PyErr_SetString(PyExc_ValueError, QObject::tr("Cannot have an empty paragraph style name.","python error").toLocal8Bit().constData()); return NULL; } ParagraphStyle TmpParagraphStyle; TmpParagraphStyle.setName(Name); TmpParagraphStyle.setLineSpacingMode((ParagraphStyle::LineSpacingMode)LineSpacingMode); TmpParagraphStyle.setLineSpacing(LineSpacing); TmpParagraphStyle.setAlignment((ParagraphStyle::AlignmentType)Alignment); TmpParagraphStyle.setLeftMargin(LeftMargin); TmpParagraphStyle.setFirstIndent(FirstIndent); TmpParagraphStyle.setRightMargin(RightMargin); TmpParagraphStyle.setGapBefore(GapBefore); TmpParagraphStyle.setGapAfter(GapAfter); if(HasDropCap == 0) TmpParagraphStyle.setHasDropCap(false); else if(HasDropCap == 1) TmpParagraphStyle.setHasDropCap(true); else { PyErr_SetString(PyExc_ValueError, QObject::tr("hasdropcap has to be 0 or 1.","python error").toLocal8Bit().constData()); return NULL; } TmpParagraphStyle.setDropCapLines(DropCapLines); TmpParagraphStyle.setDropCapOffset(DropCapOffset); TmpParagraphStyle.charStyle().setParent(CharStyle); StyleSet<ParagraphStyle> TmpStyleSet; TmpStyleSet.create(TmpParagraphStyle); ScCore->primaryMainWindow()->doc->redefineStyles(TmpStyleSet, false); // PV - refresh the Style Manager window. // I thought that this can work but it doesn't: // ScCore->primaryMainWindow()->styleMgr()->reloadStyleView(); // So the brute force setDoc is called... ScCore->primaryMainWindow()->styleMgr()->setDoc(ScCore->primaryMainWindow()->doc); Py_RETURN_NONE; }
void FileLoader::readParagraphStyle(ParagraphStyle& vg, const QDomElement& pg, SCFonts &avail, ScribusDoc *currDoc) { vg.setName(pg.attribute("NAME")); vg.setLineSpacingMode(static_cast<ParagraphStyle::LineSpacingMode>(pg.attribute("LINESPMode", "0").toInt())); vg.setLineSpacing(ScCLocale::toDoubleC(pg.attribute("LINESP"))); vg.setLeftMargin(ScCLocale::toDoubleC(pg.attribute("INDENT"), 0.0)); if (pg.hasAttribute("RMARGIN")) vg.setRightMargin(ScCLocale::toDoubleC(pg.attribute("RMARGIN"), 0.0)); else vg.setRightMargin(0); vg.setFirstIndent(ScCLocale::toDoubleC(pg.attribute("FIRST"), 0.0)); vg.setAlignment(static_cast<ParagraphStyle::AlignmentType>(pg.attribute("ALIGN").toInt())); vg.setGapBefore(ScCLocale::toDoubleC(pg.attribute("VOR"), 0.0)); vg.setGapAfter(ScCLocale::toDoubleC(pg.attribute("NACH"), 0.0)); QString tmpf = pg.attribute("FONT", currDoc->toolSettings.defFont); currDoc->AllFonts->findFont(tmpf, currDoc); vg.charStyle().setFont((*currDoc->AllFonts)[tmpf]); vg.charStyle().setFontSize(qRound(ScCLocale::toDoubleC(pg.attribute("FONTSIZE"), 12.0) * 10.0)); vg.setHasDropCap(static_cast<bool>(pg.attribute("DROP", "0").toInt())); vg.setDropCapLines(pg.attribute("DROPLIN", "2").toInt()); vg.setDropCapOffset(ScCLocale::toDoubleC(pg.attribute("DROPDIST"), 0.0)); vg.charStyle().setFeatures(static_cast<StyleFlag>(pg.attribute("EFFECT", "0").toInt()).featureList()); vg.charStyle().setFillColor(pg.attribute("FCOLOR", currDoc->toolSettings.dBrush)); vg.charStyle().setFillShade(pg.attribute("FSHADE", "100").toInt()); vg.charStyle().setStrokeColor(pg.attribute("SCOLOR", currDoc->toolSettings.dPen)); vg.charStyle().setStrokeShade(pg.attribute("SSHADE", "100").toInt()); if (static_cast<bool>(pg.attribute("BASE", "0").toInt())) vg.setLineSpacingMode(ParagraphStyle::BaselineGridLineSpacing); vg.charStyle().setShadowXOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSHX"), 5.0)) * 10); vg.charStyle().setShadowYOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSHY"), -5.0)) * 10); vg.charStyle().setOutlineWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTOUT"), 1.0)) * 10); vg.charStyle().setUnderlineOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTULP"), -0.1)) * 10); vg.charStyle().setUnderlineWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTULW"), -0.1)) * 10); vg.charStyle().setStrikethruOffset(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSTP"), -0.1)) * 10); vg.charStyle().setStrikethruWidth(qRound(ScCLocale::toDoubleC(pg.attribute("TXTSTW"), -0.1)) * 10); vg.charStyle().setScaleH(qRound(ScCLocale::toDoubleC(pg.attribute("SCALEH"), 100.0)) * 10); vg.charStyle().setScaleV(qRound(ScCLocale::toDoubleC(pg.attribute("SCALEV"), 100.0)) * 10); vg.charStyle().setBaselineOffset(qRound(ScCLocale::toDoubleC(pg.attribute("BASEO"), 0.0)) * 10); vg.charStyle().setTracking(qRound(ScCLocale::toDoubleC(pg.attribute("KERN"), 0.0)) * 10); if ((pg.hasAttribute("NUMTAB")) && (pg.attribute("NUMTAB", "0").toInt() != 0)) { QList<ParagraphStyle::TabRecord> tbs; ParagraphStyle::TabRecord tb; QString tmp = pg.attribute("TABS"); QTextStream tgv(&tmp, QIODevice::ReadOnly); QString xf, xf2; for (int cxv = 0; cxv < pg.attribute("NUMTAB", "0").toInt(); cxv += 2) { tgv >> xf; tgv >> xf2; tb.tabPosition = ScCLocale::toDoubleC(xf2); tb.tabType = static_cast<int>(ScCLocale::toDoubleC(xf)); tb.tabFillChar = QChar(); tbs.append(tb); } vg.setTabValues(tbs); tmp = ""; }
void PropertyWidget_OptMargins::displayOpticalMargins(const ParagraphStyle & pStyle) { ParagraphStyle::OpticalMarginType omt(static_cast<ParagraphStyle::OpticalMarginType>(pStyle.opticalMargins())); bool blocked = optMarginRadioBoth->blockSignals(true); if (omt == ParagraphStyle::OM_Default) optMarginRadioBoth->setChecked(true); else if (omt == ParagraphStyle::OM_LeftHangingPunct) optMarginRadioLeft->setChecked(true); else if (omt == ParagraphStyle::OM_RightHangingPunct) optMarginRadioRight->setChecked(true); else optMarginRadioNone->setChecked(true); optMarginRadioBoth->blockSignals(blocked); }