]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/docview.h
Resolve ambiguity between GetClientXXX() methods in wxOSX wxComboBox.
[wxWidgets.git] / interface / wx / docview.h
index 09a4db25b1a7653d83c8cae5233cc5523ee4fc82..5d5f2662dcb61e32f3b6c55f96b02408d4f7da4b 100644 (file)
@@ -3,7 +3,7 @@
 // Purpose:     interface of various doc/view framework classes
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Purpose:     interface of various doc/view framework classes
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /**
 /////////////////////////////////////////////////////////////////////////////
 
 /**
@@ -43,13 +43,13 @@ public:
             A name that should be unique for a given view.
         @param docClassInfo
             A pointer to the run-time document class information as returned by
             A name that should be unique for a given view.
         @param docClassInfo
             A pointer to the run-time document class information as returned by
-            the CLASSINFO() macro, e.g. CLASSINFO(MyDocumentClass). If this is
+            the wxCLASSINFO() macro, e.g. wxCLASSINFO(MyDocumentClass). If this is
             not supplied, you will need to derive a new wxDocTemplate class and
             override the CreateDocument() member to return a new document
             instance on demand.
         @param viewClassInfo
             A pointer to the run-time view class information as returned by the
             not supplied, you will need to derive a new wxDocTemplate class and
             override the CreateDocument() member to return a new document
             instance on demand.
         @param viewClassInfo
             A pointer to the run-time view class information as returned by the
-            CLASSINFO() macro, e.g. CLASSINFO(MyViewClass). If this is not
+            wxCLASSINFO() macro, e.g. wxCLASSINFO(MyViewClass). If this is not
             supplied, you will need to derive a new wxDocTemplate class and
             override the CreateView() member to return a new view instance on
             demand.
             supplied, you will need to derive a new wxDocTemplate class and
             override the CreateView() member to return a new view instance on
             demand.
@@ -176,6 +176,15 @@ public:
     */
     long GetFlags() const;
 
     */
     long GetFlags() const;
 
+    /**
+        Returns a reference to the wxPageSetupDialogData associated with the
+        printing operations of this document manager.
+    */
+    //@{
+    wxPageSetupDialogData& GetPageSetupDialogData();
+    const wxPageSetupDialogData& GetPageSetupDialogData() const;
+    //@}
+
     /**
         Returns the run-time class information that allows view instances
         to be constructed dynamically, as passed to the document template
     /**
         Returns the run-time class information that allows view instances
         to be constructed dynamically, as passed to the document template
@@ -363,6 +372,27 @@ public:
     */
     void AssociateTemplate(wxDocTemplate* temp);
 
     */
     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.
 
     /**
         Closes the specified document.
 
@@ -662,7 +692,7 @@ public:
         @param noTemplates
             Number of templates being pointed to by the templates pointer.
         @param sort
         @param noTemplates
             Number of templates being pointed to by the templates pointer.
         @param sort
-            If more than one template is passed in in templates, then this
+            If more than one template is passed into templates, then this
             parameter indicates whether the list of templates that the user
             will have to choose from is sorted or not when shown the choice box
             dialog. Default is @false.
             parameter indicates whether the list of templates that the user
             will have to choose from is sorted or not when shown the choice box
             dialog. Default is @false.
@@ -688,7 +718,7 @@ public:
         @param noTemplates
             Number of templates being pointed to by the templates pointer.
         @param sort
         @param noTemplates
             Number of templates being pointed to by the templates pointer.
         @param sort
-            If more than one template is passed in in templates, then this
+            If more than one template is passed into templates, then this
             parameter indicates whether the list of templates that the user
             will have to choose from is sorted or not when shown the choice box
             dialog. Default is @false.
             parameter indicates whether the list of templates that the user
             will have to choose from is sorted or not when shown the choice box
             dialog. Default is @false.
@@ -717,6 +747,38 @@ public:
     */
     void SetMaxDocsOpen(int n);
 
     */
     void SetMaxDocsOpen(int n);
 
+
+protected:
+    /**
+        Called when a file selected from the MRU list doesn't exist any more.
+
+        The default behaviour is to remove the file from the MRU (most recently
+        used) files list and the corresponding menu and notify the user about
+        it but this method can be overridden to customize it.
+
+        For example, an application may want to just give an error about the
+        missing file @a filename but not remove it from the file history. Or it
+        could ask the user whether the file should be kept or removed.
+
+        Notice that this method is called only if the file selected by user
+        from the MRU files in the menu doesn't exist, but not if opening it
+        failed for any other reason because in the latter case the default
+        behaviour of removing the file from the MRU list is inappropriate.
+        If you still want to do it, you would need to do it by calling
+        RemoveFileFromHistory() explicitly in the part of the file opening code
+        that may fail.
+
+        @since 2.9.3
+
+        @param n
+            The index of the file in the MRU list, it can be passed to
+            RemoveFileFromHistory() to remove this file from the list.
+        @param filename
+            The full name of the file.
+     */
+    virtual void OnMRUFileNotExist(unsigned n, const wxString& filename);
+
+
     /**
         The currently active view.
     */
     /**
         The currently active view.
     */
@@ -738,19 +800,16 @@ public:
     */
     wxFileHistory* m_fileHistory;
 
     */
     wxFileHistory* m_fileHistory;
 
-    /**
-        Stores the flags passed to the constructor.
-    */
-    long m_flags;
-
     /**
         The directory last selected by the user when opening a file.
     */
     /**
         The directory last selected by the user when opening a file.
     */
-    wxFileHistory* m_fileHistory;
+    wxString m_lastDirectory;
 
     /**
         Stores the maximum number of documents that can be opened before
 
     /**
         Stores the maximum number of documents that can be opened before
-        existing documents are closed. By default, this is 10,000.
+        existing documents are closed.
+
+        By default, this is @c INT_MAX i.e. practically unlimited.
     */
     int m_maxDocsOpen;
 };
     */
     int m_maxDocsOpen;
 };
@@ -1100,9 +1159,25 @@ public:
     @class wxDocument
 
     The document class can be used to model an application's file-based data.
     @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.
 
     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}
 
     @library{wxcore}
     @category{docview}
 
@@ -1114,8 +1189,14 @@ public:
     /**
         Constructor. Define your own default constructor to initialize
         application-specific data.
     /**
         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.
 
     /**
         Destructor. Removes itself from the document manager.
@@ -1248,6 +1329,18 @@ public:
     const wxList& GetViews() const;
     //@}
 
     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
     /**
         Returns @true if the document has been modified since the last save,
         @false otherwise. You may need to override this if your document view