]>
git.saurik.com Git - wxWidgets.git/blob - src/common/docmdi.cpp
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Frame classes for MDI document/view applications
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
19 #if wxUSE_MDI_ARCHITECTURE
21 #include "wx/docmdi.h"
24 * Docview MDI parent frame
27 IMPLEMENT_CLASS(wxDocMDIParentFrame
, wxMDIParentFrame
)
29 BEGIN_EVENT_TABLE(wxDocMDIParentFrame
, wxMDIParentFrame
)
30 EVT_MENU(wxID_EXIT
, wxDocMDIParentFrame::OnExit
)
31 EVT_MENU_RANGE(wxID_FILE1
, wxID_FILE9
, wxDocMDIParentFrame::OnMRUFile
)
32 EVT_CLOSE(wxDocMDIParentFrame::OnCloseWindow
)
35 wxDocMDIParentFrame::wxDocMDIParentFrame()
40 wxDocMDIParentFrame::wxDocMDIParentFrame(wxDocManager
*manager
, wxFrame
*frame
, wxWindowID id
, const wxString
& title
,
41 const wxPoint
& pos
, const wxSize
& size
, long style
, const wxString
& name
)
44 Create(manager
, frame
, id
, title
, pos
, size
, style
, name
);
47 bool wxDocMDIParentFrame::Create(wxDocManager
*manager
, wxFrame
*frame
, wxWindowID id
, const wxString
& title
,
48 const wxPoint
& pos
, const wxSize
& size
, long style
, const wxString
& name
)
50 m_docManager
= manager
;
51 return wxMDIParentFrame::Create(frame
, id
, title
, pos
, size
, style
, name
);
54 void wxDocMDIParentFrame::OnExit(wxCommandEvent
& WXUNUSED(event
))
59 void wxDocMDIParentFrame::Init()
64 void wxDocMDIParentFrame::OnMRUFile(wxCommandEvent
& event
)
66 wxString
f(m_docManager
->GetHistoryFile(event
.GetId() - wxID_FILE1
));
68 (void)m_docManager
->CreateDocument(f
, wxDOC_SILENT
);
71 bool wxDocMDIParentFrame::TryBefore(wxEvent
& event
)
73 if ( m_docManager
&& m_docManager
->ProcessEventHere(event
) )
76 return wxMDIParentFrame::TryBefore(event
);
79 void wxDocMDIParentFrame::OnCloseWindow(wxCloseEvent
& event
)
81 if (m_docManager
->Clear(!event
.CanVeto()))
91 * Default document child frame for MDI children
94 IMPLEMENT_CLASS(wxDocMDIChildFrame
, wxMDIChildFrame
)
96 BEGIN_EVENT_TABLE(wxDocMDIChildFrame
, wxMDIChildFrame
)
97 EVT_ACTIVATE(wxDocMDIChildFrame::OnActivate
)
98 EVT_CLOSE(wxDocMDIChildFrame::OnCloseWindow
)
101 void wxDocMDIChildFrame::Init()
103 m_childDocument
= NULL
;
107 wxDocMDIChildFrame::wxDocMDIChildFrame()
112 wxDocMDIChildFrame::wxDocMDIChildFrame(wxDocument
*doc
, wxView
*view
, wxMDIParentFrame
*frame
, wxWindowID id
,
113 const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
, long style
, const wxString
& name
)
116 Create(doc
, view
, frame
, id
, title
, pos
, size
, style
, name
);
119 bool wxDocMDIChildFrame::Create(wxDocument
*doc
, wxView
*view
, wxMDIParentFrame
*frame
, wxWindowID id
,
120 const wxString
& title
, const wxPoint
& pos
, const wxSize
& size
, long style
, const wxString
& name
)
122 m_childDocument
= doc
;
124 if (wxMDIChildFrame::Create(frame
, id
, title
, pos
, size
, style
, name
))
127 view
->SetFrame(this);
134 wxDocMDIChildFrame::~wxDocMDIChildFrame(void)
139 bool wxDocMDIChildFrame::TryBefore(wxEvent
& event
)
141 if ( m_childView
&& m_childView
->ProcessEventHere(event
) )
144 return wxMDIChildFrame::TryBefore(event
);
147 void wxDocMDIChildFrame::OnActivate(wxActivateEvent
& event
)
149 wxMDIChildFrame::OnActivate(event
);
151 if (event
.GetActive() && m_childView
)
152 m_childView
->Activate(event
.GetActive());
155 void wxDocMDIChildFrame::OnCloseWindow(wxCloseEvent
& event
)
157 // Close view but don't delete the frame while doing so!
158 // ...since it will be deleted by wxWidgets if we return true.
161 bool ans
= event
.CanVeto()
162 ? m_childView
->Close(false) // false means don't delete associated window
163 : true; // Must delete.
167 m_childView
->Activate(false);
170 m_childDocument
= NULL
;
182 // wxUSE_DOC_VIEW_ARCHITECTURE