mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
fix bug #77171
This commit is contained in:
@ -384,23 +384,32 @@ namespace OOX
|
|||||||
pItem = new Logic::CSdt( document );
|
pItem = new Logic::CSdt( document );
|
||||||
else if (L"sectPr" == sName )
|
else if (L"sectPr" == sName )
|
||||||
{
|
{
|
||||||
m_oSectPr = new Logic::CSectionProperty( document );
|
Logic::CSectionProperty *pSectPr = new Logic::CSectionProperty( document );
|
||||||
m_oSectPr->fromXML(oReader);
|
pSectPr->fromXML(oReader);
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
OOX::CDocx* docx = dynamic_cast<OOX::CDocx*>(document);
|
|
||||||
OOX::CDocument* document = docx ? (docx->m_bGlossaryRead ? docx->m_oGlossary.document : (docx->m_oMain.document ? docx->m_oMain.document : this)) : this;
|
|
||||||
|
|
||||||
if (document)
|
if (pSectPr->m_bEmpty)
|
||||||
{
|
{
|
||||||
if (document->m_arrSections.empty())
|
delete pSectPr;
|
||||||
{
|
pSectPr = NULL;
|
||||||
OOX::CDocument::_section section;
|
}
|
||||||
document->m_arrSections.push_back(section);
|
else
|
||||||
}
|
{
|
||||||
document->m_arrSections.back().sect = m_oSectPr.GetPointer();
|
m_oSectPr = pSectPr;
|
||||||
document->m_arrSections.back().end_elm = document->m_arrItems.size(); //активный рутовый еще не добавлен
|
|
||||||
|
OOX::CDocx* docx = dynamic_cast<OOX::CDocx*>(document);
|
||||||
|
OOX::CDocument* document = docx ? (docx->m_bGlossaryRead ? docx->m_oGlossary.document : (docx->m_oMain.document ? docx->m_oMain.document : this)) : this;
|
||||||
|
|
||||||
|
if (document)
|
||||||
|
{
|
||||||
|
if (document->m_arrSections.empty())
|
||||||
|
{
|
||||||
|
OOX::CDocument::_section section;
|
||||||
|
document->m_arrSections.push_back(section);
|
||||||
|
}
|
||||||
|
document->m_arrSections.back().sect = m_oSectPr.GetPointer();
|
||||||
|
document->m_arrSections.back().end_elm = document->m_arrItems.size(); //активный рутовый еще не добавлен
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//-------------------------------------------------------------------------
|
|
||||||
}
|
}
|
||||||
else if (L"tbl" == sName )
|
else if (L"tbl" == sName )
|
||||||
pItem = new Logic::CTbl( document );
|
pItem = new Logic::CTbl( document );
|
||||||
|
|||||||
@ -640,27 +640,36 @@ namespace OOX
|
|||||||
m_oRPr = oReader;
|
m_oRPr = oReader;
|
||||||
else if ( !m_bPPrChange && L"sectPr" == sName )
|
else if ( !m_bPPrChange && L"sectPr" == sName )
|
||||||
{
|
{
|
||||||
m_oSectPr = new CSectionProperty(document);
|
Logic::CSectionProperty* pSectPr = new Logic::CSectionProperty(document);
|
||||||
m_oSectPr->fromXML(oReader);
|
pSectPr->fromXML(oReader);
|
||||||
//------------------------------------------------------------------------------------
|
|
||||||
OOX::CDocx *docx = dynamic_cast<OOX::CDocx*>(document);
|
|
||||||
if (docx)
|
|
||||||
{
|
|
||||||
OOX::CDocument *doc = docx->m_bGlossaryRead ? docx->m_oGlossary.document : docx->m_oMain.document;
|
|
||||||
|
|
||||||
if (doc->m_arrSections.empty())
|
if (pSectPr->m_bEmpty)
|
||||||
|
{
|
||||||
|
delete pSectPr;
|
||||||
|
pSectPr = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_oSectPr = pSectPr;
|
||||||
|
|
||||||
|
OOX::CDocx* docx = dynamic_cast<OOX::CDocx*>(document);
|
||||||
|
if (docx)
|
||||||
{
|
{
|
||||||
|
OOX::CDocument* doc = docx->m_bGlossaryRead ? docx->m_oGlossary.document : docx->m_oMain.document;
|
||||||
|
|
||||||
|
if (doc->m_arrSections.empty())
|
||||||
|
{
|
||||||
|
OOX::CDocument::_section section;
|
||||||
|
doc->m_arrSections.push_back(section);
|
||||||
|
}
|
||||||
|
doc->m_arrSections.back().sect = m_oSectPr.GetPointer();
|
||||||
|
doc->m_arrSections.back().end_elm = doc->m_arrItems.size() + 1; // порядок выше - сначала читаем, потом добавляем
|
||||||
|
|
||||||
OOX::CDocument::_section section;
|
OOX::CDocument::_section section;
|
||||||
|
section.start_elm = doc->m_arrItems.size() + 1;
|
||||||
doc->m_arrSections.push_back(section);
|
doc->m_arrSections.push_back(section);
|
||||||
}
|
}
|
||||||
doc->m_arrSections.back().sect = m_oSectPr.GetPointer();
|
|
||||||
doc->m_arrSections.back().end_elm = doc->m_arrItems.size() + 1; // порядок выше - сначала читаем, потом добавляем
|
|
||||||
|
|
||||||
OOX::CDocument::_section section;
|
|
||||||
section.start_elm = doc->m_arrItems.size() + 1;
|
|
||||||
doc->m_arrSections.push_back(section);
|
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------------
|
|
||||||
}
|
}
|
||||||
else if ( L"shd" == sName )
|
else if ( L"shd" == sName )
|
||||||
m_oShd = oReader;
|
m_oShd = oReader;
|
||||||
|
|||||||
@ -78,7 +78,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CColumn::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CColumn::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:space"), m_oSpace )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:space"), m_oSpace )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:w"), m_oW )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:w"), m_oW )
|
||||||
@ -245,7 +244,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CLineNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CLineNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:countBy"), m_oCountBy )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:countBy"), m_oCountBy )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:distance"), m_oDistance )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:distance"), m_oDistance )
|
||||||
@ -298,7 +296,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CPaperSource::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CPaperSource::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:first"), m_oFirst )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:first"), m_oFirst )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:other"), m_oOther )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:other"), m_oOther )
|
||||||
@ -851,7 +848,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CPageNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CPageNumber::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:chapSep"), m_oChapSep )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:chapSep"), m_oChapSep )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:chapStyle"), m_oChapStyle )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:chapStyle"), m_oChapStyle )
|
||||||
@ -918,7 +914,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CPageSz::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CPageSz::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:code"), m_oCode )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:code"), m_oCode )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:h"), m_oH )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:h"), m_oH )
|
||||||
@ -963,7 +958,6 @@ namespace ComplexTypes
|
|||||||
}
|
}
|
||||||
void CSectType::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CSectType::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_ReadSingle( oReader, (L"w:val"), m_oVal )
|
WritingElement_ReadAttributes_ReadSingle( oReader, (L"w:val"), m_oVal )
|
||||||
WritingElement_ReadAttributes_End( oReader )
|
WritingElement_ReadAttributes_End( oReader )
|
||||||
@ -1081,7 +1075,6 @@ namespace OOX
|
|||||||
}
|
}
|
||||||
void CColumns::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CColumns::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:equalWidth"), m_oEqualWidth )
|
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:equalWidth"), m_oEqualWidth )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:num"), m_oNum )
|
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:num"), m_oNum )
|
||||||
@ -1378,11 +1371,10 @@ namespace OOX
|
|||||||
}
|
}
|
||||||
void CPageBorders::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CPageBorders::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, (L"w:display"), m_oDisplay )
|
WritingElement_ReadAttributes_Read_if ( oReader, L"w:display", m_oDisplay )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:offsetFrom"), m_oOffsetFrom )
|
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:offsetFrom", m_oOffsetFrom )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, (L"w:zOrder"), m_oZOrder )
|
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:zOrder", m_oZOrder )
|
||||||
WritingElement_ReadAttributes_End( oReader )
|
WritingElement_ReadAttributes_End( oReader )
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1400,14 +1392,14 @@ namespace OOX
|
|||||||
}
|
}
|
||||||
void CSectPrChange::fromXML(XmlUtils::CXmlNode& oNode)
|
void CSectPrChange::fromXML(XmlUtils::CXmlNode& oNode)
|
||||||
{
|
{
|
||||||
XmlMacroReadAttributeBase( oNode, _T("w:author"), m_sAuthor );
|
XmlMacroReadAttributeBase( oNode, L"w:author", m_sAuthor );
|
||||||
XmlMacroReadAttributeBase( oNode, _T("w:date"), m_oDate );
|
XmlMacroReadAttributeBase( oNode, L"w:date", m_oDate );
|
||||||
XmlMacroReadAttributeBase( oNode, _T("w:id"), m_oId );
|
XmlMacroReadAttributeBase( oNode, L"w:id", m_oId );
|
||||||
XmlMacroReadAttributeBase( oNode, _T("oouserid"), m_sUserId );
|
XmlMacroReadAttributeBase( oNode, L"oouserid", m_sUserId );
|
||||||
|
|
||||||
XmlUtils::CXmlNode oNode_sectPr;
|
XmlUtils::CXmlNode oNode_sectPr;
|
||||||
|
|
||||||
if ( m_pSecPr.IsInit() && oNode.GetNode( _T("w:sectPr"), oNode_sectPr ) )
|
if ( m_pSecPr.IsInit() && oNode.GetNode( L"w:sectPr", oNode_sectPr ) )
|
||||||
m_pSecPr->fromXML( oNode_sectPr );
|
m_pSecPr->fromXML( oNode_sectPr );
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1422,13 +1414,13 @@ namespace OOX
|
|||||||
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
while( oReader.ReadNextSiblingNode( nParentDepth ) )
|
||||||
{
|
{
|
||||||
std::wstring sName = oReader.GetName();
|
std::wstring sName = oReader.GetName();
|
||||||
if ( _T("w:sectPr") == sName )
|
if ( L"w:sectPr" == sName )
|
||||||
m_pSecPr->fromXML( oReader );
|
m_pSecPr->fromXML( oReader );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::wstring CSectPrChange::toXML() const
|
std::wstring CSectPrChange::toXML() const
|
||||||
{
|
{
|
||||||
std::wstring sResult = _T("<w:sectPrChange ");
|
std::wstring sResult = L"<w:sectPrChange ";
|
||||||
|
|
||||||
if ( m_sAuthor.IsInit() )
|
if ( m_sAuthor.IsInit() )
|
||||||
{
|
{
|
||||||
@ -1439,31 +1431,31 @@ namespace OOX
|
|||||||
|
|
||||||
if ( m_oDate.IsInit() )
|
if ( m_oDate.IsInit() )
|
||||||
{
|
{
|
||||||
sResult += _T("w:date=\"");
|
sResult += L"w:date=\"";
|
||||||
sResult += m_oDate->ToString();
|
sResult += m_oDate->ToString();
|
||||||
sResult += _T("\" ");
|
sResult += L"\" ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_oId.IsInit() )
|
if ( m_oId.IsInit() )
|
||||||
{
|
{
|
||||||
sResult += _T("w:id=\"");
|
sResult += L"w:id=\"";
|
||||||
sResult += m_oId->ToString();
|
sResult += m_oId->ToString();
|
||||||
sResult += _T("\" ");
|
sResult += L"\" ";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_sUserId.IsInit() )
|
if ( m_sUserId.IsInit() )
|
||||||
{
|
{
|
||||||
sResult += _T("oouserid=\"");
|
sResult += L"oouserid=\"";
|
||||||
sResult += m_sUserId.get2();
|
sResult += m_sUserId.get2();
|
||||||
sResult += _T("\" ");
|
sResult += L"\" ";
|
||||||
}
|
}
|
||||||
|
|
||||||
sResult += _T(">");
|
sResult += L">";
|
||||||
|
|
||||||
if ( m_pSecPr.IsInit() )
|
if ( m_pSecPr.IsInit() )
|
||||||
sResult += m_pSecPr->toXML();
|
sResult += m_pSecPr->toXML();
|
||||||
|
|
||||||
sResult += _T("</w:sectPrChange>");
|
sResult += L"</w:sectPrChange>";
|
||||||
|
|
||||||
return sResult;
|
return sResult;
|
||||||
}
|
}
|
||||||
@ -1473,12 +1465,11 @@ namespace OOX
|
|||||||
}
|
}
|
||||||
void CSectPrChange::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
void CSectPrChange::ReadAttributes(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
// Читаем атрибуты
|
|
||||||
WritingElement_ReadAttributes_Start( oReader )
|
WritingElement_ReadAttributes_Start( oReader )
|
||||||
WritingElement_ReadAttributes_Read_if ( oReader, _T("w:author"), m_sAuthor )
|
WritingElement_ReadAttributes_Read_if ( oReader, L"w:author", m_sAuthor )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:date"), m_oDate )
|
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:date", m_oDate )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("w:id"), m_oId )
|
WritingElement_ReadAttributes_Read_else_if( oReader, L"w:id", m_oId )
|
||||||
WritingElement_ReadAttributes_Read_else_if( oReader, _T("oouserid"), m_sUserId )
|
WritingElement_ReadAttributes_Read_else_if( oReader, L"oouserid", m_sUserId )
|
||||||
WritingElement_ReadAttributes_End( oReader )
|
WritingElement_ReadAttributes_End( oReader )
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1511,116 +1502,70 @@ namespace OOX
|
|||||||
}
|
}
|
||||||
void CSectionProperty::fromXML(XmlUtils::CXmlNode &oNode)
|
void CSectionProperty::fromXML(XmlUtils::CXmlNode &oNode)
|
||||||
{
|
{
|
||||||
if ( (L"w:sectPr") != oNode.GetName() )
|
std::vector<XmlUtils::CXmlNode> oChilds;
|
||||||
return;
|
oNode.GetNodes(L"*", oChilds);
|
||||||
|
|
||||||
|
if (oChilds.empty() && oNode.GetAttributesCount() < 1)
|
||||||
|
{
|
||||||
|
m_bEmpty = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
XmlMacroReadAttributeBase( oNode, (L"w:rsidDel"), m_oRsidDel );
|
XmlMacroReadAttributeBase( oNode, (L"w:rsidDel"), m_oRsidDel );
|
||||||
XmlMacroReadAttributeBase( oNode, (L"w:rsidR"), m_oRsidR );
|
XmlMacroReadAttributeBase( oNode, (L"w:rsidR"), m_oRsidR );
|
||||||
XmlMacroReadAttributeBase( oNode, (L"w:rsidRPr"), m_oRsidRPr );
|
XmlMacroReadAttributeBase( oNode, (L"w:rsidRPr"), m_oRsidRPr );
|
||||||
XmlMacroReadAttributeBase( oNode, (L"w:rsidSect"), m_oRsidSect );
|
XmlMacroReadAttributeBase( oNode, (L"w:rsidSect"), m_oRsidSect );
|
||||||
|
|
||||||
XmlUtils::CXmlNode oChild;
|
for (size_t nIndex = 0; nIndex < oChilds.size(); nIndex++)
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:bidi"), oChild ) )
|
|
||||||
m_oBidi = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:cols"), oChild ) )
|
|
||||||
m_oCols = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:docGrid"), oChild ) )
|
|
||||||
m_oDocGrid = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:endnotePr"), oChild ) )
|
|
||||||
m_oEndnotePr = oChild;
|
|
||||||
|
|
||||||
if ( !m_bSectPrChange )
|
|
||||||
{
|
{
|
||||||
std::vector<XmlUtils::CXmlNode> oNodes;
|
XmlUtils::CXmlNode& oChild = oChilds[nIndex];
|
||||||
if ( oNode.GetNodes( (L"w:footerReference"), oNodes ) )
|
if (oChild.IsValid())
|
||||||
{
|
{
|
||||||
for ( int nIndex = 0; nIndex < oNodes.size(); nIndex++ )
|
std::wstring sName = oChild.GetName();
|
||||||
{
|
|
||||||
XmlUtils::CXmlNode& oNode = oNodes[nIndex];
|
|
||||||
if ( oNode.IsValid() )
|
|
||||||
{
|
|
||||||
nullable<ComplexTypes::Word::CHdrFtrRef> oFooter; oFooter.Init();
|
|
||||||
oFooter->FromXML(oNode);
|
|
||||||
|
|
||||||
m_arrFooterReference.push_back( oFooter );
|
if (L"w:bidi" == sName) m_oBidi = oChild;
|
||||||
}
|
else if (L"w:cols" == sName) m_oCols = oChild;
|
||||||
|
else if (L"w:docGrid" == sName) m_oDocGrid = oChild;
|
||||||
|
else if (L"w:endnotePr" == sName) m_oEndnotePr = oChild;
|
||||||
|
else if (L"w:footnotePr" == sName) m_oFootnotePr = oChild;
|
||||||
|
else if (L"w:formProt" == sName) m_oFormProt = oChild;
|
||||||
|
else if (!m_bSectPrChange && L"w:footerReference" == sName)
|
||||||
|
{
|
||||||
|
nullable<ComplexTypes::Word::CHdrFtrRef> oFooter; oFooter.Init();
|
||||||
|
oFooter->FromXML(oChild);
|
||||||
|
|
||||||
|
m_arrFooterReference.push_back(oFooter);
|
||||||
}
|
}
|
||||||
|
else if (!m_bSectPrChange && L"w:headerReference" == sName)
|
||||||
|
{
|
||||||
|
nullable < ComplexTypes::Word::CHdrFtrRef> oHeader; oHeader.Init();
|
||||||
|
oHeader->FromXML(oChild);
|
||||||
|
|
||||||
|
m_arrHeaderReference.push_back(oHeader);
|
||||||
|
}
|
||||||
|
else if (L"w:lnNumType" == sName) m_oLnNumType = oChild;
|
||||||
|
else if (L"w:noEndnote" == sName) m_oNoEndnote = oChild;
|
||||||
|
else if (L"w:paperSrc" == sName) m_oPaperSrc = oChild;
|
||||||
|
else if (L"w:pgBorders" == sName) m_oPgBorders = oChild;
|
||||||
|
else if (L"w:pgMar" == sName) m_oPgMar = oChild;
|
||||||
|
else if (L"w:pgNumType" == sName) m_oPgNumType = oChild;
|
||||||
|
else if (L"w:pgSz" == sName) m_oPgSz = oChild;
|
||||||
|
else if (L"w:printerSettings" == sName) m_oPrinterSettings = oChild;
|
||||||
|
else if (L"w:rtlGutter" == sName) m_oRtlGutter = oChild;
|
||||||
|
else if (!m_bSectPrChange && L"w:sectPrChange" == sName) m_oSectPrChange = oChild;
|
||||||
|
else if (L"w:textDirection" == sName) m_oTextDirection = oChild;
|
||||||
|
else if (L"w:titlePg" == sName) m_oTitlePg = oChild;
|
||||||
|
else if (L"w:type" == sName) m_oType = oChild;
|
||||||
|
else if (L"w:vAlign" == sName) m_oVAlign = oChild;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:footnotePr"), oChild ) )
|
|
||||||
m_oFootnotePr = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:formProt"), oChild ) )
|
|
||||||
m_oFormProt = oChild;
|
|
||||||
|
|
||||||
if ( !m_bSectPrChange )
|
|
||||||
{
|
|
||||||
std::vector<XmlUtils::CXmlNode> oNodes;
|
|
||||||
if ( oNode.GetNodes( L"w:headerReference", oNodes ) )
|
|
||||||
{
|
|
||||||
for ( size_t nIndex = 0; nIndex < oNodes.size(); nIndex++ )
|
|
||||||
{
|
|
||||||
XmlUtils::CXmlNode& oNode = oNodes[nIndex];
|
|
||||||
if ( oNode.IsValid())
|
|
||||||
{
|
|
||||||
nullable < ComplexTypes::Word::CHdrFtrRef> oHeader; oHeader.Init();
|
|
||||||
oHeader->FromXML(oNode);
|
|
||||||
|
|
||||||
m_arrHeaderReference.push_back( oHeader );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:lnNumType"), oChild ) )
|
|
||||||
m_oLnNumType = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:noEndnote"), oChild ) )
|
|
||||||
m_oNoEndnote = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:paperSrc"), oChild ) )
|
|
||||||
m_oPaperSrc = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:pgBorders"), oChild ) )
|
|
||||||
m_oPgBorders = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:pgMar"), oChild ) )
|
|
||||||
m_oPgMar = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:pgNumType"), oChild ) )
|
|
||||||
m_oPgNumType = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:pgSz"), oChild ) )
|
|
||||||
m_oPgSz = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:printerSettings"), oChild ) )
|
|
||||||
m_oPrinterSettings = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:rtlGutter"), oChild ) )
|
|
||||||
m_oRtlGutter = oChild;
|
|
||||||
|
|
||||||
if ( !m_bSectPrChange && oNode.GetNode( (L"w:sectPrChange"), oChild ) )
|
|
||||||
m_oSectPrChange = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:textDirection"), oChild ) )
|
|
||||||
m_oTextDirection = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:titlePg"), oChild ) )
|
|
||||||
m_oTitlePg = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:type"), oChild ) )
|
|
||||||
m_oType = oChild;
|
|
||||||
|
|
||||||
if ( oNode.GetNode( (L"w:vAlign"), oChild ) )
|
|
||||||
m_oVAlign = oChild;
|
|
||||||
}
|
}
|
||||||
void CSectionProperty::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
void CSectionProperty::fromXML(XmlUtils::CXmlLiteReader& oReader)
|
||||||
{
|
{
|
||||||
|
if (oReader.IsEmptyNode() && oReader.GetAttributesCount() < 1)
|
||||||
|
{
|
||||||
|
m_bEmpty = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
ReadAttributes( oReader );
|
ReadAttributes( oReader );
|
||||||
|
|
||||||
if ( oReader.IsEmptyNode() )
|
if ( oReader.IsEmptyNode() )
|
||||||
|
|||||||
@ -503,7 +503,8 @@ namespace OOX
|
|||||||
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
|
void ReadAttributes(XmlUtils::CXmlLiteReader& oReader);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool m_bSectPrChange;
|
bool m_bSectPrChange = false;
|
||||||
|
bool m_bEmpty = false;
|
||||||
|
|
||||||
nullable<SimpleTypes::CLongHexNumber> m_oRsidDel;
|
nullable<SimpleTypes::CLongHexNumber> m_oRsidDel;
|
||||||
nullable<SimpleTypes::CLongHexNumber> m_oRsidR;
|
nullable<SimpleTypes::CLongHexNumber> m_oRsidR;
|
||||||
|
|||||||
Reference in New Issue
Block a user