Add wxDocManager::FindTemplate() method.

This allows to find the template corresponding to the document of the given
class.

Closes #12170.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65915 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2010-10-24 23:03:38 +00:00
parent 35f82b01cf
commit a70d268a1b
4 changed files with 39 additions and 0 deletions

View File

@ -425,6 +425,7 @@ All (GUI):
- Restore text drag-and-drop in wxSTC broken by Scintilla 2 update (Jens Lody).
- Improve wxGTK print/page setup dialog (rafravago).
- Added wxToolbook XRC handler (Andrea Zanellato).
- Added wxDocManager::FindTemplate() (troelsk).
MSW:

View File

@ -414,6 +414,9 @@ public:
void AssociateTemplate(wxDocTemplate *temp);
void DisassociateTemplate(wxDocTemplate *temp);
// Find template from document class info, may return NULL.
wxDocTemplate* FindTemplate(const wxClassInfo* documentClassInfo);
wxDocument *GetCurrentDocument() const;
void SetMaxDocsOpen(int n) { m_maxDocsOpen = n; }

View File

@ -363,6 +363,27 @@ public:
*/
void AssociateTemplate(wxDocTemplate* temp);
/**
Search for a particular document template.
Example:
@code
// creating a document instance of the specified document type:
m_doc = (MyDoc*)docManager->FindTemplate(CLASSINFO(MyDoc))->
CreateDocument(wxEmptyString, wxDOC_SILENT);
@endcode
@param classinfo
Class info of a document class for which a wxDocTemplate had been
previously created.
@return
Pointer to a wxDocTemplate, or @NULL if none found.
@since 2.9.2
*/
wxDocTemplate* FindTemplate(const wxClassInfo* classinfo);
/**
Closes the specified document.

View File

@ -1894,6 +1894,20 @@ void wxDocManager::DisassociateTemplate(wxDocTemplate *temp)
m_templates.DeleteObject(temp);
}
wxDocTemplate* wxDocManager::FindTemplate(const wxClassInfo* classinfo)
{
for ( wxList::compatibility_iterator node = m_templates.GetFirst();
node;
node = node->GetNext() )
{
wxDocTemplate* t = wxStaticCast(node->GetData(), wxDocTemplate);
if ( t->GetDocClassInfo() == classinfo )
return t;
}
return NULL;
}
// Add and remove a document from the manager's list
void wxDocManager::AddDocument(wxDocument *doc)
{