Use paragraph's attributes for paragraph-related styles, and also
use combined attributes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -47,8 +47,8 @@ protected:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// Output character formatting
|
/// Output character formatting
|
||||||
virtual void BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, wxOutputStream& stream );
|
virtual void BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, const wxTextAttrEx& paraStyle, wxOutputStream& stream );
|
||||||
virtual void EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream );
|
virtual void EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, const wxTextAttrEx& paraStyle, wxOutputStream& stream );
|
||||||
|
|
||||||
/// Output paragraph formatting
|
/// Output paragraph formatting
|
||||||
virtual void OutputParagraphFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream/*, bool start*/);
|
virtual void OutputParagraphFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream/*, bool start*/);
|
||||||
|
@@ -98,7 +98,9 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
|
|||||||
|
|
||||||
if (para)
|
if (para)
|
||||||
{
|
{
|
||||||
OutputParagraphFormatting(currentParaStyle, para->GetAttributes(), stream);
|
wxTextAttrEx paraStyle(para->GetCombinedAttributes());
|
||||||
|
|
||||||
|
OutputParagraphFormatting(currentParaStyle, paraStyle, stream);
|
||||||
|
|
||||||
wxRichTextObjectList::compatibility_iterator node2 = para->GetChildren().GetFirst();
|
wxRichTextObjectList::compatibility_iterator node2 = para->GetChildren().GetFirst();
|
||||||
while (node2)
|
while (node2)
|
||||||
@@ -107,11 +109,12 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
|
|||||||
wxRichTextPlainText* textObj = wxDynamicCast(obj, wxRichTextPlainText);
|
wxRichTextPlainText* textObj = wxDynamicCast(obj, wxRichTextPlainText);
|
||||||
if (textObj && !textObj->IsEmpty())
|
if (textObj && !textObj->IsEmpty())
|
||||||
{
|
{
|
||||||
BeginCharacterFormatting(currentCharStyle, obj->GetAttributes(), stream);
|
wxTextAttrEx charStyle(para->GetCombinedAttributes(obj->GetAttributes()));
|
||||||
|
BeginCharacterFormatting(currentCharStyle, charStyle, paraStyle, stream);
|
||||||
|
|
||||||
str << textObj->GetText();
|
str << textObj->GetText();
|
||||||
|
|
||||||
EndCharacterFormatting(currentCharStyle, obj->GetAttributes(), stream);
|
EndCharacterFormatting(currentCharStyle, charStyle, paraStyle, stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxRichTextImage* image = wxDynamicCast(obj, wxRichTextImage);
|
wxRichTextImage* image = wxDynamicCast(obj, wxRichTextImage);
|
||||||
@@ -131,12 +134,12 @@ bool wxRichTextHTMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream&
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, wxOutputStream& stream)
|
void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& currentStyle, const wxTextAttrEx& thisStyle, const wxTextAttrEx& paraStyle, wxOutputStream& stream)
|
||||||
{
|
{
|
||||||
wxTextOutputStream str(stream);
|
wxTextOutputStream str(stream);
|
||||||
|
|
||||||
//Is the item bulleted one?
|
//Is the item bulleted one?
|
||||||
if( thisStyle.GetBulletStyle() != wxTEXT_ATTR_BULLET_STYLE_NONE )
|
if( paraStyle.GetBulletStyle() != wxTEXT_ATTR_BULLET_STYLE_NONE )
|
||||||
{
|
{
|
||||||
//Is there any opened list?
|
//Is there any opened list?
|
||||||
if( m_list )
|
if( m_list )
|
||||||
@@ -145,7 +148,7 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
|
|
||||||
//Is the item among the previous ones
|
//Is the item among the previous ones
|
||||||
//Is the item one of the previous list tag's child items
|
//Is the item one of the previous list tag's child items
|
||||||
if( (thisStyle.GetLeftIndent() == (m_indent + 100)) || (thisStyle.GetLeftIndent() < 100) )
|
if( (paraStyle.GetLeftIndent() == (m_indent + 100)) || (paraStyle.GetLeftIndent() < 100) )
|
||||||
str << wxT("<li>");//Yes it is
|
str << wxT("<li>");//Yes it is
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -155,12 +158,12 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
str << (m_is_ul ? wxT("</ul>") : wxT("</ol>"));
|
str << (m_is_ul ? wxT("</ul>") : wxT("</ol>"));
|
||||||
|
|
||||||
//And renavigate to new list's horizontal position
|
//And renavigate to new list's horizontal position
|
||||||
NavigateToListPosition(thisStyle, str);
|
NavigateToListPosition(paraStyle, str);
|
||||||
//Ok it's done
|
//Ok it's done
|
||||||
|
|
||||||
//Get the appropriate tag, an ol for numerical values, an ul for dot, square etc.
|
//Get the appropriate tag, an ol for numerical values, an ul for dot, square etc.
|
||||||
wxString tag;
|
wxString tag;
|
||||||
TypeOfList(thisStyle, tag);
|
TypeOfList(paraStyle, tag);
|
||||||
str << tag << wxT("<li>");
|
str << tag << wxT("<li>");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -169,11 +172,11 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
//No there isn't a list
|
//No there isn't a list
|
||||||
|
|
||||||
//navigate to new list's horizontal position(indent)
|
//navigate to new list's horizontal position(indent)
|
||||||
NavigateToListPosition(thisStyle, str);
|
NavigateToListPosition(paraStyle, str);
|
||||||
|
|
||||||
//Get the appropriate tag, an ol for numerical values, an ul for dot, square etc.
|
//Get the appropriate tag, an ol for numerical values, an ul for dot, square etc.
|
||||||
wxString tag;
|
wxString tag;
|
||||||
TypeOfList(thisStyle, tag);
|
TypeOfList(paraStyle, tag);
|
||||||
str << tag << wxT("<li>");
|
str << tag << wxT("<li>");
|
||||||
|
|
||||||
//Now we have a list, mark it.
|
//Now we have a list, mark it.
|
||||||
@@ -191,25 +194,25 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
}
|
}
|
||||||
|
|
||||||
// does the item have an indentation ?
|
// does the item have an indentation ?
|
||||||
if( thisStyle.GetLeftIndent() )
|
if( paraStyle.GetLeftIndent() )
|
||||||
{
|
{
|
||||||
if( thisStyle.GetBulletStyle() == wxTEXT_ATTR_BULLET_STYLE_NONE )
|
if( paraStyle.GetBulletStyle() == wxTEXT_ATTR_BULLET_STYLE_NONE )
|
||||||
{
|
{
|
||||||
if( m_indent )
|
if( m_indent )
|
||||||
{
|
{
|
||||||
if( (thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent()) == m_indent )
|
if( (paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent()) == m_indent )
|
||||||
{
|
{
|
||||||
if( thisStyle.GetLeftSubIndent() < 0 )
|
if( paraStyle.GetLeftSubIndent() < 0 )
|
||||||
{
|
{
|
||||||
str << SymbolicIndent(~thisStyle.GetLeftSubIndent());
|
str << SymbolicIndent(~paraStyle.GetLeftSubIndent());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent() > m_indent )
|
if( paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent() > m_indent )
|
||||||
{
|
{
|
||||||
Indent(thisStyle, str);
|
Indent(paraStyle, str);
|
||||||
m_indent = thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent();
|
m_indent = paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent();
|
||||||
m_indents.Add( m_indent );
|
m_indents.Add( m_indent );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -217,19 +220,19 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
int i = m_indents.size() - 1;
|
int i = m_indents.size() - 1;
|
||||||
for(; i > -1; i--)
|
for(; i > -1; i--)
|
||||||
{
|
{
|
||||||
if( m_indent < (thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent()) )
|
if( m_indent < (paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent()) )
|
||||||
{
|
{
|
||||||
Indent(thisStyle, str);
|
Indent(paraStyle, str);
|
||||||
m_indent = thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent();
|
m_indent = paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent();
|
||||||
m_indents.Add( m_indent );
|
m_indents.Add( m_indent );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if( m_indent == (thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent()) )
|
else if( m_indent == (paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent()) )
|
||||||
{
|
{
|
||||||
if( thisStyle.GetLeftSubIndent() < 0 )
|
if( paraStyle.GetLeftSubIndent() < 0 )
|
||||||
{
|
{
|
||||||
str << SymbolicIndent(~thisStyle.GetLeftSubIndent());
|
str << SymbolicIndent(~paraStyle.GetLeftSubIndent());
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -248,8 +251,8 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Indent(thisStyle, str);
|
Indent(paraStyle, str);
|
||||||
m_indent = thisStyle.GetLeftIndent() + thisStyle.GetLeftSubIndent();
|
m_indent = paraStyle.GetLeftIndent() + paraStyle.GetLeftSubIndent();
|
||||||
m_indents.Add( m_indent );
|
m_indents.Add( m_indent );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -291,7 +294,7 @@ void wxRichTextHTMLHandler::BeginCharacterFormatting(const wxTextAttrEx& current
|
|||||||
str << wxT("<u>");
|
str << wxT("<u>");
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxRichTextHTMLHandler::EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, wxOutputStream& stream)
|
void wxRichTextHTMLHandler::EndCharacterFormatting(const wxTextAttrEx& WXUNUSED(currentStyle), const wxTextAttrEx& thisStyle, const wxTextAttrEx& WXUNUSED(paraStyle), wxOutputStream& stream)
|
||||||
{
|
{
|
||||||
wxTextOutputStream str(stream);
|
wxTextOutputStream str(stream);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user