]> git.saurik.com Git - wxWidgets.git/blame - src/common/docmdi.cpp
Fix wxDocManager::GetLastDirectory() when there is no history.
[wxWidgets.git] / src / common / docmdi.cpp
CommitLineData
2108f33a
JS
1/////////////////////////////////////////////////////////////////////////////
2// Name: docmdi.cpp
3// Purpose: Frame classes for MDI document/view applications
4// Author: Julian Smart
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
65571936 9// Licence: wxWindows licence
2108f33a
JS
10/////////////////////////////////////////////////////////////////////////////
11
2108f33a
JS
12// For compilers that support precompilation, includes "wx.h".
13#include "wx/wxprec.h"
14
15#ifdef __BORLANDC__
2df7be7f 16 #pragma hdrstop
2108f33a
JS
17#endif
18
e30285ab 19#if wxUSE_MDI_ARCHITECTURE
2108f33a 20
2108f33a
JS
21#include "wx/docmdi.h"
22
23/*
24 * Docview MDI parent frame
25 */
26
27IMPLEMENT_CLASS(wxDocMDIParentFrame, wxMDIParentFrame)
28
29BEGIN_EVENT_TABLE(wxDocMDIParentFrame, wxMDIParentFrame)
30 EVT_MENU(wxID_EXIT, wxDocMDIParentFrame::OnExit)
f7bd2698 31 EVT_MENU_RANGE(wxID_FILE1, wxID_FILE9, wxDocMDIParentFrame::OnMRUFile)
387a3b02 32 EVT_CLOSE(wxDocMDIParentFrame::OnCloseWindow)
2108f33a
JS
33END_EVENT_TABLE()
34
f0003d29
JS
35wxDocMDIParentFrame::wxDocMDIParentFrame()
36{
37 Init();
38}
39
2108f33a 40wxDocMDIParentFrame::wxDocMDIParentFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title,
f0003d29
JS
41 const wxPoint& pos, const wxSize& size, long style, const wxString& name)
42{
43 Init();
44 Create(manager, frame, id, title, pos, size, style, name);
45}
46
47bool wxDocMDIParentFrame::Create(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title,
48 const wxPoint& pos, const wxSize& size, long style, const wxString& name)
2108f33a 49{
f0003d29
JS
50 m_docManager = manager;
51 return wxMDIParentFrame::Create(frame, id, title, pos, size, style, name);
2108f33a
JS
52}
53
54void wxDocMDIParentFrame::OnExit(wxCommandEvent& WXUNUSED(event))
55{
56 Close();
57}
58
f0003d29
JS
59void wxDocMDIParentFrame::Init()
60{
61 m_docManager = NULL;
62}
63
2108f33a
JS
64void wxDocMDIParentFrame::OnMRUFile(wxCommandEvent& event)
65{
b494c48b
WS
66 wxString f(m_docManager->GetHistoryFile(event.GetId() - wxID_FILE1));
67 if (!f.empty())
2108f33a
JS
68 (void)m_docManager->CreateDocument(f, wxDOC_SILENT);
69}
70
8cc208e3 71bool wxDocMDIParentFrame::TryBefore(wxEvent& event)
2108f33a 72{
cd60273b
VZ
73 if ( m_docManager && m_docManager->ProcessEventHere(event) )
74 return true;
75
8cc208e3 76 return wxMDIParentFrame::TryBefore(event);
2108f33a
JS
77}
78
387a3b02 79void wxDocMDIParentFrame::OnCloseWindow(wxCloseEvent& event)
2108f33a 80{
387a3b02
JS
81 if (m_docManager->Clear(!event.CanVeto()))
82 {
83 this->Destroy();
84 }
85 else
86 event.Veto();
2108f33a
JS
87}
88
89
2108f33a
JS
90IMPLEMENT_CLASS(wxDocMDIChildFrame, wxMDIChildFrame)
91
a9e2e6e5 92#endif // wxUSE_DOC_VIEW_ARCHITECTURE
2108f33a 93