X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3c17b4013e80b99976c750c19fca47729517f6..232b2162776e08c0b16d5280b90f5c075f38c667:/interface/wx/control.h diff --git a/interface/wx/control.h b/interface/wx/control.h index 2a9f824059..68f220590f 100644 --- a/interface/wx/control.h +++ b/interface/wx/control.h @@ -6,9 +6,19 @@ // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// +/** + The different ellipsization modes supported by the + wxControl::Ellipsize function. +*/ +enum wxEllipsizeMode +{ + wxELLIPSIZE_START, + wxELLIPSIZE_MIDDLE, + wxELLIPSIZE_END +}; + /** @class wxControl - @wxheader{control.h} This is the base class for a control or "widget". @@ -28,7 +38,24 @@ public: @see wxCommandEvent */ - void Command(wxCommandEvent& event); + virtual void Command(wxCommandEvent& event); + + /** + Replaces parts of the @a label string with ellipsis, if needed, so + that it doesn't exceed @a maxWidth. + + @param label + The string to ellipsize + @param dc + The DC used to retrieve the character widths through the + wxDC::GetPartialTextExtents() function. + @param mode + The ellipsization modes. See ::wxEllipsizeMode. + @param maxWidth + The maximum width of the returned string in pixels. + */ + static wxString Ellipsize(const wxString& label, const wxDC& dc, + wxEllipsizeMode mode, int maxWidth); /** Returns the control's text. @@ -41,22 +68,62 @@ public: /** Returns the control's label without mnemonics. */ - const wxString GetLabelText(); + wxString GetLabelText() const; /** - Returns the given @a label string without mnemonics. + 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 mnemonic for this control and can be used to + 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 "&&". + 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); };