📄 dochandler.cpp
字号:
m_curString=""; m_parent->setDelegate(0); printf("End ulink\n");}//----------------------------------------------------------------------// LineBreakHandler//----------------------------------------------------------------------LineBreakHandler::LineBreakHandler(IBaseHandler *parent) : DocNode(LineBreak), m_parent(parent){ addEndHandler("linebreak",this,&LineBreakHandler::endLineBreak);}LineBreakHandler::~LineBreakHandler(){}void LineBreakHandler::startLineBreak(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("Start linebreak\n");}void LineBreakHandler::endLineBreak(){ m_parent->setDelegate(0); printf("End linebreak\n");}//----------------------------------------------------------------------// HRulerHandler//----------------------------------------------------------------------HRulerHandler::HRulerHandler(IBaseHandler *parent) : DocNode(HRuler), m_parent(parent){ addEndHandler("hruler",this,&HRulerHandler::endHRuler);}HRulerHandler::~HRulerHandler(){}void HRulerHandler::startHRuler(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("Start hruler\n");}void HRulerHandler::endHRuler(){ m_parent->setDelegate(0); printf("End hruler\n");}//----------------------------------------------------------------------// RefHandler//----------------------------------------------------------------------RefHandler::RefHandler(IBaseHandler *parent) : DocNode(Ref), m_parent(parent){ addEndHandler("ref",this,&RefHandler::endRef);}RefHandler::~RefHandler(){}void RefHandler::startRef(const QXmlAttributes& attrib){ m_parent->setDelegate(this); m_refId = attrib.value("idref"); m_anchor = attrib.value("anchor"); printf("Start ref refId=%s anchor=%s\n",m_refId.data(),m_anchor.data()); m_curString="";}void RefHandler::endRef(){ m_linkText = m_curString; m_parent->setDelegate(0); printf("End ref: text=`%s'\n",m_linkText.data());}//----------------------------------------------------------------------// TitleHandler//----------------------------------------------------------------------TitleHandler::TitleHandler(IBaseHandler *parent) : DocNode(Title), m_parent(parent){ m_children.setAutoDelete(TRUE); m_markupHandler = new MarkupHandler(m_children,m_curString); setFallBackHandler(m_markupHandler); addStartHandler("ref",this,&TitleHandler::startRef); addEndHandler("title",this,&TitleHandler::endTitle);}TitleHandler::~TitleHandler(){ delete m_markupHandler;}void TitleHandler::startTitle(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("Start title\n"); m_curString="";}void TitleHandler::endTitle(){ addTextNode(); m_parent->setDelegate(0); printf("End title\n");}void TitleHandler::addTextNode(){ if (!m_curString.isEmpty()) { m_children.append(new TextNode(m_curString,m_markupHandler->markup())); printf("addTextNode() text=\"%s\" markup=%x\n", m_curString.data(),m_markupHandler->markup()); m_curString=""; }}void TitleHandler::startRef(const QXmlAttributes& attrib){ RefHandler *ref = new RefHandler(this); ref->startRef(attrib); m_children.append(ref);}//----------------------------------------------------------------------// SimpleSectHandler//----------------------------------------------------------------------SimpleSectHandler::SimpleSectHandler(IBaseHandler *parent) : DocNode(Para), m_parent(parent), m_paragraph(0), m_title(0){ addStartHandler("title",this,&SimpleSectHandler::startTitle); addStartHandler("para",this,&SimpleSectHandler::startParagraph); addEndHandler("simplesect",this,&SimpleSectHandler::endSimpleSect);}SimpleSectHandler::~SimpleSectHandler(){}void SimpleSectHandler::startSimpleSect(const QXmlAttributes& attrib){ m_type = g_typeMapper.stringToType(attrib.value("kind")); printf("start simple section %s\n",attrib.value("kind").data()); m_parent->setDelegate(this);}void SimpleSectHandler::endSimpleSect(){ printf("end simple section\n"); m_parent->setDelegate(0);}void SimpleSectHandler::startTitle(const QXmlAttributes& attrib){ ASSERT(m_title==0); m_title = new TitleHandler(this); m_title->startTitle(attrib);}void SimpleSectHandler::startParagraph(const QXmlAttributes& attrib){ ASSERT(m_paragraph==0); m_paragraph = new ParagraphHandler(this); m_paragraph->startParagraph(attrib);}//----------------------------------------------------------------------// VariableListEntryHandler//----------------------------------------------------------------------VariableListEntryHandler::VariableListEntryHandler(IBaseHandler *parent) : DocNode(VariableListEntry), m_parent(parent), m_description(0){ addStartHandler("term",this,&VariableListEntryHandler::startTerm); addEndHandler("term",this,&VariableListEntryHandler::endTerm); addStartHandler("para",this,&VariableListEntryHandler::startParagraph); addEndHandler("varlistentry",this,&VariableListEntryHandler::endVarListEntry); addEndHandler("listitem",this,&VariableListEntryHandler::endListItem);}VariableListEntryHandler::~VariableListEntryHandler(){ delete m_description;}void VariableListEntryHandler::startVarListEntry(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("start varlistentry\n");}void VariableListEntryHandler::endVarListEntry(){ m_parent->setDelegate(0); printf("end varlistentry\n");}void VariableListEntryHandler::startListItem(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("start listitem\n");}void VariableListEntryHandler::endListItem(){ m_parent->setDelegate(0); printf("end listitem\n");}void VariableListEntryHandler::startTerm(const QXmlAttributes& /*attrib*/){ m_curString="";}void VariableListEntryHandler::endTerm(){ m_term = m_curString; printf("term=%s\n",m_term.data());}void VariableListEntryHandler::startParagraph(const QXmlAttributes& attrib){ ASSERT(m_description==0); m_description = new ParagraphHandler(this); m_description->startParagraph(attrib);}//----------------------------------------------------------------------// VariableListHandler//----------------------------------------------------------------------VariableListHandler::VariableListHandler(IBaseHandler *parent) : DocNode(VariableList), m_parent(parent){ m_entries.setAutoDelete(TRUE); addStartHandler("varlistentry",this,&VariableListHandler::startVarListEntry); addStartHandler("listitem",this,&VariableListHandler::startListItem); addEndHandler("variablelist",this,&VariableListHandler::endVariableList);}VariableListHandler::~VariableListHandler(){}void VariableListHandler::startVariableList(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("start variablelist\n");}void VariableListHandler::endVariableList(){ printf("end variablelist\n"); m_parent->setDelegate(0);}void VariableListHandler::startVarListEntry(const QXmlAttributes& attrib){ VariableListEntryHandler *vle = new VariableListEntryHandler(this); vle->startVarListEntry(attrib); m_curEntry = vle; m_entries.append(vle);}void VariableListHandler::startListItem(const QXmlAttributes& attrib){ ASSERT(m_curEntry!=0); m_curEntry->startListItem(attrib);}//----------------------------------------------------------------------// HighlightHandler//----------------------------------------------------------------------HighlightHandler::HighlightHandler(IBaseHandler *parent) : DocNode(Highlight), m_parent(parent){ addEndHandler("highlight",this,&HighlightHandler::endHighlight);}HighlightHandler::~HighlightHandler(){}void HighlightHandler::startHighlight(const QXmlAttributes& attrib){ m_class = attrib.value("class"); m_curString=""; m_parent->setDelegate(this);}void HighlightHandler::endHighlight(){ m_text = m_curString; printf("highlight class=`%s' text=`%s'\n",m_class.data(),m_text.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// CodeLineHandler//----------------------------------------------------------------------CodeLineHandler::CodeLineHandler(IBaseHandler *parent) : DocNode(CodeLine), 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); printf("start codeline\n");}void CodeLineHandler::endCodeLine(){ addTextNode(); printf("end codeline\n"); m_parent->setDelegate(0);}void CodeLineHandler::startLineNumber(const QXmlAttributes& attrib){ m_parent->setDelegate(this); printf("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,DocNode::Normal)); printf("addTextNode() text=\"%s\"\n", m_curString.data()); m_curString=""; }}//----------------------------------------------------------------------// ProgramListingHandler//----------------------------------------------------------------------ProgramListingHandler::ProgramListingHandler(IBaseHandler *parent) : DocNode(ProgramListing), 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); printf("start programlisting\n");}void ProgramListingHandler::endProgramListing(){ printf("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; }//----------------------------------------------------------------------// FormulaHandler//----------------------------------------------------------------------FormulaHandler::FormulaHandler(IBaseHandler *parent) : DocNode(Formula), m_parent(parent){ addEndHandler("formula",this,&FormulaHandler::endFormula);}FormulaHandler::~FormulaHandler(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -