reorder GetLabel(), GetLabelText(), SetLabel() and SetLabelText() function declarations, implementations and relative documentations.

Add wxStaticTextBase::GetLabelWithoutMarkup() and use it in the wxMSW implementation of wxStaticText::SetLabel() to close bug #11446; the function RemoveMarkup() which was previously used in fact could not check for presence/absence of wxST_MARKUP style since it's a static function.

Add wxStaticTextBase::SetLabelText() functions for symmetry with wxControlBase::SetLabelText()

Add test unit for both wxControl::*Label* and wxStaticText::*Label* functions.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Francesco Montorsi
2010-03-21 21:39:15 +00:00
parent 90497db95b
commit 32ee98eb76
18 changed files with 522 additions and 381 deletions

View File

@@ -93,6 +93,89 @@ public:
*/
virtual void Command(wxCommandEvent& event);
/**
Returns the control's label, as it was passed to SetLabel().
Note that the returned string may contains mnemonics ("&" characters) if they were
passed to the SetLabel() function; use GetLabelText() if they are undesired.
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).
*/
wxString GetLabel() const;
/**
Returns the control's label without mnemonics.
Note that because of the stripping of the mnemonics the returned string may differ
from the string which was passed to SetLabel().
*/
wxString GetLabelText() const;
/**
Sets the control's label.
All "&" characters in the @a label are special and indicate that the
following character is a @e mnemonic for this control and can be used to
activate it from the keyboard (typically by using @e Alt key in
combination with it). To insert a literal ampersand character, you need
to double it, i.e. use use "&&". If this behaviour is undesirable, use
SetLabelText() instead.
*/
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.
Notice that it means that the control can't have any mnemonic defined
for it using this function.
@see EscapeMnemonics()
*/
void SetLabelText(const wxString& text);
public: // static functions
/**
Returns the given @a label string without mnemonics ("&" characters).
*/
static wxString GetLabelText(const wxString& label);
/**
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()).
*/
static wxString RemoveMnemonics(const wxString& str);
/**
Escapes the special mnemonics characters ("&") in the given string.
This function can be helpful if you need to set the controls label to a
user-provided string. If the string contains ampersands, they wouldn't
appear on the display but be used instead to indicate that the
character following the first of them can be used as a control mnemonic.
While this can sometimes be desirable (e.g. to allow the user to
configure mnemonics of the controls), more often you will want to use
this function before passing a user-defined string to SetLabel().
Alternatively, if the label is entirely user-defined, you can just call
SetLabelText() directly -- but this function must be used if the label
is a combination of a part defined by program containing the control
mnemonics and a user-defined part.
@param text
The string such as it should appear on the display.
@return
The same string with the ampersands in it doubled.
*/
static wxString EscapeMnemonics(const wxString& text);
/**
Replaces parts of the @a label string with ellipsis, if needed, so
that it doesn't exceed @a maxWidth.
@@ -120,74 +203,5 @@ public:
static wxString Ellipsize(const wxString& label, const wxDC& dc,
wxEllipsizeMode mode, int maxWidth,
int flags = wxELLIPSIZE_FLAGS_DEFAULT);
/**
Returns the control's text.
@note The returned string contains mnemonics ("&" characters) if it has
any, use GetLabelText() if they are undesired.
*/
wxString GetLabel() const;
/**
Returns the control's label without mnemonics.
*/
wxString GetLabelText() const;
/**
Returns the given @a label string without mnemonics ("&" characters).
*/
static wxString GetLabelText(const wxString& label);
/**
Removes the mnemonics ("&" characters) from the given string.
*/
static wxString RemoveMnemonics(const wxString& str);
/**
Escape the special mnemonics characters ("&") in the given string.
This function can be helpful if you need to set the controls label to a
user-provided string. If the string contains ampersands, they wouldn't
appear on the display but be used instead to indicate that the
character following the first of them can be used as a control mnemonic.
While this can sometimes be desirable (e.g. to allow the user to
configure mnemonics of the controls), more often you will want to use
this function before passing a user-defined string to SetLabel().
Alternatively, if the label is entirely user-defined, you can just call
SetLabelText() directly -- but this function must be used if the label
is a combination of a part defined by program containing the control
mnemonics and a user-defined part.
@param text
The string such as it should appear on the display.
@return
The same string with the ampersands in it doubled.
*/
static wxString EscapeMnemonics(const wxString& text);
/**
Sets the item's text.
Any "&" characters in the @a label are special and indicate that the
following character is a @e mnemonic for this control and can be used to
activate it from the keyboard (typically by using @e Alt key in
combination with it). To insert a literal ampersand character, you need
to double it, i.e. use use "&&". If this behaviour is undesirable, use
SetLabelText() instead.
*/
void SetLabel(const wxString& label);
/**
Sets the item's text 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.
Notice that it means that the control can't have any mnemonic defined
for it using this function.
@see EscapeMnemonics()
*/
void SetLabelText(const wxString& text);
};

View File

@@ -22,11 +22,11 @@
Center the text (horizontally).
@style{wxST_NO_AUTORESIZE}
By default, the control will adjust its size to exactly fit to the
size of the text when SetLabel is called. If this style flag is
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 wxALIGN_RIGHT or
CENTER style because otherwise they won't make sense any longer
after a call to SetLabel).
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
longer after a call to SetLabel()).
@style{wxST_ELLIPSIZE_START}
If the labeltext width exceeds the control width, replace the beginning
of the label with an ellipsis; uses wxControl::Ellipsize.
@@ -89,23 +89,12 @@ public:
const wxSize& size = wxDefaultSize, long style = 0,
const wxString& name = wxStaticTextNameStr);
// 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. "<" to have in the output the "<" string.
/**
Escapes all the symbols of @a str that have a special meaning (<tt><>&quot;'&</tt>) for
wxStaticText objects with the @c wxST_MARKUP style.
Those symbols are replaced the corresponding entities
(&amp;lt; &amp;gt; &amp;quot; &amp;apos; &amp;amp;).
*/
static wxString EscapeMarkup(const wxString& str);
/**
Returns the contents of the control.
Note that the returned string contains both the mnemonics (@& characters),
Note that the returned string may contain both the mnemonics (@& characters),
if any, and markup tags, if any.
Use GetLabelText() if only the label text is needed.
*/
wxString GetLabel() const;
@@ -116,29 +105,19 @@ public:
*/
wxString GetLabelText() const;
/**
This overload returns the given @a label string without the
mnemonics characters (if any) and without the markup.
*/
static wxString GetLabelText(const wxString& label);
/**
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;
/**
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);
// NB: when writing docs for the following function remember that Doxygen
// will always expand HTML entities (e.g. &quot;) and thus we need to
// write e.g. "&amp;lt;" to have in the output the "&lt;" string.
/**
Sets the static text label and updates the controls size to exactly fit the
label unless the control has wxST_NO_AUTORESIZE flag.
label unless the control has @c wxST_NO_AUTORESIZE flag.
This function allows to set decorated static label text on platforms which
support it (currently only GTK+ 2). For the other platforms, the markup is
@@ -146,6 +125,10 @@ public:
The supported tags are:
<TABLE>
<TR>
<TD><b>Tag</b></TD>
<TD><b>Description</b></TD>
</TR>
<TR>
<TD>&lt;b&gt;</TD>
<TD>bold text</TD>
@@ -231,6 +214,17 @@ public:
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.
Notice that it means that the control can't have any mnemonic defined
for it using this function.
*/
virtual void SetLabelText(const wxString& text);
/**
This functions wraps the controls label so that each of its lines becomes at
@@ -244,5 +238,34 @@ 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><>&quot;'&</tt>) for
wxStaticText objects with the @c wxST_MARKUP style.
Those symbols are replaced the corresponding entities
(&amp;lt; &amp;gt; &amp;quot; &amp;apos; &amp;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);
};