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
This commit is contained in:
Julian Smart
2004-06-03 14:19:39 +00:00
parent 971562cb51
commit 217b71400f
3 changed files with 29 additions and 2 deletions

View File

@@ -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 a wxClassInfo parameter to the template constructor, you will need to override this
function to return an appropriate document instance. function to return an appropriate document instance.
This function calls wxDocTemplate::InitDocument which in turns
calls wxDocument::OnCreate.
\membersection{wxDocTemplate::CreateView} \membersection{wxDocTemplate::CreateView}
\func{wxView *}{CreateView}{\param{wxDocument *}{doc}, \param{long}{ flags = 0}} \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. 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} \membersection{wxDocTemplate::IsVisible}
\func{bool}{IsVisible}{\void} \func{bool}{IsVisible}{\void}

View File

@@ -254,6 +254,10 @@ public:
virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); virtual wxDocument *CreateDocument(const wxString& path, long flags = 0);
virtual wxView *CreateView(wxDocument *doc, 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 GetDefaultExtension() const { return m_defaultExt; };
wxString GetDescription() const { return m_description; } wxString GetDescription() const { return m_description; }
wxString GetDirectory() const { return m_directory; }; wxString GetDirectory() const { return m_directory; };

View File

@@ -691,18 +691,31 @@ wxDocument *wxDocTemplate::CreateDocument(const wxString& path, long flags)
if (!m_docClassInfo) if (!m_docClassInfo)
return (wxDocument *) NULL; return (wxDocument *) NULL;
wxDocument *doc = (wxDocument *)m_docClassInfo->CreateObject(); 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->SetFilename(path);
doc->SetDocumentTemplate(this); doc->SetDocumentTemplate(this);
GetDocumentManager()->AddDocument(doc); GetDocumentManager()->AddDocument(doc);
doc->SetCommandProcessor(doc->OnCreateCommandProcessor()); doc->SetCommandProcessor(doc->OnCreateCommandProcessor());
if (doc->OnCreate(path, flags)) if (doc->OnCreate(path, flags))
return doc; return true;
else else
{ {
if (GetDocumentManager()->GetDocuments().Member(doc)) if (GetDocumentManager()->GetDocuments().Member(doc))
doc->DeleteAllViews(); doc->DeleteAllViews();
return (wxDocument *) NULL; return false;
} }
} }