void ParagraphStyle::applyStyle(const ParagraphStyle& other) { if (other.hasParent() && (other.parent() != Style::INHERIT_PARENT)) { setStyle(other); return; } Style::applyStyle(other); cstyle.applyCharStyle(other.charStyle()); 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 }
void PropertyWidget_Advanced::handleNormWordTracking() { 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.charStyle().setWordTracking(normWordTrackingSpinBox->value() / 100.0); m_doc->itemSelection_ApplyParagraphStyle(newStyle, &tempSelection); } }
void XtgScanner::applyCStyle3() { //apply paragraph's character stylesheet <@$p> 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()); // currentCharStyle = currentParagraphStyle.charStyle(); // writer->setCharStyle(currentCharStyle); // currentCharStyle = writer->getCurrentCharStyle(); }
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 = ""; }
PageItem_NoteFrame::PageItem_NoteFrame(PageItem_TextFrame* inFrame, NotesStyle *nStyle) : PageItem_TextFrame(inFrame->doc(),inFrame->xPos(), inFrame->yPos(),inFrame->width(), inFrame->height(),inFrame->lineWidth(), inFrame->fillColor(), inFrame->lineColor()) { m_nstyle = nStyle; m_masterFrame = inFrame; AnName = generateUniqueCopyName(nStyle->isEndNotes() ? tr("Endnote frame ") + m_nstyle->name() : tr("Footnote frame ") + m_nstyle->name(), false); AutoName = false; 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); double frameHeight = calculateLineSpacing(newStyle, this); if (frameHeight == 0.0 && !m_nstyle->isAutoNotesHeight()) frameHeight = newStyle.charStyle().fontSize()/10; m_height = oldHeight = frameHeight; oldWidth = m_width; oldRot = m_rotation; oldXpos = m_xPos; m_yPos = oldYpos =m_masterFrame->yPos() + m_masterFrame->height(); textFlowModeVal = TextFlowUsesFrameShape; setColumns(1); if (m_nstyle->isAutoWeldNotesFrames() && (m_masterFrame != NULL)) { addWelded(m_masterFrame); m_masterFrame->addWelded(this); m_masterFrame->setWeldPoint(0, m_masterFrame->height(), this); setWeldPoint(0,0, m_masterFrame); } 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 XtgScanner::definePStyles() { QString s1,s2,s3; enterState(stringMode); define = 2; if (token == "[S\"") s1 = getToken(); else { while (lookAhead() != '\"') top++; //skip the inch top++; s1 = getToken(); //will contain the string 1 } // top = top + 2; //we have to skip comma and next inch character while (lookAhead() != '\"') top++; top++; s2 = getToken(); if (lookAhead() != ']' ) { while (lookAhead() != '\"') top++; top++; // top = top + 2; s3 = getToken(); } top++; // to ensure that ] is avoided QString pStyle = CommonStrings::DefaultParagraphStyle; ParagraphStyle newStyle; if (s1 != "") { if (doc->paragraphStyles().contains(m_item->itemName() + "_" + s1)) newStyle.setParent(m_item->itemName() + "_" + s1); else if (doc->paragraphStyles().contains(s1)) newStyle.setParent(s1); else newStyle.setParent(pStyle); } else newStyle.setParent(pStyle); if (m_prefixName) newStyle.setName(m_item->itemName() + "_" + sfcName); else newStyle.setName((sfcName)); newStyle.setLineSpacingMode(ParagraphStyle::AutomaticLineSpacing); if (s3 != "") { if (doc->charStyles().contains(m_item->itemName() + "_" + s3)) newStyle.charStyle().setParent(m_item->itemName() + "_" + s3); else if (doc->charStyles().contains(s3)) newStyle.charStyle().setParent(s3); else newStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle); } else { newStyle.charStyle().setParent(CommonStrings::DefaultCharacterStyle); newStyle.charStyle().setFontSize(120.0); styleEffects = ScStyle_None; newStyle.charStyle().setFeatures(styleEffects.featureList()); } currentParagraphStyle = newStyle; currentCharStyle = newStyle.charStyle(); enterState(textMode); }