📄 dochandler.cpp
字号:
void FormulaHandler::startFormula(const QXmlAttributes& attrib){ m_id = attrib.value("id"); m_curString=""; m_parent->setDelegate(this);}void FormulaHandler::endFormula(){ m_text = m_curString; printf("formula id=`%s' text=`%s'\n",m_id.data(),m_text.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// ImageHandler//----------------------------------------------------------------------ImageHandler::ImageHandler(IBaseHandler *parent) : DocNode(Image), 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; printf("image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// DotFileHandler//----------------------------------------------------------------------DotFileHandler::DotFileHandler(IBaseHandler *parent) : DocNode(DotFile), m_parent(parent){ addEndHandler("image",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; printf("image name=`%s' caption=`%s'\n",m_name.data(),m_caption.data()); m_parent->setDelegate(0);}//----------------------------------------------------------------------// IndexEntryHandler//----------------------------------------------------------------------IndexEntryHandler::IndexEntryHandler(IBaseHandler *parent) : DocNode(IndexEntry), 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*/){ printf("start index entry\n"); m_parent->setDelegate(this);}void IndexEntryHandler::endIndexEntry(){ printf("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) : DocNode(Entry), 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);}//----------------------------------------------------------------------// RowHandler//----------------------------------------------------------------------RowHandler::RowHandler(IBaseHandler *parent) : DocNode(Row), 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);}//----------------------------------------------------------------------// TableHandler//----------------------------------------------------------------------TableHandler::TableHandler(IBaseHandler *parent) : DocNode(Table), m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("table",this,&TableHandler::endTable); addStartHandler("row",this,&TableHandler::startRow);}TableHandler::~TableHandler(){}void TableHandler::startTable(const QXmlAttributes& attrib){ m_parent->setDelegate(this); m_numColumns = attrib.value("cols").toInt(); printf("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);}//----------------------------------------------------------------------// ParagraphHandler//----------------------------------------------------------------------ParagraphHandler::ParagraphHandler(IBaseHandler *parent) : DocNode(Para), m_parent(parent){ m_children.setAutoDelete(TRUE); m_markupHandler = new MarkupHandler(m_children,m_curString); setFallBackHandler(m_markupHandler); addEndHandler("para",this,&ParagraphHandler::endParagraph); addStartHandler("itemizedlist",this,&ParagraphHandler::startItemizedList); addStartHandler("orderedlist",this,&ParagraphHandler::startOrderedList); addStartHandler("parameterlist",this,&ParagraphHandler::startParameterList); addStartHandler("simplesect",this,&ParagraphHandler::startSimpleSect); addStartHandler("ref",this,&ParagraphHandler::startRef); addStartHandler("variablelist",this,&ParagraphHandler::startVariableList); addStartHandler("hruler",this,&ParagraphHandler::startHRuler); addStartHandler("linebreak",this,&ParagraphHandler::startLineBreak); addStartHandler("ulink",this,&ParagraphHandler::startULink); addStartHandler("email",this,&ParagraphHandler::startEMail); addStartHandler("link",this,&ParagraphHandler::startLink); addStartHandler("programlisting",this,&ParagraphHandler::startProgramListing); addStartHandler("formula",this,&ParagraphHandler::startFormula); addStartHandler("image",this,&ParagraphHandler::startImage); addStartHandler("dotfile",this,&ParagraphHandler::startDotFile); addStartHandler("indexentry",this,&ParagraphHandler::startIndexEntry); addStartHandler("table",this,&ParagraphHandler::startTable);}ParagraphHandler::~ParagraphHandler(){ delete m_markupHandler;}void ParagraphHandler::startParagraph(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("para\n");}void ParagraphHandler::endParagraph(){ addTextNode(); printf("end para\n"); m_parent->setDelegate(0);}void ParagraphHandler::startItemizedList(const QXmlAttributes& attrib){ addTextNode(); ListHandler *listHandler = new ListHandler(ItemizedList,this); listHandler->startList(attrib); m_children.append(listHandler);}void ParagraphHandler::startOrderedList(const QXmlAttributes& attrib){ addTextNode(); ListHandler *listHandler = new ListHandler(OrderedList,this); listHandler->startList(attrib); m_children.append(listHandler);}void ParagraphHandler::startParameterList(const QXmlAttributes& attrib){ addTextNode(); ParameterListHandler *parListHandler = new ParameterListHandler(this); parListHandler->startParameterList(attrib); m_children.append(parListHandler);}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::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=""; }}//----------------------------------------------------------------------// DocHandler//----------------------------------------------------------------------DocHandler::DocHandler(IBaseHandler *parent) : m_parent(parent){ m_children.setAutoDelete(TRUE); addEndHandler("briefdescription",this,&DocHandler::endDoc); addEndHandler("detaileddescription",this,&DocHandler::endDoc); addStartHandler("para",this,&DocHandler::startParagraph);}DocHandler::~DocHandler(){}void DocHandler::startDoc(const QXmlAttributes& /*attrib*/){ m_parent->setDelegate(this); printf("start dochandler\n");}void DocHandler::endDoc(){ printf("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);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -