// 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
#ifndef _WX_WINDOW_H_BASE_
#define _WX_WINDOW_H_BASE_
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "windowbase.h"
#endif
#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
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
// ------------
// 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 */;
virtual wxWindow *SetDefaultItem(wxWindow * WXUNUSED(child))
{ return NULL; }
+ // set this child as temporary default
+ virtual void SetTmpDefaultItem(wxWindow * WXUNUSED(win)) { }
+
// parent/children relations
// -------------------------
// 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
// -------------------
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
#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;
// 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()
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
// 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_
+