]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/window.h
Improved documentation for wxPGProperty::DoSetAttribute()
[wxWidgets.git] / interface / wx / window.h
index 6eb30c66bb72a1fe20f01aababa7efaf0f40e367..ed15f4adb039c6fe16c3c92673fc206a3a0e6a5d 100644 (file)
 */
 enum wxShowEffect
 {
+    /**
+        No effect, equivalent to normal wxWindow::Show() or Hide() call.
+
+        @since 2.9.1
+     */
+    wxSHOW_EFFECT_NONE,
+
     /// Roll window to the left
     wxSHOW_EFFECT_ROLL_TO_LEFT,
 
@@ -513,7 +520,23 @@ public:
     virtual int GetScrollThumb(int orientation) const;
 
     /**
-        Returns @true if this window has a scroll bar for this orientation.
+        Returns @true if this window can have a scroll bar in this orientation.
+
+        @param orient
+            Orientation to check, either wxHORIZONTAL or wxVERTICAL.
+
+        @since 2.9.1
+    */
+    bool CanScroll(int orient) const;
+
+    /**
+        Returns @true if this window currently has a scroll bar for this
+        orientation.
+
+        This method may return @false even when CanScroll() for the same
+        orientation returns @true, but if CanScroll() returns @false, i.e.
+        scrolling in this direction is not enabled at all, HasScrollbar()
+        always returns @false as well.
 
         @param orient
             Orientation to check, either wxHORIZONTAL or wxVERTICAL.
@@ -759,6 +782,11 @@ public:
         Note that if this window is a top-level one and it is currently minimized, the
         return size is empty (both width and height are 0).
 
+        @beginWxPerlOnly
+        In wxPerl this method takes no parameters and returns
+        a 2-element list (width, height).
+        @endWxPerlOnly
+
         @see GetSize(), GetVirtualSize()
     */
     void GetClientSize(int* width, int* height) const;
@@ -835,6 +863,11 @@ public:
         @param height
             Receives the window height.
 
+        @beginWxPerlOnly
+        In wxPerl this method is implemented as GetSizeWH() returning
+        a 2-element list (width, height).
+        @endWxPerlOnly
+
         @see GetClientSize(), GetVirtualSize(), @ref overview_windowsizing
     */
     void GetSize(int* width, int* height) const;
@@ -1174,6 +1207,11 @@ public:
         @param y
             Receives the y position of the window if non-@NULL.
 
+        @beginWxPerlOnly
+        In wxPerl this method is implemented as GetPositionXY() returning
+        a 2-element list (x, y).
+        @endWxPerlOnly
+
         @see GetScreenPosition()
     */
     void GetPosition(int* x, int* y) const;
@@ -1282,6 +1320,11 @@ public:
             - ClientToScreen(point): Accepts and returns a wxPoint
             - ClientToScreenXY(x, y): Returns a 2-tuple, (x, y)
         @endWxPythonOnly
+
+        @beginWxPerlOnly
+        In wxPerl this method returns a 2-element list instead of
+        modifying its parameters.
+        @endWxPerlOnly
     */
     void ClientToScreen(int* x, int* y) const;
 
@@ -1418,12 +1461,12 @@ public:
 
     /**
         Returns the background style of the window.
-        The background style can be one of the wxBackgroundStyle.
 
         @see SetBackgroundColour(), GetForegroundColour(),
              SetBackgroundStyle(), SetTransparent()
     */
     virtual wxBackgroundStyle GetBackgroundStyle() const;
+
     /**
         Returns the character height for this window.
     */
@@ -1488,11 +1531,18 @@ public:
             Return value for external leading (optional).
         @param font
             Font to use instead of the current window font (optional).
+
+        @beginWxPerlOnly
+        In wxPerl this method takes only the @a string and optionally
+        @a font parameters, and returns a 4-element list
+        (x, y, descent, externalLeading).
+        @endWxPerlOnly
     */
-    virtual void GetTextExtent(const wxString& string, int* w, int* h,
-                               int* descent = NULL,
-                               int* externalLeading = NULL,
-                               const wxFont* font = NULL) const;
+    void GetTextExtent(const wxString& string,
+                        int* w, int* h,
+                       int* descent = NULL,
+                       int* externalLeading = NULL,
+                       const wxFont* font = NULL) const;
 
     /**
         Gets the dimensions of the string as it would be drawn on the
@@ -1575,6 +1625,9 @@ public:
                  usually the themes represent the appearance chosen by the user
                  to be used for all applications on the system.
 
+        @return @true if the colour was really changed, @false if it was already set
+                to this colour and nothing was done.
+
         @see GetBackgroundColour(), SetForegroundColour(),
              GetForegroundColour(), ClearBackground(),
              Refresh(), wxEraseEvent
@@ -1582,8 +1635,28 @@ public:
     virtual bool SetBackgroundColour(const wxColour& colour);
 
     /**
-        Sets the background style of the window. see GetBackgroundStyle() for
-        the description of the possible style values.
+        Sets the background style of the window.
+
+        The default background style is wxBG_STYLE_ERASE which indicates that
+        the window background may be erased in EVT_ERASE_BACKGROUND handler.
+        This is a safe compatibility default however you may want to change it
+        to wxBG_STYLE_SYSTEM if you don't define any erase background event
+        handlers at all to avoid unnecessary generation of erase background
+        events and always let system erase the background. And you should
+        change the background style to wxBG_STYLE_PAINT if you define an
+        EVT_PAINT handler which completely overwrites the window background as
+        in this case erasing it previously, either in EVT_ERASE_BACKGROUND
+        handler or in the system default handler, would result in flicker as
+        the background pixels will be repainted twice every time the window is
+        redrawn. Do ensure that the background is entirely erased by your
+        EVT_PAINT handler in this case however as otherwise garbage may be left
+        on screen.
+
+        Notice that in previous versions of wxWidgets a common way to work
+        around the above mentioned flickering problem was to define an empty
+        EVT_ERASE_BACKGROUND handler. Setting background style to
+        wxBG_STYLE_PAINT is a simpler and more efficient solution to the same
+        problem.
 
         @see SetBackgroundColour(), GetForegroundColour(),
              SetTransparent()
@@ -1606,8 +1679,8 @@ public:
             Font to associate with this window, pass
             wxNullFont to reset to the default font.
 
-        @return @true if the want was really changed, @false if it was already set
-                to this  font and so nothing was done.
+        @return @true if the font was really changed, @false if it was already set
+                to this font and nothing was done.
 
         @see GetFont(), InheritAttributes()
     */
@@ -1626,6 +1699,9 @@ public:
                  interpretation according to the window class; it may be
                  the text colour or other colour, or it may not be used at all.
 
+        @return @true if the colour was really changed, @false if it was already set
+                to this colour and nothing was done.
+
         @see GetForegroundColour(), SetBackgroundColour(),
              GetBackgroundColour(), ShouldInheritColours()
     */
@@ -2141,8 +2217,10 @@ public:
             milliseconds. If the default value of 0 is used, the default
             animation time for the current platform is used.
 
-        @note Currently this function is only implemented in wxMSW and does the
-              same thing as Show() in the other ports.
+        @note Currently this function is only implemented in wxMSW and wxOSX
+              (for wxTopLevelWindows only in Carbon version and for any kind of
+              windows in Cocoa) and does the same thing as Show() in the other
+              ports.
 
         @since 2.9.0
 
@@ -2195,6 +2273,11 @@ public:
     */
     wxToolTip* GetToolTip() const;
 
+    /**
+        Get the text of the associated tooltip or empty string if none.
+     */
+    wxString GetToolTipText() const;
+
     /**
         Attach a tooltip to the window.
 
@@ -2600,19 +2683,23 @@ public:
 
     /**
         Sets the window to have the given layout sizer.
+
         The window will then own the object, and will take care of its deletion.
         If an existing layout constraints object is already owned by the
-        window, it will be deleted if the deleteOld parameter is @true.
+        window, it will be deleted if the @a deleteOld parameter is @true.
 
         Note that this function will also call SetAutoLayout() implicitly with @true
-        parameter if the @a sizer is non-@NULL and @false otherwise.
+        parameter if the @a sizer is non-@NULL and @false otherwise so that the
+        sizer will be effectively used to layout the window children whenever
+        it is resized.
 
         @param sizer
             The sizer to set. Pass @NULL to disassociate and conditionally delete
             the window's sizer. See below.
         @param deleteOld
             If @true (the default), this will delete any pre-existing sizer.
-            Pass @false if you wish to handle deleting the old sizer yourself.
+            Pass @false if you wish to handle deleting the old sizer yourself
+            but remember to do it yourself in this case to avoid memory leaks.
 
         @remarks SetSizer enables and disables Layout automatically.
     */
@@ -2665,20 +2752,17 @@ public:
 
     /**
         Determines whether the Layout() function will be called automatically
-        when the window is resized. Please note that this only happens for the
-        windows usually used to contain children, namely wxPanel and wxTopLevelWindow
-        (and the classes deriving from them).
+        when the window is resized.
 
         This method is called implicitly by SetSizer() but if you use SetConstraints()
         you should call it manually or otherwise the window layout won't be correctly
         updated when its size changes.
 
         @param autoLayout
-            Set this to @true if you wish the Layout() function to be
-            called automatically when the window is resized
-            (really happens only if you derive from wxPanel or wxTopLevelWindow).
+            Set this to @true if you wish the Layout() function to be called
+            automatically when the window is resized.
 
-        @see SetConstraints()
+        @see SetSizer(), SetConstraints()
     */
     void SetAutoLayout(bool autoLayout);
 
@@ -2759,8 +2843,10 @@ public:
     /**
         Moves the pointer to the given position on the window.
 
-        @note This function is not supported under Mac because Apple Human
-              Interface Guidelines forbid moving the mouse cursor programmatically.
+        @note Apple Human Interface Guidelines forbid moving the mouse cursor
+              programmatically so you should avoid using this function in Mac
+              applications (and probably avoid using it under the other
+              platforms without good reason as well).
 
         @param x
             The new x position for the cursor.
@@ -2807,6 +2893,10 @@ public:
         Returns the platform-specific handle of the physical window.
         Cast it to an appropriate handle, such as @b HWND for Windows,
         @b Widget for Motif, @b GtkWidget for GTK or @b WinHandle for PalmOS.
+
+        @beginWxPerlOnly
+        This method will return an integer in wxPerl.
+        @endWxPerlOnly
     */
     virtual WXWidget GetHandle() const;