1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/cocoa/mdi.h
3 // Purpose: wxMDIParentFrame, wxMDIChildFrame, wxMDIClientWindow
4 // Author: David Elliott
8 // Copyright: (c) 2003 David Elliott
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef __WX_COCOA_MDI_H__
13 #define __WX_COCOA_MDI_H__
17 DECLARE_WXCOCOA_OBJC_CLASS(wxMDIParentFrameObserver
);
19 class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame
;
20 class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow
;
22 WX_DECLARE_LIST(wxMDIChildFrame
, wxCocoaMDIChildFrameList
);
24 // ========================================================================
26 // ========================================================================
27 class WXDLLEXPORT wxMDIParentFrame
: public wxFrame
29 friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame
;
31 DECLARE_DYNAMIC_CLASS(wxMDIParentFrame
)
32 // ------------------------------------------------------------------------
34 // ------------------------------------------------------------------------
36 wxMDIParentFrame() { Init(); }
37 wxMDIParentFrame(wxWindow
*parent
,
39 const wxString
& title
,
40 const wxPoint
& pos
= wxDefaultPosition
,
41 const wxSize
& size
= wxDefaultSize
,
42 long style
= wxDEFAULT_FRAME_STYLE
,
43 const wxString
& name
= wxFrameNameStr
)
46 Create(parent
, winid
, title
, pos
, size
, style
, name
);
49 virtual ~wxMDIParentFrame();
51 bool Create(wxWindow
*parent
,
53 const wxString
& title
,
54 const wxPoint
& pos
= wxDefaultPosition
,
55 const wxSize
& size
= wxDefaultSize
,
56 long style
= wxDEFAULT_FRAME_STYLE
,
57 const wxString
& name
= wxFrameNameStr
);
60 // ------------------------------------------------------------------------
62 // ------------------------------------------------------------------------
64 void WindowDidBecomeMain(NSNotification
*notification
);
66 virtual void CocoaDelegate_windowDidBecomeKey(void);
67 virtual void CocoaDelegate_windowDidResignKey(void);
68 virtual bool Cocoa_canBecomeMainWindow(bool &canBecome
);
69 virtual wxMenuBar
* GetAppMenuBar(wxCocoaNSWindow
*win
);
71 void AddMDIChild(wxMDIChildFrame
*child
);
72 void RemoveMDIChild(wxMDIChildFrame
*child
);
74 wxMDIParentFrameObserver
*m_observer
;
75 // ------------------------------------------------------------------------
77 // ------------------------------------------------------------------------
79 wxMDIChildFrame
*GetActiveChild() const;
80 void SetActiveChild(wxMDIChildFrame
*child
);
82 wxMDIClientWindow
*GetClientWindow() const;
83 virtual wxMDIClientWindow
*OnCreateClient();
85 virtual void Cascade() {}
86 virtual void Tile(wxOrientation
WXUNUSED(orient
) = wxHORIZONTAL
) {}
87 virtual void ArrangeIcons() {}
88 virtual void ActivateNext();
89 virtual void ActivatePrevious();
91 wxMDIClientWindow
*m_clientWindow
;
92 wxMDIChildFrame
*m_currentChild
;
93 wxCocoaMDIChildFrameList m_mdiChildren
;
96 // ========================================================================
98 // ========================================================================
99 class WXDLLEXPORT wxMDIChildFrame
: public wxFrame
101 friend class WXDLLIMPEXP_FWD_CORE wxMDIParentFrame
;
102 DECLARE_EVENT_TABLE()
103 DECLARE_DYNAMIC_CLASS(wxMDIChildFrame
)
104 // ------------------------------------------------------------------------
106 // ------------------------------------------------------------------------
108 wxMDIChildFrame() { Init(); }
109 wxMDIChildFrame(wxMDIParentFrame
*parent
,
111 const wxString
& title
,
112 const wxPoint
& pos
= wxDefaultPosition
,
113 const wxSize
& size
= wxDefaultSize
,
114 long style
= wxDEFAULT_FRAME_STYLE
,
115 const wxString
& name
= wxFrameNameStr
)
118 Create(parent
, winid
, title
, pos
, size
, style
, name
);
121 virtual ~wxMDIChildFrame();
123 bool Create(wxMDIParentFrame
*parent
,
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
);
132 // ------------------------------------------------------------------------
134 // ------------------------------------------------------------------------
137 virtual void CocoaDelegate_windowDidBecomeKey(void);
138 virtual void CocoaDelegate_windowDidBecomeMain(void);
139 virtual void CocoaDelegate_windowDidResignKey(void);
140 // ------------------------------------------------------------------------
142 // ------------------------------------------------------------------------
144 virtual void Activate();
145 virtual bool Destroy();
147 wxMDIParentFrame
*m_mdiParent
;
150 // ========================================================================
152 // ========================================================================
153 class wxMDIClientWindow
: public wxWindow
155 DECLARE_DYNAMIC_CLASS(wxMDIClientWindow
)
158 wxMDIClientWindow( wxMDIParentFrame
*parent
, long style
= 0 );
159 virtual ~wxMDIClientWindow();
160 virtual bool CreateClient( wxMDIParentFrame
*parent
, long style
= 0 );
163 #endif // __WX_COCOA_MDI_H__