X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/20a1eea1fd93719fecec5fc44a408b0fc4e3cf33..5d644707ca96dcaa63dc5a24c9eb5c2b7ee0b50d:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index e431b9c83a..48c0020e7a 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -2,7 +2,7 @@ // Name: wx/window.h // Purpose: wxWindowBase class - the interface of wxWindow // Author: Vadim Zeitlin -// Modified by: +// Modified by: Ron Lee // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) wxWindows team @@ -33,8 +33,8 @@ #include "wx/validate.h" // for wxDefaultValidator (always include it) #if wxUSE_PALETTE - #include "wx/dcclient.h" - #include "wx/palette.h" + #include "wx/dcclient.h" + #include "wx/palette.h" #endif // wxUSE_PALETTE #if wxUSE_ACCEL @@ -293,11 +293,44 @@ public: int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); + virtual void SetVirtualSizeHints( int minW, int minH, + int maxW = -1, int maxH = -1 ); + virtual int GetMinWidth() const { return m_minWidth; } virtual int GetMinHeight() const { return m_minHeight; } int GetMaxWidth() const { return m_maxWidth; } int GetMaxHeight() const { return m_maxHeight; } + // Override this method to control the values given to Sizers etc. + virtual wxSize GetMaxSize() const { return wxSize( m_maxWidth, m_maxHeight ); } + + // Methods for accessing the virtual size of a window. For most + // windows this is just the client area of the window, but for + // some like scrolled windows it is more or less independent of + // the screen window size. You may override the DoXXXVirtual + // methods below for classes where that is is the case. + + void SetVirtualSize( const wxSize &size ) { DoSetVirtualSize( size.x, size.y ); } + void SetVirtualSize( int x, int y ) { DoSetVirtualSize( x, y ); } + + wxSize GetVirtualSize() const { return DoGetVirtualSize(); } + void GetVirtualSize( int *x, int *y ) const + { + wxSize s( DoGetVirtualSize() ); + + if( x ) + *x = s.GetWidth(); + if( y ) + *y = s.GetHeight(); + } + + // Override these methods for windows that have a virtual size + // independent of their client size. eg. the virtual area of a + // wxScrolledWindow. Default is to alias VirtualSize to ClientSize. + + virtual void DoSetVirtualSize( int x, int y ); + virtual wxSize DoGetVirtualSize() const; // { return m_virtualSize; } + // window state // ------------ @@ -342,6 +375,9 @@ public: // set focus to this window virtual void SetFocus() = 0; + // set focus to this window as the result of a keyboard action + virtual void SetFocusFromKbd() { SetFocus(); } + // return the window which currently has the focus or NULL static wxWindow *FindFocus() /* = 0: implement in derived classes */; @@ -364,6 +400,9 @@ public: virtual wxWindow *SetDefaultItem(wxWindow * WXUNUSED(child)) { return NULL; } + // set this child as temporary default + virtual void SetTmpDefaultItem(wxWindow * WXUNUSED(win)) { } + // parent/children relations // ------------------------- @@ -384,14 +423,24 @@ public: // was changed, FALSE otherwise (error or newParent == oldParent) virtual bool Reparent( wxWindowBase *newParent ); + // implementation mostly + virtual void AddChild( wxWindowBase *child ); + virtual void RemoveChild( wxWindowBase *child ); + + // looking for windows + // ------------------- + // find window among the descendants of this one either by id or by // name (return NULL if not found) wxWindow *FindWindow( long id ); wxWindow *FindWindow( const wxString& name ); - // implementation mostly - virtual void AddChild( wxWindowBase *child ); - virtual void RemoveChild( wxWindowBase *child ); + // Find a window among any window (all return NULL if not found) + static wxWindow *FindWindowById( long id, const wxWindow *parent = NULL ); + static wxWindow *FindWindowByName( const wxString& name, + const wxWindow *parent = NULL ); + static wxWindow *FindWindowByLabel( const wxString& label, + const wxWindow *parent = NULL ); // event handler stuff // ------------------- @@ -736,7 +785,9 @@ public: virtual bool Layout(); // sizers - void SetSizer( wxSizer *sizer ); + void SetSizer(wxSizer *sizer, bool deleteOld = TRUE ); + void SetSizerAndFit( wxSizer *sizer, bool deleteOld = TRUE ); + wxSizer *GetSizer() const { return m_windowSizer; } // Track if this window is a member of a sizer @@ -787,6 +838,11 @@ public: #endif // wxUSE_PALETTE protected: +#if wxUSE_CONSTRAINTS + // satisfy the constraints for the windows but don't set the window sizes + void SatisfyConstraints(); +#endif // wxUSE_CONSTRAINTS + // the window id - a number which uniquely identifies a window among // its siblings unless it is -1 wxWindowID m_windowId; @@ -798,7 +854,10 @@ protected: // the minimal allowed size for the window (no minimal size if variable(s) // contain(s) -1) - int m_minWidth, m_minHeight, m_maxWidth, m_maxHeight; + int m_minWidth, + m_minHeight, + m_maxWidth, + m_maxHeight; // event handler for this window: usually is just 'this' but may be // changed with SetEventHandler() @@ -875,7 +934,13 @@ protected: bool m_hasCustomPalette; #endif // wxUSE_PALETTE -protected: + // Virtual size (scrolling) + wxSize m_virtualSize; + + int m_minVirtualWidth; // VirtualSizeHints + int m_minVirtualHeight; + int m_maxVirtualWidth; + int m_maxVirtualHeight; // common part of all ctors: it is not virtual because it is called from // ctor @@ -1072,8 +1137,12 @@ WXDLLEXPORT extern wxPoint wxGetMousePosition(); // get the currently active window of this application or NULL WXDLLEXPORT extern wxWindow *wxGetActiveWindow(); +// get the (first) top level parent window +WXDLLEXPORT wxWindow* wxGetTopLevelParent(wxWindow *win); + // deprecated (doesn't start with 'wx' prefix), use wxWindow::NewControlId() inline int NewControlId() { return wxWindowBase::NewControlId(); } #endif // _WX_WINDOW_H_BASE_ +