📄 dochandler.cpp
字号:
{ m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0)); debug(2,"addTextNode() text=\"%s\"\n", m_curString.data()); m_curString=""; }}IDocIterator *HighlightHandler::codeElements() const{ return new HighlightIterator(*this);}//----------------------------------------------------------------------// CodeLineHandler//----------------------------------------------------------------------CodeLineHandler::CodeLineHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("codeline",this,&CodeLineHandler::endCodeLine); addEndHandler("linenumber",this,&CodeLineHandler::endLineNumber); addStartHandler("highlight",this,&CodeLineHandler::startHighlight); addStartHandler("ref",this,&CodeLineHandler::startRef); m_lineNumber = 0;}CodeLineHandler::~CodeLineHandler(){}void CodeLineHandler::startCodeLine(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); debug(2,"start codeline\n");}void CodeLineHandler::endCodeLine(){ addTextNode(); debug(2,"end codeline\n"); m_parent->setDelegate(0);}void CodeLineHandler::startLineNumber(const QXmlAttributes& attrib){ m_parent->setDelegate(this); debug(2,"start linenumber\n"); m_lineNumber = attrib.value("line").toInt(); m_refId = attrib.value("refid");}void CodeLineHandler::endLineNumber(){ m_parent->setDelegate(0);}void CodeLineHandler::startHighlight(const QXmlAttributes& attrib){ addTextNode(); HighlightHandler *hlh = new HighlightHandler(this); m_children.append(hlh); hlh->startHighlight(attrib);}void CodeLineHandler::startRef(const QXmlAttributes& attrib){ addTextNode(); RefHandler *rh = new RefHandler(this); m_children.append(rh); rh->startRef(attrib);}void CodeLineHandler::addTextNode(){ if (!m_curString.isEmpty()) { m_children.append(new TextNode(m_curString,IDocMarkup::Normal,0)); debug(2,"addTextNode() text=\"%s\"\n", m_curString.data()); m_curString=""; }}IDocIterator *CodeLineHandler::codeElements() const{ return new CodeLineIterator(*this);}//----------------------------------------------------------------------// ProgramListingHandler//----------------------------------------------------------------------ProgramListingHandler::ProgramListingHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); m_hasLineNumber=FALSE; addEndHandler("programlisting",this,&ProgramListingHandler::endProgramListing); addStartHandler("linenumber",this,&ProgramListingHandler::startLineNumber); addStartHandler("codeline",this,&ProgramListingHandler::startCodeLine);}ProgramListingHandler::~ProgramListingHandler(){}void ProgramListingHandler::startProgramListing(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); debug(2,"start programlisting\n");}void ProgramListingHandler::endProgramListing(){ debug(2,"end programlisting\n"); m_parent->setDelegate(0);}void ProgramListingHandler::startLineNumber(const QXmlAttributes& attrib){ CodeLineHandler *clh = new CodeLineHandler(this); m_children.append(clh); m_hasLineNumber=TRUE; clh->startLineNumber(attrib);} void ProgramListingHandler::startCodeLine(const QXmlAttributes& attrib){ CodeLineHandler *clh = 0; if (!m_hasLineNumber) { clh = new CodeLineHandler(this); m_children.append(clh); } else { clh = m_children.getLast(); } ASSERT(clh!=0); clh->startCodeLine(attrib); m_hasLineNumber=FALSE; }IDocIterator *ProgramListingHandler::codeLines() const{ return new ProgramListingIterator(*this);}//----------------------------------------------------------------------// FormulaHandler//----------------------------------------------------------------------FormulaHandler::FormulaHandler(IBaseHandler *parent) : m_parent(parent){ addEndHandler("formula",this,&FormulaHandler::endFormula);}FormulaHandler::~FormulaHandler(){}void FormulaHandler::startFormula(const QXmlAttributes& attrib){ m_id = attrib.value("id"); m_curString=""; m_parent->setDelegate(this);}void FormulaHandler::endFormula(){ m_text = m_curString; debug(2,"formula id=`%s' text=`%s'\n",m_id.data(),m_text.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// AnchorHandler//----------------------------------------------------------------------AnchorHandler::AnchorHandler(IBaseHandler *parent) : m_parent(parent){ addEndHandler("anchor",this,&AnchorHandler::endAnchor);}AnchorHandler::~AnchorHandler(){}void AnchorHandler::startAnchor(const QXmlAttributes& attrib){ m_id = attrib.value("id"); m_parent->setDelegate(this);}void AnchorHandler::endAnchor(){ debug(2,"anchor id=`%s'\n",m_id.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// ImageHandler//----------------------------------------------------------------------ImageHandler::ImageHandler(IBaseHandler *parent) : m_parent(parent){ addEndHandler("image",this,&ImageHandler::endImage);}ImageHandler::~ImageHandler(){}void ImageHandler::startImage(const QXmlAttributes& attrib){ m_name = attrib.value("name"); m_curString=""; m_parent->setDelegate(this);}void ImageHandler::endImage(){ m_caption = m_curString; debug(2,"image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// DotFileHandler//----------------------------------------------------------------------DotFileHandler::DotFileHandler(IBaseHandler *parent) : m_parent(parent){ addEndHandler("dotfile",this,&DotFileHandler::endDotFile);}DotFileHandler::~DotFileHandler(){}void DotFileHandler::startDotFile(const QXmlAttributes& attrib){ m_name = attrib.value("name"); m_curString=""; m_parent->setDelegate(this);}void DotFileHandler::endDotFile(){ m_caption = m_curString; debug(2,"image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// IndexEntryHandler//----------------------------------------------------------------------IndexEntryHandler::IndexEntryHandler(IBaseHandler *parent) : m_parent(parent){ addEndHandler("indexentry",this,&IndexEntryHandler::endIndexEntry); addStartHandler("primaryie",this,&IndexEntryHandler::startPrimaryIE); addEndHandler("primaryie",this,&IndexEntryHandler::endPrimaryIE); addStartHandler("secondaryie",this,&IndexEntryHandler::startSecondaryIE); addEndHandler("secondaryie",this,&IndexEntryHandler::endSecondaryIE);}IndexEntryHandler::~IndexEntryHandler(){}void IndexEntryHandler::startIndexEntry(const QXmlAttributes& /*attrib*/){ debug(2,"start index entry\n"); m_parent->setDelegate(this);}void IndexEntryHandler::endIndexEntry(){ debug(2,"index entry primary=`%s' secondary=`%s'\n", m_primary.data(),m_secondary.data()); m_parent->setDelegate(0);}void IndexEntryHandler::startPrimaryIE(const QXmlAttributes& /*attrib*/){ m_curString="";}void IndexEntryHandler::endPrimaryIE(){ m_primary = m_curString;}void IndexEntryHandler::startSecondaryIE(const QXmlAttributes& /*attrib*/){ m_curString="";}void IndexEntryHandler::endSecondaryIE(){ m_secondary = m_curString;}//----------------------------------------------------------------------// EntryHandler//----------------------------------------------------------------------EntryHandler::EntryHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("entry",this,&EntryHandler::endEntry); addStartHandler("para",this,&EntryHandler::startParagraph);}EntryHandler::~EntryHandler(){}void EntryHandler::startEntry(const QXmlAttributes&){ m_parent->setDelegate(this);}void EntryHandler::endEntry(){ m_parent->setDelegate(0);}void EntryHandler::startParagraph(const QXmlAttributes& attrib){ ParagraphHandler *ph = new ParagraphHandler(this); ph->startParagraph(attrib); m_children.append(ph);}IDocIterator *EntryHandler::contents() const{ return new EntryIterator(*this);}//----------------------------------------------------------------------// RowHandler//----------------------------------------------------------------------RowHandler::RowHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("row",this,&RowHandler::endRow); addStartHandler("entry",this,&RowHandler::startEntry);}RowHandler::~RowHandler(){}void RowHandler::startRow(const QXmlAttributes&){ m_parent->setDelegate(this);}void RowHandler::endRow(){ m_parent->setDelegate(0);}void RowHandler::startEntry(const QXmlAttributes& attrib){ EntryHandler *eh = new EntryHandler(this); eh->startEntry(attrib); m_children.append(eh);}IDocIterator *RowHandler::entries() const{ return new RowIterator(*this);}//----------------------------------------------------------------------// TableHandler//----------------------------------------------------------------------TableHandler::TableHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("table",this,&TableHandler::endTable); addStartHandler("row",this,&TableHandler::startRow); addStartHandler("caption",this,&TableHandler::startCaption); addEndHandler("caption",this,&TableHandler::endCaption);}TableHandler::~TableHandler(){}void TableHandler::startTable(const QXmlAttributes& attrib){ m_parent->setDelegate(this); m_numColumns = attrib.value("cols").toInt(); debug(2,"table cols=%d\n",m_numColumns);}void TableHandler::endTable(){ m_parent->setDelegate(0);}void TableHandler::startRow(const QXmlAttributes& attrib){ RowHandler *rh = new RowHandler(this); rh->startRow(attrib); m_children.append(rh);}void TableHandler::startCaption(const QXmlAttributes& /*attrib*/){ m_curString="";}void TableHandler::endCaption(){ m_caption = m_curString;}IDocIterator *TableHandler::rows() const{ return new TableIterator(*this);}//----------------------------------------------------------------------// CopyHandler//----------------------------------------------------------------------CopyHandler::CopyHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("copydoc",this,&CopyHandler::endCopy); addStartHandler("para",this,&CopyHandler::startParagraph);}CopyHandler::~CopyHandler(){}void CopyHandler::startCopy(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); debug(2,"start copy handler\n");}void CopyHandler::endCopy(){ debug(2,"end copy handler\n"); m_parent->setDelegate(0);}void CopyHandler::startParagraph(const QXmlAttributes& attrib){ ParagraphHandler *parHandler = new ParagraphHandler(this); parHandler->startParagraph(attrib); m_children.append(parHandler);}IDocIterator *CopyHandler::contents() const{ return new CopyIterator(*this);}//----------------------------------------------------------------------// VerbatimHandler//----------------------------------------------------------------------VerbatimHandler::VerbatimHandler(IBaseHandler *parent) : m_parent(parent), m_type(IDocVerbatim::Invalid){ addEndHandler("verbatim",this,&VerbatimHandler::endVerbatim); addEndHandler("latexonly",this,&VerbatimHandler::endVerbatim); addEndHandler("htmlonly",this,&VerbatimHandler::endVerbatim);}VerbatimHandler::~VerbatimHandler(){}void VerbatimHandler::startVerbatim(const QXmlAttributes&,Types type){ m_type = type; m_parent->setDelegate(this); m_curString="";}void VerbatimHandler::endVerbatim(){ m_text = m_curString; m_parent->setDelegate(0);}//----------------------------------------------------------------------// SymbolHandler//----------------------------------------------------------------------SymbolHandler::SymbolHandler(IBaseHandler *parent,Types type) : m_parent(parent), m_letter('\0'), m_type(type){ addEndHandler("symbol"); switch (type) { case IDocSymbol::Invalid: m_typeString="invalid"; break; case IDocSymbol::Umlaut: m_typeString="umlaut"; break; case IDocSymbol::Acute: m_typeString="acute"; break; case IDocSymbol::Grave: m_typeString="grave"; break; case IDocSymbol::Circ: m_typeString="circ"; break; case IDocSymbol::Tilde: m_typeString="tilde"; break; case IDocSymbol::Szlig: m_typeString="szlig"; break; case IDocSymbol::Cedil: m_typeString="cedil"; break; case IDocSymbol::Ring: m_typeString="ring"; break; case IDocSymbol::Nbsp: m_typeString="nbsp"; break; case IDocSymbol::Copy: m_typeString="copy"; break; }}SymbolHandler::~SymbolHandler(){}void SymbolHandler::startSymbol(const QXmlAttributes& attrib){ QString ls = attrib.value("char"); if (!ls.isEmpty()) m_letter = ls.latin1()[0];}//----------------------------------------------------------------------// ParagraphHandler//----------------------------------------------------------------------ParagraphHandler::ParagraphHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); m_markupHandler = new MarkupHandler(m_children,m_curString); // preformatted
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -