X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8f7b34a878bbcb2f71a0c7694e2a3bec51460218..f396e5a7ca14cd432fd7a7a60624bd9fe0ed7a83:/include/wx/mgl/window.h diff --git a/include/wx/mgl/window.h b/include/wx/mgl/window.h index f558f1ace4..4c3091bd4f 100644 --- a/include/wx/mgl/window.h +++ b/include/wx/mgl/window.h @@ -1,127 +1,151 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: window.h -// Purpose: +// Name: wx/mgl/window.h +// Purpose: wxWindow class // Author: Vaclav Slavik -// Id: $Id$ -// Copyright: (c) 2001 SciTech Software, Inc. (www.scitechsoft.com) +// RCS-ID: $Id$ +// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com) // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#ifndef _WX_WINDOW_H_ +#define _WX_WINDOW_H_ -#ifndef __WX_WINDOW_H__ -#define __WX_WINDOW_H__ +// --------------------------------------------------------------------------- +// headers +// --------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma interface "window.h" -#endif +#include "wx/font.h" +struct window_t; +class MGLDevCtx; -//----------------------------------------------------------------------------- -// wxWindow -//----------------------------------------------------------------------------- +// --------------------------------------------------------------------------- +// wxWindow declaration for MGL +// --------------------------------------------------------------------------- class WXDLLEXPORT wxWindowMGL : public wxWindowBase { - DECLARE_DYNAMIC_CLASS(wxWindowMGL) - public: - // creating the window - // ------------------- - wxWindowMGL() {} + wxWindowMGL() { Init(); } + wxWindowMGL(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxPanelNameStr) {} + const wxString& name = wxPanelNameStr) + { + Init(); + Create(parent, id, pos, size, style, name); + } + + virtual ~wxWindowMGL(); + bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0, - const wxString& name = wxPanelNameStr) {} - virtual ~wxWindowMGL() {} + const wxString& name = wxPanelNameStr); // implement base class (pure) virtual methods // ------------------------------------------- - virtual bool Destroy() {return TRUE;} - virtual void Raise() {} - virtual void Lower() {} + virtual void SetLabel( const wxString &WXUNUSED(label) ) {} + virtual wxString GetLabel() const { return wxEmptyString; } - virtual bool Show( bool show = TRUE ) {return TRUE;} - virtual bool Enable( bool enable = TRUE ) {return TRUE;} + virtual void Raise(); + virtual void Lower(); - virtual bool IsRetained() const {return TRUE;} + virtual bool Show(bool show = true); - virtual void SetFocus() {} - virtual bool AcceptsFocus() const {return TRUE;} + virtual void SetFocus(); - virtual bool Reparent( wxWindowBase *newParent ) {return TRUE;} + virtual bool Reparent(wxWindowBase *newParent); - virtual void WarpPointer(int x, int y) {} - virtual void CaptureMouse() {} - virtual void ReleaseMouse() {} + virtual void WarpPointer(int x, int y); - virtual void Refresh( bool eraseBackground = TRUE, - const wxRect *rect = (const wxRect *) NULL ) {} - virtual void Clear() {} + virtual void Refresh(bool eraseBackground = true, + const wxRect *rect = (const wxRect *) NULL); + virtual void Update(); + virtual void Freeze(); + virtual void Thaw(); - virtual bool SetBackgroundColour( const wxColour &colour ) {return TRUE;} - virtual bool SetForegroundColour( const wxColour &colour ) {return TRUE;} - virtual bool SetCursor( const wxCursor &cursor ) {return TRUE;} - virtual bool SetFont( const wxFont &font ) {return TRUE;} + virtual bool SetCursor(const wxCursor &cursor); + virtual bool SetFont(const wxFont &font) { m_font = font; return true; } - virtual int GetCharHeight() const {return 0;} - virtual int GetCharWidth() const {return 0;} + 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) - const {} - - virtual bool DoPopupMenu( wxMenu *menu, int x, int y ) {return TRUE;} - - 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 {return 0;} - virtual int GetScrollThumb( int orient ) const {return 0;} - virtual int GetScrollRange( int orient ) const {return 0;} - virtual void ScrollWindow( int dx, int dy, - const wxRect* rect = (wxRect *) NULL ) {} + const; #if wxUSE_DRAG_AND_DROP - virtual void SetDropTarget( wxDropTarget *dropTarget ) {} + virtual void SetDropTarget(wxDropTarget *dropTarget); #endif // wxUSE_DRAG_AND_DROP - virtual WXWidget GetHandle() const { return NULL; } + // Accept files for dragging + virtual void DragAcceptFiles(bool accept); + + virtual WXWidget GetHandle() const { return m_wnd; } + + void SetMGLwindow_t(struct window_t *wnd); - /* For compatibility across platforms (not in event table) */ - void OnIdle(wxIdleEvent& WXUNUSED(event)) {}; + // implementation from now on + // -------------------------- + + void OnInternalIdle(); + +protected: + // the window handle + struct window_t *m_wnd; + // whether there should be wxEraseEvent before wxPaintEvent or not + // (see wxWindow::Refresh) + bool m_frozen:1; + bool m_refreshAfterThaw:1; + int m_eraseBackground; // implement the base class pure virtuals - virtual void DoClientToScreen( int *x, int *y ) const {} - virtual void DoScreenToClient( int *x, int *y ) const {} - virtual void DoGetPosition( int *x, int *y ) const {} - virtual void DoGetSize( int *width, int *height ) const {} - virtual void DoGetClientSize( int *width, int *height ) const {} + virtual void DoClientToScreen( int *x, int *y ) const; + virtual void DoScreenToClient( int *x, int *y ) const; + virtual void DoGetPosition( int *x, int *y ) const; + virtual void DoGetSize( int *width, int *height ) const; + virtual void DoGetClientSize( int *width, int *height ) const; virtual void DoSetSize(int x, int y, int width, int height, - int sizeFlags = wxSIZE_AUTO) {} - virtual void DoSetClientSize(int width, int height) {} - virtual void DoMoveWindow(int x, int y, int width, int height) {} + int sizeFlags = wxSIZE_AUTO); + virtual void DoSetClientSize(int width, int height); -#if wxUSE_TOOLTIPS - virtual void DoSetToolTip( wxToolTip *tip ) {} -#endif // wxUSE_TOOLTIPS + virtual void DoCaptureMouse(); + virtual void DoReleaseMouse(); - // common part of all ctors (can't be virtual because called from ctor) - void Init() {} + // move the window to the specified location and resize it: this is called + // from both DoSetSize() and DoSetClientSize() and would usually just call + // ::MoveWindow() except for composite controls which will want to arrange + // themselves inside the given rectangle + virtual void DoMoveWindow(int x, int y, int width, int height); private: - DECLARE_NO_COPY_CLASS(wxWindowMGL); + // common part of all ctors + void Init(); + // counterpart to SetFocus + void KillFocus(); + + MGLDevCtx *m_paintMGLDC; + friend class wxPaintDC; + + DECLARE_DYNAMIC_CLASS(wxWindowMGL) + DECLARE_NO_COPY_CLASS(wxWindowMGL) + DECLARE_EVENT_TABLE() + +public: + void HandlePaint(MGLDevCtx *dc); + // needed by wxWindowPainter + MGLDevCtx *GetPaintMGLDC() const { return m_paintMGLDC; } }; -#endif // ___WX_WINDOW_H__ + +#endif // _WX_WINDOW_H_