Replace wxST_MARKUP style with wxControl::SetLabelMarkup().
This is an incompatible change which removes the wxStaticText-specific wxST_MARKUP style and adds wxControl::SetLabelMarkup() replacing it. It doesn't actually change anything yet but it simplifies wxStaticText code a lot by getting rid of many markup-related functions in it which had to behave differently depending on whether wxST_MARKUP was used or not and also paves way for adding markup support for the other controls in the future. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -138,6 +138,166 @@ public:
|
||||
*/
|
||||
void SetLabelText(const wxString& text);
|
||||
|
||||
// NB: when writing docs for the following function remember that Doxygen
|
||||
// will always expand HTML entities (e.g. ") and thus we need to
|
||||
// write e.g. "&lt;" to have in the output the "<" string.
|
||||
|
||||
/**
|
||||
Sets the controls label to a string using markup.
|
||||
|
||||
Simple markup supported by this function can be used to apply different
|
||||
fonts or colours to different parts of the control label when supported
|
||||
(currently only wxStaticText under GTK+ 2). If markup is not supported
|
||||
by the control or platform, it is simply stripped and SetLabel() is
|
||||
used with the resulting string.
|
||||
|
||||
For example,
|
||||
@code
|
||||
wxStaticText *text;
|
||||
...
|
||||
text->SetLabelMarkup("<b>&Bed</b> &mp; "
|
||||
"<span foreground='red'>breakfast</span> "
|
||||
"available <big>HERE</big>");
|
||||
@endcode
|
||||
would show the string using bold, red and big for the corresponding
|
||||
words under wxGTK but will simply show the string "Bed & breakfast
|
||||
available HERE" on the other platforms. In any case, the "B" of "Bed"
|
||||
will be underlined to indicate that it can be used as a mnemonic for
|
||||
this control.
|
||||
|
||||
The supported tags are:
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD><b>Tag</b></TD>
|
||||
<TD><b>Description</b></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><b></TD>
|
||||
<TD>bold text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><big></TD>
|
||||
<TD>bigger text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><i></TD>
|
||||
<TD>italic text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><s></TD>
|
||||
<TD>strike-through text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><small></TD>
|
||||
<TD>smaller text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><tt></TD>
|
||||
<TD>monospaced text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><u></TD>
|
||||
<TD>underlined text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><span></TD>
|
||||
<TD>generic formatter tag, see the table below for supported
|
||||
attributes.
|
||||
</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
Supported @c <span> attributes:
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD><b>Name</b></TD>
|
||||
<TD><b>Description</b></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>foreground, fgcolor, color</TD>
|
||||
<TD>Foreground text colour, can be a name or RGB value.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>background, bgcolor</TD>
|
||||
<TD>Background text colour, can be a name or RGB value.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>font_family, face</TD>
|
||||
<TD>Font face name.</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>font_weight, weight</TD>
|
||||
<TD>Numeric value in 0..900 range or one of "ultralight",
|
||||
"light", "normal" (all meaning non-bold), "bold", "ultrabold"
|
||||
and "heavy" (all meaning bold).</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>font_style, style</TD>
|
||||
<TD>Either "oblique" or "italic" (both with the same meaning)
|
||||
or "normal".</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>size</TD>
|
||||
<TD>The font size can be specified either as "smaller" or
|
||||
"larger" relatively to the current font, as a CSS font size
|
||||
name ("xx-small", "x-small", "small", "medium", "large",
|
||||
"x-large" or "xx-large") or as a number giving font size in
|
||||
1024th parts of a point, i.e. 10240 for a 10pt font.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
This markup language is a strict subset of Pango markup (described at
|
||||
http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html)
|
||||
and any tags and span attributes not documented above can't be used
|
||||
under non-GTK platforms.
|
||||
|
||||
Also note that you need to escape the following special characters:
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD><b>Special character</b></TD>
|
||||
<TD><b>Escape as</b></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c &</TD>
|
||||
<TD>@c &amp; or as @c &&</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c '</TD>
|
||||
<TD>@c &apos;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c "</TD>
|
||||
<TD>@c &quot;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c <</TD>
|
||||
<TD>@c &lt;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c ></TD>
|
||||
<TD>@c &gt;</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
The non-escaped ampersand @c & characters are interpreted as
|
||||
mnemonics as with wxControl::SetLabel.
|
||||
|
||||
|
||||
@param markup
|
||||
String containing markup for the label. It may contain newline
|
||||
characters and the markup tags described above.
|
||||
@return
|
||||
@true if the new label was set (even if markup in it was ignored)
|
||||
or @false if we failed to parse the markup. In this case the label
|
||||
remains unchanged.
|
||||
|
||||
Note that the string must be well-formed (e.g. all tags must be correctly
|
||||
closed) and won't be shown at all otherwise.
|
||||
|
||||
@since 2.9.2
|
||||
*/
|
||||
bool SetLabelMarkup(const wxString& markup);
|
||||
|
||||
|
||||
public: // static functions
|
||||
|
||||
@@ -149,9 +309,8 @@ public: // static functions
|
||||
/**
|
||||
Returns the given @a str string without mnemonics ("&" characters).
|
||||
|
||||
@note This function is identic to GetLabelText() and is provided both for symmetry
|
||||
with the wxStaticText::RemoveMarkup() function and to allow to write more
|
||||
readable code (since this function has a more descriptive name respect GetLabelText()).
|
||||
@note This function is identical to GetLabelText() and is provided
|
||||
mostly for symmetry with EscapeMnemonics().
|
||||
*/
|
||||
static wxString RemoveMnemonics(const wxString& str);
|
||||
|
||||
|
@@ -10,8 +10,10 @@
|
||||
@class wxStaticText
|
||||
|
||||
A static text control displays one or more lines of read-only text.
|
||||
wxStaticText supports the three classic text alignments, label ellipsization
|
||||
and formatting markup.
|
||||
wxStaticText supports the three classic text alignments, label
|
||||
ellipsization i.e. replacing parts of the text with the ellipsis ("...") if
|
||||
the label doesn't fit into the provided space and also formatting markup
|
||||
with wxControl::SetLabelMarkup().
|
||||
|
||||
@beginStyleTable
|
||||
@style{wxALIGN_LEFT}
|
||||
@@ -25,7 +27,7 @@
|
||||
size of the text when SetLabel() is called. If this style flag is
|
||||
given, the control will not change its size (this style is
|
||||
especially useful with controls which also have the @c wxALIGN_RIGHT or
|
||||
the @c wxALIGN_CENTRE style because otherwise they won't make sense any
|
||||
the @c wxALIGN_CENTRE style because otherwise they won't make sense any
|
||||
longer after a call to SetLabel()).
|
||||
@style{wxST_ELLIPSIZE_START}
|
||||
If the labeltext width exceeds the control width, replace the beginning
|
||||
@@ -36,8 +38,6 @@
|
||||
@style{wxST_ELLIPSIZE_END}
|
||||
If the label text width exceeds the control width, replace the end
|
||||
of the label with an ellipsis; uses wxControl::Ellipsize.
|
||||
@style{wxST_MARKUP}
|
||||
Support markup in the label; see SetLabel() for more information.
|
||||
@endStyleTable
|
||||
|
||||
@library{wxcore}
|
||||
@@ -89,154 +89,12 @@ public:
|
||||
const wxSize& size = wxDefaultSize, long style = 0,
|
||||
const wxString& name = wxStaticTextNameStr);
|
||||
|
||||
/**
|
||||
Returns the contents of the control.
|
||||
|
||||
Note that the returned string may contain both mnemonics (@& characters),
|
||||
and markup tags, if they were passed to the SetLabel() function.
|
||||
|
||||
Use GetLabelText() if only the label text, without mnemonics and without
|
||||
markup if the @c wxST_MARKUP style is set, is needed.
|
||||
|
||||
Also note that the returned string is always the string which was passed to
|
||||
SetLabel() but may be different from the string passed to SetLabelText()
|
||||
(since this last one escapes mnemonic characters and eventually markup).
|
||||
*/
|
||||
wxString GetLabel() const;
|
||||
|
||||
/**
|
||||
This method returns the control's label without the mnemonics characters
|
||||
(if any) and without the markup (if the control has the @c wxST_MARKUP style).
|
||||
|
||||
Note that because of the stripping of the mnemonics and markup the returned
|
||||
string may differ from the string which was passed to SetLabel() but should
|
||||
always be the same which was passed to SetLabelText().
|
||||
*/
|
||||
wxString GetLabelText() const;
|
||||
|
||||
/**
|
||||
Returns @true if the window styles for this control contains one of the
|
||||
@c wxST_ELLIPSIZE_START, @c wxST_ELLIPSIZE_MIDDLE or @c wxST_ELLIPSIZE_END styles.
|
||||
*/
|
||||
bool IsEllipsized() const;
|
||||
|
||||
// NB: when writing docs for the following function remember that Doxygen
|
||||
// will always expand HTML entities (e.g. ") and thus we need to
|
||||
// write e.g. "&lt;" to have in the output the "<" string.
|
||||
|
||||
/**
|
||||
Sets the static text label and updates the controls size to exactly fit the
|
||||
label unless the control has @c wxST_NO_AUTORESIZE flag.
|
||||
|
||||
This function allows to set decorated static label text, when the @c wxST_MARKUP
|
||||
style is used, on those platforms which support it (currently only GTK+ 2).
|
||||
For the other platforms or when @c wxST_MARKUP is not used, the markup is ignored.
|
||||
|
||||
The supported tags are:
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD><b>Tag</b></TD>
|
||||
<TD><b>Description</b></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><b></TD>
|
||||
<TD>bold text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><big></TD>
|
||||
<TD>bigger text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><i></TD>
|
||||
<TD>italic text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><s></TD>
|
||||
<TD>strike-through text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><sub></TD>
|
||||
<TD>subscript text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><sup></TD>
|
||||
<TD>superscript text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><small></TD>
|
||||
<TD>smaller text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><tt></TD>
|
||||
<TD>monospaced text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><u></TD>
|
||||
<TD>underlined text</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD><span></TD>
|
||||
<TD>generic formatter tag; see Pango Markup
|
||||
(http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html)
|
||||
for more information.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
Note that the string must be well-formed (e.g. all tags must be correctly
|
||||
closed) otherwise it can be not shown correctly or at all.
|
||||
Also note that you need to escape the following special characters:
|
||||
|
||||
<TABLE>
|
||||
<TR>
|
||||
<TD><b>Special character</b></TD>
|
||||
<TD><b>Escape as</b></TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c &</TD>
|
||||
<TD>@c &amp; or as @c &&</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c '</TD>
|
||||
<TD>@c &apos;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c "</TD>
|
||||
<TD>@c &quot;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c <</TD>
|
||||
<TD>@c &lt;</TD>
|
||||
</TR>
|
||||
<TR>
|
||||
<TD>@c ></TD>
|
||||
<TD>@c &gt;</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
The non-escaped ampersand @c & characters are interpreted as
|
||||
mnemonics; see wxControl::SetLabel.
|
||||
|
||||
Example:
|
||||
|
||||
@param label
|
||||
The new label to set.
|
||||
It may contain newline characters and the markup tags described above.
|
||||
*/
|
||||
virtual void SetLabel(const wxString& label);
|
||||
|
||||
/**
|
||||
Sets the control's label to exactly the given string.
|
||||
|
||||
Unlike SetLabel(), this function shows exactly the @a text passed to it
|
||||
in the control, without interpreting ampersands in it in any way and,
|
||||
if @c wxST_MARKUP is used, without interpreting markup tags.
|
||||
Notice that it means that the control can't have any mnemonic nor markup defined
|
||||
for it using this function.
|
||||
|
||||
@see EscapeMarkup()
|
||||
*/
|
||||
virtual void SetLabelText(const wxString& text);
|
||||
|
||||
/**
|
||||
This functions wraps the controls label so that each of its lines becomes at
|
||||
most @a width pixels wide if possible (the lines are broken at words
|
||||
@@ -249,34 +107,5 @@ public:
|
||||
@since 2.6.2
|
||||
*/
|
||||
void Wrap(int width);
|
||||
|
||||
|
||||
public: // static functions
|
||||
|
||||
/**
|
||||
Returns the given @a label string without the mnemonics characters (if any)
|
||||
and without the markup.
|
||||
|
||||
Note that since this function is static it will always remove markup
|
||||
(since it cannot check @c wxST_MARKUP presence/absence!).
|
||||
*/
|
||||
static wxString GetLabelText(const wxString& label);
|
||||
|
||||
/**
|
||||
Escapes all the symbols of @a str that have a special meaning (<tt><>"'&</tt>) for
|
||||
wxStaticText objects with the @c wxST_MARKUP style.
|
||||
|
||||
Those symbols are replaced the corresponding entities
|
||||
(&lt; &gt; &quot; &apos; &amp;).
|
||||
*/
|
||||
static wxString EscapeMarkup(const wxString& str);
|
||||
|
||||
/**
|
||||
Removes the markup accepted by wxStaticText when the @c wxST_MARKUP style is used,
|
||||
and then returns the cleaned string.
|
||||
|
||||
See SetLabel() for more info about the markup.
|
||||
*/
|
||||
static wxString RemoveMarkup(const wxString& str);
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user