Add wxDocManager::Get{Views,Documents,Templates}Vector().

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
This commit is contained in:
Vadim Zeitlin
2012-11-24 17:37:12 +00:00
parent 102540a046
commit 93d0805b35
5 changed files with 67 additions and 8 deletions

View File

@@ -687,6 +687,7 @@ All (GUI):
- Added support for Korean Johab and Vietnamese encodings (jank9201). - Added support for Korean Johab and Vietnamese encodings (jank9201).
- Fix off by 1 bug with setting font size in points in wxHTML (gevorg). - Fix off by 1 bug with setting font size in points in wxHTML (gevorg).
- Fix return value of wxGenericListCtrl::InsertColumn() (Sebastian Walderich). - Fix return value of wxGenericListCtrl::InsertColumn() (Sebastian Walderich).
- Add wxDocManager::Get{Views,Documents,Templates}Vector() (troelsk).
GTK: GTK:

View File

@@ -60,6 +60,12 @@ enum
#define wxMAX_FILE_HISTORY 9 #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 class WXDLLIMPEXP_CORE wxDocument : public wxEvtHandler
{ {
public: public:
@@ -140,8 +146,13 @@ public:
virtual bool AddView(wxView *view); virtual bool AddView(wxView *view);
virtual bool RemoveView(wxView *view); virtual bool RemoveView(wxView *view);
#ifndef __VISUALC6__
wxViewVector GetViewsVector() const { return m_documentViews.AsVector<wxView*>(); }
#endif
wxList& GetViews() { return m_documentViews; } wxList& GetViews() { return m_documentViews; }
const wxList& GetViews() const { return m_documentViews; } const wxList& GetViews() const { return m_documentViews; }
wxView *GetFirstView() const; wxView *GetFirstView() const;
virtual void UpdateAllViews(wxView *sender = NULL, wxObject *hint = NULL); virtual void UpdateAllViews(wxView *sender = NULL, wxObject *hint = NULL);
@@ -455,6 +466,10 @@ public:
virtual void ActivateView(wxView *view, bool activate = true); virtual void ActivateView(wxView *view, bool activate = true);
virtual wxView *GetCurrentView() const { return m_currentView; } 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& GetDocuments() { return m_docs; }
wxList& GetTemplates() { return m_templates; } wxList& GetTemplates() { return m_templates; }

View File

@@ -6,6 +6,27 @@
// Licence: wxWindows licence // 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 @class wxDocTemplate
@@ -534,6 +555,20 @@ public:
*/ */
virtual wxView* GetCurrentView() const; 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. Returns a reference to the list of documents.
*/ */
@@ -1299,6 +1334,13 @@ public:
*/ */
virtual wxString GetUserReadableName() const; 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. Returns the list whose elements are the views on the document.

View File

@@ -385,16 +385,19 @@ void MyApp::OnAbout(wxCommandEvent& WXUNUSED(event))
default: default:
wxFAIL_MSG( "unknown mode "); wxFAIL_MSG( "unknown mode ");
} }
const wxDocVector
docList = wxDocManager::GetDocumentManager()->GetDocumentsVector();
wxLogMessage wxLogMessage
( (
"This is the wxWidgets Document/View Sample\n" "This is the wxWidgets Document/View Sample\n"
"running in %s mode.\n" "running in %s mode.\n"
"%d open documents.\n"
"\n" "\n"
"Authors: Julian Smart, Vadim Zeitlin\n" "Authors: Julian Smart, Vadim Zeitlin\n"
"\n" "\n"
"Usage: docview [--{mdi,sdi,single}]", "Usage: docview [--{mdi,sdi,single}]",
modeName modeName,
static_cast<int>(docList.size())
); );
} }

View File

@@ -76,8 +76,6 @@
#include "wx/wfstream.h" #include "wx/wfstream.h"
#endif #endif
typedef wxVector<wxDocTemplate *> wxDocTemplates;
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxWidgets macros // wxWidgets macros
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -1384,11 +1382,11 @@ namespace
{ {
// helper function: return only the visible templates // helper function: return only the visible templates
wxDocTemplates GetVisibleTemplates(const wxList& allTemplates) wxDocTemplateVector GetVisibleTemplates(const wxList& allTemplates)
{ {
// select only the visible templates // select only the visible templates
const size_t totalNumTemplates = allTemplates.GetCount(); const size_t totalNumTemplates = allTemplates.GetCount();
wxDocTemplates templates; wxDocTemplateVector templates;
if ( totalNumTemplates ) if ( totalNumTemplates )
{ {
templates.reserve(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 // this ought to be const but SelectDocumentType/Path() are not
// const-correct and can't be changed as, being virtual, this risks // const-correct and can't be changed as, being virtual, this risks
// breaking user code overriding them // breaking user code overriding them
wxDocTemplates templates(GetVisibleTemplates(m_templates)); wxDocTemplateVector templates(GetVisibleTemplates(m_templates));
const size_t numTemplates = templates.size(); const size_t numTemplates = templates.size();
if ( !numTemplates ) if ( !numTemplates )
{ {
@@ -1532,7 +1530,7 @@ wxDocument *wxDocManager::CreateDocument(const wxString& pathOrig, long flags)
wxView *wxDocManager::CreateView(wxDocument *doc, 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(); const size_t numTemplates = templates.size();
if ( numTemplates == 0 ) if ( numTemplates == 0 )