]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/control.h
Dramatically optimise inserting many items in wxGenericListCtrl.
[wxWidgets.git] / include / wx / control.h
index 79d6d833fd080034ddad3a5ac43890d65c6130df..b597937ef2b3cc7a911a383cbeab4021128e4de3 100644 (file)
@@ -94,6 +94,29 @@ public:
     // get just the text of the label, without mnemonic characters ('&')
     virtual wxString GetLabelText() const { return GetLabelText(GetLabel()); }
 
+
+#if wxUSE_MARKUP
+    // 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 "&lt;" 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 "&amp;" 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);
+    }
+#endif // wxUSE_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,13 +185,28 @@ protected:
                        const wxValidator& validator,
                        const wxString& name);
 
+#if wxUSE_MARKUP
+    // 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);
+#endif // wxUSE_MARKUP
+
+
     // initialize the common fields of wxCommandEvent
     void InitCommandEvent(wxCommandEvent& event) const;
 
     // Ellipsize() helper:
     static wxString DoEllipsizeSingleLine(const wxString& label, const wxDC& dc,
                                           wxEllipsizeMode mode, int maxWidth,
-                                          int replacementWidth, int marginWidth);
+                                          int replacementWidth);
+
+#if wxUSE_MARKUP
+    // Remove markup from the given string, returns empty string on error i.e.
+    // if markup was syntactically invalid.
+    static wxString RemoveMarkup(const wxString& markup);
+#endif // wxUSE_MARKUP
+
 
     // this field contains the label in wx format, i.e. with '&' mnemonics,
     // as it was passed to the last SetLabel() call