\section{\class{wxRichTextBuffer}}\label{wxrichtextbuffer}

This class represents the whole buffer associated with a \helpref{wxRichTextCtrl}{wxrichtextctrl}.

\wxheading{Derived from}

wxRichTextParagraphLayoutBox

\wxheading{Include files}

<wx/richtext/richtextbuffer.h>

\wxheading{Data structures}

\wxheading{See also}

\helpref{wxTextAttr}{wxtextattr}, \helpref{wxTextAttrEx}{wxtextattrex}, \helpref{wxRichTextAttr}{wxrichtextattr}, \helpref{wxRichTextCtrl}{wxrichtextctrl}

\latexignore{\rtfignore{\wxheading{Members}}}

\membersection{wxRichTextBuffer::wxRichTextBuffer}\label{wxrichtextbufferwxrichtextbuffer}

\func{}{wxRichTextBuffer}{\param{const wxRichTextBuffer\& }{obj}}

Copy constructor.

\func{}{wxRichTextBuffer}{\void}

Default constructors.

\membersection{wxRichTextBuffer::\destruct{wxRichTextBuffer}}\label{wxrichtextbufferdtor}

\func{}{\destruct{wxRichTextBuffer}}{\void}

Destructor.

\membersection{wxRichTextBuffer::AddHandler}\label{wxrichtextbufferaddhandler}

\func{void}{AddHandler}{\param{wxRichTextFileHandler* }{handler}}

Adds a file handler.

\membersection{wxRichTextBuffer::AddParagraph}\label{wxrichtextbufferaddparagraph}

\func{wxRichTextRange}{AddParagraph}{\param{const wxString\& }{text}}

Adds a paragraph of text.

\membersection{wxRichTextBuffer::BatchingUndo}\label{wxrichtextbufferbatchingundo}

\constfunc{bool}{BatchingUndo}{\void}

Returns \true if the buffer is currently collapsing commands into a single notional command.

\membersection{wxRichTextBuffer::BeginAlignment}\label{wxrichtextbufferbeginalignment}

\func{bool}{BeginAlignment}{\param{wxTextAttrAlignment }{alignment}}

Begins using alignment.

\membersection{wxRichTextBuffer::BeginBatchUndo}\label{wxrichtextbufferbeginbatchundo}

\func{bool}{BeginBatchUndo}{\param{const wxString\& }{cmdName}}

Begins collapsing undo/redo commands. Note that this may not work properly
if combining commands that delete or insert content, changing ranges for
subsequent actions.

{\it cmdName} should be the name of the combined command that will appear
next to Undo and Redo in the edit menu.

\membersection{wxRichTextBuffer::BeginBold}\label{wxrichtextbufferbeginbold}

\func{bool}{BeginBold}{\void}

Begin applying bold.

\membersection{wxRichTextBuffer::BeginCharacterStyle}\label{wxrichtextbufferbegincharacterstyle}

\func{bool}{BeginCharacterStyle}{\param{const wxString\& }{characterStyle}}

Begins applying the named character style.

\membersection{wxRichTextBuffer::BeginFont}\label{wxrichtextbufferbeginfont}

\func{bool}{BeginFont}{\param{const wxFont\& }{font}}

Begins using this font.

\membersection{wxRichTextBuffer::BeginFontSize}\label{wxrichtextbufferbeginfontsize}

\func{bool}{BeginFontSize}{\param{int }{pointSize}}

Begins using the given point size.

\membersection{wxRichTextBuffer::BeginItalic}\label{wxrichtextbufferbeginitalic}

\func{bool}{BeginItalic}{\void}

Begins using italic.

\membersection{wxRichTextBuffer::BeginLeftIndent}\label{wxrichtextbufferbeginleftindent}

\func{bool}{BeginLeftIndent}{\param{int }{leftIndent}, \param{int }{leftSubIndent = 0}}

Begin using {\it leftIndent} for the left indent, and optionally {\it leftSubIndent} for
the sub-indent. Both are expressed in tenths of a millimetre.

The sub-indent is an offset from the left of the paragraph, and is used for all but the
first line in a paragraph. A positive value will cause the first line to appear to the left
of the subsequent lines, and a negative value will cause the first line to be indented
relative to the subsequent lines.

\membersection{wxRichTextBuffer::BeginLineSpacing}\label{wxrichtextbufferbeginlinespacing}

\func{bool}{BeginLineSpacing}{\param{int }{lineSpacing}}

Begins line spacing using the specified value. {\it spacing} is a multiple, where 10 means single-spacing,
15 means 1.5 spacing, and 20 means double spacing. The following constants are
defined for convenience:

{\small
\begin{verbatim}
#define wxTEXT_ATTR_LINE_SPACING_NORMAL         10
#define wxTEXT_ATTR_LINE_SPACING_HALF           15
#define wxTEXT_ATTR_LINE_SPACING_TWICE          20
\end{verbatim}
}

\membersection{wxRichTextBuffer::BeginNumberedBullet}\label{wxrichtextbufferbeginnumberedbullet}

\func{bool}{BeginNumberedBullet}{\param{int }{bulletNumber}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_ARABIC|wxTEXT\_ATTR\_BULLET\_STYLE\_PERIOD}}

Begins a numbered bullet. This call will be needed for each item in the list, and the
application should take care of incrementing the numbering.

{\it bulletNumber} is a number, usually starting with 1.

{\it leftIndent} and {\it leftSubIndent} are values in tenths of a millimetre.

{\it bulletStyle} is a bitlist of the following values:

{\small
\begin{verbatim}
#define wxTEXT_ATTR_BULLET_STYLE_NONE           0x0000
#define wxTEXT_ATTR_BULLET_STYLE_ARABIC         0x0001
#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER  0x0002
#define wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER  0x0004
#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER    0x0008
#define wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER    0x0010
#define wxTEXT_ATTR_BULLET_STYLE_SYMBOL         0x0020
#define wxTEXT_ATTR_BULLET_STYLE_BITMAP         0x0040
#define wxTEXT_ATTR_BULLET_STYLE_PARENTHESES    0x0080
#define wxTEXT_ATTR_BULLET_STYLE_PERIOD         0x0100
\end{verbatim}
}

wxRichTextBuffer uses indentation to render a bulleted item. The left indent is the distance between
the margin and the bullet. The content of the paragraph, including the first line, starts
at leftMargin + leftSubIndent. So the distance between the left edge of the bullet and the
left of the actual paragraph is leftSubIndent.

\membersection{wxRichTextBuffer::BeginParagraphSpacing}\label{wxrichtextbufferbeginparagraphspacing}

\func{bool}{BeginParagraphSpacing}{\param{int }{before}, \param{int }{after}}

Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing in tenths of
a millimetre.

\membersection{wxRichTextBuffer::BeginParagraphStyle}\label{wxrichtextbufferbeginparagraphstyle}

\func{bool}{BeginParagraphStyle}{\param{const wxString\& }{paragraphStyle}}

Begins applying the named paragraph style.

\membersection{wxRichTextBuffer::BeginRightIndent}\label{wxrichtextbufferbeginrightindent}

\func{bool}{BeginRightIndent}{\param{int }{rightIndent}}

Begins a right indent, specified in tenths of a millimetre.

\membersection{wxRichTextBuffer::BeginStyle}\label{wxrichtextbufferbeginstyle}

\func{bool}{BeginStyle}{\param{const wxTextAttrEx\& }{style}}

Begins using a specified style.

\membersection{wxRichTextBuffer::BeginSuppressUndo}\label{wxrichtextbufferbeginsuppressundo}

\func{bool}{BeginSuppressUndo}{\void}

Begins suppressing undo/redo commands. The way undo is suppressed may be implemented
differently by each command. If not dealt with by a command implementation, then
it will be implemented automatically by not storing the command in the undo history
when the action is submitted to the command processor.

\membersection{wxRichTextBuffer::BeginSymbolBullet}\label{wxrichtextbufferbeginsymbolbullet}

\func{bool}{BeginSymbolBullet}{\param{wxChar }{symbol}, \param{int }{leftIndent}, \param{int }{leftSubIndent}, \param{int }{bulletStyle = wxTEXT\_ATTR\_BULLET\_STYLE\_SYMBOL}}

Begins applying a symbol bullet, using a character from the current font. See \helpref{BeginNumberedBullet}{wxrichtextbufferbeginnumberedbullet} for
an explanation of how indentation is used to render the bulleted paragraph.

\membersection{wxRichTextBuffer::BeginTextColour}\label{wxrichtextbufferbegintextcolour}

\func{bool}{BeginTextColour}{\param{const wxColour\& }{colour}}

Begins using the specified text foreground colour.

\membersection{wxRichTextBuffer::BeginUnderline}\label{wxrichtextbufferbeginunderline}

\func{bool}{BeginUnderline}{\void}

Begins using underline.

\membersection{wxRichTextBuffer::CanPasteFromClipboard}\label{wxrichtextbuffercanpastefromclipboard}

\constfunc{bool}{CanPasteFromClipboard}{\void}

Returns \true if content can be pasted from the clipboard.

\membersection{wxRichTextBuffer::CleanUpHandlers}\label{wxrichtextbuffercleanuphandlers}

\func{void}{CleanUpHandlers}{\void}

Cleans up the file handlers.

\membersection{wxRichTextBuffer::Clear}\label{wxrichtextbufferclear}

\func{void}{Clear}{\void}

Clears the buffer and resets the command processor.

\membersection{wxRichTextBuffer::ClearStyleStack}\label{wxrichtextbufferclearstylestack}

\func{void}{ClearStyleStack}{\void}

Clears the style stack.

\membersection{wxRichTextBuffer::Clone}\label{wxrichtextbufferclone}

\constfunc{wxRichTextObject*}{Clone}{\void}

Clones the object.

\membersection{wxRichTextBuffer::Copy}\label{wxrichtextbuffercopy}

\func{void}{Copy}{\param{const wxRichTextBuffer\& }{obj}}

Copies the given buffer.

\membersection{wxRichTextBuffer::CopyToClipboard}\label{wxrichtextbuffercopytoclipboard}

\func{bool}{CopyToClipboard}{\param{const wxRichTextRange\& }{range}}

Copy the given range to the clipboard.

\membersection{wxRichTextBuffer::DeleteRangeWithUndo}\label{wxrichtextbufferdeleterangewithundo}

\func{bool}{DeleteRangeWithUndo}{\param{const wxRichTextRange\& }{range}, \param{long }{initialCaretPosition}, \param{long }{newCaretPositon}, \param{wxRichTextCtrl* }{ctrl}}

Submits a command to delete the given range.

\membersection{wxRichTextBuffer::Dump}\label{wxrichtextbufferdump}

\func{void}{Dump}{\void}

\func{void}{Dump}{\param{wxTextOutputStream\& }{stream}}

Dumps the contents of the buffer for debugging purposes.

\membersection{wxRichTextBuffer::EndAlignment}\label{wxrichtextbufferendalignment}

\func{bool}{EndAlignment}{\void}

Ends alignment.

\membersection{wxRichTextBuffer::EndAllStyles}\label{wxrichtextbufferendallstyles}

\func{bool}{EndAllStyles}{\void}

Ends all styles that have been started with a Begin... command.

\membersection{wxRichTextBuffer::EndBatchUndo}\label{wxrichtextbufferendbatchundo}

\func{bool}{EndBatchUndo}{\void}

Ends collapsing undo/redo commands, and submits the combined command.

\membersection{wxRichTextBuffer::EndBold}\label{wxrichtextbufferendbold}

\func{bool}{EndBold}{\void}

Ends using bold.

\membersection{wxRichTextBuffer::EndCharacterStyle}\label{wxrichtextbufferendcharacterstyle}

\func{bool}{EndCharacterStyle}{\void}

Ends using the named character style.

\membersection{wxRichTextBuffer::EndFont}\label{wxrichtextbufferendfont}

\func{bool}{EndFont}{\void}

Ends using a font.

\membersection{wxRichTextBuffer::EndFontSize}\label{wxrichtextbufferendfontsize}

\func{bool}{EndFontSize}{\void}

Ends using a point size.

\membersection{wxRichTextBuffer::EndItalic}\label{wxrichtextbufferenditalic}

\func{bool}{EndItalic}{\void}

Ends using italic.

\membersection{wxRichTextBuffer::EndLeftIndent}\label{wxrichtextbufferendleftindent}

\func{bool}{EndLeftIndent}{\void}

Ends using a left indent.

\membersection{wxRichTextBuffer::EndLineSpacing}\label{wxrichtextbufferendlinespacing}

\func{bool}{EndLineSpacing}{\void}

Ends using a line spacing.

\membersection{wxRichTextBuffer::EndNumberedBullet}\label{wxrichtextbufferendnumberedbullet}

\func{bool}{EndNumberedBullet}{\void}

Ends a numbered bullet.

\membersection{wxRichTextBuffer::EndParagraphSpacing}\label{wxrichtextbufferendparagraphspacing}

\func{bool}{EndParagraphSpacing}{\void}

Ends paragraph spacing.

\membersection{wxRichTextBuffer::EndParagraphStyle}\label{wxrichtextbufferendparagraphstyle}

\func{bool}{EndParagraphStyle}{\void}

Ends applying a named character style.

\membersection{wxRichTextBuffer::EndRightIndent}\label{wxrichtextbufferendrightindent}

\func{bool}{EndRightIndent}{\void}

Ends using a right indent.

\membersection{wxRichTextBuffer::EndStyle}\label{wxrichtextbufferendstyle}

\func{bool}{EndStyle}{\void}

Ends the current style.

\membersection{wxRichTextBuffer::EndSuppressUndo}\label{wxrichtextbufferendsuppressundo}

\func{bool}{EndSuppressUndo}{\void}

Ends suppressing undo/redo commands.

\membersection{wxRichTextBuffer::EndSymbolBullet}\label{wxrichtextbufferendsymbolbullet}

\func{bool}{EndSymbolBullet}{\void}

Ends using a symbol bullet.

\membersection{wxRichTextBuffer::EndTextColour}\label{wxrichtextbufferendtextcolour}

\func{bool}{EndTextColour}{\void}

Ends using a text foreground colour.

\membersection{wxRichTextBuffer::EndUnderline}\label{wxrichtextbufferendunderline}

\func{bool}{EndUnderline}{\void}

Ends using underline.

\membersection{wxRichTextBuffer::FindHandler}\label{wxrichtextbufferfindhandler}

\func{wxRichTextFileHandler*}{FindHandler}{\param{int }{imageType}}

Finds a handler by type.

\func{wxRichTextFileHandler*}{FindHandler}{\param{const wxString\& }{extension}, \param{int }{imageType}}

Finds a handler by extension and type.

\func{wxRichTextFileHandler*}{FindHandler}{\param{const wxString\& }{name}}

Finds a handler by name.

\membersection{wxRichTextBuffer::FindHandlerFilenameOrType}\label{wxrichtextbufferfindhandlerfilenameortype}

\func{wxRichTextFileHandler*}{FindHandlerFilenameOrType}{\param{const wxString\& }{filename}, \param{int }{imageType}}

Finds a handler by filename or, if supplied, type.

\membersection{wxRichTextBuffer::GetBatchedCommand}\label{wxrichtextbuffergetbatchedcommand}

\constfunc{wxRichTextCommand*}{GetBatchedCommand}{\void}

Gets the collapsed command.

\membersection{wxRichTextBuffer::GetCommandProcessor}\label{wxrichtextbuffergetcommandprocessor}

\constfunc{wxCommandProcessor*}{GetCommandProcessor}{\void}

Gets the command processor. A text buffer always creates its own command processor when it is
initialized.

\membersection{wxRichTextBuffer::GetExtWildcard}\label{wxrichtextbuffergetextwildcard}

\func{wxString}{GetExtWildcard}{\param{bool }{combine = false}, \param{bool }{save = false}, \param{wxArrayInt* }{types = NULL}}

Gets a wildcard incorporating all visible handlers. If {\it types} is present,
it will be filled with the file type corresponding to each filter. This can be
used to determine the type to pass to \helpref{LoadFile}{wxrichtextbuffergetextwildcard} given a selected filter.

\membersection{wxRichTextBuffer::GetHandlers}\label{wxrichtextbuffergethandlers}

\func{wxList\&}{GetHandlers}{\void}

Returns the list of file handlers.

\membersection{wxRichTextBuffer::GetStyleSheet}\label{wxrichtextbuffergetstylesheet}

\constfunc{wxRichTextStyleSheet*}{GetStyleSheet}{\void}

Returns the current style sheet associated with the buffer, if any.

\membersection{wxRichTextBuffer::GetStyleStackSize}\label{wxrichtextbuffergetstylestacksize}

\constfunc{size\_t}{GetStyleStackSize}{\void}

Get the size of the style stack, for example to check correct nesting.

\membersection{wxRichTextBuffer::HitTest}\label{wxrichtextbufferhittest}

\func{int}{HitTest}{\param{wxDC\& }{dc}, \param{const wxPoint\& }{pt}, \param{long\& }{textPosition}}

Finds the text position for the given position, putting the position in {\it textPosition} if
one is found. {\it pt} is in logical units (a zero y position is
at the beginning of the buffer).

The function returns one of the following values:

{\small
\begin{verbatim}
// The point was not on this object
#define wxRICHTEXT_HITTEST_NONE     0x01
// The point was before the position returned from HitTest
#define wxRICHTEXT_HITTEST_BEFORE   0x02
// The point was after the position returned from HitTest
#define wxRICHTEXT_HITTEST_AFTER    0x04
// The point was on the position returned from HitTest
#define wxRICHTEXT_HITTEST_ON       0x08
\end{verbatim}
}

\membersection{wxRichTextBuffer::Init}\label{wxrichtextbufferinit}

\func{void}{Init}{\void}

Initialisation.

\membersection{wxRichTextBuffer::InitStandardHandlers}\label{wxrichtextbufferinitstandardhandlers}

\func{void}{InitStandardHandlers}{\void}

Initialises the standard handlers. Currently, only the plain text loading/saving handler
is initialised by default.

\membersection{wxRichTextBuffer::InsertHandler}\label{wxrichtextbufferinserthandler}

\func{void}{InsertHandler}{\param{wxRichTextFileHandler* }{handler}}

Inserts a handler at the front of the list.

\membersection{wxRichTextBuffer::InsertImageWithUndo}\label{wxrichtextbufferinsertimagewithundo}

\func{bool}{InsertImageWithUndo}{\param{long }{pos}, \param{const wxRichTextImageBlock\& }{imageBlock}, \param{wxRichTextCtrl* }{ctrl}}

Submits a command to insert the given image.

\membersection{wxRichTextBuffer::InsertNewlineWithUndo}\label{wxrichtextbufferinsertnewlinewithundo}

\func{bool}{InsertNewlineWithUndo}{\param{long }{pos}, \param{wxRichTextCtrl* }{ctrl}}

Submits a command to insert a newline.

\membersection{wxRichTextBuffer::InsertTextWithUndo}\label{wxrichtextbufferinserttextwithundo}

\func{bool}{InsertTextWithUndo}{\param{long }{pos}, \param{const wxString\& }{text}, \param{wxRichTextCtrl* }{ctrl}}

Submits a command to insert the given text.

\membersection{wxRichTextBuffer::IsModified}\label{wxrichtextbufferismodified}

\constfunc{bool}{IsModified}{\void}

Returns \true if the buffer has been modified.

\membersection{wxRichTextBuffer::LoadFile}\label{wxrichtextbufferloadfile}

\func{bool}{LoadFile}{\param{wxInputStream\& }{stream}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}

Loads content from a stream.

\func{bool}{LoadFile}{\param{const wxString\& }{filename}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}

Loads content from a file.

\membersection{wxRichTextBuffer::Modify}\label{wxrichtextbuffermodify}

\func{void}{Modify}{\param{bool }{modify = true}}

Marks the buffer as modified or unmodified.

\membersection{wxRichTextBuffer::PasteFromClipboard}\label{wxrichtextbufferpastefromclipboard}

\func{bool}{PasteFromClipboard}{\param{long }{position}}

Pastes the clipboard content to the buffer at the given position.

\membersection{wxRichTextBuffer::RemoveHandler}\label{wxrichtextbufferremovehandler}

\func{bool}{RemoveHandler}{\param{const wxString\& }{name}}

Removes a handler.

\membersection{wxRichTextBuffer::Reset}\label{wxrichtextbufferreset}

\func{void}{Reset}{\void}

The same as \helpref{Clear}{wxrichtextbufferclear}, plus an empty paragraph is added.

\membersection{wxRichTextBuffer::SaveFile}\label{wxrichtextbuffersavefile}

\func{bool}{SaveFile}{\param{wxOutputStream\& }{stream}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}

Saves content to a stream.

\func{bool}{SaveFile}{\param{const wxString\& }{filename}, \param{int }{type = wxRICHTEXT\_TYPE\_ANY}}

Saves content to a file.

\membersection{wxRichTextBuffer::SetStyleSheet}\label{wxrichtextbuffersetstylesheet}

\func{void}{SetStyleSheet}{\param{wxRichTextStyleSheet* }{styleSheet}}

Sets the current style sheet, if any. This will allow the application to use
named character and paragraph styles found in the style sheet.

\membersection{wxRichTextBuffer::SubmitAction}\label{wxrichtextbuffersubmitaction}

\func{bool}{SubmitAction}{\param{wxRichTextAction* }{action}}

Submit an action immediately, or delay it according to whether collapsing is on.

\membersection{wxRichTextBuffer::SuppressingUndo}\label{wxrichtextbuffersuppressingundo}

\constfunc{bool}{SuppressingUndo}{\void}

Returns \true if undo suppression is currently on.

