#include "wx/font.h" // so we can't do without them
#include "wx/colour.h"
#include "wx/region.h"
+#include "wx/utils.h"
+
+#if wxUSE_VALIDATORS
+ #include "wx/validate.h" // defines wxDefaultValidator
+#endif // wxUSE_VALIDATORS
#if wxUSE_ACCEL
#include "wx/accel.h"
class WXDLLEXPORT wxResourceTable;
class WXDLLEXPORT wxSizer;
class WXDLLEXPORT wxToolTip;
-class WXDLLEXPORT wxValidator;
class WXDLLEXPORT wxWindowBase;
class WXDLLEXPORT wxWindow;
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
+#if wxUSE_VALIDATORS
+ const wxValidator& validator = wxDefaultValidator,
+#endif // wxUSE_VALIDATORS
const wxString& name = wxPanelNameStr);
virtual ~wxWindowBase();
}
// centre with respect to the the parent window
- void Centre( int direction = wxHORIZONTAL );
- void Center( int direction = wxHORIZONTAL ) { Centre(direction); }
- void CentreOnParent(int direction = wxHORIZONTAL );
- void CenterOnParent(int direction = wxHORIZONTAL ) { CentreOnParent(direction); }
+ void Centre( int direction = wxBOTH );
+ void Center( int direction = wxBOTH ) { Centre(direction); }
+ void CentreOnParent( int dir = wxBOTH ) { Centre(dir | wxCENTER_FRAME); }
+ void CenterOnParent( int dir = wxBOTH ) { Centre(dir | wxCENTER_FRAME); }
// set window size to wrap around its children
virtual void Fit();
int maxW = -1, int maxH = -1,
int incW = -1, int incH = -1 );
+ int GetMinWidth() const { return m_minWidth; }
+ int GetMinHeight() const { return m_minHeight; }
+ int GetMaxWidth() const { return m_maxWidth; }
+ int GetMaxHeight() const { return m_maxHeight; }
+
// window state
// ------------
// each window may have associated client data: either a pointer to
// wxClientData object in which case it is managed by the window (i.e.
// it will delete the data when it's destroyed) or an untyped pointer
- // which won't be deleted by the window
- virtual void SetClientObject( wxClientData *data )
- {
- if ( m_clientObject )
- delete m_clientObject;
-
- m_clientObject = data;
- }
- virtual wxClientData *GetClientObject() const { return m_clientObject; }
+ // which won't be deleted by the window - but not both of them
+ void SetClientObject( wxClientData *data ) { DoSetClientObject(data); }
+ wxClientData *GetClientObject() const { return DoGetClientObject(); }
- virtual void SetClientData( void *data ) { m_clientData = data; }
- virtual void *GetClientData() const { return m_clientData; }
+ void SetClientData( void *data ) { DoSetClientData(data); }
+ void *GetClientData() const { return DoGetClientData(); }
// dialog oriented functions
// -------------------------
void UpdateWindowUI();
- virtual bool PopupMenu( wxMenu *menu, int x, int y ) = 0;
+ bool PopupMenu( wxMenu *menu, const wxPoint& pos )
+ { return DoPopupMenu(menu, pos.x, pos.y); }
+ bool PopupMenu( wxMenu *menu, int x, int y )
+ { return DoPopupMenu(menu, x, y); }
// scrollbars
// ----------
virtual bool DoPhase(int);
// these methods are virtual but normally won't be overridden
- virtual void TransformSizerToActual(int *x, int *y) const ;
virtual void SetSizeConstraint(int x, int y, int w, int h);
virtual void MoveConstraint(int x, int y);
virtual void GetSizeConstraint(int *w, int *h) const ;
// TODO: what are they and how do they work??
void SetSizer( wxSizer *sizer );
wxSizer *GetSizer() const { return m_windowSizer; }
-
- void SetSizerParent( wxWindowBase *win ) { m_sizerParent = win; }
- wxWindowBase *GetSizerParent() const { return m_sizerParent; }
-
- virtual void SizerSetSize(int x, int y, int w, int h);
- virtual void SizerMove(int x, int y);
#endif // wxUSE_CONSTRAINTS
// backward compatibility
// user data associated with the window: either an object which will be
// deleted by the window when it's deleted or some raw pointer which we do
- // nothing with
- wxClientData *m_clientObject;
- void *m_clientData;
+ // nothing with - only one type of data can be used with the given window
+ // (i.e. you cannot set the void data and then associate the window with
+ // wxClientData or vice versa)
+ union
+ {
+ wxClientData *m_clientObject;
+ void *m_clientData;
+ };
// the tooltip for this window (may be NULL)
#if wxUSE_TOOLTIPS
virtual void DoSetToolTip( wxToolTip *tip );
#endif // wxUSE_TOOLTIPS
+ virtual bool DoPopupMenu( wxMenu *menu, int x, int y ) = 0;
+
+ // client data accessors
+ virtual void DoSetClientObject( wxClientData *data );
+ virtual wxClientData *DoGetClientObject() const;
+
+ virtual void DoSetClientData( void *data );
+ virtual void *DoGetClientData() const;
+
+ // what kind of data do we have?
+ enum wxClientDataType
+ {
+ ClientData_None, // we don't know yet because we don't have it at all
+ ClientData_Object, // our client data is typed and we own it
+ ClientData_Void // client data is untyped and we don't own it
+ } m_clientDataType;
+
private:
// contains the last id generated by NewControlId
static int ms_lastControlId;
#include "wx/qt/window.h"
#elif defined(__WXMAC__)
#include "wx/mac/window.h"
+#elif defined(__WXPM__)
+ #include "wx/os2/window.h"
#endif
// ----------------------------------------------------------------------------