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:
@@ -94,6 +94,27 @@ public:
|
||||
// get just the text of the label, without mnemonic characters ('&')
|
||||
virtual wxString GetLabelText() const { return GetLabelText(GetLabel()); }
|
||||
|
||||
|
||||
// Set the label with markup (and mnemonics). Markup is a simple subset of
|
||||
// HTML with tags such as <b>, <i> and <span>. By default it is not
|
||||
// supported i.e. all the markup is simply stripped and SetLabel() is
|
||||
// called but some controls in some ports do support this already and in
|
||||
// the future most of them should.
|
||||
//
|
||||
// Notice that, being HTML-like, markup also supports XML entities so '<'
|
||||
// should be encoded as "<" and so on, a bare '<' in the input will
|
||||
// likely result in an error. As an exception, a bare '&' is allowed and
|
||||
// indicates that the next character is a mnemonic. To insert a literal '&'
|
||||
// in the control you need to use "&" in the input string.
|
||||
//
|
||||
// Returns true if the label was set, even if the markup in it was ignored.
|
||||
// False is only returned if we failed to parse the label.
|
||||
bool SetLabelMarkup(const wxString& markup)
|
||||
{
|
||||
return DoSetLabelMarkup(markup);
|
||||
}
|
||||
|
||||
|
||||
// controls by default inherit the colours of their parents, if a
|
||||
// particular control class doesn't want to do it, it can override
|
||||
// ShouldInheritColours() to return false
|
||||
@@ -162,6 +183,12 @@ protected:
|
||||
const wxValidator& validator,
|
||||
const wxString& name);
|
||||
|
||||
// This function may be overridden in the derived classes to implement
|
||||
// support for labels with markup. The base class version simply strips the
|
||||
// markup and calls SetLabel() with the remaining text.
|
||||
virtual bool DoSetLabelMarkup(const wxString& markup);
|
||||
|
||||
|
||||
// initialize the common fields of wxCommandEvent
|
||||
void InitCommandEvent(wxCommandEvent& event) const;
|
||||
|
||||
@@ -170,6 +197,11 @@ protected:
|
||||
wxEllipsizeMode mode, int maxWidth,
|
||||
int replacementWidth);
|
||||
|
||||
// Remove markup from the given string, returns empty string on error i.e.
|
||||
// if markup was syntactically invalid.
|
||||
static wxString RemoveMarkup(const wxString& markup);
|
||||
|
||||
|
||||
// this field contains the label in wx format, i.e. with '&' mnemonics,
|
||||
// as it was passed to the last SetLabel() call
|
||||
wxString m_labelOrig;
|
||||
|
@@ -56,6 +56,14 @@ protected:
|
||||
|
||||
virtual wxString DoGetLabel() const;
|
||||
virtual void DoSetLabel(const wxString& str);
|
||||
virtual bool DoSetLabelMarkup(const wxString& markup);
|
||||
|
||||
private:
|
||||
// Common part of SetLabel() and DoSetLabelMarkup().
|
||||
typedef void (wxStaticText::*GTKLabelSetter)(GtkLabel *, const wxString&);
|
||||
|
||||
void GTKDoSetLabel(GTKLabelSetter setter, const wxString& label);
|
||||
|
||||
|
||||
DECLARE_DYNAMIC_CLASS(wxStaticText)
|
||||
};
|
||||
|
@@ -22,7 +22,7 @@
|
||||
* wxStaticText flags
|
||||
*/
|
||||
#define wxST_NO_AUTORESIZE 0x0001
|
||||
#define wxST_MARKUP 0x0002
|
||||
// free 0x0002 bit
|
||||
#define wxST_ELLIPSIZE_START 0x0004
|
||||
#define wxST_ELLIPSIZE_MIDDLE 0x0008
|
||||
#define wxST_ELLIPSIZE_END 0x0010
|
||||
@@ -50,47 +50,17 @@ public:
|
||||
HasFlag(wxST_ELLIPSIZE_END);
|
||||
}
|
||||
|
||||
// get the string without mnemonic characters ('&') and without markup
|
||||
// (if the wxST_MARKUP style is set)
|
||||
virtual wxString GetLabelText() const;
|
||||
|
||||
// set label text (mnemonics and markup, if the wxST_MARKUP style is set,
|
||||
// will be escaped)
|
||||
virtual void SetLabelText(const wxString& text);
|
||||
|
||||
|
||||
// static utilities for markup handling
|
||||
// (symmetric to those in wxControl about mnemonics)
|
||||
// -------------------------------------------------
|
||||
|
||||
// get the string without mnemonic characters ('&') and without markup
|
||||
// (note that markup is always removed; this function is static and cannot
|
||||
// check for wxST_MARKUP style presence/absence!)
|
||||
static wxString GetLabelText(const wxString& label);
|
||||
|
||||
// removes the markup recognized by wxStaticText and returns the cleaned string
|
||||
static wxString RemoveMarkup(const wxString& str);
|
||||
|
||||
// escapes all special symbols (<>"'&) present in the given string
|
||||
// using the corresponding entities (< > " ' &)
|
||||
static wxString EscapeMarkup(const wxString& str);
|
||||
|
||||
protected: // functions required for wxST_ELLIPSIZE_* support
|
||||
|
||||
// choose the default border for this window
|
||||
virtual wxBorder GetDefaultBorder() const { return wxBORDER_NONE; }
|
||||
|
||||
// calls only RemoveMarkup() on the original label
|
||||
// if the wxST_MARKUP style is set
|
||||
// (but unlike GetLabelText won't remove mnemonics)
|
||||
virtual wxString GetLabelWithoutMarkup() const;
|
||||
// Calls Ellipsize() on the real label if necessary. Unlike GetLabelText(),
|
||||
// keeps the mnemonics instead of removing them.
|
||||
virtual wxString GetEllipsizedLabel() const;
|
||||
|
||||
// just calls RemoveMarkup() & Ellipsize() on the original label
|
||||
// if the wxST_MARKUP & wxST_ELLIPSIZE_* styles are set
|
||||
// (but unlike GetLabelText won't remove mnemonics)
|
||||
virtual wxString GetEllipsizedLabelWithoutMarkup() const;
|
||||
|
||||
// replaces parts of the string with ellipsis if needed
|
||||
// Replaces parts of the string with ellipsis according to the ellipsize
|
||||
// style. Shouldn't be called if we don't have any.
|
||||
wxString Ellipsize(const wxString& label) const;
|
||||
|
||||
// to be called when updating the size of the static text:
|
||||
|
Reference in New Issue
Block a user