1/////////////////////////////////////////////////////////////////////////////
2// Name:        frame.h
3// Purpose:     wxFrame class
4// Author:      Stefan Csomor
5// Modified by:
6// Created:     1998-01-01
7// RCS-ID:      $Id: frame.h 41228 2006-09-14 19:37:19Z SC $
8// Copyright:   (c) Stefan Csomor
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_FRAME_H_
13#define _WX_FRAME_H_
14
15#include "wx/window.h"
16#include "wx/toolbar.h"
17#include "wx/accel.h"
18#include "wx/icon.h"
19
20WXDLLEXPORT_DATA(extern const wxChar) wxToolBarNameStr[];
21
22class WXDLLEXPORT wxMenuBar;
23class WXDLLEXPORT wxStatusBar;
24class WXDLLEXPORT wxMacToolTip ;
25
26class WXDLLEXPORT wxFrame: public wxFrameBase
27{
28public:
29    // construction
30    wxFrame() { Init(); }
31    wxFrame(wxWindow *parent,
32            wxWindowID id,
33            const wxString& title,
34            const wxPoint& pos = wxDefaultPosition,
35            const wxSize& size = wxDefaultSize,
36            long style = wxDEFAULT_FRAME_STYLE,
37            const wxString& name = wxFrameNameStr)
38    {
39        Init();
40
41        Create(parent, id, title, pos, size, style, name);
42    }
43
44    bool Create(wxWindow *parent,
45                wxWindowID id,
46                const wxString& title,
47                const wxPoint& pos = wxDefaultPosition,
48                const wxSize& size = wxDefaultSize,
49                long style = wxDEFAULT_FRAME_STYLE,
50                const wxString& name = wxFrameNameStr);
51
52    virtual ~wxFrame();
53
54    // implementation only from now on
55    // -------------------------------
56
57    // get the origin of the client area (which may be different from (0, 0)
58    // if the frame has a toolbar) in client coordinates
59    virtual wxPoint GetClientAreaOrigin() const;
60
61    // override some more virtuals
62    virtual bool Enable(bool enable = TRUE) ;
63
64    // event handlers
65    void OnActivate(wxActivateEvent& event);
66    void OnSysColourChanged(wxSysColourChangedEvent& event);
67
68    // Toolbar
69#if wxUSE_TOOLBAR
70    virtual wxToolBar* CreateToolBar(long style = -1,
71                                     wxWindowID id = -1,
72                                     const wxString& name = wxToolBarNameStr);
73
74    virtual void SetToolBar(wxToolBar *toolbar);
75#endif // wxUSE_TOOLBAR
76
77    // Status bar
78#if wxUSE_STATUSBAR
79    virtual wxStatusBar* OnCreateStatusBar(int number = 1,
80                                           long style = wxST_SIZEGRIP,
81                                           wxWindowID id = 0,
82                                           const wxString& name = wxStatusLineNameStr);
83#endif // wxUSE_STATUSBAR
84
85    // called by wxWindow whenever it gets focus
86    void SetLastFocus(wxWindow *win) { m_winLastFocused = win; }
87    wxWindow *GetLastFocus() const { return m_winLastFocused; }
88
89    void PositionBars();
90
91protected:
92    // common part of all ctors
93    void Init();
94
95#if wxUSE_TOOLBAR
96    virtual void PositionToolBar();
97#endif
98#if wxUSE_STATUSBAR
99    virtual void PositionStatusBar();
100#endif
101
102    // override base class virtuals
103    virtual void DoGetClientSize(int *width, int *height) const;
104    virtual void DoSetClientSize(int width, int height);
105
106    virtual void DetachMenuBar();
107    virtual void AttachMenuBar(wxMenuBar *menubar);
108
109protected:
110    // the last focused child: we restore focus to it on activation
111    wxWindow             *m_winLastFocused;
112
113    virtual bool        MacIsChildOfClientArea( const wxWindow* child ) const ;
114
115private:
116    DECLARE_EVENT_TABLE()
117    DECLARE_DYNAMIC_CLASS(wxFrame)
118};
119
120#endif
121    // _WX_FRAME_H_
122