Example #1
0
void TestStoryText::removeText()
{
    StoryText story;
    story.insertChars(0, QString("Hallo Welt"));
    story.removeChars(5, 5);
    QCOMPARE(story.text(0, story.length()), QString("Hallo"));
}
Example #2
0
void TestStoryText::removePar()
{
    StoryText story;
    story.insertChars(0, QString("Hallo") + SpecialChars::PARSEP + QString("Welt"));
    story.removeChars(3, 6);
    QCOMPARE(story.length(), 10 - 6);
    QCOMPARE(story.text(0, story.length()), QString("Halt"));
}
Example #3
0
void TestStoryText::removePars()
{
    StoryText story;
    story.insertChars(0,
                      QString("0123456789") + SpecialChars::PARSEP +
                      QString("abcdefghijklmnopqrstuvwxyz") + SpecialChars::PARSEP +
                      QString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
    story.removeChars(5 + 26 + 1,  26 + 1);

    QCOMPARE(story.nrOfParagraphs(), 2u);
    QCOMPARE(story.text(0, story.length()),
             QString("0123456789") + SpecialChars::PARSEP + QString("abcdefghijklmnopqrstuVWXYZ"));
}
Example #4
0
void TestStoryText::removeCharStyle()
{
    StoryText story;
    story.insertChars(0,
                      QString("0123456789") + SpecialChars::PARSEP +
                      QString("abcdefghijklmnopqrstuvwxyz") + SpecialChars::PARSEP +
                      QString("ABCDEFGHIJKLMNOPQRSTUVWXYZ"));
    QCOMPARE(story.nrOfRuns(), 3u);
    CharStyle cs;
    cs.setFontSize(10);
    story.applyCharStyle(5 + 26 + 1,  26 + 1, cs);
    story.removeChars(11, 26+1);
    QCOMPARE(story.nrOfRuns(), 3u);
    QCOMPARE(story.startOfRun(0), 0);
    QCOMPARE(story.endOfRun(0), 11);
    QCOMPARE(story.startOfRun(1), 11);
    QCOMPARE(story.endOfRun(1), 5 + 26 + 1);
    QCOMPARE(story.startOfRun(2), 5  + 26 + 1);
    QCOMPARE(story.endOfRun(2), 11 + 26);
}
Example #5
0
void gtAction::write(const QString& text, gtStyle *style, bool isNote)
{
	if (isFirstWrite)
	{
		if (!doAppend)
		{
			if (it->nextInChain() != 0)
			{
				PageItem *nextItem = it->nextInChain();
				while (nextItem != 0)
				{
					nextItem->itemText.clear();
					nextItem = nextItem->nextInChain();
				}
			}
			it->itemText.clear();
		}
	}
	int paragraphStyle = -1;
	if (style->target() == "paragraph")
	{
		gtParagraphStyle* pstyle = dynamic_cast<gtParagraphStyle*>(style);
		assert(pstyle != NULL);
		paragraphStyle = applyParagraphStyle(pstyle);
		if (isFirstWrite)
			inPara = true;
	}
	else if (style->target() == "frame")
	{
		gtFrameStyle* fstyle = dynamic_cast<gtFrameStyle*>(style);
		assert(fstyle != NULL);
		applyFrameStyle(fstyle);
	}

	if ((inPara) && (!lastCharWasLineChange) && (text.left(1) != "\n") && (lastParagraphStyle != -1))
		paragraphStyle = lastParagraphStyle;

	if (paragraphStyle == -1)
		paragraphStyle = 0; //::findParagraphStyle(textFrame->doc(), textFrame->doc()->currentStyle);

	const ParagraphStyle& paraStyle = textFrame->doc()->paragraphStyles()[paragraphStyle];

	gtFont* font = style->getFont();
	QString fontName = validateFont(font).scName();
	CharStyle lastStyle, newStyle;
	int lastStyleStart = 0;
	
	if ((inPara) && (!overridePStyleFont))
	{
		if (paraStyle.charStyle().font().isNone())
		{
			gtFont font2(*font);
			font2.setName(paraStyle.charStyle().font().scName());
			QString fontName2 = validateFont(&font2).scName();
			newStyle.setFont((*textFrame->doc()->AllFonts)[fontName2]);
		}
	}
	else
	{
		setCharStyleAttributes(font, newStyle);
	}
	/*newStyle.eraseCharStyle(paraStyle.charStyle());*/

	lastStyle = newStyle;
	lastStyleStart = it->itemText.length();
	StoryText* story = NULL;
	if (isNote)
	{
		if (noteStory == NULL)
		{
			note = it->m_Doc->newNote(it->m_Doc->m_docNotesStylesList.at(0));
			noteStory = new StoryText(it->m_Doc);
		}
		story = noteStory;
	}
	else
		story = &it->itemText;

	QChar ch0(0), ch5(5), ch10(10), ch13(13); 
	for (int a = 0; a < text.length(); ++a)
	{
		if ((text.at(a) == ch0) || (text.at(a) == ch13))
			continue;
		QChar ch = text.at(a);
		if ((ch == ch10) || (ch == ch5))
			ch = ch13;
		
		int pos = story->length();
		if (isNote && ch == SpecialChars::OBJECT)
		{
			NotesStyle* nStyle = note->notesStyle();
			QString label = "NoteMark_" + nStyle->name();
			if (nStyle->range() == NSRsection)
				label += " in section " + it->m_Doc->getSectionNameForPageIndex(it->OwnPage) + " page " + QString::number(it->OwnPage +1);
			else if (nStyle->range() == NSRpage)
				label += " on page " + QString::number(it->OwnPage +1);
			else if (nStyle->range() == NSRstory)
				label += " in " + it->firstInChain()->itemName();
			else if (nStyle->range() == NSRframe)
				label += " in frame" + it->itemName();
			if (it->m_Doc->getMark(label + "_1", MARKNoteMasterType) != NULL)
				getUniqueName(label,it->m_Doc->marksLabelsList(MARKNoteMasterType), "_"); //FIX ME here user should be warned that inserted mark`s label was changed
			else
				label = label + "_1";
			Mark* mrk = it->m_Doc->newMark();
			mrk->label = label;
			mrk->setType(MARKNoteMasterType);
			mrk->setNotePtr(note);
			note->setMasterMark(mrk);
			mrk->setString("");
			mrk->OwnPage = it->OwnPage;
			it->itemText.insertMark(mrk);
			story->applyCharStyle(lastStyleStart, story->length()-lastStyleStart, lastStyle);
			if (paraStyle.hasName())
			{
				ParagraphStyle pStyle;
				pStyle.setParent(paraStyle.name());
				story->applyStyle(qMax(0,story->length()-1), pStyle);
			}
			else
				story->applyStyle(qMax(0,story->length()-1), paraStyle);
			
			lastCharWasLineChange = text.right(1) == "\n";
			inPara = style->target() == "paragraph";
			lastParagraphStyle = paragraphStyle;
			if (isFirstWrite)
				isFirstWrite = false;
			if (story->text(pos -1) == SpecialChars::PARSEP)
				story->removeChars(pos-1, 1);
			note->setSaxedText(saxedText(story));
			note = NULL;
			delete noteStory;
			noteStory = NULL;
			return;
		}
		else
			story->insertChars(pos, QString(ch));
		if (ch == SpecialChars::PARSEP) 
		{
			if (paraStyle.hasName())
			{
				ParagraphStyle pstyle;
				pstyle.setParent(paraStyle.name());
				story->applyStyle(pos, pstyle);
			}
			else
				story->applyStyle(pos, paraStyle);
		}
	}
	story->applyCharStyle(lastStyleStart, story->length()-lastStyleStart, lastStyle);
	if (paraStyle.hasName())
	{
		ParagraphStyle pStyle;
		pStyle.setParent(paraStyle.name());
		story->applyStyle(qMax(0,story->length()-1), pStyle);
	}
	else
		story->applyStyle(qMax(0,story->length()-1), paraStyle);
	
	lastCharWasLineChange = text.right(1) == "\n";
	inPara = style->target() == "paragraph";
	lastParagraphStyle = paragraphStyle;
	if (isFirstWrite)
		isFirstWrite = false;
}