]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxDocManager::Get{Views,Documents,Templates}Vector().
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Nov 2012 17:37:12 +0000 (17:37 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 24 Nov 2012 17:37:12 +0000 (17:37 +0000)
Add accessors returning more convenient wxVectors to supplement the existing
ones giving access to internally used wxLists.

Closes #14814.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

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

index 38b75000a38198d8efb227ae81fbd78623c21637..f3b0434f2a857ea4fd85832251bac741ee272b33 100644 (file)
@@ -687,6 +687,7 @@ All (GUI):
 - Added support for Korean Johab and Vietnamese encodings (jank9201).
 - Fix off by 1 bug with setting font size in points in wxHTML (gevorg).
 - Fix return value of wxGenericListCtrl::InsertColumn() (Sebastian Walderich).
+- Add wxDocManager::Get{Views,Documents,Templates}Vector() (troelsk).
 
 GTK:
 
index 9b8cfa73544e10e9987090bd03d14270f7371cad..f4ecc6895025bf97e801cc02a189e904f037ca03 100644 (file)
@@ -60,6 +60,12 @@ enum
 
 #define wxMAX_FILE_HISTORY 9
 
+#ifndef __VISUALC6__
+typedef wxVector<wxDocument*> wxDocVector;
+typedef wxVector<wxView*> wxViewVector;
+typedef wxVector<wxDocTemplate*> wxDocTemplateVector;
+#endif
+
 class WXDLLIMPEXP_CORE wxDocument : public wxEvtHandler
 {
 public:
@@ -140,8 +146,13 @@ public:
 
     virtual bool AddView(wxView *view);
     virtual bool RemoveView(wxView *view);
+
+#ifndef __VISUALC6__
+    wxViewVector GetViewsVector() const { return m_documentViews.AsVector<wxView*>(); }
+#endif
     wxList& GetViews() { return m_documentViews; }
     const wxList& GetViews() const { return m_documentViews; }
+
     wxView *GetFirstView() const;
 
     virtual void UpdateAllViews(wxView *sender = NULL, wxObject *hint = NULL);
@@ -455,6 +466,10 @@ public:
     virtual void ActivateView(wxView *view, bool activate = true);
     virtual wxView *GetCurrentView() const { return m_currentView; }
 
+#ifndef __VISUALC6__
+    wxDocVector GetDocumentsVector() const { return m_docs.AsVector<wxDocument*>(); }
+    wxDocTemplateVector GetTemplatesVector() const { return m_templates.AsVector<wxDocTemplate*>(); }
+#endif
     wxList& GetDocuments() { return m_docs; }
     wxList& GetTemplates() { return m_templates; }
 
index 848c987dea0f954a4969657316c2aa1115d41e28..13d8b218fe32880d289aa48fd2dcf106f41acd76 100644 (file)
@@ -6,6 +6,27 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+/**
+    A vector of wxDocument pointers.
+
+    @since 2.9.5
+*/
+typedef wxVector<wxDocument*> wxDocVector;
+
+/**
+    A vector of wxView pointers.
+
+    @since 2.9.5
+*/
+typedef wxVector<wxView*> wxViewVector;
+
+/**
+    A vector of wxDocTemplate pointers.
+
+    @since 2.9.5
+*/
+typedef wxVector<wxDocTemplate*> wxDocTemplateVector;
+
 /**
     @class wxDocTemplate
 
@@ -534,6 +555,20 @@ public:
     */
     virtual wxView* GetCurrentView() const;
 
+    /**
+        Returns a vector of wxDocument pointers.
+
+        @since 2.9.5
+    */
+    wxDocVector GetDocumentsVector() const;
+
+    /**
+        Returns a vector of wxDocTemplate pointers.
+
+        @since 2.9.5
+    */
+    wxDocTemplateVector GetTemplatesVector() const;
+
     /**
         Returns a reference to the list of documents.
     */
@@ -1299,6 +1334,13 @@ public:
     */
     virtual wxString GetUserReadableName() const;
 
+    /**
+        Returns a vector of wxView pointers.
+
+        @since 2.9.5
+    */
+    wxViewVector GetViewsVector() const;
+
     //@{
     /**
         Returns the list whose elements are the views on the document.
index 6c11e54648932fcd6eba6e555d24ca185b72837f..7c305d7e57d2b7d3de6b9532cd9ca066f47ec752 100644 (file)
@@ -385,16 +385,19 @@ void MyApp::OnAbout(wxCommandEvent& WXUNUSED(event))
         default:
             wxFAIL_MSG( "unknown mode ");
     }
+    const wxDocVector
+      docList = wxDocManager::GetDocumentManager()->GetDocumentsVector();
 
     wxLogMessage
     (
         "This is the wxWidgets Document/View Sample\n"
         "running in %s mode.\n"
+        "%d open documents.\n"
         "\n"
         "Authors: Julian Smart, Vadim Zeitlin\n"
         "\n"
         "Usage: docview [--{mdi,sdi,single}]",
-        modeName
+        modeName,
+        static_cast<int>(docList.size())
     );
 }
-
index 8ed6b129aaf1deb94fd699058af14ef691ef78c4..849a3a275441c4118bb938be714aa01ffd2172fb 100644 (file)
@@ -76,8 +76,6 @@
     #include "wx/wfstream.h"
 #endif
 
-typedef wxVector<wxDocTemplate *> wxDocTemplates;
-
 // ----------------------------------------------------------------------------
 // wxWidgets macros
 // ----------------------------------------------------------------------------
@@ -1384,11 +1382,11 @@ namespace
 {
 
 // helper function: return only the visible templates
-wxDocTemplates GetVisibleTemplates(const wxList& allTemplates)
+wxDocTemplateVector GetVisibleTemplates(const wxList& allTemplates)
 {
     // select only the visible templates
     const size_t totalNumTemplates = allTemplates.GetCount();
-    wxDocTemplates templates;
+    wxDocTemplateVector templates;
     if ( totalNumTemplates )
     {
         templates.reserve(totalNumTemplates);
@@ -1425,7 +1423,7 @@ wxDocument *wxDocManager::CreateDocument(const wxString& pathOrig, long flags)
     // this ought to be const but SelectDocumentType/Path() are not
     // const-correct and can't be changed as, being virtual, this risks
     // breaking user code overriding them
-    wxDocTemplates templates(GetVisibleTemplates(m_templates));
+    wxDocTemplateVector templates(GetVisibleTemplates(m_templates));
     const size_t numTemplates = templates.size();
     if ( !numTemplates )
     {
@@ -1532,7 +1530,7 @@ wxDocument *wxDocManager::CreateDocument(const wxString& pathOrig, long flags)
 
 wxView *wxDocManager::CreateView(wxDocument *doc, long flags)
 {
-    wxDocTemplates templates(GetVisibleTemplates(m_templates));
+    wxDocTemplateVector templates(GetVisibleTemplates(m_templates));
     const size_t numTemplates = templates.size();
 
     if ( numTemplates == 0 )