X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b4071e913e85e35024ee5883a0a046f0fd6332bf..fb9e1bc28249203c5ed237856d1fe070f58553f6:/include/wx/gtk/window.h diff --git a/include/wx/gtk/window.h b/include/wx/gtk/window.h index ae7e532f27..b969665920 100644 --- a/include/wx/gtk/window.h +++ b/include/wx/gtk/window.h @@ -2,9 +2,8 @@ // Name: window.h // Purpose: // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -13,7 +12,7 @@ #define __GTKWINDOWH__ #ifdef __GNUG__ -#pragma interface + #pragma interface #endif #include "wx/defs.h" @@ -23,9 +22,7 @@ #include "wx/validate.h" #include "wx/cursor.h" #include "wx/font.h" -#include "wx/dc.h" #include "wx/region.h" -#include "wx/dnd.h" #include "wx/accel.h" //----------------------------------------------------------------------------- @@ -35,17 +32,36 @@ extern const char *wxFrameNameStr; extern wxList wxTopLevelWindows; +//----------------------------------------------------------------------------- +// global function +//----------------------------------------------------------------------------- + +extern wxWindow* wxGetActiveWindow(); + //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- class wxLayoutConstraints; class wxSizer; -class wxResourceTable; -class wxItemResource; - +class wxDC; +class wxClientData; +class wxVoidClientData; class wxWindow; -class wxCanvas; +#if wxUSE_WX_RESOURCES + class wxResourceTable; + class wxItemResource; +#endif +#if wxUSE_DRAG_AND_DROP + class wxDropTarget; +#endif +class wxToolTip; + +//----------------------------------------------------------------------------- +// callback definition for inserting a window (internal) +//----------------------------------------------------------------------------- + +typedef void (*wxInsertChildFunction)( wxWindow*, wxWindow* ); //----------------------------------------------------------------------------- // global data @@ -55,266 +71,485 @@ extern const char *wxPanelNameStr; extern const wxSize wxDefaultSize; extern const wxPoint wxDefaultPosition; +//----------------------------------------------------------------------------- +// wxClientData +//----------------------------------------------------------------------------- + +class wxClientData +{ +public: + wxClientData() { } + virtual ~wxClientData() { } +}; + +//----------------------------------------------------------------------------- +// wxStringClientData +//----------------------------------------------------------------------------- + +class wxStringClientData : public wxClientData +{ +public: + wxStringClientData() { } + wxStringClientData( wxString &data ) { m_data = data; } + void SetData( wxString &data ) { m_data = data; } + wxString GetData() const { return m_data; } + +private: + wxString m_data; +}; + +//----------------------------------------------------------------------------- +// (debug) +//----------------------------------------------------------------------------- + +#ifdef __WXDEBUG__ + +void debug_focus_in( GtkWidget* widget, const char* name, const char* window ); + +#endif + //----------------------------------------------------------------------------- // wxWindow //----------------------------------------------------------------------------- -class wxWindow: public wxEvtHandler +class wxWindow : public wxEvtHandler { + DECLARE_DYNAMIC_CLASS(wxWindow) + public: - wxWindow(); - inline wxWindow(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr) - { - Create(parent, id, pos, size, style, name); - } - bool Create(wxWindow *parent, wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxPanelNameStr); - virtual ~wxWindow(); - - virtual bool LoadFromResource( wxWindow *parent, const wxString& resourceName, - const wxResourceTable *table = (const wxResourceTable *) NULL); - virtual wxControl *CreateItem( const wxItemResource *childResource, - const wxResourceTable *table = (const wxResourceTable *) NULL); - - bool Close( bool force = FALSE ); - virtual bool Destroy(); - virtual bool DestroyChildren(); - - virtual void PrepareDC( wxDC &dc ); - - virtual void SetSize( int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO ); - virtual void SetSize( int width, int height ); - virtual void Move( int x, int y ); - virtual void GetSize( int *width, int *height ) const; - virtual void SetClientSize( int const width, int const height ); - virtual void GetClientSize( int *width, int *height ) const; - virtual void GetPosition( int *x, int *y ) const; - virtual void Centre( int direction = wxHORIZONTAL ); - inline void Center(int direction = wxHORIZONTAL) { Centre(direction); } - virtual void Fit(); - - virtual void SetSizeHints( int minW, int minH, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1 ); - - void OnSize( wxSizeEvent &event ); - void OnIdle( wxIdleEvent& event ); - - virtual bool Show( bool show ); - virtual void Enable( bool enable ); - virtual void MakeModal( bool modal ); - virtual bool IsEnabled() const { return m_isEnabled; } - inline bool Enabled(void) const { return IsEnabled(); } - virtual void SetFocus(); - virtual bool OnClose(); - - virtual void AddChild( wxWindow *child ); - wxList *GetChildren(); - virtual void RemoveChild( wxWindow *child ); - void SetReturnCode( int retCode ); - int GetReturnCode(); - wxWindow *GetParent() const - { return m_parent; } - wxWindow *GetGrandParent(void) const - { return (m_parent ? m_parent->m_parent : (wxWindow*)NULL); } - void SetParent( wxWindow *p ) - { m_parent = p; } - - wxEvtHandler *GetEventHandler(); - void SetEventHandler( wxEvtHandler *handler ); - void PushEventHandler( wxEvtHandler *handler ); - wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE ); - - virtual wxValidator *GetValidator(); - virtual void SetValidator( const wxValidator &validator ); - - virtual void SetAcceleratorTable( const wxAcceleratorTable& accel ); - virtual wxAcceleratorTable *GetAcceleratorTable() { return &m_acceleratorTable; } - - bool IsBeingDeleted(); - - void SetId( wxWindowID id ); - wxWindowID GetId(); - - void SetCursor( const wxCursor &cursor ); - - virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL ); - virtual void Clear(); - - virtual wxRegion GetUpdateRegion() const; - virtual bool IsExposed(int x, int y) const; - virtual bool IsExposed(int x, int y, int w, int h) const; - virtual bool IsExposed(const wxPoint& pt) const; - virtual bool IsExposed(const wxRect& rect) const; - - virtual wxColour GetBackgroundColour() const; - virtual void SetBackgroundColour( const wxColour &colour ); - virtual wxColour GetForegroundColour() const; - virtual void SetForegroundColour( const wxColour &colour ); - - virtual int GetCharHeight(void) const; - virtual int GetCharWidth(void) const; - virtual void GetTextExtent( const wxString& string, int *x, int *y, - int *descent = (int *) NULL, - int *externalLeading = (int *) NULL, - const wxFont *theFont = (const wxFont *) NULL, bool use16 = FALSE) const; - - virtual void SetDefaultBackgroundColour( const wxColour& col ) - { m_defaultBackgroundColour = col; } - virtual wxColour GetDefaultBackgroundColour() const - { return m_defaultBackgroundColour; } - virtual void SetDefaultForegroundColour( const wxColour& col ) - { m_defaultForegroundColour = col; } - virtual wxColour GetDefaultForegroundColour() const - { return m_defaultForegroundColour; } - - virtual void SetFont( const wxFont &font ); - virtual wxFont *GetFont(); - // For backward compatibility - inline virtual void SetButtonFont(const wxFont& font) { SetFont(font); } - inline virtual void SetLabelFont(const wxFont& font) { SetFont(font); } - inline virtual wxFont *GetLabelFont() { return GetFont(); }; - inline virtual wxFont *GetButtonFont() { return GetFont(); }; - virtual void SetWindowStyleFlag( long flag ); - virtual long GetWindowStyleFlag() const; - virtual void CaptureMouse(); - virtual void ReleaseMouse(); - virtual void SetTitle( const wxString &title ); - virtual wxString GetTitle() const; - virtual void SetName( const wxString &name ); - virtual wxString GetName() const; - virtual wxString GetLabel() const; - - void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) {}; - - virtual bool IsShown() const; - - virtual void Raise(void); - virtual void Lower(void); - - virtual bool IsRetained(); - virtual wxWindow *FindWindow( long id ); - virtual wxWindow *FindWindow( const wxString& name ); - void AllowDoubleClick( bool WXUNUSED(allow) ) {}; - void SetDoubleClick( bool WXUNUSED(allow) ) {}; - virtual void ClientToScreen( int *x, int *y ); - virtual void ScreenToClient( int *x, int *y ); - - virtual bool Validate(); - virtual bool TransferDataToWindow(); - virtual bool TransferDataFromWindow(); - void OnInitDialog( wxInitDialogEvent &event ); - virtual void InitDialog(); - - virtual bool PopupMenu( wxMenu *menu, int x, int y ); - - virtual void SetDropTarget( wxDropTarget *dropTarget ); - virtual wxDropTarget *GetDropTarget() const; - - virtual void SetScrollbar( int orient, int pos, int thumbVisible, - int range, bool refresh = TRUE ); - virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE ); - virtual int GetScrollPos( int orient ) const; - virtual int GetScrollThumb( int orient ) const; - virtual int GetScrollRange( int orient ) const; - virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); - - virtual bool AcceptsFocus() const; - void UpdateWindowUI(); - -public: // cannot get private going yet - - virtual GtkWidget* GetConnectWidget(void); - virtual bool IsOwnGtkWindow( GdkWindow *window ); - - void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos, - const wxSize &size, long style, const wxString &name ); - void PostCreation(); - void ConnectWidget( GtkWidget *widget ); - bool HasVMT(); - virtual void ImplementSetSize(); - virtual void ImplementSetPosition(); - - wxWindow *m_parent; - wxList m_children; - int m_x,m_y; - int m_width,m_height; - int m_minWidth,m_minHeight; - int m_maxWidth,m_maxHeight; - int m_retCode; - wxEvtHandler *m_eventHandler; - wxValidator *m_windowValidator; - wxDropTarget *m_pDropTarget; - wxWindowID m_windowId; - wxCursor *m_cursor; - wxFont m_font; - wxColour m_backgroundColour; - wxColour m_defaultBackgroundColour; - wxColour m_foregroundColour ; - wxColour m_defaultForegroundColour; - wxRegion m_updateRegion; - long m_windowStyle; - bool m_isShown; - bool m_isEnabled; - wxString m_windowName; - wxAcceleratorTable m_acceleratorTable; - - GtkWidget *m_widget; - GtkWidget *m_wxwindow; - GtkAdjustment *m_hAdjust,*m_vAdjust; - float m_oldHorizontalPos; - float m_oldVerticalPos; - bool m_needParent; - bool m_hasScrolling; - bool m_hasOwnStyle; - bool m_hasVMT; - bool m_sizeSet; - bool m_resizing; + // creating the window + // ------------------- + wxWindow(); + wxWindow(wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPanelNameStr); + bool Create(wxWindow *parent, wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxPanelNameStr); + virtual ~wxWindow(); + +#if wxUSE_WX_RESOURCES + virtual bool LoadFromResource(wxWindow *parent, + const wxString& resourceName, + const wxResourceTable *table = (const wxResourceTable *) NULL); + virtual wxControl *CreateItem(const wxItemResource* childResource, + const wxItemResource* parentResource, + const wxResourceTable *table = (const wxResourceTable *) NULL); +#endif // wxUSE_WX_RESOURCES + + // closing the window + // ------------------ + bool Close( bool force = FALSE ); + virtual bool Destroy(); + virtual bool DestroyChildren(); + + bool IsBeingDeleted(); + + // moving/resizing + // --------------- + + // set the window size and/or position + void SetSize( int x, int y, int width, int height, + int sizeFlags = wxSIZE_AUTO ) + { DoSetSize(x, y, width, height, sizeFlags); } + + void SetSize( int width, int height ) + { DoSetSize( -1, -1, width, height, wxSIZE_USE_EXISTING ); } + + void SetSize( const wxSize& size ) + { SetSize( size.x, size.y); } + + void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) + { DoSetSize(rect.x, rect.y, rect.width, rect.height, sizeFlags); } + + void Move( int x, int y ) + { DoSetSize( x, y, -1, -1, wxSIZE_USE_EXISTING ); } + + void Move(const wxPoint& pt) + { Move(pt.x, pt.y); } + + // client size is the size of area available for subwindows + void SetClientSize( int width, int height ) + { DoSetClientSize(width, height); } + + void SetClientSize( const wxSize& size ) + { DoSetClientSize(size.x, size.y); } + + void SetClientSize(const wxRect& rect) + { SetClientSize( rect.width, rect.height ); } + + // get the window position and/or size + virtual void GetPosition( int *x, int *y ) const; + wxPoint GetPosition() const + { + int w, h; + GetPosition(& w, & h); + + return wxPoint(w, h); + } + + virtual void GetSize( int *width, int *height ) const; + + wxSize GetSize() const + { + int w, h; + GetSize(& w, & h); + return wxSize(w, h); + } + + wxRect GetRect() const + { + int x, y, w, h; + GetPosition(& x, & y); + GetSize(& w, & h); + + return wxRect(x, y, w, h); + } + + virtual void GetClientSize( int *width, int *height ) const; + wxSize GetClientSize() const + { + int w, h; + GetClientSize(& w, & h); + return wxSize(w, h); + } + + // position with respect to the the parent window + virtual void Centre( int direction = wxHORIZONTAL ); + void Center(int direction = wxHORIZONTAL) { Centre(direction); } + virtual void Fit(); + + // set min/max size of the window + virtual void SetSizeHints( int minW, int minH, + int maxW = -1, int maxH = -1, + int incW = -1, int incH = -1 ); + + // Dialog units translations. Implemented in wincmn.cpp. + // ----------------------------------------------------- + + wxPoint ConvertPixelsToDialog( const wxPoint& pt ); + wxPoint ConvertDialogToPixels( const wxPoint& pt ); + wxSize ConvertPixelsToDialog( const wxSize& sz ) + { + wxPoint pt(ConvertPixelsToDialog(wxPoint(sz.x, sz.y))); + + return wxSize(pt.x, pt.y); + } + + wxSize ConvertDialogToPixels( const wxSize& sz ) + { + wxPoint pt(ConvertDialogToPixels(wxPoint(sz.x, sz.y))); + + return wxSize(pt.x, pt.y); + } + + void OnSize( wxSizeEvent &event ); + + // window state + // ------------ + + virtual bool Show( bool show ); + virtual void Enable( bool enable ); + virtual void MakeModal( bool modal ); + virtual bool IsEnabled() const { return m_isEnabled; } + inline bool Enabled() const { return IsEnabled(); } + + virtual void SetFocus(); + static wxWindow *FindFocus(); + + void SetReturnCode( int retCode ); + int GetReturnCode(); + + // parent/children relations + // ------------------------- + + virtual void AddChild( wxWindow *child ); + wxList& GetChildren() { return m_children; } + + virtual void RemoveChild( wxWindow *child ); + + wxWindow *GetParent() const + { return m_parent; } + wxWindow *GetGrandParent() const + { return (m_parent ? m_parent->m_parent : (wxWindow*)NULL); } + void SetParent( wxWindow *parent ) + { m_parent = parent; } + virtual wxWindow *ReParent( wxWindow *newParent ); + + // event handler stuff + // ------------------- + + wxEvtHandler *GetEventHandler() const; + void SetEventHandler( wxEvtHandler *handler ); + void PushEventHandler( wxEvtHandler *handler ); + wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE ); + + // validators and client data + // -------------------------- + + virtual void SetValidator( const wxValidator &validator ); + virtual wxValidator *GetValidator(); + + virtual void SetClientObject( wxClientData *data ); + virtual wxClientData *GetClientObject(); + + virtual void SetClientData( void *data ); + virtual void *GetClientData(); + + // accelerators + // ------------ + virtual void SetAcceleratorTable( const wxAcceleratorTable& accel ); + virtual wxAcceleratorTable *GetAcceleratorTable() { return &m_acceleratorTable; } + + void SetId( wxWindowID id ); + wxWindowID GetId() const; + + void SetCursor( const wxCursor &cursor ); + + virtual void PrepareDC( wxDC &dc ); + + void WarpPointer(int x, int y); + +#if wxUSE_TOOLTIPS + void SetToolTip( const wxString &tip ); + virtual void SetToolTip( wxToolTip *tip ); + wxToolTip* GetToolTip() const { return m_toolTip; } +#endif // wxUSE_TOOLTIPS + + virtual void Refresh( bool eraseBackground = TRUE, const wxRect *rect = (const wxRect *) NULL ); + virtual void Clear(); + + virtual wxRegion GetUpdateRegion() const; + virtual bool IsExposed( int x, int y ) const; + virtual bool IsExposed( int x, int y, int w, int h ) const; + virtual bool IsExposed( const wxPoint& pt ) const; + virtual bool IsExposed( const wxRect& rect ) const; + + // colours + // ------- + + virtual wxColour GetBackgroundColour() const; + virtual void SetBackgroundColour( const wxColour &colour ); + virtual wxColour GetForegroundColour() const; + virtual void SetForegroundColour( const wxColour &colour ); + + // fonts + // ----- + + virtual int GetCharHeight() const; + virtual int GetCharWidth() const; + virtual void GetTextExtent( const wxString& string, int *x, int *y, + int *descent = (int *) NULL, + int *externalLeading = (int *) NULL, + const wxFont *theFont = (const wxFont *) NULL, bool use16 = FALSE) const; + + virtual void SetFont( const wxFont &font ); + virtual wxFont& GetFont() { return m_font; } + + // For backward compatibility + virtual void SetButtonFont(const wxFont& font) { SetFont(font); } + virtual void SetLabelFont(const wxFont& font) { SetFont(font); } + virtual wxFont& GetLabelFont() { return GetFont(); }; + virtual wxFont& GetButtonFont() { return GetFont(); }; + + virtual void SetWindowStyleFlag( long flag ); + virtual long GetWindowStyleFlag() const; + + virtual void CaptureMouse(); + virtual void ReleaseMouse(); + + virtual void SetTitle( const wxString &title ); + virtual wxString GetTitle() const; + virtual void SetName( const wxString &name ); + virtual wxString GetName() const; + virtual wxString GetLabel() const; + + void OnSysColourChanged( wxSysColourChangedEvent &WXUNUSED(event) ) { } + void OnKeyDown( wxKeyEvent &event ); + + virtual bool IsShown() const; + + virtual void Raise(); + virtual void Lower(); + + virtual bool IsRetained(); + virtual wxWindow *FindWindow( long id ); + virtual wxWindow *FindWindow( const wxString& name ); + + void AllowDoubleClick( bool WXUNUSED(allow) ) { } + void SetDoubleClick( bool WXUNUSED(allow) ) { } + + virtual void ClientToScreen( int *x, int *y ); + virtual void ScreenToClient( int *x, int *y ); + + virtual bool Validate(); + virtual bool TransferDataToWindow(); + virtual bool TransferDataFromWindow(); + void OnInitDialog( wxInitDialogEvent &event ); + virtual void InitDialog(); + + virtual bool PopupMenu( wxMenu *menu, int x, int y ); + +#if wxUSE_DRAG_AND_DROP + virtual void SetDropTarget( wxDropTarget *dropTarget ); + virtual wxDropTarget *GetDropTarget() const; +#endif + + virtual void SetScrollbar( int orient, int pos, int thumbVisible, + int range, bool refresh = TRUE ); + virtual void SetScrollPos( int orient, int pos, bool refresh = TRUE ); + virtual int GetScrollPos( int orient ) const; + virtual int GetScrollThumb( int orient ) const; + virtual int GetScrollRange( int orient ) const; + virtual void ScrollWindow( int dx, int dy, const wxRect* rect = (wxRect *) NULL ); + + virtual bool AcceptsFocus() const; + + void UpdateWindowUI(); + + // implementation + + virtual wxPoint GetClientAreaOrigin() const; + virtual void AdjustForParentClientOrigin( int& x, int& y, int sizeFlags ); + + bool HasVMT(); + + virtual void OnInternalIdle(); + + // For compatibility across platforms (not in event table) + void OnIdle(wxIdleEvent& WXUNUSED(event)) {}; + + /* used by all classes in the widget creation process */ + + void PreCreation( wxWindow *parent, wxWindowID id, const wxPoint &pos, + const wxSize &size, long style, const wxString &name ); + void PostCreation(); + + /* the methods below are required because many native widgets + are composed of several subwidgets and setting a style for + the widget means setting it for all subwidgets as well. + also, it is nor clear, which native widget is the top + widget where (most of) the input goes. even tooltips have + to be applied to all subwidgets. */ + + virtual GtkWidget* GetConnectWidget(); + virtual bool IsOwnGtkWindow( GdkWindow *window ); + void ConnectWidget( GtkWidget *widget ); + + GtkStyle *GetWidgetStyle(); + void SetWidgetStyle(); + virtual void ApplyWidgetStyle(); + +#if wxUSE_TOOLTIPS + virtual void ApplyToolTip( GtkTooltips *tips, const char *tip ); +#endif // wxUSE_TOOLTIPS + + /* private member variables */ + + wxWindow *m_parent; + wxList m_children; + int m_x,m_y; + int m_width,m_height; + int m_minWidth,m_minHeight; + int m_maxWidth,m_maxHeight; + int m_retCode; + wxEvtHandler *m_eventHandler; + wxValidator *m_windowValidator; +#if wxUSE_DRAG_AND_DROP + wxDropTarget *m_dropTarget; +#endif + wxWindowID m_windowId; + wxCursor *m_cursor; + wxFont m_font; + wxColour m_backgroundColour; + wxColour m_foregroundColour; + wxRegion m_updateRegion; + long m_windowStyle; + bool m_isShown; + bool m_isEnabled; + wxString m_windowName; + wxAcceleratorTable m_acceleratorTable; + wxClientData *m_clientObject; + void *m_clientData; + +#if wxUSE_TOOLTIPS + wxToolTip *m_toolTip; +#endif // wxUSE_TOOLTIPS + + GtkWidget *m_widget; + GtkWidget *m_wxwindow; + GtkAdjustment *m_hAdjust,*m_vAdjust; + float m_oldHorizontalPos; + float m_oldVerticalPos; + bool m_needParent; + bool m_hasScrolling; + bool m_isScrolling; + bool m_hasVMT; + bool m_sizeSet; + bool m_resizing; + GdkGC *m_scrollGC; + GtkStyle *m_widgetStyle; + bool m_isStaticBox; + bool m_acceptsFocus; + + wxInsertChildFunction m_insertCallback; public: - wxLayoutConstraints *m_constraints; - wxList *m_constraintsInvolvedIn; - wxSizer *m_windowSizer; - wxWindow *m_sizerParent; - bool m_autoLayout; - - wxLayoutConstraints *GetConstraints() const; - void SetConstraints( wxLayoutConstraints *constraints ); - void SetAutoLayout( bool autoLayout ); - bool GetAutoLayout() const; - bool Layout(); - void SetSizer( wxSizer *sizer ); - wxSizer *GetSizer() const; - void SetSizerParent( wxWindow *win ); - wxWindow *GetSizerParent() const; - void UnsetConstraints(wxLayoutConstraints *c); - inline wxList *GetConstraintsInvolvedIn() const ; - void AddConstraintReference(wxWindow *otherWin); - void RemoveConstraintReference(wxWindow *otherWin); - void DeleteRelatedConstraints(); - virtual void ResetConstraints(); - virtual void SetConstraintSizes(bool recurse = TRUE); - virtual bool LayoutPhase1(int *noChanges); - virtual bool LayoutPhase2(int *noChanges); - virtual bool DoPhase(int); - virtual void TransformSizerToActual(int *x, int *y) const ; - virtual void SizerSetSize(int x, int y, int w, int h); - virtual void SizerMove(int x, int y); - 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 ; - virtual void GetClientSizeConstraint(int *w, int *h) const ; - virtual void GetPositionConstraint(int *x, int *y) const ; - - DECLARE_DYNAMIC_CLASS(wxWindow) - DECLARE_EVENT_TABLE() + wxLayoutConstraints *m_constraints; + wxList *m_constraintsInvolvedIn; + wxSizer *m_windowSizer; + wxWindow *m_sizerParent; + bool m_autoLayout; + + wxLayoutConstraints *GetConstraints() const; + void SetConstraints( wxLayoutConstraints *constraints ); + void SetAutoLayout( bool autoLayout ); + bool GetAutoLayout() const; + bool Layout(); + void SetSizer( wxSizer *sizer ); + wxSizer *GetSizer() const; + void SetSizerParent( wxWindow *win ); + wxWindow *GetSizerParent() const; + void UnsetConstraints(wxLayoutConstraints *c); + inline wxList *GetConstraintsInvolvedIn() const ; + void AddConstraintReference(wxWindow *otherWin); + void RemoveConstraintReference(wxWindow *otherWin); + void DeleteRelatedConstraints(); + virtual void ResetConstraints(); + virtual void SetConstraintSizes(bool recurse = TRUE); + virtual bool LayoutPhase1(int *noChanges); + virtual bool LayoutPhase2(int *noChanges); + virtual bool DoPhase(int); + virtual void TransformSizerToActual(int *x, int *y) const ; + virtual void SizerSetSize(int x, int y, int w, int h); + virtual void SizerMove(int x, int y); + 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 ; + virtual void GetClientSizeConstraint(int *w, int *h) const ; + virtual void GetPositionConstraint(int *x, int *y) const ; + +protected: + // common part of all ctors + void Init(); + + // this is the virtual function to be overriden in any derived class which + // wants to change how SetSize() or Move() works - it is called by all + // versions of these functions in the base class + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO); + + // same as DoSetSize() for the client size + virtual void DoSetClientSize(int width, int height); + +private: + DECLARE_EVENT_TABLE() }; #endif // __GTKWINDOWH__