X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b756edd0d0c3da8dcf5de87dd98bca9e62c3fa3..33baee46ee5c2476ac75d7893bf2272a65e525ab:/interface/wx/window.h diff --git a/interface/wx/window.h b/interface/wx/window.h index 6a2cc7216c..2bc1c680b7 100644 --- a/interface/wx/window.h +++ b/interface/wx/window.h @@ -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