📄 dochandler.cpp
字号:
setFallBackHandler(m_markupHandler); addEndHandler("para",this,&ParagraphHandler::endParagraph); addStartHandler("linebreak",this,&ParagraphHandler::startLineBreak); addStartHandler("hruler",this,&ParagraphHandler::startHRuler); addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing); addStartHandler("verbatim",this,&ParagraphHandler::startVerbatim); addStartHandler("indexentry",this,&ParagraphHandler::startIndexEntry); addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList); addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList); addStartHandler("simplesect",this,&ParagraphHandler::startSimpleSect); // TODO: title addStartHandler("variablelist",this,&ParagraphHandler::startVariableList); addStartHandler("table",this,&ParagraphHandler::startTable); // TODO: heading addStartHandler("image",this,&ParagraphHandler::startImage); addStartHandler("dotfile",this,&ParagraphHandler::startDotFile); addStartHandler("toclist",this,&ParagraphHandler::startTocList); // TODO: language??? addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList); // TODO: xrefsect addStartHandler("copydoc",this,&ParagraphHandler::startCopyDoc); addStartHandler("ref",this,&ParagraphHandler::startRef); addStartHandler("ulink",this,&ParagraphHandler::startULink); addStartHandler("email",this,&ParagraphHandler::startEMail); addStartHandler("link",this,&ParagraphHandler::startLink); addStartHandler("formula",this,&ParagraphHandler::startFormula); addStartHandler("latexonly",this,&ParagraphHandler::startHtmlOnly); addStartHandler("htmlonly",this,&ParagraphHandler::startLatexOnly); addStartHandler("umlaut",this,&ParagraphHandler::startUmlaut); addStartHandler("acute",this,&ParagraphHandler::startAcute); addStartHandler("grave",this,&ParagraphHandler::startGrave); addStartHandler("circ",this,&ParagraphHandler::startCirc); addStartHandler("tilde",this,&ParagraphHandler::startTilde); addStartHandler("szlig",this,&ParagraphHandler::startSzlig); addStartHandler("cedil",this,&ParagraphHandler::startCedil); addStartHandler("ring",this,&ParagraphHandler::startRing); addStartHandler("nbsp",this,&ParagraphHandler::startNbsp); addStartHandler("copy",this,&ParagraphHandler::startCopy); addStartHandler("anchor",this,&ParagraphHandler::startAnchor);}ParagraphHandler::~ParagraphHandler(){ delete m_markupHandler;}void ParagraphHandler::startParagraph(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); debug(2,"para\n");}void ParagraphHandler::endParagraph(){ addTextNode(); debug(2,"end para\n"); m_parent->setDelegate(0);}void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib){ addTextNode(); ItemizedListHandler *listHandler = new ItemizedListHandler(this); listHandler->startItemizedList(attrib); m_children.append(listHandler);}void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib){ addTextNode(); OrderedListHandler *listHandler = new OrderedListHandler(this); listHandler->startOrderedList(attrib); m_children.append(listHandler);}void ParagraphHandler::startParameterList(const QXmlAttributes& attrib){ addTextNode(); ParameterListHandler *listHandler = new ParameterListHandler(this); listHandler->startParameterList(attrib); m_children.append(listHandler);}void ParagraphHandler::startSimpleSect(const QXmlAttributes& attrib){ addTextNode(); SimpleSectHandler *sectHandler = new SimpleSectHandler(this); sectHandler->startSimpleSect(attrib); m_children.append(sectHandler);}void ParagraphHandler::startRef(const QXmlAttributes& attrib){ addTextNode(); RefHandler *ref = new RefHandler(this); ref->startRef(attrib); m_children.append(ref);}void ParagraphHandler::startVariableList(const QXmlAttributes& attrib){ addTextNode(); VariableListHandler *vl = new VariableListHandler(this); vl->startVariableList(attrib); m_children.append(vl);}void ParagraphHandler::startHRuler(const QXmlAttributes& attrib){ addTextNode(); HRulerHandler *hr = new HRulerHandler(this); hr->startHRuler(attrib); m_children.append(hr);}void ParagraphHandler::startLineBreak(const QXmlAttributes& attrib){ addTextNode(); LineBreakHandler *lb = new LineBreakHandler(this); lb->startLineBreak(attrib); m_children.append(lb);}void ParagraphHandler::startULink(const QXmlAttributes& attrib){ addTextNode(); ULinkHandler *uh = new ULinkHandler(this); uh->startULink(attrib); m_children.append(uh);}void ParagraphHandler::startEMail(const QXmlAttributes& attrib){ addTextNode(); EMailHandler *eh = new EMailHandler(this); eh->startEMail(attrib); m_children.append(eh);}void ParagraphHandler::startLink(const QXmlAttributes& attrib){ addTextNode(); LinkHandler *lh = new LinkHandler(this); lh->startLink(attrib); m_children.append(lh);}void ParagraphHandler::startProgramListing(const QXmlAttributes& attrib){ addTextNode(); ProgramListingHandler *pl = new ProgramListingHandler(this); pl->startProgramListing(attrib); m_children.append(pl);}void ParagraphHandler::startFormula(const QXmlAttributes& attrib){ addTextNode(); FormulaHandler *fh = new FormulaHandler(this); fh->startFormula(attrib); m_children.append(fh);}void ParagraphHandler::startImage(const QXmlAttributes& attrib){ addTextNode(); ImageHandler *ih = new ImageHandler(this); ih->startImage(attrib); m_children.append(ih);}void ParagraphHandler::startDotFile(const QXmlAttributes& attrib){ addTextNode(); DotFileHandler *df = new DotFileHandler(this); df->startDotFile(attrib); m_children.append(df);}void ParagraphHandler::startIndexEntry(const QXmlAttributes& attrib){ addTextNode(); IndexEntryHandler *df = new IndexEntryHandler(this); df->startIndexEntry(attrib); m_children.append(df);}void ParagraphHandler::startTable(const QXmlAttributes& attrib){ addTextNode(); TableHandler *th = new TableHandler(this); th->startTable(attrib); m_children.append(th);}void ParagraphHandler::startVerbatim(const QXmlAttributes& attrib){ addTextNode(); VerbatimHandler *vh = new VerbatimHandler(this); vh->startVerbatim(attrib,IDocVerbatim::Verbatim); m_children.append(vh);}void ParagraphHandler::startHtmlOnly(const QXmlAttributes& attrib){ addTextNode(); VerbatimHandler *vh = new VerbatimHandler(this); vh->startVerbatim(attrib,IDocVerbatim::HtmlOnly); m_children.append(vh);}void ParagraphHandler::startLatexOnly(const QXmlAttributes& attrib){ addTextNode(); VerbatimHandler *vh = new VerbatimHandler(this); vh->startVerbatim(attrib,IDocVerbatim::LatexOnly); m_children.append(vh);}void ParagraphHandler::startUmlaut(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Umlaut); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startAcute(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Acute); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startGrave(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Grave); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startCirc(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Circ); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startTilde(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Tilde); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startSzlig(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Szlig); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startCedil(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Cedil); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startRing(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Ring); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startNbsp(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Nbsp); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startCopy(const QXmlAttributes& attrib){ addTextNode(); SymbolHandler *sh = new SymbolHandler(this,IDocSymbol::Copy); sh->startSymbol(attrib); m_children.append(sh);}void ParagraphHandler::startAnchor(const QXmlAttributes& attrib){ addTextNode(); AnchorHandler *ah = new AnchorHandler(this); ah->startAnchor(attrib); m_children.append(ah);}void ParagraphHandler::startCopyDoc(const QXmlAttributes& attrib){ addTextNode(); CopyHandler *ch = new CopyHandler(this); ch->startCopy(attrib); m_children.append(ch);}void ParagraphHandler::startTocList(const QXmlAttributes& attrib){ addTextNode(); TocListHandler *th = new TocListHandler(this); th->startTocList(attrib); m_children.append(th);}void ParagraphHandler::addTextNode(){ if (!m_curString.isEmpty()) { m_children.append( new TextNode( m_curString, m_markupHandler->markup(), m_markupHandler->headingLevel() ) ); debug(2,"addTextNode() text=\"%s\" markup=%x headingLevel=%d\n", m_curString.data(),m_markupHandler->markup(),m_markupHandler->headingLevel()); m_curString=""; }}IDocIterator *ParagraphHandler::contents() const{ return new ParagraphIterator(*this);}//----------------------------------------------------------------------// DocSectionHandler//----------------------------------------------------------------------DocSectionHandler::DocSectionHandler(IBaseHandler *parent,int level) : m_parent(parent), m_internal(0), m_level(level), m_title(0){ QString sectionKey; m_paragraphs.setAutoDelete(TRUE); m_subsections.setAutoDelete(TRUE); addStartHandler("title",this,&DocSectionHandler::startTitle); addStartHandler("para",this,&DocSectionHandler::startParagraph); if (level<6) { sectionKey.sprintf("sect%d",level+1); addStartHandler(sectionKey,this,&DocSectionHandler::startSubSection); } addStartHandler("internal",this,&DocSectionHandler::startInternal); sectionKey.sprintf("sect%d",level); addEndHandler(sectionKey,this,&DocSectionHandler::endDocSection);}DocSectionHandler::~DocSectionHandler(){}void DocSectionHandler::startDocSection(const QXmlAttributes& attrib){ m_parent->setDelegate(this); debug(2,"Start docsection\n"); m_id = attrib.value("id");}void DocSectionHandler::endDocSection(){ m_parent->setDelegate(0); debug(2,"End docsection\n");}void DocSectionHandler::startSubSection(const QXmlAttributes& attrib){ DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1); secHandler->startDocSection(attrib); m_subsections.append(secHandler);}void DocSectionHandler::startParagraph(const QXmlAttributes& attrib){ ParagraphHandler *parHandler = new ParagraphHandler(this); parHandler->startParagraph(attrib); m_paragraphs.append(parHandler);}void DocSectionHandler::startInternal(const QXmlAttributes& attrib){ m_internal = new DocInternalHandler(this,m_level); m_internal->startInternal(attrib);}void DocSectionHandler::startTitle(const QXmlAttributes& attrib){ m_title = new TitleHandler(this); m_title->startTitle(attrib);}IDocIterator *DocSectionHandler::paragraphs() const{ return new DocSectionParaIterator(*this);}IDocIterator *DocSectionHandler::subSections() const{ return new DocSectionSubIterator(*this);}IDocInternal *DocSectionHandler::internal() const { return m_internal; }//----------------------------------------------------------------------// DocInternal//----------------------------------------------------------------------DocInternalHandler::DocInternalHandler(IBaseHandler *parent,int level) : m_parent(parent), m_level(level){ m_paragraphs.setAutoDelete(TRUE); m_subsections.setAutoDelete(TRUE); addStartHandler("para",this,&DocInternalHandler::startParagraph); QString sectionKey; sectionKey.sprintf("sect%d",level+1); addStartHandler(sectionKey,this,&DocInternalHandler::startSubSection); addEndHandler("internal",this,&DocInternalHandler::endInternal);}DocInternalHandler::~DocInternalHandler(){}void DocInternalHandler::startInternal(const QXmlAttributes&){ m_parent->setDelegate(this); debug(2,"Start internal\n");}void DocInternalHandler::endInternal(){ m_parent->setDelegate(0); debug(2,"End internal\n");}void DocInternalHandler::startSubSection(const QXmlAttributes& attrib){ DocSectionHandler *secHandler = new DocSectionHandler(this,m_level+1); secHandler->startDocSection(attrib); m_subsections.append(secHandler);}void DocInternalHandler::startParagraph(const QXmlAttributes& attrib){ ParagraphHandler *parHandler = new ParagraphHandler(this); parHandler->startParagraph(attrib); m_paragraphs.append(parHandler);}IDocIterator *DocInternalHandler::paragraphs() const{ return new DocInternalParaIterator(*this);}IDocIterator *DocInternalHandler::subSections() const{ return new DocInternalSubIterator(*this);}//----------------------------------------------------------------------// DocHandler//----------------------------------------------------------------------DocHandler::DocHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("briefdescription",this,&DocHandler::endDoc); addEndHandler("detaileddescription",this,&DocHandler::endDoc); addEndHandler("inbodydescription",this,&DocHandler::endDoc); //addEndHandler("internal"); // TODO: implement this as a section addStartHandler("internal",this,&DocHandler::startInternal); addStartHandler("para",this,&DocHandler::startParagraph); addStartHandler("sect1",this,&DocHandler::startSect1); addStartHandler("title",this,&DocHandler::startTitle); //addStartHandler("internal");}DocHandler::~DocHandler(){}void DocHandler::startDoc(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); debug(2,"start dochandler\n");}void DocHandler::endDoc(){ debug(2,"end dochandler\n"); m_parent->setDelegate(0);}void DocHandler::startParagraph(const QXmlAttributes& attrib){ ParagraphHandler *parHandler = new ParagraphHandler(this); parHandler->startParagraph(attrib); m_children.append(parHandler);}void DocHandler::startSect1(const QXmlAttributes& attrib){ DocSectionHandler *secHandler = new DocSectionHandler(this,1); secHandler->startDocSection(attrib); m_children.append(secHandler);}void DocHandler::startTitle(const QXmlAttributes& attrib){ TitleHandler *titleHandler = new TitleHandler(this); titleHandler->startTitle(attrib); m_children.append(titleHandler);}void DocHandler::startInternal(const QXmlAttributes& attrib){ m_internal = new DocInternalHandler(this,1); m_internal->startInternal(attrib);}IDocIterator *DocHandler::contents() const{ return new DocIterator(*this);}IDocInternal *DocHandler::internal() const { return m_internal; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -