From 217b71400f0ee74b2f472ef724172dc7f1459e4e Mon Sep 17 00:00:00 2001 From: Julian Smart <julian@anthemion.co.uk> Date: Thu, 3 Jun 2004 14:19:39 +0000 Subject: [PATCH] Separated creation and initialisation of a document via its doc template. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/doctempl.tex | 10 ++++++++++ include/wx/docview.h | 4 ++++ src/common/docview.cpp | 17 +++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/latex/wx/doctempl.tex b/docs/latex/wx/doctempl.tex index ebae77f6ef..afaaea357e 100644 --- a/docs/latex/wx/doctempl.tex +++ b/docs/latex/wx/doctempl.tex @@ -154,6 +154,9 @@ Creates a new instance of the associated document class. If you have not supplie a wxClassInfo parameter to the template constructor, you will need to override this function to return an appropriate document instance. +This function calls wxDocTemplate::InitDocument which in turns +calls wxDocument::OnCreate. + \membersection{wxDocTemplate::CreateView} \func{wxView *}{CreateView}{\param{wxDocument *}{doc}, \param{long}{ flags = 0}} @@ -210,6 +213,13 @@ Returns the flags, as passed to the document template constructor. Returns the view type name, as passed to the document template constructor. +\membersection{wxDocTemplate::InitDocument} + +\func{bool}{InitDocument}{\param{wxDocument* }{doc}, \param{const wxString\& }{path}, \param{long}{ flags = 0}} + +Initialises the document, calling wxDocument::OnCreate. This is called from +wxDocTemplate::CreateDocument. + \membersection{wxDocTemplate::IsVisible} \func{bool}{IsVisible}{\void} diff --git a/include/wx/docview.h b/include/wx/docview.h index ef574fd486..08a9a3ce44 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -254,6 +254,10 @@ public: virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); virtual wxView *CreateView(wxDocument *doc, long flags = 0); + // Helper method for CreateDocument; also allows you to do your own document + // creation + virtual bool InitDocument(wxDocument* doc, const wxString& path, long flags = 0); + wxString GetDefaultExtension() const { return m_defaultExt; }; wxString GetDescription() const { return m_description; } wxString GetDirectory() const { return m_directory; }; diff --git a/src/common/docview.cpp b/src/common/docview.cpp index a9687e0327..f77b00cdbd 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -691,18 +691,31 @@ wxDocument *wxDocTemplate::CreateDocument(const wxString& path, long flags) if (!m_docClassInfo) return (wxDocument *) NULL; wxDocument *doc = (wxDocument *)m_docClassInfo->CreateObject(); + + if (InitDocument(doc, path, flags)) + { + return doc; + } + else + { + return (wxDocument *) NULL; + } +} + +bool wxDocTemplate::InitDocument(wxDocument* doc, const wxString& path, long flags) +{ doc->SetFilename(path); doc->SetDocumentTemplate(this); GetDocumentManager()->AddDocument(doc); doc->SetCommandProcessor(doc->OnCreateCommandProcessor()); if (doc->OnCreate(path, flags)) - return doc; + return true; else { if (GetDocumentManager()->GetDocuments().Member(doc)) doc->DeleteAllViews(); - return (wxDocument *) NULL; + return false; } } -- 2.45.2