]> git.saurik.com Git - wxWidgets.git/blob - include/wx/aui/tabmdi.h
destroy IDirectFBWindow in wxTLW dtor
[wxWidgets.git] / include / wx / aui / tabmdi.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/tabmdi.h
3 // Purpose: Generic MDI (Multiple Document Interface) classes
4 // Author: Hans Van Leemputten
5 // Modified by: Benjamin I. Williams / Kirix Corporation
6 // Created: 29/07/2002
7 // RCS-ID: $Id$
8 // Copyright: (c) Hans Van Leemputten
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_AUITABMDI_H_
13 #define _WX_AUITABMDI_H_
14
15 #if wxUSE_AUI
16
17 // ----------------------------------------------------------------------------
18 // headers
19 // ----------------------------------------------------------------------------
20
21 #include "wx/frame.h"
22 #include "wx/panel.h"
23 #include "wx/notebook.h"
24 #include "wx/icon.h"
25 #include "wx/aui/auibook.h"
26
27 //-----------------------------------------------------------------------------
28 // classes
29 //-----------------------------------------------------------------------------
30
31 class WXDLLIMPEXP_AUI wxAuiMDIParentFrame;
32 class WXDLLIMPEXP_AUI wxAuiMDIClientWindow;
33 class WXDLLIMPEXP_AUI wxAuiMDIChildFrame;
34
35 //-----------------------------------------------------------------------------
36 // wxAuiMDIParentFrame
37 //-----------------------------------------------------------------------------
38
39 class WXDLLIMPEXP_AUI wxAuiMDIParentFrame : public wxFrame
40 {
41 public:
42 wxAuiMDIParentFrame();
43 wxAuiMDIParentFrame(wxWindow *parent,
44 wxWindowID winid,
45 const wxString& title,
46 const wxPoint& pos = wxDefaultPosition,
47 const wxSize& size = wxDefaultSize,
48 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
49 const wxString& name = wxFrameNameStr);
50
51 ~wxAuiMDIParentFrame();
52
53 bool Create(wxWindow *parent,
54 wxWindowID winid,
55 const wxString& title,
56 const wxPoint& pos = wxDefaultPosition,
57 const wxSize& size = wxDefaultSize,
58 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
59 const wxString& name = wxFrameNameStr );
60
61 void SetArtProvider(wxAuiTabArt* provider);
62 wxAuiTabArt* GetArtProvider();
63 wxAuiNotebook* GetNotebook() const;
64
65 #if wxUSE_MENUS
66 wxMenu* GetWindowMenu() const { return m_pWindowMenu; };
67 void SetWindowMenu(wxMenu* pMenu);
68
69 virtual void SetMenuBar(wxMenuBar *pMenuBar);
70 #endif // wxUSE_MENUS
71
72 void SetChildMenuBar(wxAuiMDIChildFrame *pChild);
73
74 virtual bool ProcessEvent(wxEvent& event);
75
76 wxAuiMDIChildFrame *GetActiveChild() const;
77 inline void SetActiveChild(wxAuiMDIChildFrame* pChildFrame);
78
79 wxAuiMDIClientWindow *GetClientWindow() const;
80 virtual wxAuiMDIClientWindow *OnCreateClient();
81
82 virtual void Cascade() { /* Has no effect */ }
83 virtual void Tile(wxOrientation orient = wxHORIZONTAL);
84 virtual void ArrangeIcons() { /* Has no effect */ }
85 virtual void ActivateNext();
86 virtual void ActivatePrevious();
87
88 protected:
89 wxAuiMDIClientWindow* m_pClientWindow;
90 wxAuiMDIChildFrame* m_pActiveChild;
91 wxEvent* m_pLastEvt;
92
93 #if wxUSE_MENUS
94 wxMenu *m_pWindowMenu;
95 wxMenuBar *m_pMyMenuBar;
96 #endif // wxUSE_MENUS
97
98 protected:
99 void Init();
100
101 #if wxUSE_MENUS
102 void RemoveWindowMenu(wxMenuBar *pMenuBar);
103 void AddWindowMenu(wxMenuBar *pMenuBar);
104
105 void DoHandleMenu(wxCommandEvent &event);
106 #endif // wxUSE_MENUS
107
108 virtual void DoGetClientSize(int *width, int *height) const;
109
110 private:
111 DECLARE_EVENT_TABLE()
112 DECLARE_DYNAMIC_CLASS(wxAuiMDIParentFrame)
113 };
114
115 //-----------------------------------------------------------------------------
116 // wxAuiMDIChildFrame
117 //-----------------------------------------------------------------------------
118
119 class WXDLLIMPEXP_AUI wxAuiMDIChildFrame : public wxPanel
120 {
121 public:
122 wxAuiMDIChildFrame();
123 wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
124 wxWindowID winid,
125 const wxString& title,
126 const wxPoint& pos = wxDefaultPosition,
127 const wxSize& size = wxDefaultSize,
128 long style = wxDEFAULT_FRAME_STYLE,
129 const wxString& name = wxFrameNameStr);
130
131 virtual ~wxAuiMDIChildFrame();
132 bool Create(wxAuiMDIParentFrame *parent,
133 wxWindowID winid,
134 const wxString& title,
135 const wxPoint& pos = wxDefaultPosition,
136 const wxSize& size = wxDefaultSize,
137 long style = wxDEFAULT_FRAME_STYLE,
138 const wxString& name = wxFrameNameStr);
139
140 #if wxUSE_MENUS
141 virtual void SetMenuBar(wxMenuBar *menu_bar);
142 virtual wxMenuBar *GetMenuBar() const;
143 #endif // wxUSE_MENUS
144
145 virtual void SetTitle(const wxString& title);
146 virtual wxString GetTitle() const;
147
148 virtual void SetIcons(const wxIconBundle& icons);
149 virtual const wxIconBundle& GetIcons() const;
150
151 virtual void SetIcon(const wxIcon& icon);
152 virtual const wxIcon& GetIcon() const;
153
154 virtual void Activate();
155 virtual bool Destroy();
156
157 #if wxUSE_STATUSBAR
158 // no status bars
159 virtual wxStatusBar* CreateStatusBar(int WXUNUSED(number) = 1,
160 long WXUNUSED(style) = 1,
161 wxWindowID WXUNUSED(winid) = 1,
162 const wxString& WXUNUSED(name) = wxEmptyString)
163 { return (wxStatusBar*)NULL; }
164
165 virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
166 virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
167 virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
168 #endif
169
170 // no size hints
171 virtual void DoSetSizeHints(int WXUNUSED(minW),
172 int WXUNUSED(minH),
173 int WXUNUSED(maxW) = wxDefaultCoord,
174 int WXUNUSED(maxH) = wxDefaultCoord,
175 int WXUNUSED(incW) = wxDefaultCoord,
176 int WXUNUSED(incH) = wxDefaultCoord) {}
177 #if wxUSE_TOOLBAR
178 // no toolbar bars
179 virtual wxToolBar* CreateToolBar(long WXUNUSED(style),
180 wxWindowID WXUNUSED(winid),
181 const wxString& WXUNUSED(name))
182 { return (wxToolBar*)NULL; }
183 virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; }
184 #endif
185
186
187 // no maximize etc
188 virtual void Maximize(bool WXUNUSED(maximize) = true) { /* Has no effect */ }
189 virtual void Restore() { /* Has no effect */ }
190 virtual void Iconize(bool WXUNUSED(iconize) = true) { /* Has no effect */ }
191 virtual bool IsMaximized() const { return true; }
192 virtual bool IsIconized() const { return false; }
193 virtual bool ShowFullScreen(bool WXUNUSED(show), long WXUNUSED(style)) { return false; }
194 virtual bool IsFullScreen() const { return false; }
195
196 virtual bool IsTopLevel() const { return false; }
197
198 void OnMenuHighlight(wxMenuEvent& evt);
199 void OnActivate(wxActivateEvent& evt);
200 void OnCloseWindow(wxCloseEvent& evt);
201
202 void SetMDIParentFrame(wxAuiMDIParentFrame* parent);
203 wxAuiMDIParentFrame* GetMDIParentFrame() const;
204
205 protected:
206 void Init();
207 virtual bool Show(bool show = true);
208 virtual void DoSetSize(int x, int y, int width, int height, int size_flags);
209 virtual void DoMoveWindow(int x, int y, int width, int height);
210
211 public:
212 // This function needs to be called when a size change is confirmed,
213 // we needed this function to prevent anybody from the outside
214 // changing the panel... it messes the UI layout when we would allow it.
215 void ApplyMDIChildFrameRect();
216 void DoShow(bool show);
217
218 protected:
219 wxAuiMDIParentFrame* m_pMDIParentFrame;
220 wxRect m_mdi_newrect;
221 wxRect m_mdi_currect;
222 wxString m_title;
223 wxIcon m_icon;
224 wxIconBundle m_icon_bundle;
225 bool m_activate_on_create;
226
227 #if wxUSE_MENUS
228 wxMenuBar* m_pMenuBar;
229 #endif // wxUSE_MENUS
230
231
232
233 private:
234 DECLARE_DYNAMIC_CLASS(wxAuiMDIChildFrame)
235 DECLARE_EVENT_TABLE()
236
237 friend class wxAuiMDIClientWindow;
238 };
239
240 //-----------------------------------------------------------------------------
241 // wxAuiMDIClientWindow
242 //-----------------------------------------------------------------------------
243
244 class WXDLLIMPEXP_AUI wxAuiMDIClientWindow : public wxAuiNotebook
245 {
246 public:
247 wxAuiMDIClientWindow();
248 wxAuiMDIClientWindow(wxAuiMDIParentFrame *parent, long style = 0);
249 ~wxAuiMDIClientWindow();
250
251 virtual bool CreateClient(wxAuiMDIParentFrame *parent,
252 long style = wxVSCROLL | wxHSCROLL);
253
254 virtual int SetSelection(size_t page);
255
256 protected:
257
258 void PageChanged(int old_selection, int new_selection);
259 void OnPageClose(wxAuiNotebookEvent& evt);
260 void OnPageChanged(wxAuiNotebookEvent& evt);
261 void OnSize(wxSizeEvent& evt);
262
263 private:
264 DECLARE_DYNAMIC_CLASS(wxAuiMDIClientWindow)
265 DECLARE_EVENT_TABLE()
266 };
267 #endif // wxUSE_AUI
268
269 #endif // _WX_AUITABMDI_H_