]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/window.h
Add new sample project files.
[wxWidgets.git] / interface / wx / window.h
index 6a2cc7216c8296cbbc8ffffe409f9cc78b5edb6e..2bc1c680b71da91f721315e4f80e2c93b2b2e47a 100644 (file)
@@ -50,6 +50,25 @@ enum wxShowEffect
     wxSHOW_EFFECT_EXPAND
 };
 
+
+
+/**
+   struct containing all the visual attributes of a control
+*/
+struct  wxVisualAttributes
+{
+    // the font used for control label/text inside it
+    wxFont font;
+
+    // the foreground colour
+    wxColour colFg;
+
+    // the background colour, may be wxNullColour if the controls background
+    // colour is not solid
+    wxColour colBg;
+};
+
+
 /**
     Different window variants, on platforms like eg mac uses different
     rendering sizes.
@@ -218,9 +237,13 @@ enum wxWindowVariant
         See wxKeyEvent.
     @event{EVT_KEY_UP(func)}
         Process a @c wxEVT_KEY_UP event (any key has been released).
+        See wxKeyEvent.
     @event{EVT_CHAR(func)}
         Process a @c wxEVT_CHAR event.
         See wxKeyEvent.
+    @event{EVT_CHAR_HOOK(func)}
+        Process a @c wxEVT_CHAR_HOOK event.
+        See wxKeyEvent.
     @event{EVT_MOUSE_CAPTURE_LOST(func)}
         Process a @c wxEVT_MOUSE_CAPTURE_LOST event. See wxMouseCaptureLostEvent.
     @event{EVT_MOUSE_CAPTURE_CHANGED(func)}
@@ -235,8 +258,6 @@ enum wxWindowVariant
         Process scroll events. See wxScrollWinEvent.
     @event{EVT_SET_CURSOR(func)}
         Process a @c wxEVT_SET_CURSOR event. See wxSetCursorEvent.
-    @event{EVT_SHOW(func)}
-        Process a @c wxEVT_SHOW event. See wxShowEvent.
     @event{EVT_SIZE(func)}
         Process a @c wxEVT_SIZE event. See wxSizeEvent.
     @event{EVT_SYS_COLOUR_CHANGED(func)}
@@ -297,6 +318,13 @@ public:
     virtual ~wxWindow();
 
 
+    bool Create(wxWindow *parent,
+                wxWindowID id,
+                const wxPoint& pos = wxDefaultPosition,
+                const wxSize& size = wxDefaultSize,
+                long style = 0,
+                const wxString& name = wxPanelNameStr);
+
     /**
         @name Focus functions
 
@@ -463,10 +491,13 @@ public:
     */
     wxWindow* GetPrevSibling() const;
     /**
-        Reparents the window, i.e the window will be removed from its
+        Reparents the window, i.e. the window will be removed from its
         current parent window (e.g. a non-standard toolbar in a wxFrame)
         and then re-inserted into another.
 
+        Notice that currently you need to explicitly call
+        wxNotebook::RemovePage() before reparenting a notebook page.
+
         @param newParent
             New parent.
     */
@@ -851,6 +882,11 @@ public:
     */
     virtual wxSize GetMinSize() const;
 
+    int GetMinWidth() const;
+    int GetMinHeight() const;
+    int GetMaxWidth() const;
+    int GetMaxHeight() const;
+
     /**
         Returns the size of the entire window in pixels, including title bar, border,
         scrollbars, etc.
@@ -896,12 +932,31 @@ public:
     */
     void GetVirtualSize(int* width, int* height) const;
 
+    /**
+       Return the largest of ClientSize and BestSize (as determined
+       by a sizer, interior children, or other means)
+    */
+    virtual wxSize GetBestVirtualSize() const;
+
     /**
         Returns the size of the left/right and top/bottom borders of this window in x
         and y components of the result respectively.
     */
     virtual wxSize GetWindowBorderSize() const;
 
+    /**
+       wxSizer and friends use this to give a chance to a component to recalc
+       its min size once one of the final size components is known. Override
+       this function when that is useful (such as for wxStaticText which can
+       stretch over several lines). Parameter availableOtherDir
+       tells the item how much more space there is available in the opposite
+       direction (-1 if unknown).
+    */
+    virtual bool
+    InformFirstDirection(int direction,
+                         int size,
+                         int availableOtherDir);
+    
     /**
         Resets the cached best size value so it will be recalculated the next time it
         is needed.
@@ -978,6 +1033,11 @@ public:
     */
     void SetClientSize(const wxSize& size);
 
+    /**
+        @overload
+    */
+    void SetClientSize(const wxRect& rect);
+
     /**
         This normally does not need to be called by user code.
         It is called when a window is added to a sizer, and is used so the window
@@ -1133,9 +1193,12 @@ public:
 
         @see wxTopLevelWindow::SetSizeHints, @ref overview_windowsizing
     */
-    void SetSizeHints( const wxSize& minSize,
-                       const wxSize& maxSize=wxDefaultSize,
-                       const wxSize& incSize=wxDefaultSize);
+    virtual void SetSizeHints( const wxSize& minSize,
+                               const wxSize& maxSize=wxDefaultSize,
+                               const wxSize& incSize=wxDefaultSize);
+    virtual void SetSizeHints( int minW, int minH,
+                               int maxW = -1, int maxH = -1,
+                               int incW = -1, int incH = -1 );
 
     /**
         Sets the virtual size of the window in pixels.
@@ -1199,20 +1262,6 @@ public:
     */
     void CentreOnParent(int direction = wxBOTH);
 
-    /**
-        Centres the window.
-
-        @param direction
-            Specifies the direction for the centring. May be wxHORIZONTAL,
-            wxVERTICAL or wxBOTH. It may also include the wxCENTRE_ON_SCREEN
-            flag.
-
-        @remarks This function is not meant to be called directly by user code,
-                 but via Centre, Center, CentreOnParent, or CenterOnParent.
-                 This function can be overriden to fine-tune centring behaviour.
-    */
-    virtual void DoCentre(int direction);
-
     /**
         This gets the position of the window in pixels, relative to the parent window
         for the child windows or relative to the display origin for the top level windows.
@@ -1274,6 +1323,20 @@ public:
     */
     wxRect GetScreenRect() const;
 
+    /**
+       Get the origin of the client area of the window relative to the
+       window top left corner (the client area may be shifted because of
+       the borders, scrollbars, other decorations...)
+    */
+    virtual wxPoint GetClientAreaOrigin() const;
+
+    /**
+       Get the client rectangle in window (i.e. client) coordinates
+    */
+    wxRect GetClientRect() const;
+
+
+    
     /**
         Moves the window to the given position.
 
@@ -1312,6 +1375,8 @@ public:
     */
     void Move(const wxPoint& pt, int flags = wxSIZE_USE_EXISTING);
 
+    void SetPosition(const wxPoint& pt);
+
     //@}
 
 
@@ -1559,7 +1624,7 @@ public:
         @endWxPerlOnly
     */
     void GetTextExtent(const wxString& string,
-                        int* w, int* h,
+                       int* w, int* h,
                        int* descent = NULL,
                        int* externalLeading = NULL,
                        const wxFont* font = NULL) const;
@@ -1578,6 +1643,11 @@ public:
     */
     const wxRegion& GetUpdateRegion() const;
 
+    /**
+       Get the update rectangle bounding box in client coords
+    */
+    wxRect GetUpdateClientRect() const;
+
     /**
         Returns @true if this window background is transparent (as, for example,
         for wxStaticText) and should show the parent window background.
@@ -1779,6 +1849,10 @@ public:
     */
     virtual void SetThemeEnabled(bool enable);
 
+    /**
+     */
+    virtual bool GetThemeEnabled() const;
+
     /**
         Returns @true if the system supports transparent windows and calling
         SetTransparent() may succeed. If this function returns @false, transparent
@@ -2012,7 +2086,7 @@ public:
 
     /**
         Sets the style of the window. Please note that some styles cannot be changed
-        after the window creation and that Refresh() might need to be be called
+        after the window creation and that Refresh() might need to be called
         after changing the others for the change to take place immediately.
 
         See @ref overview_windowstyles "Window styles" for more information about flags.
@@ -2090,13 +2164,13 @@ public:
                  control. See also wxNavigationKeyEvent and
                  HandleAsNavigationKey.
     */
-    bool Navigate(int flags = IsForward);
+    bool Navigate(int flags = wxNavigationKeyEvent::IsForward);
 
     /**
         Performs a keyboard navigation action inside this window.
         See Navigate() for more information.
     */
-    bool NavigateIn(int flags = IsForward);
+    bool NavigateIn(int flags = wxNavigationKeyEvent::IsForward);
 
     //@}
 
@@ -2235,6 +2309,11 @@ public:
         for a top level window if you want to bring it to top, although this is not
         needed if Show() is called immediately after the frame creation.
 
+        Notice that the default state of newly created top level windows is hidden
+        (to allow you to create their contents without flicker) unlike for
+        all the other, not derived from wxTopLevelWindow, windows that
+        are by default created in the shown state.
+
         @param show
             If @true displays the window. Otherwise, hides it.
 
@@ -2372,6 +2451,10 @@ public:
         The parameter @a menu is the menu to show.
         The parameter @a pos (or the parameters @a x and @a y) is the
         position at which to show the menu in client coordinates.
+        It is recommended to not explicitly specify coordinates when
+        calling this method in response to mouse click, because some of
+        the ports (namely, wxGTK) can do a better job of positioning
+        the menu in that case.
 
         @return
              The selected menu item id or @c wxID_NONE if none selected or an
@@ -2379,7 +2462,8 @@ public:
 
         @since 2.9.0
     */
-    int GetPopupMenuSelectionFromUser(wxMenu& menu, const wxPoint& pos);
+    int GetPopupMenuSelectionFromUser(wxMenu& menu,
+                                      const wxPoint& pos = wxDefaultPosition);
 
     /**
         @overload
@@ -2706,7 +2790,7 @@ public:
 
 
     /**
-        @name Constraints, sizers and window layouting functions
+        @name Constraints, sizers and window layout functions
     */
     //@{
 
@@ -2749,7 +2833,7 @@ public:
         This method calls SetSizer() and then wxSizer::SetSizeHints which sets the initial
         window size to the size needed to accommodate all sizer elements and sets the
         size hints which, if this window is a top level one, prevent the user from
-        resizing it to be less than this minimial size.
+        resizing it to be less than this minimal size.
     */
     void SetSizerAndFit(wxSizer* sizer, bool deleteOld = true);
 
@@ -2776,7 +2860,6 @@ public:
     */
     void SetConstraints(wxLayoutConstraints* constraints);
 
-
     /**
         Invokes the constraint-based layout algorithm or the sizer-based algorithm
         for this window.
@@ -2806,6 +2889,8 @@ public:
     */
     void SetAutoLayout(bool autoLayout);
 
+    bool GetAutoLayout() const;
+
     //@}
 
 
@@ -2905,6 +2990,22 @@ public:
     */
     //@{
 
+    wxHitTest HitTest(wxCoord x, wxCoord y) const;
+    wxHitTest HitTest(const wxPoint& pt) const;
+
+    /**
+       Get the window border style from the given flags: this is different from
+       simply doing flags & wxBORDER_MASK because it uses GetDefaultBorder() to
+       translate wxBORDER_DEFAULT to something reasonable
+    */
+    wxBorder GetBorder(long flags) const;
+
+    /**
+       Get border for the flags of this window
+    */
+    wxBorder GetBorder() const;
+
+    
     /**
         Does the window-specific updating after processing the update event.
         This function is called by UpdateWindowUI() in order to check return
@@ -2989,6 +3090,8 @@ public:
     */
     virtual bool IsDoubleBuffered() const;
 
+    void SetDoubleBuffered(bool on);
+
     /**
         Returns @true if the window is retained, @false otherwise.
 
@@ -3022,6 +3125,7 @@ public:
     */
     virtual void MakeModal(bool modal = true);
 
+    
     /**
         This virtual function is normally only used internally, but
         sometimes an application may need it to implement functionality
@@ -3258,6 +3362,20 @@ public:
 
 protected:
 
+    /**
+        Centres the window.
+
+        @param direction
+            Specifies the direction for the centring. May be wxHORIZONTAL,
+            wxVERTICAL or wxBOTH. It may also include the wxCENTRE_ON_SCREEN
+            flag.
+
+        @remarks This function is not meant to be called directly by user code,
+                 but via Centre, Center, CentreOnParent, or CenterOnParent.
+                 This function can be overridden to fine-tune centring behaviour.
+    */
+    virtual void DoCentre(int direction);
+
     /**
         Gets the size which best suits the window: for a control, it would be
         the minimal size which doesn't truncate the control, for a panel - the