Added support for sub-object virtual attributes (temporary attributes for characters within objects)
and also virtual text that can replace the actual text. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -125,6 +125,7 @@ enum wxRichTextFileType
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCtrl;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextObject;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextImage;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextPlainText;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCacheObject;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextObjectList;
|
||||
class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextLine;
|
||||
@@ -1543,9 +1544,16 @@ public:
|
||||
*/
|
||||
void SetTextBoxAttr(const wxTextBoxAttr& attr) { m_textBoxAttr = attr; }
|
||||
|
||||
/**
|
||||
Returns @true if no attributes are set.
|
||||
*/
|
||||
bool IsDefault() const { return (GetFlags() == 0) && m_textBoxAttr.IsDefault(); }
|
||||
|
||||
wxTextBoxAttr m_textBoxAttr;
|
||||
};
|
||||
|
||||
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxRichTextAttr, wxRichTextAttrArray, WXDLLIMPEXP_RICHTEXT);
|
||||
|
||||
WX_DECLARE_USER_EXPORTED_OBJARRAY(wxVariant, wxRichTextVariantArray, WXDLLIMPEXP_RICHTEXT);
|
||||
|
||||
/**
|
||||
@@ -2106,9 +2114,9 @@ public:
|
||||
Pass the buffer to the context so the context can retrieve information
|
||||
such as virtual attributes.
|
||||
*/
|
||||
wxRichTextDrawingContext(wxRichTextBuffer* buffer) { Init(); m_buffer = buffer; }
|
||||
wxRichTextDrawingContext(wxRichTextBuffer* buffer);
|
||||
|
||||
void Init() { m_buffer = NULL; }
|
||||
void Init() { m_buffer = NULL; m_enableVirtualAttributes = true; }
|
||||
|
||||
/**
|
||||
Does this object have virtual attributes?
|
||||
@@ -2129,7 +2137,45 @@ public:
|
||||
*/
|
||||
bool ApplyVirtualAttributes(wxRichTextAttr& attr, wxRichTextObject* obj) const;
|
||||
|
||||
/**
|
||||
Gets the count for mixed virtual attributes for individual positions within the object.
|
||||
For example, individual characters within a text object may require special highlighting.
|
||||
*/
|
||||
int GetVirtualSubobjectAttributesCount(wxRichTextObject* obj) const;
|
||||
|
||||
/**
|
||||
Gets the mixed virtual attributes for individual positions within the object.
|
||||
For example, individual characters within a text object may require special highlighting.
|
||||
The function is passed the count returned by GetVirtualSubobjectAttributesCount.
|
||||
*/
|
||||
int GetVirtualSubobjectAttributes(wxRichTextObject* obj, wxArrayInt& positions, wxRichTextAttrArray& attributes) const;
|
||||
|
||||
/**
|
||||
Do we have virtual text for this object? Virtual text allows an application
|
||||
to replace characters in an object for editing and display purposes, for example
|
||||
for highlighting special characters.
|
||||
*/
|
||||
bool HasVirtualText(const wxRichTextPlainText* obj) const;
|
||||
|
||||
/**
|
||||
Gets the virtual text for this object.
|
||||
*/
|
||||
bool GetVirtualText(const wxRichTextPlainText* obj, wxString& text) const;
|
||||
|
||||
/**
|
||||
Enables virtual attribute processing.
|
||||
*/
|
||||
|
||||
void EnableVirtualAttributes(bool b) { m_enableVirtualAttributes = b; }
|
||||
|
||||
/**
|
||||
Returns @true if virtual attribute processing is enabled.
|
||||
*/
|
||||
|
||||
bool GetVirtualAttributesEnabled() const { return m_enableVirtualAttributes; }
|
||||
|
||||
wxRichTextBuffer* m_buffer;
|
||||
bool m_enableVirtualAttributes;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -2252,13 +2298,26 @@ public:
|
||||
/**
|
||||
Returns @true if this object can merge itself with the given one.
|
||||
*/
|
||||
virtual bool CanMerge(wxRichTextObject* WXUNUSED(object)) const { return false; }
|
||||
virtual bool CanMerge(wxRichTextObject* WXUNUSED(object), wxRichTextDrawingContext& WXUNUSED(context)) const { return false; }
|
||||
|
||||
/**
|
||||
Returns @true if this object merged itself with the given one.
|
||||
The calling code will then delete the given object.
|
||||
*/
|
||||
virtual bool Merge(wxRichTextObject* WXUNUSED(object)) { return false; }
|
||||
virtual bool Merge(wxRichTextObject* WXUNUSED(object), wxRichTextDrawingContext& WXUNUSED(context)) { return false; }
|
||||
|
||||
/**
|
||||
JACS
|
||||
Returns @true if this object can potentially be split, by virtue of having
|
||||
different virtual attributes for individual sub-objects.
|
||||
*/
|
||||
virtual bool CanSplit(wxRichTextDrawingContext& WXUNUSED(context)) const { return false; }
|
||||
|
||||
/**
|
||||
Returns the final object in the split objects if this object was split due to differences between sub-object virtual attributes.
|
||||
Returns itself if it was not split.
|
||||
*/
|
||||
virtual wxRichTextObject* Split(wxRichTextDrawingContext& WXUNUSED(context)) { return this; }
|
||||
|
||||
/**
|
||||
Dump object data to the given output stream for debugging.
|
||||
@@ -2811,7 +2870,7 @@ public:
|
||||
/**
|
||||
Recursively merges all pieces that can be merged.
|
||||
*/
|
||||
bool Defragment(const wxRichTextRange& range = wxRICHTEXT_ALL);
|
||||
bool Defragment(wxRichTextDrawingContext& context, const wxRichTextRange& range = wxRICHTEXT_ALL);
|
||||
|
||||
/**
|
||||
Moves the object recursively, by adding the offset from old to new.
|
||||
@@ -4295,12 +4354,16 @@ public:
|
||||
|
||||
virtual bool IsEmpty() const { return m_text.empty(); }
|
||||
|
||||
virtual bool CanMerge(wxRichTextObject* object) const;
|
||||
virtual bool CanMerge(wxRichTextObject* object, wxRichTextDrawingContext& context) const;
|
||||
|
||||
virtual bool Merge(wxRichTextObject* object);
|
||||
virtual bool Merge(wxRichTextObject* object, wxRichTextDrawingContext& context);
|
||||
|
||||
virtual void Dump(wxTextOutputStream& stream);
|
||||
|
||||
virtual bool CanSplit(wxRichTextDrawingContext& context) const;
|
||||
|
||||
virtual wxRichTextObject* Split(wxRichTextDrawingContext& context);
|
||||
|
||||
/**
|
||||
Get the first position from pos that has a line break character.
|
||||
*/
|
||||
@@ -6254,6 +6317,31 @@ public:
|
||||
*/
|
||||
virtual bool GetVirtualAttributes(wxRichTextAttr& attr, wxRichTextObject* obj) const = 0;
|
||||
|
||||
/**
|
||||
Gets the count for mixed virtual attributes for individual positions within the object.
|
||||
For example, individual characters within a text object may require special highlighting.
|
||||
*/
|
||||
virtual int GetVirtualSubobjectAttributesCount(wxRichTextObject* obj) const = 0;
|
||||
|
||||
/**
|
||||
Gets the mixed virtual attributes for individual positions within the object.
|
||||
For example, individual characters within a text object may require special highlighting.
|
||||
Returns the number of virtual attributes found.
|
||||
*/
|
||||
virtual int GetVirtualSubobjectAttributes(wxRichTextObject* obj, wxArrayInt& positions, wxRichTextAttrArray& attributes) const = 0;
|
||||
|
||||
/**
|
||||
Do we have virtual text for this object? Virtual text allows an application
|
||||
to replace characters in an object for editing and display purposes, for example
|
||||
for highlighting special characters.
|
||||
*/
|
||||
virtual bool HasVirtualText(const wxRichTextPlainText* obj) const = 0;
|
||||
|
||||
/**
|
||||
Gets the virtual text for this object.
|
||||
*/
|
||||
virtual bool GetVirtualText(const wxRichTextPlainText* obj, wxString& text) const = 0;
|
||||
|
||||
/**
|
||||
Sets the name of the handler.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user