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:
@@ -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}
|
||||||
|
@@ -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; };
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user