]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/control.h
allow the user to pass NULL for the status widths; this was a feature supported by...
[wxWidgets.git] / interface / wx / control.h
index e60d68f58f7a24c1842cbbce25776f979c4724f0..68f220590fdb4c1e0de5c350553f3b9482ba8eba 100644 (file)
@@ -6,6 +6,17 @@
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
+/**
+    The different ellipsization modes supported by the
+    wxControl::Ellipsize function.
+*/
+enum wxEllipsizeMode
+{
+    wxELLIPSIZE_START,
+    wxELLIPSIZE_MIDDLE,
+    wxELLIPSIZE_END
+};
+
 /**
     @class wxControl
 
@@ -29,6 +40,23 @@ public:
     */
     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.
 
@@ -40,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);
 };