Add support for child documents to docview framework.

Child documents are virtual documents corresponding to parts of their parent
document which can't be saved nor loaded independently of their parent and are
closed when the parent is closed.

This finally makes some use of wxDocument::m_documentParent field which was
always present in the docview code but never used before.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68051 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-06-27 00:09:37 +00:00
parent 9f3b6638e4
commit 4db97e24f5
8 changed files with 255 additions and 6 deletions

View File

@@ -1130,9 +1130,25 @@ public:
@class wxDocument
The document class can be used to model an application's file-based data.
It is part of the document/view framework supported by wxWidgets, and
cooperates with the wxView, wxDocTemplate and wxDocManager classes.
A normal document is the one created without parent document and is
associated with a disk file. Since version 2.9.2 wxWidgets also supports a
special kind of documents called <em>child documents</em> which are virtual
in the sense that they do not correspond to a file but rather to a part of
their parent document. Because of this, the child documents can't be
created directly by user but can only be created by the parent document
(usually when it's being created itself). They also can't be independently
saved. A child document has its own view with the corresponding window.
This view can be closed by user but, importantly, is also automatically
closed when its parent document is closed. Thus, child documents may be
convenient for creating additional windows which need to be closed when the
main document is. The docview sample demonstrates this use of child
documents by creating a child document containing the information about the
parameters of the image opened in the main document.
@library{wxcore}
@category{docview}
@@ -1144,8 +1160,14 @@ public:
/**
Constructor. Define your own default constructor to initialize
application-specific data.
@param parent
Specifying a non-@c NULL parent document here makes this document a
special <em>child document</em>, see their description in the class
documentation. Notice that this parameter exists but is ignored in
wxWidgets versions prior to 2.9.1.
*/
wxDocument(wxDocument* parent = 0);
wxDocument(wxDocument* parent = NULL);
/**
Destructor. Removes itself from the document manager.
@@ -1278,6 +1300,18 @@ public:
const wxList& GetViews() const;
//@}
/**
Returns true if this document is a child document corresponding to a
part of the parent document and not a disk file as usual.
This method can be used to check whether file-related operations make
sense for this document as they only apply to top-level documents and
not child ones.
@since 2.9.2
*/
bool IsChildDocument() const;
/**
Returns @true if the document has been modified since the last save,
@false otherwise. You may need to override this if your document view