]> git.saurik.com Git - wxWidgets.git/blame - include/wx/aui/tabmdi.h
move wx11 and (the rest of) wxMGL specific checks into /chkconf.h file
[wxWidgets.git] / include / wx / aui / tabmdi.h
CommitLineData
a3219eea 1/////////////////////////////////////////////////////////////////////////////
4444d148 2// Name: wx/generic/tabmdi.h
a3219eea
BW
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// ----------------------------------------------------------------------------
16// headers
17// ----------------------------------------------------------------------------
18
19#include "wx/frame.h"
20#include "wx/panel.h"
21#include "wx/notebook.h"
189da67c 22#include "wx/aui/auibook.h"
a3219eea 23
a3219eea
BW
24//-----------------------------------------------------------------------------
25// classes
26//-----------------------------------------------------------------------------
27
14a01067
RD
28class WXDLLIMPEXP_AUI wxTabMDIParentFrame;
29class WXDLLIMPEXP_AUI wxTabMDIClientWindow;
30class WXDLLIMPEXP_AUI wxTabMDIChildFrame;
a3219eea
BW
31
32//-----------------------------------------------------------------------------
33// wxTabMDIParentFrame
34//-----------------------------------------------------------------------------
35
82221153 36class WXDLLIMPEXP_AUI wxTabMDIParentFrame : public wxFrame
a3219eea
BW
37{
38public:
39 wxTabMDIParentFrame();
40 wxTabMDIParentFrame(wxWindow *parent,
41 wxWindowID winid,
42 const wxString& title,
43 const wxPoint& pos = wxDefaultPosition,
44 const wxSize& size = wxDefaultSize,
45 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
46 const wxString& name = wxFrameNameStr);
47
48 ~wxTabMDIParentFrame();
4444d148 49
a3219eea
BW
50 bool Create(wxWindow *parent,
51 wxWindowID winid,
52 const wxString& title,
53 const wxPoint& pos = wxDefaultPosition,
54 const wxSize& size = wxDefaultSize,
55 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
56 const wxString& name = wxFrameNameStr );
57
58#if wxUSE_MENUS
59 wxMenu* GetWindowMenu() const { return m_pWindowMenu; };
60 void SetWindowMenu(wxMenu* pMenu);
61
62 virtual void SetMenuBar(wxMenuBar *pMenuBar);
63#endif // wxUSE_MENUS
64
65 void SetChildMenuBar(wxTabMDIChildFrame *pChild);
66
67 virtual bool ProcessEvent(wxEvent& event);
68
69 wxTabMDIChildFrame *GetActiveChild() const;
70 inline void SetActiveChild(wxTabMDIChildFrame* pChildFrame);
71
72 wxTabMDIClientWindow *GetClientWindow() const;
73 virtual wxTabMDIClientWindow *OnCreateClient();
74
75 virtual void Cascade() { /* Has no effect */ }
76 virtual void Tile(wxOrientation WXUNUSED(orient) = wxHORIZONTAL) { }
77 virtual void ArrangeIcons() { /* Has no effect */ }
78 virtual void ActivateNext();
79 virtual void ActivatePrevious();
80
81protected:
82 wxTabMDIClientWindow *m_pClientWindow;
83 wxTabMDIChildFrame *m_pActiveChild;
4444d148 84
a3219eea
BW
85#if wxUSE_MENUS
86 wxMenu *m_pWindowMenu;
87 wxMenuBar *m_pMyMenuBar;
88#endif // wxUSE_MENUS
89
90protected:
91 void Init();
92
93#if wxUSE_MENUS
94 void RemoveWindowMenu(wxMenuBar *pMenuBar);
95 void AddWindowMenu(wxMenuBar *pMenuBar);
96
97 void DoHandleMenu(wxCommandEvent &event);
98#endif // wxUSE_MENUS
99
100 virtual void DoGetClientSize(int *width, int *height) const;
101
102private:
103 DECLARE_EVENT_TABLE()
104 DECLARE_DYNAMIC_CLASS(wxTabMDIParentFrame)
105};
106
107//-----------------------------------------------------------------------------
108// wxTabMDIChildFrame
109//-----------------------------------------------------------------------------
110
82221153 111class WXDLLIMPEXP_AUI wxTabMDIChildFrame : public wxPanel
a3219eea
BW
112{
113public:
114 wxTabMDIChildFrame();
115 wxTabMDIChildFrame(wxTabMDIParentFrame *parent,
116 wxWindowID winid,
117 const wxString& title,
118 const wxPoint& pos = wxDefaultPosition,
119 const wxSize& size = wxDefaultSize,
120 long style = wxDEFAULT_FRAME_STYLE,
121 const wxString& name = wxFrameNameStr);
122
123 virtual ~wxTabMDIChildFrame();
124 bool Create(wxTabMDIParentFrame *parent,
125 wxWindowID winid,
126 const wxString& title,
127 const wxPoint& pos = wxDefaultPosition,
128 const wxSize& size = wxDefaultSize,
129 long style = wxDEFAULT_FRAME_STYLE,
130 const wxString& name = wxFrameNameStr);
131
132#if wxUSE_MENUS
133 virtual void SetMenuBar(wxMenuBar *menu_bar);
134 virtual wxMenuBar *GetMenuBar() const;
135#endif // wxUSE_MENUS
136
137 virtual void SetTitle(const wxString& title);
138 virtual wxString GetTitle() const;
139
140 virtual void Activate();
141 virtual bool Destroy();
4444d148 142
a3219eea
BW
143#if wxUSE_STATUSBAR
144 // no status bars
145 virtual wxStatusBar* CreateStatusBar(int WXUNUSED(number) = 1,
146 long WXUNUSED(style) = 1,
147 wxWindowID WXUNUSED(winid) = 1,
148 const wxString& WXUNUSED(name) = wxEmptyString)
149 { return (wxStatusBar*)NULL; }
150
151 virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; }
152 virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {}
153 virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {}
154#endif
155
156 // no size hints
157 virtual void DoSetSizeHints(int WXUNUSED(minW),
158 int WXUNUSED(minH),
159 int WXUNUSED(maxW) = wxDefaultCoord,
160 int WXUNUSED(maxH) = wxDefaultCoord,
161 int WXUNUSED(incW) = wxDefaultCoord,
162 int WXUNUSED(incH) = wxDefaultCoord) {}
163#if wxUSE_TOOLBAR
164 // no toolbar bars
165 virtual wxToolBar* CreateToolBar(long WXUNUSED(style),
166 wxWindowID WXUNUSED(winid),
167 const wxString& WXUNUSED(name))
168 { return (wxToolBar*)NULL; }
169 virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; }
170#endif
171
172 // no icon
173 void SetIcon(const wxIcon& WXUNUSED(icon)) { }
174 void SetIcons(const wxIconBundle& WXUNUSED(icons)) { }
175
176 // no maximize etc
177 virtual void Maximize(bool WXUNUSED(maximize) = true) { /* Has no effect */ }
178 virtual void Restore() { /* Has no effect */ }
179 virtual void Iconize(bool WXUNUSED(iconize) = true) { /* Has no effect */ }
180 virtual bool IsMaximized() const { return true; }
181 virtual bool IsIconized() const { return false; }
182 virtual bool ShowFullScreen(bool WXUNUSED(show), long WXUNUSED(style)) { return false; }
183 virtual bool IsFullScreen() const { return false; }
184
185 virtual bool IsTopLevel() const { return false; }
186
187 void OnMenuHighlight(wxMenuEvent& evt);
188 void OnActivate(wxActivateEvent& evt);
189 void OnCloseWindow(wxCloseEvent& evt);
4444d148 190
a3219eea
BW
191 void SetMDIParentFrame(wxTabMDIParentFrame* parent);
192 wxTabMDIParentFrame* GetMDIParentFrame() const;
193
194protected:
195 wxTabMDIParentFrame *m_pMDIParentFrame;
196 wxRect m_mdi_newrect;
197 wxRect m_mdi_currect;
198 wxString m_title;
199
200#if wxUSE_MENUS
201 wxMenuBar *m_pMenuBar;
202#endif // wxUSE_MENUS
203
204protected:
205 void Init();
206
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
211public:
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
218private:
219 DECLARE_DYNAMIC_CLASS(wxTabMDIChildFrame)
220 DECLARE_EVENT_TABLE()
221
222 friend class wxTabMDIClientWindow;
223};
224
225//-----------------------------------------------------------------------------
226// wxTabMDIClientWindow
227//-----------------------------------------------------------------------------
228
82221153 229class WXDLLIMPEXP_AUI wxTabMDIClientWindow : public wxAuiMultiNotebook
a3219eea
BW
230{
231public:
232 wxTabMDIClientWindow();
233 wxTabMDIClientWindow(wxTabMDIParentFrame *parent, long style = 0);
234 ~wxTabMDIClientWindow();
4444d148 235
a3219eea
BW
236 virtual bool CreateClient(wxTabMDIParentFrame *parent,
237 long style = wxVSCROLL | wxHSCROLL);
238
239 virtual int SetSelection(size_t page);
240
241protected:
242
4444d148 243 void PageChanged(int old_selection, int new_selection);
a3219eea
BW
244 void OnPageChanged(wxAuiNotebookEvent& event);
245 void OnSize(wxSizeEvent& evt);
246
247private:
248 DECLARE_DYNAMIC_CLASS(wxTabMDIClientWindow)
249 DECLARE_EVENT_TABLE()
250};
251
252#endif // _WX_AUITABMDI_H_