KPIMTextEdit::MarkupDirector

Search for usage in LXR

#include <grantlee/markupdirector.h>

Public Member Functions

 MarkupDirector (KPIMTextEdit::AbstractMarkupBuilder *builder)
 
virtual ~MarkupDirector ()
 
virtual QTextFrame::iterator processBlock (QTextFrame::iterator it, const QTextBlock &block)
 
virtual QTextFrame::iterator processBlockContents (QTextFrame::iterator it, const QTextBlock &block)
 
virtual QPair< QTextFrame::iterator, QTextBlockprocessBlockGroup (const QTextFrame::iterator &it, const QTextBlock &block, QTextBlockGroup *textBlockGroup)
 
virtual QTextBlock::iterator processCharTextObject (QTextBlock::iterator it, const QTextFragment &fragment, QTextObject *textObject)
 
virtual void processCustomFragment (const QTextFragment &fragment, QTextDocument const *doc)
 
virtual void processDocument (QTextDocument *doc)
 
virtual QTextBlock::iterator processFragment (QTextBlock::iterator it, const QTextFragment &fragment, QTextDocument const *doc)
 
virtual QTextFrame::iterator processFrame (QTextFrame::iterator it, QTextFrame *frame)
 
virtual QTextBlock::iterator processImage (QTextBlock::iterator it, const QTextImageFormat &imageFormat, QTextDocument const *doc)
 
virtual QPair< QTextFrame::iterator, QTextBlockprocessList (QTextFrame::iterator it, const QTextBlock &block, QTextList *textList)
 
virtual QTextFrame::iterator processObject (QTextFrame::iterator it, const QTextBlock &block, QTextObject *textObject)
 
virtual QTextFrame::iterator processTable (QTextFrame::iterator it, QTextTable *table)
 
virtual void processTableCell (const QTextTableCell &tableCell, QTextTable *table)
 

Protected Types

enum  OpenElementValues {
  None = 0x0 , SuperScript = 0x01 , SubScript = 0x02 , Anchor = 0x04 ,
  SpanForeground = 0x08 , SpanBackground = 0x10 , SpanFontFamily = 0x20 , SpanFontPointSize = 0x40 ,
  Strong = 0x80 , Emph = 0x100 , Underline = 0x200 , StrikeOut = 0x400
}
 

Protected Member Functions

virtual QSet< int > getElementsToClose (const QTextBlock::iterator &it) const
 
virtual QList< int > getElementsToOpen (const QTextBlock::iterator &it)
 
virtual void processClosingElements (const QTextBlock::iterator &it)
 
void processDocumentContents (QTextFrame::iterator begin, const QTextFrame::iterator &end)
 
virtual void processOpeningElements (const QTextBlock::iterator &it)
 
QPair< QTextFrame::iterator, QTextBlockskipBlockGroup (QTextFrame::iterator it, const QTextBlock &_block, QTextBlockGroup *blockGroup)
 
QList< int > sortOpeningOrder (QSet< int > openingTags, QTextBlock::iterator it) const
 

Protected Attributes

MarkupDirectorPrivate *const d_ptr
 
KPIMTextEdit::AbstractMarkupBuilder *const m_builder
 

Detailed Description

Instructs a builder object to create markup output.

The MarkupDirector is used with an implementation of AbstractMarkupBuilder to create a marked up document output.

Usage can be quite simple.

auto doc = editor->document(); // editor is a QTextEdit
auto builder = new HTMLBuilder();
auto md = new MarkupDirector(builder);
md->processDocument(doc);
browser->setHtml(builder->getResult()); // browser is a QTextBrowser.
MarkupDirector(KPIMTextEdit::AbstractMarkupBuilder *builder)
Constructor.

Or with a different builder:

auto builder = new PlainTextMarkupBuilder();
auto md = new MarkupDirector(builder);
md->processDocument(doc);
browser->setPlainText(builder->getResult());

The MarkupDirector also provides API for processing just part of a QTextDocument, such as a QTextFrame or a QTextBlock. The appropriate method may then be called with an invalid iterator as appropriate.

// ... Do some processing to get a QTextFrame.
auto frame = getFrame();
auto builder = new PlainTextMarkupBuilder();
auto md = new MarkupDirector(builder);
// Create output from only the frame.
md->processFrame(QTextFrame::iterator(), frame);
browser->setPlainText(builder->getResult());

The behaviour of the MarkupDirector can be customized by subclassing. Support for custom types can also be added by implementing the processCustomFragment method.

See also
custom_qtextobject
Author
Stephen Kelly steve.nosp@m.ire@.nosp@m.gmail.nosp@m..com

Definition at line 75 of file markupdirector.h.

Member Enumeration Documentation

◆ OpenElementValues

Flags for the tags that may be open.

Enumerator
SuperScript 

No tags are open.

SubScript 

A superscript tag is open.

Anchor 

A subscript tag is open.

SpanForeground 

An anchor tag is open.

SpanBackground 

A foreground altering span tag is open.

SpanFontFamily 

A background altering span tag is open.

SpanFontPointSize 

A font family altering span tag is open.

Strong 

A font size altering span tag is open.

Emph 

A strong tag is open.

Underline 

A emphasis tag is open.

StrikeOut 

An underline tag is open.

Definition at line 235 of file markupdirector.h.

Constructor & Destructor Documentation

◆ MarkupDirector()

MarkupDirector::MarkupDirector ( KPIMTextEdit::AbstractMarkupBuilder * builder)
explicit

Constructor.

Definition at line 30 of file markupdirector.cpp.

◆ ~MarkupDirector()

MarkupDirector::~MarkupDirector ( )
virtual

Destructor.

Definition at line 36 of file markupdirector.cpp.

Member Function Documentation

◆ getElementsToClose()

QSet< int > MarkupDirector::getElementsToClose ( const QTextBlock::iterator & it) const
nodiscardprotectedvirtual

Returns the tags that should be closed at the position of it.

Definition at line 668 of file markupdirector.cpp.

◆ getElementsToOpen()

QList< int > MarkupDirector::getElementsToOpen ( const QTextBlock::iterator & it)
nodiscardprotectedvirtual

Returns the tags that should be opened at the position of it.

Definition at line 754 of file markupdirector.cpp.

◆ processBlock()

QTextFrame::iterator MarkupDirector::processBlock ( QTextFrame::iterator it,
const QTextBlock & block )
nodiscardvirtual

Directs the builder to create output for the single block.

If calling this method directly, an invalid QTextFrame::iterator may be used.

This method does not process the contents of the block, but uses the processBlockContents method to do so.

Definition at line 266 of file markupdirector.cpp.

◆ processBlockContents()

QTextFrame::iterator MarkupDirector::processBlockContents ( QTextFrame::iterator it,
const QTextBlock & block )
virtual

Directs the builder to create output for the contents of the single block.

If calling this method directly, an invalid QTextFrame::iterator may be used.

Definition at line 43 of file markupdirector.cpp.

◆ processBlockGroup()

QPair< QTextFrame::iterator, QTextBlock > MarkupDirector::processBlockGroup ( const QTextFrame::iterator & it,
const QTextBlock & block,
QTextBlockGroup * textBlockGroup )
nodiscardvirtual

Directs the builder to create output for the single textBlockGroup.

If calling this method directly, an invalid QTextFrame::iterator may be used.

The block block is the first block in the textBlockGroup.

Definition at line 468 of file markupdirector.cpp.

◆ processCharTextObject()

QTextBlock::iterator MarkupDirector::processCharTextObject ( QTextBlock::iterator it,
const QTextFragment & fragment,
QTextObject * textObject )
nodiscardvirtual

Directs the builder to create output for the contents of the single textObject.

The textObject is represented in the QTextDocument with the QTextFragment fragment.

If calling this method directly, an invalid QTextBlock::iterator may be used.

Definition at line 482 of file markupdirector.cpp.

◆ processClosingElements()

void MarkupDirector::processClosingElements ( const QTextBlock::iterator & it)
protectedvirtual

Directs the builder to close the appropriate tags at the position of it.

Definition at line 506 of file markupdirector.cpp.

◆ processCustomFragment()

void MarkupDirector::processCustomFragment ( const QTextFragment & fragment,
QTextDocument const * doc )
virtual

Hook for instructing the builder to create output for the fragemnt with a custom type.

doc is the document the fragment is in.

Definition at line 407 of file markupdirector.cpp.

◆ processDocument()

void MarkupDirector::processDocument ( QTextDocument * doc)
virtual

Constructs the output by directing the builder to create the markup.

Definition at line 477 of file markupdirector.cpp.

◆ processDocumentContents()

void MarkupDirector::processDocumentContents ( QTextFrame::iterator begin,
const QTextFrame::iterator & end )
protected

Processes the document between begin and end.

Definition at line 236 of file markupdirector.cpp.

◆ processFragment()

QTextBlock::iterator MarkupDirector::processFragment ( QTextBlock::iterator it,
const QTextFragment & fragment,
QTextDocument const * doc )
nodiscardvirtual

Directs the builder to create output for the contents of the single fragment.

If calling this method directly, an invalid QTextBlock::iterator may be used. doc is the document the fragment is in.

Definition at line 112 of file markupdirector.cpp.

◆ processFrame()

QTextFrame::iterator MarkupDirector::processFrame ( QTextFrame::iterator it,
QTextFrame * frame )
nodiscardvirtual

Directs the builder to create output for the single frame.

If calling this method directly, an invalid QTextFrame::iterator may be used.

Definition at line 255 of file markupdirector.cpp.

◆ processImage()

QTextBlock::iterator MarkupDirector::processImage ( QTextBlock::iterator it,
const QTextImageFormat & imageFormat,
QTextDocument const * doc )
nodiscardvirtual

Directs the builder to create output for the image represented by the imageFormat.

If calling this method directly, an invalid QTextBlock::iterator may be used. doc is the document the fragment is in.

Definition at line 495 of file markupdirector.cpp.

◆ processList()

QPair< QTextFrame::iterator, QTextBlock > MarkupDirector::processList ( QTextFrame::iterator it,
const QTextBlock & block,
QTextList * textList )
nodiscardvirtual

Directs the builder to create output for the single textList.

If calling this method directly, an invalid QTextFrame::iterator may be used.

The block block is the first block in the textList.

Definition at line 376 of file markupdirector.cpp.

◆ processObject()

QTextFrame::iterator MarkupDirector::processObject ( QTextFrame::iterator it,
const QTextBlock & block,
QTextObject * textObject )
nodiscardvirtual

Directs the builder to create output for the single textObject.

If calling this method directly, an invalid QTextFrame::iterator may be used.

The block block is the container of the textObject.

Definition at line 413 of file markupdirector.cpp.

◆ processOpeningElements()

void MarkupDirector::processOpeningElements ( const QTextBlock::iterator & it)
protectedvirtual

Directs the builder to open the appropriate tags at the position of it.

Definition at line 587 of file markupdirector.cpp.

◆ processTable()

QTextFrame::iterator MarkupDirector::processTable ( QTextFrame::iterator it,
QTextTable * table )
nodiscardvirtual

Directs the builder to create output for the contents of the single table.

If calling this method directly, an invalid QTextFrame::iterator may be used.

Definition at line 284 of file markupdirector.cpp.

◆ processTableCell()

void MarkupDirector::processTableCell ( const QTextTableCell & tableCell,
QTextTable * table )
virtual

Directs the builder to create output for the contents of the single tableCell.

The tableCell is in the table.

Definition at line 370 of file markupdirector.cpp.

◆ skipBlockGroup()

QPair< QTextFrame::iterator, QTextBlock > MarkupDirector::skipBlockGroup ( QTextFrame::iterator it,
const QTextBlock & _block,
QTextBlockGroup * blockGroup )
nodiscardprotected

Iterates the iterator it to the first block after blockGroup.

_block is any block in the blockGroup.

The return pair is the iterator pointing after the end of blockGroup and the first block after blockGroup.

Definition at line 425 of file markupdirector.cpp.

◆ sortOpeningOrder()

QList< int > MarkupDirector::sortOpeningOrder ( QSet< int > openingTags,
QTextBlock::iterator it ) const
nodiscardprotected

Returns a list of tags contained in openingTags sorted so they can be opened in order and will be closed in the correct order.

openingTags should be a set of tags opened at the fragment pointed to by it.

Definition at line 848 of file markupdirector.cpp.

Member Data Documentation

◆ d_ptr

MarkupDirectorPrivate* const KPIMTextEdit::MarkupDirector::d_ptr
protected

Definition at line 252 of file markupdirector.h.

◆ m_builder

KPIMTextEdit::AbstractMarkupBuilder* const KPIMTextEdit::MarkupDirector::m_builder
protected

The builder this MarkupDirector is operating on.

This is available when subclassing to customize behaviour.

Definition at line 259 of file markupdirector.h.


The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Oct 11 2024 12:19:16 by doxygen 1.12.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.