X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bacd69f98684f0ff663ce539a6c9b189017e702b..9b73db3c34aefd98080b425459322fa821ae271f:/include/wx/window.h diff --git a/include/wx/window.h b/include/wx/window.h index bfbfb26808..6edbb62524 100644 --- a/include/wx/window.h +++ b/include/wx/window.h @@ -1,6 +1,6 @@ /////////////////////////////////////////////////////////////////////////////// // Name: window.h -// Purpose: wxWindowBase class - the interface of wxWindowBase +// Purpose: wxWindowBase class - the interface of wxWindow // Author: Vadim Zeitlin // Modified by: // Created: 01/02/97 @@ -12,6 +12,10 @@ #ifndef _WX_WINDOW_H_BASE_ #define _WX_WINDOW_H_BASE_ +#ifdef __GNUG__ + #pragma interface "windowbase.h" +#endif + // ---------------------------------------------------------------------------- // headers which we must include here // ---------------------------------------------------------------------------- @@ -24,16 +28,20 @@ #include "wx/font.h" // so we can't do without them #include "wx/colour.h" #include "wx/region.h" -#include "wx/accel.h" + +#if wxUSE_ACCEL + #include "wx/accel.h" +#endif // wxUSE_ACCEL // ---------------------------------------------------------------------------- // forward declarations // ---------------------------------------------------------------------------- +class WXDLLEXPORT wxCaret; class WXDLLEXPORT wxClientData; class WXDLLEXPORT wxControl; class WXDLLEXPORT wxCursor; -class WXDLLEXPORT wxDc; +class WXDLLEXPORT wxDC; class WXDLLEXPORT wxDropTarget; class WXDLLEXPORT wxItemResource; class WXDLLEXPORT wxLayoutConstraints; @@ -152,7 +160,8 @@ public: // label is just the same as the title (but for, e.g., buttons it // makes more sense to speak about labels) - wxString GetLabel() const { return GetTitle(); } + virtual void SetLabel(const wxString& label) { SetTitle(label); } + virtual wxString GetLabel() const { return GetTitle(); } // the window name is used for ressource setting in X, it is not the // same as the window title/label @@ -166,7 +175,13 @@ public: // generate a control id for the controls which were not given one by // user - static int NewControlId() { return ++ms_lastControlId; } + static int NewControlId() { return --ms_lastControlId; } + // get the id of the control following the one with the given + // (autogenerated) id + static int NextControlId(int id) { return id - 1; } + // get the id of the control preceding the one with the given + // (autogenerated) id + static int PrevControlId(int id) { return id + 1; } // moving/resizing // --------------- @@ -244,6 +259,8 @@ public: // 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); } // set window size to wrap around its children virtual void Fit(); @@ -309,7 +326,7 @@ public: inline wxWindow *GetGrandParent() const; // is this window a top level one? - bool IsTopLevel() const { return m_parent != 0; } + bool IsTopLevel() const; // it doesn't really change parent, use ReParent() instead void SetParent( wxWindowBase *parent ) { m_parent = (wxWindow *)parent; } @@ -344,10 +361,12 @@ public: // validators and client data // -------------------------- +#if wxUSE_VALIDATORS // a window may have an associated validator which is used to control // user input virtual void SetValidator( const wxValidator &validator ); virtual wxValidator *GetValidator() { return m_windowValidator; } +#endif // wxUSE_VALIDATORS // each window may have associated client data: either a pointer to // wxClientData object in which case it is managed by the window (i.e. @@ -377,12 +396,14 @@ public: virtual void InitDialog(); +#if wxUSE_ACCEL // accelerators // ------------ virtual void SetAcceleratorTable( const wxAcceleratorTable& accel ) { m_acceleratorTable = accel; } wxAcceleratorTable *GetAcceleratorTable() { return &m_acceleratorTable; } +#endif // wxUSE_ACCEL // dialog units translations // ------------------------- @@ -424,7 +445,7 @@ public: virtual void Clear() = 0; // adjust DC for drawing on this window - virtual void PrepareDC( wxDC &dc ) { } + virtual void PrepareDC( wxDC & WXUNUSED(dc) ) { } // the update region of the window contains the areas which must be // repainted by the program @@ -464,6 +485,13 @@ public: const wxFont& GetFont() const { return m_font; } wxFont& GetFont() { return m_font; } +#if wxUSE_CARET + // associate a caret with the window + void SetCaret(wxCaret *caret); + // get the current caret (may be NULL) + wxCaret *GetCaret() const { return m_caret; } +#endif // wxUSE_CARET + // get the (average) character size for the current font virtual int GetCharHeight() const = 0; virtual int GetCharWidth() const = 0; @@ -478,8 +506,25 @@ public: const = 0; // translate to/from screen/client coordinates (pointers may be NULL) - virtual void ClientToScreen( int *x, int *y ) const = 0; - virtual void ScreenToClient( int *x, int *y ) const = 0; + void ClientToScreen( int *x, int *y ) const + { DoClientToScreen(x, y); } + void ScreenToClient( int *x, int *y ) const + { DoScreenToClient(x, y); } + wxPoint ClientToScreen(const wxPoint& pt) const + { + int x = pt.x, y = pt.y; + DoClientToScreen(&x, &y); + + return wxPoint(x, y); + } + + wxPoint ScreenToClient(const wxPoint& pt) const + { + int x = pt.x, y = pt.y; + DoScreenToClient(&x, &y); + + return wxPoint(x, y); + } // misc // ---- @@ -595,24 +640,14 @@ public: void OnSysColourChanged( wxSysColourChangedEvent& event ); void OnInitDialog( wxInitDialogEvent &event ); -/* - What is this doing in the platform independent part? - - // accessors - WXWidget GetHandle() const { return m_widget; } - - // the window handle (for the underlying windowing system) and the window - // id - a number which uniquely identifies a window among its siblings - // unless it is -1 - union - { - // we have 2 common names for this member, one for MSW and the other - // for the rest of the world - WXWidget m_widget; - WXWidget m_hWnd; - }; -*/ + // get the haqndle of the window for the underlying window system: this + // is only used for wxWin itself or for user code which wants to call + // platform-specific APIs + virtual WXWidget GetHandle() const = 0; +protected: + // the window id - a number which uniquely identifies a window among + // its siblings unless it is -1 wxWindowID m_windowId; // the parent window of this window (or NULL) and the list of the children @@ -628,8 +663,10 @@ public: // changed with SetEventHandler() wxEvtHandler *m_eventHandler; +#if wxUSE_VALIDATORS // associated validator or NULL if none wxValidator *m_windowValidator; +#endif // wxUSE_VALIDATORS #if wxUSE_DRAG_AND_DROP wxDropTarget *m_dropTarget; @@ -640,12 +677,18 @@ public: wxFont m_font; wxColour m_backgroundColour, m_foregroundColour; +#if wxUSE_CARET + wxCaret *m_caret; +#endif // wxUSE_CARET + // the region which should be repainted in response to paint event wxRegion m_updateRegion; +#if wxUSE_ACCEL // the accelerator table for the window which translates key strokes into // command events wxAcceleratorTable m_acceleratorTable; +#endif // wxUSE_ACCEL // 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 @@ -706,6 +749,10 @@ protected: // overloaded Something()s in terms of DoSomething() which will be the // only one to be virtual. + // coordinates translation + virtual void DoClientToScreen( int *x, int *y ) const = 0; + virtual void DoScreenToClient( int *x, int *y ) const = 0; + // retrieve the position/size of the window virtual void DoGetPosition( int *x, int *y ) const = 0; virtual void DoGetSize( int *width, int *height ) const = 0; @@ -729,6 +776,7 @@ private: // contains the last id generated by NewControlId static int ms_lastControlId; + DECLARE_NO_COPY_CLASS(wxWindowBase); DECLARE_EVENT_TABLE() }; @@ -762,8 +810,8 @@ inline wxWindow *wxWindowBase::GetGrandParent() const // global function // ---------------------------------------------------------------------------- -extern wxWindow* WXDLLEXPORT wxGetActiveWindow(); -inline int WXDLLEXPORT NewControlId() { return wxWindowBase::NewControlId(); } +WXDLLEXPORT extern wxWindow* wxGetActiveWindow(); +inline WXDLLEXPORT int NewControlId() { return wxWindowBase::NewControlId(); } #endif // _WX_WINDOW_H_BASE_