]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxDocManager::FindTemplate() method.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 24 Oct 2010 23:03:38 +0000 (23:03 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 24 Oct 2010 23:03:38 +0000 (23:03 +0000)
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

docs/changes.txt
include/wx/docview.h
interface/wx/docview.h
src/common/docview.cpp

index b34dfa11bc6ef07e87116fb15de5810f2daa53c4..69bb9a4e1e8ddd59df9eb07edd61ca9e383899cd 100644 (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:
 
index 8a400b74c601d9cf758bd42be225956058d8b26d..78038deaeb1be5e41781d122d860529f21845959 100644 (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; }
index 360c40e25897be14c02e25c910614b44ae83f978..14bf99ba6a9964579f41522e8ca169d344754825 100644 (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.
 
index e2ff18c915eb8c32a2ebc1b6490076f434dde366..86d1783490db08f66d384bde644ce2ca7aae9da0 100644 (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)
 {