From 1f65137f8de90aba96242d5e44b00dfd0efa4b67 Mon Sep 17 00:00:00 2001
From: Julian Smart <julian@anthemion.co.uk>
Date: Thu, 9 Nov 2006 20:22:33 +0000
Subject: [PATCH] Some documentation enhancements for wxRichTextCtrl Comment
 fixes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/richtextattr.tex            | 137 ++++++++++++++++++----
 docs/latex/wx/richtextctrl.tex            |  22 +++-
 docs/latex/wx/richtextfilehandler.tex     |  19 +++
 docs/latex/wx/richtexthtmlhandler.tex     |  78 ++++++++++++
 docs/latex/wx/richtextoverview.tex        |   1 +
 docs/latex/wx/richtextstyledefinition.tex |  12 ++
 docs/latex/wx/richtextstylelistbox.tex    | 115 ++++++++++++++++++
 docs/latex/wx/richtextstylesheet.tex      |  24 ++++
 docs/latex/wx/richtextxmlhandler.tex      |  11 ++
 docs/latex/wx/textattrex.tex              |  82 ++++++++++++-
 include/wx/richtext/richtextstyles.h      |   6 +-
 src/richtext/richtextxml.cpp              |  10 ++
 12 files changed, 483 insertions(+), 34 deletions(-)

diff --git a/docs/latex/wx/richtextattr.tex b/docs/latex/wx/richtextattr.tex
index ecb81e1146..2c3631d44a 100644
--- a/docs/latex/wx/richtextattr.tex
+++ b/docs/latex/wx/richtextattr.tex
@@ -7,9 +7,9 @@ standard \helpref{wxTextAttr}{wxtextattr} class with wxRichTextCtrl.
 
 When setting up a wxRichTextAttr object, pass a bitlist mask to \helpref{SetFlags}{wxrichtextattrsetflags} to
 indicate which style elements should be changed. As a convenience, when you call a setter such
-s SetFont, the relevant bit will be set.
+as SetFont, the relevant bit will be set.
 
-wxRichTextAttr stores attributes without a wxFont object, so is a much more
+wxRichTextAttr stores attributes without a wxFont object, so is a more
 efficient way to query styles than using a \helpref{wxTextAttr}{wxtextattr} or \helpref{wxTextAttrEx}{wxtextattrex} object.
 
 \wxheading{Derived from}
@@ -22,7 +22,7 @@ No base class
 
 \wxheading{Constants}
 
-The following values can be passed to SetAlignment to determine
+The following values can be passed to wxRichTextAttr::SetAlignment to determine
 paragraph alignment.
 
 {\small
@@ -39,7 +39,10 @@ enum wxTextAttrAlignment
 \end{verbatim}
 }
 
-These values are passed in a bitlist to SetFlags to determine
+Of these, wxTEXT\_ALIGNMENT\_JUSTIFIED is unimplemented. In future justification may be supported
+when printing or previewing, only.
+
+The following values are passed in a bitlist to wxRichTextAttr::SetFlags to determine
 what attributes will be considered when setting the attributes
 for a text control.
 
@@ -47,20 +50,20 @@ for a text control.
 \begin{verbatim}
 // Standard wxTextAttr constants
 
-#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
-#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
-#define wxTEXT_ATTR_FONT_FACE               0x0004
-#define wxTEXT_ATTR_FONT_SIZE               0x0008
-#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
-#define wxTEXT_ATTR_FONT_ITALIC             0x0020
-#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_TEXT_COLOUR             0x00000001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x00000002
+#define wxTEXT_ATTR_FONT_FACE               0x00000004
+#define wxTEXT_ATTR_FONT_SIZE               0x00000008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x00000010
+#define wxTEXT_ATTR_FONT_ITALIC             0x00000020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x00000040
 #define wxTEXT_ATTR_FONT \
   wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
 | wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
-#define wxTEXT_ATTR_ALIGNMENT               0x0080
-#define wxTEXT_ATTR_LEFT_INDENT             0x0100
-#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
-#define wxTEXT_ATTR_TABS                    0x0400
+#define wxTEXT_ATTR_ALIGNMENT               0x00000080
+#define wxTEXT_ATTR_LEFT_INDENT             0x00000100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x00000200
+#define wxTEXT_ATTR_TABS                    0x00000400
 
 // Extra formatting flags not in wxTextAttr
 
@@ -76,6 +79,7 @@ for a text control.
 #define wxTEXT_ATTR_BULLET_NAME             0x00100000
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
+#define wxTEXT_ATTR_EFFECTS                 0x00800000
 \end{verbatim}
 }
 
@@ -102,6 +106,8 @@ The following styles can be passed to wxRichTextAttr::SetBulletStyle:
 \end{verbatim}
 }
 
+Of these, wxTEXT\_ATTR\_BULLET\_STYLE\_BITMAP is unimplemented.
+
 The following constants can be passed to wxRichTextAttr::SetLineSpacing:
 
 {\small
@@ -112,6 +118,26 @@ The following constants can be passed to wxRichTextAttr::SetLineSpacing:
 \end{verbatim}
 }
 
+The following styles can be passed to wxTextAttrEx::SetTextEffects:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_EFFECT_NONE                     0x00000000
+#define wxTEXT_ATTR_EFFECT_CAPITALS                 0x00000001
+#define wxTEXT_ATTR_EFFECT_SMALL_CAPITALS           0x00000002
+#define wxTEXT_ATTR_EFFECT_STRIKETHROUGH            0x00000004
+#define wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH     0x00000008
+#define wxTEXT_ATTR_EFFECT_SHADOW                   0x00000010
+#define wxTEXT_ATTR_EFFECT_EMBOSS                   0x00000020
+#define wxTEXT_ATTR_EFFECT_OUTLINE                  0x00000040
+#define wxTEXT_ATTR_EFFECT_ENGRAVE                  0x00000080
+#define wxTEXT_ATTR_EFFECT_SUPERSCRIPT              0x00000100
+#define wxTEXT_ATTR_EFFECT_SUBSCRIPT                0x00000200
+\end{verbatim}
+}
+
+Of these, only wxTEXT\_ATTR\_EFFECT\_CAPITALS and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH are implemented.
+
 \wxheading{See also}
 
 \helpref{wxTextAttr}{wxtextattr}, \helpref{wxTextAttrEx}{wxtextattrex}, \helpref{wxRichTextCtrl}{wxrichtextctrl}
@@ -308,6 +334,19 @@ is measured from the left margin and therefore each value must be larger than th
 
 Returns the text foreground colour.
 
+\membersection{wxRichTextAttr::GetTextEffectFlags}\label{wxrichtextattrgettexteffectflags}
+
+\constfunc{int}{GetTextEffectFlags}{\void}
+
+Returns the text effect bits of interest. See \helpref{wxRichTextAttr::SetFlags}{wxrichtextattrsetflags} for further information.
+
+\membersection{wxRichTextAttr::GetTextEffects}\label{wxrichtextattrgettexteffects}
+
+\constfunc{int}{GetTextEffects}{\void}
+
+Returns the text effects, a bit list of styles. See \helpref{wxRichTextAttr::SetTextEffects}{wxrichtextattrsettexteffects} for
+details.
+
 \membersection{wxRichTextAttr::GetURL}\label{wxrichtextattrgeturl}
 
 \constfunc{const wxString\&}{GetURL}{\void}
@@ -507,6 +546,9 @@ enum wxTextAttrAlignment
 \end{verbatim}
 }
 
+Of these, wxTEXT\_ALIGNMENT\_JUSTIFIED is unimplemented. In future justification may be supported
+when printing or previewing, only.
+
 \membersection{wxRichTextAttr::SetBackgroundColour}\label{wxrichtextattrsetbackgroundcolour}
 
 \func{void}{SetBackgroundColour}{\param{const wxColour\& }{colBack}}
@@ -561,6 +603,8 @@ Sets the bullet style. The following styles can be passed:
 \end{verbatim}
 }
 
+Currently wxTEXT\_ATTR\_BULLET\_STYLE\_BITMAP is not supported.
+
 \membersection{wxRichTextAttr::SetBulletText}\label{wxrichtextattrsetbullettext}
 
 \func{void}{SetBulletText}{\param{const wxString& }{text}}
@@ -584,20 +628,20 @@ flags can be passed in a bitlist:
 \begin{verbatim}
 // Standard wxTextAttr constants
 
-#define wxTEXT_ATTR_TEXT_COLOUR             0x0001
-#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x0002
-#define wxTEXT_ATTR_FONT_FACE               0x0004
-#define wxTEXT_ATTR_FONT_SIZE               0x0008
-#define wxTEXT_ATTR_FONT_WEIGHT             0x0010
-#define wxTEXT_ATTR_FONT_ITALIC             0x0020
-#define wxTEXT_ATTR_FONT_UNDERLINE          0x0040
+#define wxTEXT_ATTR_TEXT_COLOUR             0x00000001
+#define wxTEXT_ATTR_BACKGROUND_COLOUR       0x00000002
+#define wxTEXT_ATTR_FONT_FACE               0x00000004
+#define wxTEXT_ATTR_FONT_SIZE               0x00000008
+#define wxTEXT_ATTR_FONT_WEIGHT             0x00000010
+#define wxTEXT_ATTR_FONT_ITALIC             0x00000020
+#define wxTEXT_ATTR_FONT_UNDERLINE          0x00000040
 #define wxTEXT_ATTR_FONT \
   wxTEXT_ATTR_FONT_FACE | wxTEXT_ATTR_FONT_SIZE | wxTEXT_ATTR_FONT_WEIGHT \
 | wxTEXT_ATTR_FONT_ITALIC | wxTEXT_ATTR_FONT_UNDERLINE
-#define wxTEXT_ATTR_ALIGNMENT               0x0080
-#define wxTEXT_ATTR_LEFT_INDENT             0x0100
-#define wxTEXT_ATTR_RIGHT_INDENT            0x0200
-#define wxTEXT_ATTR_TABS                    0x0400
+#define wxTEXT_ATTR_ALIGNMENT               0x00000080
+#define wxTEXT_ATTR_LEFT_INDENT             0x00000100
+#define wxTEXT_ATTR_RIGHT_INDENT            0x00000200
+#define wxTEXT_ATTR_TABS                    0x00000400
 
 // Extra formatting flags not in wxTextAttr
 
@@ -612,6 +656,8 @@ flags can be passed in a bitlist:
 #define wxTEXT_ATTR_BULLET_TEXT             0x00080000
 #define wxTEXT_ATTR_BULLET_NAME             0x00100000
 #define wxTEXT_ATTR_URL                     0x00200000
+#define wxTEXT_ATTR_PAGE_BREAK              0x00400000
+#define wxTEXT_ATTR_EFFECTS                 0x00800000
 \end{verbatim}
 }
 
@@ -726,6 +772,45 @@ Each stop is measured from the left margin and therefore each value must be larg
 
 Sets the text foreground colout.
 
+\membersection{wxRichTextAttr::SetTextEffectFlags}\label{wxrichtextattrsettexteffectflags}
+
+\func{void}{SetTextEffectFlags}{\param{int }{flags}}
+
+Sets the text effect bits of interest. You should also pass wxTEXT\_ATTR\_EFFECTS to \helpref{wxRichTextAttr::SetFlags}{wxrichtextattrsetflags}.
+See \helpref{wxRichTextAttr::SetFlags}{wxrichtextattrsetflags} for further information.
+
+\membersection{wxRichTextAttr::SetTextEffects}\label{wxrichtextattrsettexteffects}
+
+\func{void}{SetTextEffects}{\param{int }{effects}}
+
+Sets the text effects, a bit list of styles.
+
+The following styles can be passed:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_EFFECT_NONE                     0x00000000
+#define wxTEXT_ATTR_EFFECT_CAPITALS                 0x00000001
+#define wxTEXT_ATTR_EFFECT_SMALL_CAPITALS           0x00000002
+#define wxTEXT_ATTR_EFFECT_STRIKETHROUGH            0x00000004
+#define wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH     0x00000008
+#define wxTEXT_ATTR_EFFECT_SHADOW                   0x00000010
+#define wxTEXT_ATTR_EFFECT_EMBOSS                   0x00000020
+#define wxTEXT_ATTR_EFFECT_OUTLINE                  0x00000040
+#define wxTEXT_ATTR_EFFECT_ENGRAVE                  0x00000080
+#define wxTEXT_ATTR_EFFECT_SUPERSCRIPT              0x00000100
+#define wxTEXT_ATTR_EFFECT_SUBSCRIPT                0x00000200
+\end{verbatim}
+}
+
+Of these, only wxTEXT\_ATTR\_EFFECT\_CAPITALS and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH are implemented.
+wxTEXT\_ATTR\_EFFECT\_CAPITALS capitalises text when displayed (leaving the case of the actual buffer
+text unchanged), and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH draws a line through text.
+
+To set effects, you should also pass wxTEXT\_ATTR\_EFFECTS to \helpref{wxRichTextAttr::SetFlags}{wxrichtextattrsetflags}, and call\rtfsp
+\helpref{wxRichTextAttr::SetTextEffectFlags}{wxrichtextattrsettexteffectflags} with the styles (taken from the
+above set) that you are interested in setting.
+
 \membersection{wxRichTextAttr::SetURL}\label{wxrichtextattrseturl}
 
 \func{void}{SetURL}{\param{const wxString\& }{url}}
diff --git a/docs/latex/wx/richtextctrl.tex b/docs/latex/wx/richtextctrl.tex
index b3d4787647..87b3b88e0a 100644
--- a/docs/latex/wx/richtextctrl.tex
+++ b/docs/latex/wx/richtextctrl.tex
@@ -19,7 +19,9 @@ wxTextCtrlBase
 
 \func{}{wxRichTextCtrl}{\void}
 
-\func{}{wxRichTextCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxString\& }{value = wxEmptyString}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE}}
+\func{}{wxRichTextCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxString\& }{value = wxEmptyString},
+ \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE},
+ \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = wxTextCtrlNameStr}}
 
 Constructors.
 
@@ -345,7 +347,9 @@ Copies the selected content (if any) to the clipboard.
 
 \membersection{wxRichTextCtrl::Create}\label{wxrichtextctrlcreate}
 
-\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxString\& }{value = wxEmptyString}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE}}
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxString\& }{value = wxEmptyString},
+ \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = wxRE\_MULTILINE},
+ \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = wxTextCtrlNameStr}}
 
 Creates the underlying window.
 
@@ -591,6 +595,13 @@ Gets the current filename associated with the control.
 
 Returns the first visible position in the current view.
 
+\membersection{wxRichTextCtrl::GetHandlerFlags}\label{wxrichtextfilehandlergethandlerflags}
+
+\constfunc{int}{GetHandlerFlags}{\void}
+
+Returns flags that change the behaviour of loading or saving. See the documentation for each
+handler class to see what flags are relevant for each handler.
+
 \membersection{wxRichTextCtrl::GetInsertionPoint}\label{wxrichtextctrlgetinsertionpoint}
 
 \constfunc{long}{GetInsertionPoint}{\void}
@@ -1271,6 +1282,13 @@ Sets the current filename.
 
 Sets the font, and also the basic and default attributes (see \helpref{SetDefaultStyle}{wxrichtextctrlsetdefaultstyle}).
 
+\membersection{wxRichTextCtrl::SetHandlerFlags}\label{wxrichtextctrlsethandlerflags}
+
+\func{void}{SetHandlerFlags}{\param{int }{flags}}
+
+Sets flags that change the behaviour of loading or saving. See the documentation for each
+handler class to see what flags are relevant for each handler.
+
 \membersection{wxRichTextCtrl::SetInsertionPoint}\label{wxrichtextctrlsetinsertionpoint}
 
 \func{void}{SetInsertionPoint}{\param{long }{pos}}
diff --git a/docs/latex/wx/richtextfilehandler.tex b/docs/latex/wx/richtextfilehandler.tex
index d97d817329..ced2008585 100644
--- a/docs/latex/wx/richtextfilehandler.tex
+++ b/docs/latex/wx/richtextfilehandler.tex
@@ -64,6 +64,13 @@ Returns the encoding associated with the handler (if any).
 
 Returns the extension associated with the handler.
 
+\membersection{wxRichTextFileHandler::GetFlags}\label{wxrichtextfilehandlergetflags}
+
+\constfunc{int}{GetFlags}{\void}
+
+Returns flags that change the behaviour of loading or saving. See the documentation for each
+handler class to see what flags are relevant for each handler.
+
 \membersection{wxRichTextFileHandler::GetName}\label{wxrichtextfilehandlergetname}
 
 \constfunc{wxString}{GetName}{\void}
@@ -110,6 +117,18 @@ Sets the encoding to use when saving a file. If empty, a suitable encoding is ch
 
 Sets the default extension to recognise.
 
+\membersection{wxRichTextFileHandler::SetFlags}\label{wxrichtextfilehandlersetflags}
+
+\func{void}{SetFlags}{\param{int }{flags}}
+
+Sets flags that change the behaviour of loading or saving. See the documentation for each
+handler class to see what flags are relevant for each handler.
+
+You call this function directly if you are using a file handler explicitly (without
+going through the text control or buffer LoadFile/SaveFile API). Or, you can
+call the control or buffer's SetHandlerFlags function to set the flags that will
+be used for subsequent load and save operations.
+
 \membersection{wxRichTextFileHandler::SetName}\label{wxrichtextfilehandlersetname}
 
 \func{void}{SetName}{\param{const wxString\& }{name}}
diff --git a/docs/latex/wx/richtexthtmlhandler.tex b/docs/latex/wx/richtexthtmlhandler.tex
index 02cea9151b..e98a928421 100644
--- a/docs/latex/wx/richtexthtmlhandler.tex
+++ b/docs/latex/wx/richtexthtmlhandler.tex
@@ -2,6 +2,35 @@
 
 Handles HTML output (only) for \helpref{wxRichTextCtrl}{wxrichtextctrl} content.
 
+The most flexible way to use this class is to create a temporary object and call
+its functions directly, rather than use \helpref{wxRichTextBuffer::SaveFile}{wxrichtextbuffersavefile} or\rtfsp
+\helpref{wxRichTextCtrl::SaveFile}{wxrichtextctrlsavefile}.
+
+Image handling requires a little extra work from the application, to choose an
+appropriate image format for the target HTML viewer and to clean up the temporary images
+later. If you are planning to load the HTML into a standard web browser, you can
+specify the handler flag wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_BASE64 (the default)
+and no extra work is required: the images will be written with the HTML.
+
+However, if you want wxHTML compatibility, you will need to use wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_MEMORY
+or wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_FILES. In this case, you must either call \helpref{DeleteTemporaryImages}{wxrichtexthtmlhandlerdeletetemporaryimages} before
+the next load operation, or you must store the image
+locations and delete them yourself when appropriate. You can call \helpref{GetTemporaryImageLocations}{wxrichtexthtmlhandlergettemporaryimagelocations} to
+get the array of temporary image names.
+
+\wxheading{Handler flags}
+
+The following flags can be used with this handler, via
+the handler's SetFlags function or the buffer or control's
+SetHandlerFlags function:
+
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_MEMORY}}{Images are saved to the memory filesystem: suitable for showing wxHTML windows.}
+\twocolitem{\windowstyle{wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_FILES}}{Images are saved to temporary files: suitable for showing in wxHTML windows.}
+\twocolitem{\windowstyle{wxRICHTEXT\_HANDLER\_SAVE\_IMAGES\_TO\_BASE64}}{Images are written with the HTML files in Base 64 format: suitable for showing in web browsers.}
+\end{twocollist}
+
 \wxheading{Derived from}
 
 \helpref{wxRichTextFileHandler}{wxrichtextfilehandler}
@@ -20,9 +49,58 @@ Handles HTML output (only) for \helpref{wxRichTextCtrl}{wxrichtextctrl} content.
 
 Constructor.
 
+\membersection{wxRichTextHTMLHandler::ClearTemporaryImageLocations}\label{wxrichtexthtmlhandlercleartemporaryimagelocations}
+
+\func{void}{ClearTemporaryImageLocations}{\void}
+
+Clears the image locations generated by the last operation.
+
+\membersection{wxRichTextHTMLHandler::DeleteTemporaryImages}\label{wxrichtexthtmlhandlerdeletetemporaryimages}
+
+\func{bool}{DeleteTemporaryImages}{\void}
+
+Deletes the in-memory or temporary files generated by the last operation.
+
+\func{bool}{DeleteTemporaryImages}{\param{int }{flags}, \param{const wxArrayString\& }{imageLocations}}
+
+Delete the in-memory or temporary files generated by the last operation. This is a static
+function that can be used to delete the saved locations from an earlier operation,
+for example after the user has viewed the HTML file.
+
 \membersection{wxRichTextHTMLHandler::DoSaveFile}\label{wxrichtexthtmlhandlerdosavefile}
 
 \func{bool}{DoSaveFile}{\param{wxRichTextBuffer* }{buffer}, \param{wxOutputStream\& }{stream}}
 
 Saves the buffer content to the HTML stream.
 
+\membersection{wxRichTextHTMLHandler::GetTempDir}\label{wxrichtexthtmlhandlergettempdir}
+
+\constfunc{const wxString\&}{GetTempDir}{\void}
+
+Returns the directory used to store temporary image files.
+
+\membersection{wxRichTextHTMLHandler::GetTemporaryImageLocations}\label{wxrichtexthtmlhandlergettemporaryimagelocations}
+
+\constfunc{const wxArrayString\&}{GetTemporaryImageLocations}{\void}
+
+Returns the image locations for the last operation.
+
+\membersection{wxRichTextHTMLHandler::SetFileCounter}\label{wxrichtexthtmlhandlersetfilecounter}
+
+\func{void}{SetFileCounter}{\param{int }{counter}}
+
+Reset the file counter, in case, for example, the same names are required each time
+
+\membersection{wxRichTextHTMLHandler::SetTempDir}\label{wxrichtexthtmlhandlersettempdir}
+
+\func{void}{SetTempDir}{\param{const wxString\& }{tempDir}}
+
+Sets the directory for storing temporary files. If empty, the system
+temporary directory will be used.
+
+\membersection{wxRichTextHTMLHandler::SetTemporaryImageLocations}\label{wxrichtexthtmlhandlersettemporaryimagelocations}
+
+\func{void}{SetTemporaryImageLocations}{\param{const wxArrayString\& }{locations}}
+
+Sets the list of image locations generated by the last operation.
+
diff --git a/docs/latex/wx/richtextoverview.tex b/docs/latex/wx/richtextoverview.tex
index a7d7dfc766..481319eecb 100644
--- a/docs/latex/wx/richtextoverview.tex
+++ b/docs/latex/wx/richtextoverview.tex
@@ -8,6 +8,7 @@ Classes: \helpref{wxRichTextCtrl}{wxrichtextctrl}, \helpref{wxRichTextBuffer}{wx
 \helpref{wxRichTextStyleSheet}{wxrichtextstylesheet}, 
 \helpref{wxRichTextStyleComboCtrl}{wxrichtextstylecomboctrl}, 
 \helpref{wxRichTextStyleListBox}{wxrichtextstylelistbox}, 
+\helpref{wxRichTextStyleListCtrl}{wxrichtextstylelistctrl}, 
 \helpref{wxRichTextEvent}{wxrichtextevent}, \helpref{wxRichTextRange}{wxrichtextrange}, 
 \helpref{wxRichTextFileHandler}{wxrichtextfilehandler}, \helpref{wxRichTextHTMLHandler}{wxrichtexthtmlhandler}, 
 \helpref{wxRichTextXMLHandler}{wxrichtextxmlhandler}, 
diff --git a/docs/latex/wx/richtextstyledefinition.tex b/docs/latex/wx/richtextstyledefinition.tex
index 19e5fcc514..2ed18ab5fa 100644
--- a/docs/latex/wx/richtextstyledefinition.tex
+++ b/docs/latex/wx/richtextstyledefinition.tex
@@ -32,6 +32,12 @@ Destructor.
 
 Returns the style on which this style is based.
 
+\membersection{wxRichTextStyleDefinition::GetDescription}\label{wxrichtextstyledefinitiongetdescription}
+
+\constfunc{const wxString\&}{GetDescription}{\void}
+
+Returns the style's description.
+
 \membersection{wxRichTextStyleDefinition::GetName}\label{wxrichtextstyledefinitiongetname}
 
 \constfunc{const wxString\&}{GetName}{\void}
@@ -58,6 +64,12 @@ Initialises the definition.
 
 Sets the name of the style that this style is based on.
 
+\membersection{wxRichTextStyleDefinition::SetDescription}\label{wxrichtextstyledefinitionsetdescription}
+
+\func{void}{SetDescription}{\param{const wxString\& }{descr}}
+
+Sets the style description.
+
 \membersection{wxRichTextStyleDefinition::SetName}\label{wxrichtextstyledefinitionsetname}
 
 \func{void}{SetName}{\param{const wxString\& }{name}}
diff --git a/docs/latex/wx/richtextstylelistbox.tex b/docs/latex/wx/richtextstylelistbox.tex
index 92081ea2fd..eb748648c9 100644
--- a/docs/latex/wx/richtextstylelistbox.tex
+++ b/docs/latex/wx/richtextstylelistbox.tex
@@ -138,6 +138,12 @@ Gets a style for a listbox index.
 
 Returns the style sheet associated with this listbox.
 
+\membersection{wxRichTextStyleListBox::GetStyleType}\label{wxrichtextstylelistboxgetstyletype}
+
+\constfunc{wxRichTextStyleListBox::wxRichTextStyleType}{GetStyleType}{\void}
+
+Returns the type of style to show in the list box.
+
 \membersection{wxRichTextStyleListBox::OnGetItem}\label{wxrichtextstylelistboxongetitem}
 
 \constfunc{wxString}{OnGetItem}{\param{size\_t }{n}}
@@ -175,9 +181,118 @@ Associates the listbox with a \helpref{wxRichTextCtrl}{wxrichtextctrl}.
 
 Associates the control with a style sheet.
 
+\membersection{wxRichTextStyleListBox::SetStyleType}\label{wxrichtextstylelistboxsetstyletype}
+
+\func{void}{SetStyleType}{\param{wxRichTextStyleListBox::wxRichTextStyleType }{styleType}}
+
+Sets the style type to display. One of wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_ALL, wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_PARAGRAPH,
+wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_CHARACTER and wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_LIST.
+
 \membersection{wxRichTextStyleListBox::UpdateStyles}\label{wxrichtextstylelistboxupdatestyles}
 
 \func{void}{UpdateStyles}{\void}
 
 Updates the list from the associated style sheet.
 
+
+\section{\class{wxRichTextStyleListCtrl}}\label{wxrichtextstylelistctrl}
+
+This class incorporates a \helpref{wxRichTextStyleListBox}{wxrichtextstylelistbox} and
+a choice control that allows the user to select the category of style to view.
+It is demonstrated in the wxRichTextCtrl sample in {\tt samples/richtext}.
+
+To use wxRichTextStyleListCtrl, add the control to your window hierarchy and
+call \helpref{SetStyleType}{wxrichtextstylelistctrlsetstyletype} with
+one of wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_ALL, wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_PARAGRAPH,
+wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_CHARACTER and wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_LIST to set the current view.
+Associate the control with a style sheet and rich text control with SetStyleSheet and SetRichTextCtrl,
+so that when a style is double-clicked, it is applied to the selection.
+
+\wxheading{Window styles}
+
+\twocolwidtha{5cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxRICHTEXTSTYLELIST\_HIDE\_TYPE\_SELECTOR}}{This style hides the category selection control.}
+\end{twocollist}
+
+\wxheading{Derived from}
+
+\helpref{wxControl}{wxcontrol}
+
+\wxheading{Include files}
+
+<wx/richtext/richtextstyles.h>
+
+\wxheading{Data structures}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRichTextStyleListCtrl::wxRichTextStyleListCtrl}\label{wxrichtextstylelistctrlwxrichtextstylelistctrl}
+
+\func{}{wxRichTextStyleListCtrl}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}}
+
+\func{}{wxRichTextStyleListCtrl}{\void}
+
+Constructors.
+
+\membersection{wxRichTextStyleListCtrl::Create}\label{wxrichtextstylelistctrlcreate}
+
+\func{bool}{Create}{\param{wxWindow* }{parent}, \param{wxWindowID }{id = wxID\_ANY}, \param{const wxPoint\& }{pos = wxDefaultPosition}, \param{const wxSize\& }{size = wxDefaultSize}, \param{long }{style = 0}}
+
+Creates the windows.
+
+\membersection{wxRichTextStyleListCtrl::GetRichTextCtrl}\label{wxrichtextstylelistctrlgetrichtextctrl}
+
+\constfunc{wxRichTextCtrl*}{GetRichTextCtrl}{\void}
+
+Returns the associated rich text control, if any.
+
+\membersection{wxRichTextStyleListCtrl::GetStyleChoice}\label{wxrichtextstylelistctrlgetstylechoice}
+
+\constfunc{wxChoice*}{GetStyleChoice}{\void}
+
+Returns the wxChoice control used for selecting the style category.
+
+\membersection{wxRichTextStyleListCtrl::GetStyleListBox}\label{wxrichtextstylelistctrlgetstylelistbox}
+
+\constfunc{wxRichTextStyleListBox*}{GetStyleListBox}{\void}
+
+Returns the wxListBox control used to view the style list.
+
+\membersection{wxRichTextStyleListCtrl::GetStyleSheet}\label{wxrichtextstylelistctrlgetstylesheet}
+
+\constfunc{wxRichTextStyleSheet*}{GetStyleSheet}{\void}
+
+Returns the associated style sheet, if any.
+
+\membersection{wxRichTextStyleListCtrl::GetStyleType}\label{wxrichtextstylelistctrlgetstyletype}
+
+\constfunc{wxRichTextStyleListBox::wxRichTextStyleType}{GetStyleType}{\void}
+
+Returns the type of style to show in the list box.
+
+\membersection{wxRichTextStyleListCtrl::SetRichTextCtrl}\label{wxrichtextstylelistctrlsetrichtextctrl}
+
+\func{void}{SetRichTextCtrl}{\param{wxRichTextCtrl* }{ctrl}}
+
+Associates the control with a wxRichTextCtrl.
+
+\membersection{wxRichTextStyleListCtrl::SetStyleSheet}\label{wxrichtextstylelistctrlsetstylesheet}
+
+\func{void}{SetStyleSheet}{\param{wxRichTextStyleSheet* }{styleSheet}}
+
+Associates the control with a style sheet.
+
+\membersection{wxRichTextStyleListCtrl::SetStyleType}\label{wxrichtextstylelistctrlsetstyletype}
+
+\func{void}{SetStyleType}{\param{wxRichTextStyleListBox::wxRichTextStyleType }{styleType}}
+
+Sets the style type to display. One of wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_ALL, wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_PARAGRAPH,
+wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_CHARACTER and wxRichTextStyleListBox::wxRICHTEXT\_STYLE\_LIST.
+
+\membersection{wxRichTextStyleListCtrl::UpdateStyles}\label{wxrichtextstylelistctrlupdatestyles}
+
+\func{void}{UpdateStyles}{\void}
+
+Updates the style list box. 
+
diff --git a/docs/latex/wx/richtextstylesheet.tex b/docs/latex/wx/richtextstylesheet.tex
index 33f89516f7..c1b3fe5ce6 100644
--- a/docs/latex/wx/richtextstylesheet.tex
+++ b/docs/latex/wx/richtextstylesheet.tex
@@ -85,6 +85,12 @@ Returns the {\it n}th character style.
 
 Returns the number of character styles.
 
+\membersection{wxRichTextStyleSheet::GetDescription}\label{wxrichtextstylesheetgetdescription}
+
+\constfunc{const wxString\&}{GetDescription}{\void}
+
+Returns the style sheet's description.
+
 \membersection{wxRichTextStyleSheet::GetListStyle}\label{wxrichtextstylesheetgetliststyle}
 
 \constfunc{wxRichTextListStyleDefinition*}{GetListStyle}{\param{size\_t }{n}}
@@ -97,6 +103,12 @@ Returns the {\it n}th list style.
 
 Returns the number of list styles.
 
+\membersection{wxRichTextStyleSheet::GetName}\label{wxrichtextstylesheetgetname}
+
+\constfunc{const wxString\&}{GetName}{\void}
+
+Returns the style sheet's name.
+
 \membersection{wxRichTextStyleSheet::GetParagraphStyle}\label{wxrichtextstylesheetgetparagraphstyle}
 
 \constfunc{wxRichTextParagraphStyleDefinition*}{GetParagraphStyle}{\param{size\_t }{n}}
@@ -133,3 +145,15 @@ Removes a list style.
 
 Removes a paragraph style.
 
+\membersection{wxRichTextStyleSheet::SetDescription}\label{wxrichtextstylesheetsetdescription}
+
+\func{void}{SetDescription}{\param{const wxString\& }{descr}}
+
+Sets the style sheet's description.
+
+\membersection{wxRichTextStyleSheet::SetName}\label{wxrichtextstylesheetsetname}
+
+\func{void}{SetName}{\param{const wxString\& }{name}}
+
+Sets the style sheet's name.
+
diff --git a/docs/latex/wx/richtextxmlhandler.tex b/docs/latex/wx/richtextxmlhandler.tex
index 224d132eff..6711ecaa45 100644
--- a/docs/latex/wx/richtextxmlhandler.tex
+++ b/docs/latex/wx/richtextxmlhandler.tex
@@ -6,6 +6,17 @@ and load and save through the buffer or control API, or you can
 create an instance of the handler on the stack and call its
 functions directly.
 
+\wxheading{Handler flags}
+
+The following flags can be used with this handler, via
+the handler's SetFlags function or the buffer or control's
+SetHandlerFlags function:
+
+\twocolwidtha{7cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\windowstyle{wxRICHTEXT\_HANDLER\_INCLUDE\_STYLESHEET}}{Include the style sheet in loading and saving operations.}
+\end{twocollist}
+
 \wxheading{Derived from}
 
 \helpref{wxRichTextFileHandler}{wxrichtextfilehandler}
diff --git a/docs/latex/wx/textattrex.tex b/docs/latex/wx/textattrex.tex
index 04f26ada5c..5c94102976 100644
--- a/docs/latex/wx/textattrex.tex
+++ b/docs/latex/wx/textattrex.tex
@@ -82,10 +82,11 @@ for a text control.
 #define wxTEXT_ATTR_BULLET_NAME             0x00100000
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
+#define wxTEXT_ATTR_EFFECTS                 0x00800000
 \end{verbatim}
 }
 
-The following styles can be passed to wxRichTextAttr::SetBulletStyle:
+The following styles can be passed to wxTextAttrEx::SetBulletStyle:
 
 {\small
 \begin{verbatim}
@@ -108,7 +109,9 @@ The following styles can be passed to wxRichTextAttr::SetBulletStyle:
 \end{verbatim}
 }
 
-The following constants can be passed to wxRichTextAttr::SetLineSpacing:
+Of these, wxTEXT\_ATTR\_BULLET\_STYLE\_BITMAP is unimplemented.
+
+The following constants can be passed to wxTextAttrEx::SetLineSpacing:
 
 {\small
 \begin{verbatim}
@@ -118,6 +121,26 @@ The following constants can be passed to wxRichTextAttr::SetLineSpacing:
 \end{verbatim}
 }
 
+The following styles can be passed to wxTextAttrEx::SetTextEffects:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_EFFECT_NONE                     0x00000000
+#define wxTEXT_ATTR_EFFECT_CAPITALS                 0x00000001
+#define wxTEXT_ATTR_EFFECT_SMALL_CAPITALS           0x00000002
+#define wxTEXT_ATTR_EFFECT_STRIKETHROUGH            0x00000004
+#define wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH     0x00000008
+#define wxTEXT_ATTR_EFFECT_SHADOW                   0x00000010
+#define wxTEXT_ATTR_EFFECT_EMBOSS                   0x00000020
+#define wxTEXT_ATTR_EFFECT_OUTLINE                  0x00000040
+#define wxTEXT_ATTR_EFFECT_ENGRAVE                  0x00000080
+#define wxTEXT_ATTR_EFFECT_SUPERSCRIPT              0x00000100
+#define wxTEXT_ATTR_EFFECT_SUBSCRIPT                0x00000200
+\end{verbatim}
+}
+
+Of these, only wxTEXT\_ATTR\_EFFECT\_CAPITALS and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH are implemented.
+
 \wxheading{See also}
 
 \helpref{wxTextAttr}{wxtextattr}, \helpref{wxRichTextAttr}{wxrichtextattr}, \helpref{wxRichTextCtrl}{wxrichtextctrl}
@@ -172,7 +195,7 @@ Returns the bullet number.
 Returns the bullet style.
 See \helpref{wxTextAttrEx::SetBulletStyle}{wxtextattrexsetbulletstyle} for a list of available styles.
 
-\membersection{wxTextAttrEx::GetBulletText}\label{wxrichtextattrgetbullettext}
+\membersection{wxTextAttrEx::GetBulletText}\label{wxtextattrexgetbullettext}
 
 \constfunc{const wxString\&}{GetBulletText}{\void}
 
@@ -215,6 +238,19 @@ Returns the space in tenths of a millimeter before the paragraph.
 
 Returns the name of the paragraph style.
 
+\membersection{wxTextAttrEx::GetTextEffectFlags}\label{wxtextattrexgettexteffectflags}
+
+\constfunc{int}{GetTextEffectFlags}{\void}
+
+Returns the text effect bits of interest. See \helpref{wxTextAttr::SetFlags}{wxtextattrsetflags} for further information.
+
+\membersection{wxTextAttrEx::GetTextEffects}\label{wxtextattrexgettexteffects}
+
+\constfunc{int}{GetTextEffects}{\void}
+
+Returns the text effects, a bit list of styles. See \helpref{wxTextAttrEx::SetTextEffects}{wxtextattrexsettexteffects} for
+details.
+
 \membersection{wxTextAttrEx::GetURL}\label{wxtextattrexgeturl}
 
 \constfunc{const wxString\&}{GetURL}{\void}
@@ -364,6 +400,8 @@ Sets the bullet style. The following styles can be passed:
 \end{verbatim}
 }
 
+Currently wxTEXT\_ATTR\_BULLET\_STYLE\_BITMAP is not supported.
+
 \membersection{wxTextAttrEx::SetBulletText}\label{wxtextattrexsetbullettext}
 
 \func{void}{SetBulletText}{\param{const wxString\& }{text}}
@@ -422,6 +460,44 @@ Sets the spacing before a paragraph, in tenths of a millimetre.
 
 Sets the name of the paragraph style.
 
+\membersection{wxTextAttrEx::SetTextEffectFlags}\label{wxtextattrexsettexteffectflags}
+
+\func{void}{SetTextEffectFlags}{\param{int }{flags}}
+
+Sets the text effect bits of interest. You should also pass wxTEXT\_ATTR\_EFFECTS to \helpref{wxTextAttr::SetFlags}{wxtextattrsetflags}.
+
+\membersection{wxTextAttrEx::SetTextEffects}\label{wxtextattrexsettexteffects}
+
+\func{void}{SetTextEffects}{\param{int }{effects}}
+
+Sets the text effects, a bit list of styles.
+
+The following styles can be passed:
+
+{\small
+\begin{verbatim}
+#define wxTEXT_ATTR_EFFECT_NONE                     0x00000000
+#define wxTEXT_ATTR_EFFECT_CAPITALS                 0x00000001
+#define wxTEXT_ATTR_EFFECT_SMALL_CAPITALS           0x00000002
+#define wxTEXT_ATTR_EFFECT_STRIKETHROUGH            0x00000004
+#define wxTEXT_ATTR_EFFECT_DOUBLE_STRIKETHROUGH     0x00000008
+#define wxTEXT_ATTR_EFFECT_SHADOW                   0x00000010
+#define wxTEXT_ATTR_EFFECT_EMBOSS                   0x00000020
+#define wxTEXT_ATTR_EFFECT_OUTLINE                  0x00000040
+#define wxTEXT_ATTR_EFFECT_ENGRAVE                  0x00000080
+#define wxTEXT_ATTR_EFFECT_SUPERSCRIPT              0x00000100
+#define wxTEXT_ATTR_EFFECT_SUBSCRIPT                0x00000200
+\end{verbatim}
+}
+
+Of these, only wxTEXT\_ATTR\_EFFECT\_CAPITALS and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH are implemented.
+wxTEXT\_ATTR\_EFFECT\_CAPITALS capitalises text when displayed (leaving the case of the actual buffer
+text unchanged), and wxTEXT\_ATTR\_EFFECT\_STRIKETHROUGH draws a line through text.
+
+To set effects, you should also pass wxTEXT\_ATTR\_EFFECTS to \helpref{wxTextAttr::SetFlags}{wxtextattrsetflags}, and call\rtfsp
+\helpref{wxTextAttrEx::SetTextEffectFlags}{wxtextattrexsettexteffectflags} with the styles (taken from the
+above set) that you are interested in setting.
+
 \membersection{wxTextAttrEx::SetURL}\label{wxtextattrexseturl}
 
 \func{void}{SetURL}{\param{const wxString\& }{url}}
diff --git a/include/wx/richtext/richtextstyles.h b/include/wx/richtext/richtextstyles.h
index 30ec7fe3f9..729e5e3f34 100644
--- a/include/wx/richtext/richtextstyles.h
+++ b/include/wx/richtext/richtextstyles.h
@@ -408,7 +408,7 @@ public:
     /// Creates a suitable HTML fragment for a definition
     wxString CreateHTML(wxRichTextStyleDefinition* def) const;
 
-    /// Associates the control with a style manager
+    /// Associates the control with a style sheet
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_styleSheet = styleSheet; }
     wxRichTextStyleSheet* GetStyleSheet() const { return m_styleSheet; }
 
@@ -514,7 +514,7 @@ public:
     /// Updates the style list box
     void UpdateStyles();
 
-    /// Associates the control with a style manager
+    /// Associates the control with a style sheet
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
     wxRichTextStyleSheet* GetStyleSheet() const;
 
@@ -638,7 +638,7 @@ public:
     /// Updates the list
     void UpdateStyles() { m_stylePopup->UpdateStyles(); }
 
-    /// Associates the control with a style manager
+    /// Associates the control with a style sheet
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_stylePopup->SetStyleSheet(styleSheet); }
     wxRichTextStyleSheet* GetStyleSheet() const { return m_stylePopup->GetStyleSheet(); }
 
diff --git a/src/richtext/richtextxml.cpp b/src/richtext/richtextxml.cpp
index 2a9ac747cc..26189e93ec 100644
--- a/src/richtext/richtextxml.cpp
+++ b/src/richtext/richtextxml.cpp
@@ -917,6 +917,10 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara
         str << wxT(" texteffects=\"");
         str << attr.GetTextEffects();
         str << wxT("\"");
+
+        str << wxT(" texteffectflags=\"");
+        str << attr.GetTextEffectFlags();
+        str << wxT("\"");
     }
 
     if (!attr.GetCharacterStyleName().empty())
@@ -1082,6 +1086,12 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is
         attr.SetTextEffects(wxAtoi(value));
     }
 
+    value = node->GetPropVal(wxT("texteffectflags"), wxEmptyString);
+    if (!value.IsEmpty())
+    {
+        attr.SetTextEffectFlags(wxAtoi(value));
+    }
+
     // Set paragraph attributes
     if (isPara)
     {
-- 
2.50.0

