| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        docview.h
 
- // Purpose:     interface of various doc/view framework classes
 
- // Author:      wxWidgets team
 
- // 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
 
-     The wxDocTemplate class is used to model the relationship between a
 
-     document class and a view class.
 
-     @library{wxcore}
 
-     @category{docview}
 
-     @see @ref overview_docview_wxdoctemplate, wxDocument, wxView
 
- */
 
- class wxDocTemplate : public wxObject
 
- {
 
- public:
 
-     /**
 
-         Constructor. Create instances dynamically near the start of your
 
-         application after creating a wxDocManager instance, and before doing
 
-         any document or view operations.
 
-         @param manager
 
-             The document manager object which manages this template.
 
-         @param descr
 
-             A short description of what the template is for. This string will
 
-             be displayed in the file filter list of Windows file selectors.
 
-         @param filter
 
-             An appropriate file filter such as "*.txt".
 
-         @param dir
 
-             The default directory to use for file selectors.
 
-         @param ext
 
-             The default file extension (such as "txt").
 
-         @param docTypeName
 
-             A name that should be unique for a given type of document, used for
 
-             gathering a list of views relevant to a particular document.
 
-         @param viewTypeName
 
-             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 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
 
-             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.
 
-         @param flags
 
-             A bit list of the following:
 
-             - wxTEMPLATE_VISIBLE       - The template may be displayed to the
 
-                                          user in dialogs.
 
-             - wxTEMPLATE_INVISIBLE     - The template may not be displayed to
 
-                                          the user in dialogs.
 
-             - wxDEFAULT_TEMPLATE_FLAGS - Defined as wxTEMPLATE_VISIBLE.
 
-         @beginWxPerlOnly
 
-         In wxPerl @a docClassInfo and @a viewClassInfo can be either
 
-         @c Wx::ClassInfo objects or strings containing the name of the
 
-         perl packages which are to be used as @c Wx::Document and
 
-         @c Wx::View classes (they must have a constructor named new);
 
-         as an example:
 
-         - Wx::DocTemplate->new(docmgr, descr, filter, dir, ext,
 
-           docTypeName, viewTypeName, docClassInfo, viewClassInfo,
 
-           flags): will construct document and view objects from the
 
-           class information.
 
-         - Wx::DocTemplate->new(docmgr, descr, filter, dir, ext,
 
-           docTypeName, viewTypeName, docClassName, viewClassName,
 
-           flags): will construct document and view objects from perl
 
-           packages.
 
-         - Wx::DocTemplate->new(docmgr, descr, filter, dir, ext,
 
-           docTypeName, viewTypeName):
 
-           in this case @c Wx::DocTemplate::CreateDocument() and
 
-           @c Wx::DocTemplate::CreateView() must be overridden
 
-         @endWxPerlOnly
 
-     */
 
-     wxDocTemplate(wxDocManager* manager, const wxString& descr,
 
-                   const wxString& filter, const wxString& dir,
 
-                   const wxString& ext, const wxString& docTypeName,
 
-                   const wxString& viewTypeName, wxClassInfo* docClassInfo = 0,
 
-                   wxClassInfo* viewClassInfo = 0,
 
-                   long flags = wxTEMPLATE_VISIBLE);
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxDocTemplate();
 
-     /**
 
-         Creates a new instance of the associated document class. If you have
 
-         not supplied a wxClassInfo parameter to the template constructor, you
 
-         will need to override this function to return an appropriate document
 
-         instance.
 
-         This function calls InitDocument() which in turns calls
 
-         wxDocument::OnCreate().
 
-     */
 
-     virtual wxDocument* CreateDocument(const wxString& path, long flags = 0);
 
-     /**
 
-         Creates a new instance of the associated view class.
 
-         If you have not supplied a wxClassInfo parameter to the template
 
-         constructor, you will need to override this function to return an
 
-         appropriate view instance.
 
-         If the new view initialization fails, it must call
 
-         wxDocument::RemoveView() for consistency with the default behaviour of
 
-         this function.
 
-     */
 
-     virtual wxView* CreateView(wxDocument* doc, long flags = 0);
 
-     /**
 
-         This function implements the default (very primitive) format detection
 
-         which checks if the extension is that of the template.
 
-         @param path
 
-             The path to be checked against the template.
 
-     */
 
-     virtual bool FileMatchesTemplate(const wxString& path);
 
-     /**
 
-         Returns the default file extension for the document data, as passed to
 
-         the document template constructor.
 
-     */
 
-     wxString GetDefaultExtension() const;
 
-     /**
 
-         Returns the text description of this template, as passed to the
 
-         document template constructor.
 
-     */
 
-     wxString GetDescription() const;
 
-     /**
 
-         Returns the default directory, as passed to the document template
 
-         constructor.
 
-     */
 
-     wxString GetDirectory() const;
 
-     /**
 
-         Returns the run-time class information that allows document
 
-         instances to be constructed dynamically, as passed to the document
 
-         template constructor.
 
-     */
 
-     wxClassInfo* GetDocClassInfo() const;
 
-     /**
 
-         Returns a pointer to the document manager instance for which this
 
-         template was created.
 
-     */
 
-     wxDocManager* GetDocumentManager() const;
 
-     /**
 
-         Returns the document type name, as passed to the document template
 
-         constructor.
 
-     */
 
-     virtual wxString GetDocumentName() const;
 
-     /**
 
-         Returns the file filter, as passed to the document template
 
-         constructor.
 
-     */
 
-     wxString GetFileFilter() const;
 
-     /**
 
-         Returns the flags, as passed to the document template constructor.
 
-     */
 
-     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
 
-         constructor.
 
-     */
 
-     wxClassInfo* GetViewClassInfo() const;
 
-     /**
 
-         Returns the view type name, as passed to the document template
 
-         constructor.
 
-     */
 
-     virtual wxString GetViewName() const;
 
-     /**
 
-         Initialises the document, calling wxDocument::OnCreate().
 
-         This is called from CreateDocument().
 
-         If you override this method, notice that you must @em delete the @a doc
 
-         if its initialization fails for consistency with the default behaviour.
 
-         @param doc
 
-             The document to initialize.
 
-         @param path
 
-             The associated file path.
 
-         @param flags
 
-             Flags passed to CreateDocument().
 
-         @return
 
-             @true if the initialization was successful or @false if it failed
 
-             in which case @a doc should be deleted by this function.
 
-     */
 
-     virtual bool InitDocument(wxDocument* doc,
 
-                               const wxString& path,
 
-                               long flags = 0);
 
-     /**
 
-         Returns @true if the document template can be shown in user dialogs,
 
-         @false otherwise.
 
-     */
 
-     bool IsVisible() const;
 
-     /**
 
-         Sets the default file extension.
 
-     */
 
-     void SetDefaultExtension(const wxString& ext);
 
-     /**
 
-         Sets the template description.
 
-     */
 
-     void SetDescription(const wxString& descr);
 
-     /**
 
-         Sets the default directory.
 
-     */
 
-     void SetDirectory(const wxString& dir);
 
-     /**
 
-         Sets the pointer to the document manager instance for which this
 
-         template was created. Should not be called by the application.
 
-     */
 
-     void SetDocumentManager(wxDocManager* manager);
 
-     /**
 
-         Sets the file filter.
 
-     */
 
-     void SetFileFilter(const wxString& filter);
 
-     /**
 
-         Sets the internal document template flags (see the constructor
 
-         description for more details).
 
-     */
 
-     void SetFlags(long flags);
 
-     /**
 
-         The default extension for files of this type.
 
-     */
 
-     wxString m_defaultExt;
 
-     /**
 
-         A short description of this template.
 
-     */
 
-     wxString m_description;
 
-     /**
 
-         The default directory for files of this type.
 
-     */
 
-     wxString m_directory;
 
-     /**
 
-         Run-time class information that allows document instances to be
 
-         constructed dynamically.
 
-     */
 
-     wxClassInfo* m_docClassInfo;
 
-     /**
 
-         The named type of the document associated with this template.
 
-     */
 
-     wxString m_docTypeName;
 
-     /**
 
-         A pointer to the document manager for which this template was created.
 
-     */
 
-     wxDocTemplate* m_documentManager;
 
-     /**
 
-         The file filter (such as "*.txt") to be used in file selector dialogs.
 
-     */
 
-     wxString m_fileFilter;
 
-     /**
 
-         The flags passed to the constructor.
 
-     */
 
-     long m_flags;
 
-     /**
 
-         Run-time class information that allows view instances to be constructed
 
-         dynamically.
 
-     */
 
-     wxClassInfo* m_viewClassInfo;
 
-     /**
 
-         The named type of the view associated with this template.
 
-     */
 
-     wxString m_viewTypeName;
 
- };
 
- /**
 
-     @class wxDocManager
 
-     The wxDocManager class is part of the document/view framework supported by
 
-     wxWidgets, and cooperates with the wxView, wxDocument and wxDocTemplate
 
-     classes.
 
-     @library{wxcore}
 
-     @category{docview}
 
-     @see @ref overview_docview_wxdocmanager, wxDocument, wxView, wxDocTemplate,
 
-          wxFileHistory
 
- */
 
- class wxDocManager : public wxEvtHandler
 
- {
 
- public:
 
-     /**
 
-         Constructor. Create a document manager instance dynamically near the
 
-         start of your application before doing any document or view operations.
 
-         If @a initialize is @true, the Initialize() function will be called to
 
-         create a default history list object. If you derive from wxDocManager,
 
-         you may wish to call the base constructor with @false, and then call
 
-         Initialize() in your own constructor, to allow your own Initialize() or
 
-         OnCreateFileHistory functions to be called.
 
-         @param flags
 
-             Currently unused.
 
-         @param initialize
 
-             Indicates whether Initialize() should be called by this ctor.
 
-     */
 
-     wxDocManager(long flags = 0, bool initialize = true);
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxDocManager();
 
-     /**
 
-         Sets the current view.
 
-     */
 
-     virtual void ActivateView(wxView* doc, bool activate = true);
 
-     /**
 
-         Adds the document to the list of documents.
 
-     */
 
-     void AddDocument(wxDocument* doc);
 
-     /**
 
-         Adds a file to the file history list, if we have a pointer to an
 
-         appropriate file menu.
 
-     */
 
-     virtual void AddFileToHistory(const wxString& filename);
 
-     /**
 
-         Adds the template to the document manager's template list.
 
-     */
 
-     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);
 
-     /**
 
-         Search for the document corresponding to the given file.
 
-         @param path
 
-             Document file path.
 
-         @return
 
-             Pointer to a wxDocument, or @NULL if none found.
 
-         @since 2.9.5
 
-      */
 
-     wxDocument* FindDocumentByPath(const wxString& path) const;
 
-     /**
 
-         Closes the specified document.
 
-         If @a force is @true, the document is closed even if it has unsaved
 
-         changes.
 
-         @param doc
 
-             The document to close, must be non-@NULL.
 
-         @param force
 
-             If @true, close the document even if wxDocument::Close() returns
 
-             @false.
 
-         @return
 
-             @true if the document was closed or @false if closing it was
 
-             cancelled by user (only in @a force = @false case).
 
-      */
 
-     bool CloseDocument(wxDocument *doc, bool force = false);
 
-     /**
 
-         Closes all currently opened documents.
 
-         @see CloseDocument()
 
-     */
 
-     bool CloseDocuments(bool force = true);
 
-     /**
 
-         Creates a new document.
 
-         This function can either create a document corresponding to a new
 
-         file or to an already existing one depending on whether @c wxDOC_NEW is
 
-         specified in the @a flags.
 
-         By default, this function asks the user for the type of document to
 
-         open and the path to its file if it's not specified, i.e. if @a path is
 
-         empty. Specifying @c wxDOC_SILENT flag suppresses any prompts and means
 
-         that the @a path must be non-empty and there must be a registered
 
-         document template handling the extension of this file, otherwise a
 
-         warning message is logged and the function returns @NULL. Notice that
 
-         @c wxDOC_SILENT can be combined with @c wxDOC_NEW, however in this case
 
-         the @a path must still be specified, even if the file with this path
 
-         typically won't exist.
 
-         Finally notice that if this document manager was configured to allow
 
-         only a limited number of simultaneously opened documents using
 
-         SetMaxDocsOpen(), this function will try to close the oldest existing
 
-         document if this number was reached before creating a new document.
 
-         And if closing the old document fails (e.g. because it was vetoed by
 
-         user), this function fails as well.
 
-         @param path
 
-             Path to a file or an empty string. If the path is empty, the user
 
-             will be asked to select it (thus, this is incompatible with the use
 
-             of @c wxDOC_SILENT). The file should exist unless @a flags includes
 
-             @c wxDOC_NEW.
 
-         @param flags
 
-             By default, none. May include @c wxDOC_NEW to indicate that the new
 
-             document corresponds to a new file and not an existing one and
 
-             @c wxDOC_SILENT to suppress any dialogs asking the user about the
 
-             file path and type.
 
-         @return a new document object or @NULL on failure.
 
-     */
 
-     virtual wxDocument* CreateDocument(const wxString& path, long flags = 0);
 
-     /**
 
-         Creates an empty new document.
 
-         This is equivalent to calling CreateDocument() with @c wxDOC_NEW flags
 
-         and without the file name.
 
-      */
 
-     wxDocument *CreateNewDocument();
 
-     /**
 
-         Creates a new view for the given document. If more than one view is
 
-         allowed for the document (by virtue of multiple templates mentioning
 
-         the same document type), a choice of view is presented to the user.
 
-     */
 
-     virtual wxView* CreateView(wxDocument* doc, long flags = 0);
 
-     /**
 
-         Removes the template from the list of templates.
 
-     */
 
-     void DisassociateTemplate(wxDocTemplate* temp);
 
-     /**
 
-         Appends the files in the history list to all menus managed by the file
 
-         history object.
 
-     */
 
-     virtual void FileHistoryAddFilesToMenu();
 
-     /**
 
-         Appends the files in the history list to the given @a menu only.
 
-     */
 
-     virtual void FileHistoryAddFilesToMenu(wxMenu* menu);
 
-     /**
 
-         Loads the file history from a config object.
 
-         @see wxConfigBase
 
-     */
 
-     virtual void FileHistoryLoad(const wxConfigBase& config);
 
-     /**
 
-         Removes the given menu from the list of menus managed by the file
 
-         history object.
 
-     */
 
-     virtual void FileHistoryRemoveMenu(wxMenu* menu);
 
-     /**
 
-         Saves the file history into a config object. This must be called
 
-         explicitly by the application.
 
-         @see wxConfigBase
 
-     */
 
-     virtual void FileHistorySave(wxConfigBase& resourceFile);
 
-     /**
 
-         Use this menu for appending recently-visited document filenames, for
 
-         convenient access. Calling this function with a valid menu pointer
 
-         enables the history list functionality.
 
-         @note You can add multiple menus using this function, to be managed by
 
-               the file history object.
 
-     */
 
-     virtual void FileHistoryUseMenu(wxMenu* menu);
 
-     /**
 
-         Given a path, try to find template that matches the extension. This is
 
-         only an approximate method of finding a template for creating a
 
-         document.
 
-     */
 
-     virtual wxDocTemplate* FindTemplateForPath(const wxString& path);
 
-     /**
 
-         Returns the view to apply a user command to.
 
-         This method tries to find the view that the user wants to interact
 
-         with. It returns the same view as GetCurrentDocument() if there is any
 
-         currently active view but falls back to the first view of the first
 
-         document if there is no active view.
 
-         @since 2.9.5
 
-      */
 
-     wxView* GetAnyUsableView() const;
 
-     /**
 
-         Returns the document associated with the currently active view (if
 
-         any).
 
-     */
 
-     wxDocument* GetCurrentDocument() const;
 
-     /**
 
-         Returns the currently active view.
 
-         This method can return @NULL if no view is currently active.
 
-         @see GetAnyUsableView()
 
-     */
 
-     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.
 
-     */
 
-     wxList& GetDocuments();
 
-     /**
 
-         Returns a pointer to file history.
 
-     */
 
-     virtual wxFileHistory* GetFileHistory() const;
 
-     /**
 
-         Returns the number of files currently stored in the file history.
 
-     */
 
-     virtual size_t GetHistoryFilesCount() const;
 
-     /**
 
-         Returns the directory last selected by the user when opening a file.
 
-         Initially empty.
 
-     */
 
-     wxString GetLastDirectory() const;
 
-     /**
 
-         Returns the number of documents that can be open simultaneously.
 
-     */
 
-     int GetMaxDocsOpen() const;
 
-     /**
 
-         Returns a reference to the list of associated templates.
 
-     */
 
-     wxList& GetTemplates();
 
-     /**
 
-         Initializes data; currently just calls OnCreateFileHistory().
 
-         Some data cannot always be initialized in the constructor because the
 
-         programmer must be given the opportunity to override functionality. If
 
-         OnCreateFileHistory() was called from the constructor, an overridden
 
-         virtual OnCreateFileHistory() would not be called due to C++'s
 
-         'interesting' constructor semantics. In fact Initialize() @e is called
 
-         from the wxDocManager constructor, but this can be vetoed by passing
 
-         @false to the second argument, allowing the derived class's constructor
 
-         to call Initialize(), possibly calling a different
 
-         OnCreateFileHistory() from the default.
 
-         The bottom line: if you're not deriving from Initialize(), forget it
 
-         and construct wxDocManager with no arguments.
 
-     */
 
-     virtual bool Initialize();
 
-     /**
 
-         Return a string containing a suitable default name for a new document.
 
-         By default this is implemented by appending an integer counter to the
 
-         string @b unnamed but can be overridden in the derived classes to do
 
-         something more appropriate.
 
-     */
 
-     virtual wxString MakeNewDocumentName();
 
-     /**
 
-         A hook to allow a derived class to create a different type of file
 
-         history. Called from Initialize().
 
-     */
 
-     virtual wxFileHistory* OnCreateFileHistory();
 
-     /**
 
-         Closes and deletes the currently active document.
 
-     */
 
-     void OnFileClose(wxCommandEvent& event);
 
-     /**
 
-         Closes and deletes all the currently opened documents.
 
-     */
 
-     void OnFileCloseAll(wxCommandEvent& event);
 
-     /**
 
-         Creates a document from a list of templates (if more than one
 
-         template).
 
-     */
 
-     void OnFileNew(wxCommandEvent& event);
 
-     /**
 
-         Creates a new document and reads in the selected file.
 
-     */
 
-     void OnFileOpen(wxCommandEvent& event);
 
-     /**
 
-         Reverts the current document by calling wxDocument::Revert() for the
 
-         current document.
 
-     */
 
-     void OnFileRevert(wxCommandEvent& event);
 
-     /**
 
-         Saves the current document by calling wxDocument::Save() for the
 
-         current document.
 
-     */
 
-     void OnFileSave(wxCommandEvent& event);
 
-     /**
 
-         Calls wxDocument::SaveAs() for the current document.
 
-     */
 
-     void OnFileSaveAs(wxCommandEvent& event);
 
-     /**
 
-         Removes the document from the list of documents.
 
-     */
 
-     void RemoveDocument(wxDocument* doc);
 
-     /**
 
-         Under Windows, pops up a file selector with a list of filters
 
-         corresponding to document templates. The wxDocTemplate corresponding to
 
-         the selected file's extension is returned.
 
-         On other platforms, if there is more than one document template a
 
-         choice list is popped up, followed by a file selector.
 
-         This function is used in CreateDocument().
 
-         @beginWxPerlOnly
 
-         In wxPerl @a templates is a reference to a list of templates.
 
-         If you override this method in your document manager it must
 
-         return two values, eg:
 
-         @code
 
-         (doctemplate, path) = My::DocManager->SelectDocumentPath(...);
 
-         @endcode
 
-         @endWxPerlOnly
 
-     */
 
-     virtual wxDocTemplate* SelectDocumentPath(wxDocTemplate** templates,
 
-                                               int noTemplates, wxString& path,
 
-                                               long flags, bool save = false);
 
-     /**
 
-         Returns a document template by asking the user (if there is more than
 
-         one template). This function is used in CreateDocument().
 
-         @param templates
 
-             Pointer to an array of templates from which to choose a desired
 
-             template.
 
-         @param noTemplates
 
-             Number of templates being pointed to by the templates pointer.
 
-         @param sort
 
-             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.
 
-         @beginWxPerlOnly
 
-         In wxPerl @a templates is a reference to a list of templates.
 
-         @endWxPerlOnly
 
-     */
 
-     virtual wxDocTemplate* SelectDocumentType(wxDocTemplate** templates,
 
-                                               int noTemplates,
 
-                                               bool sort = false);
 
-     /**
 
-         Returns a document template by asking the user (if there is more than
 
-         one template), displaying a list of valid views. This function is used
 
-         in CreateView(). The dialog normally will not appear because the array
 
-         of templates only contains those relevant to the document in question,
 
-         and often there will only be one such.
 
-         @param templates
 
-             Pointer to an array of templates from which to choose a desired
 
-             template.
 
-         @param noTemplates
 
-             Number of templates being pointed to by the templates pointer.
 
-         @param sort
 
-             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.
 
-         @beginWxPerlOnly
 
-         In wxPerl @a templates is a reference to a list of templates.
 
-         @endWxPerlOnly
 
-     */
 
-     virtual wxDocTemplate* SelectViewType(wxDocTemplate** templates,
 
-                                           int noTemplates, bool sort = false);
 
-     /**
 
-         Sets the directory to be displayed to the user when opening a file.
 
-         Initially this is empty.
 
-     */
 
-     void SetLastDirectory(const wxString& dir);
 
-     /**
 
-         Sets the maximum number of documents that can be open at a time. By
 
-         default, this is @c INT_MAX, i.e. the number of documents is unlimited.
 
-         If you set it to 1, existing documents will be saved and deleted when
 
-         the user tries to open or create a new one (similar to the behaviour of
 
-         Windows Write, for example). Allowing multiple documents gives
 
-         behaviour more akin to MS Word and other Multiple Document Interface
 
-         applications.
 
-     */
 
-     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);
 
-     /**
 
-         Create the frame used for print preview.
 
-         This method can be overridden if you need to change the behaviour or
 
-         appearance of the preview window. By default, a standard wxPreviewFrame
 
-         is created.
 
-         @since 2.9.1
 
-         @param preview The associated preview object.
 
-         @param parent The parent window for the frame.
 
-         @param title The suggested title for the print preview frame.
 
-         @return A new print preview frame, must not return @NULL.
 
-     */
 
-     virtual wxPreviewFrame* CreatePreviewFrame(wxPrintPreviewBase* preview,
 
-                                                wxWindow* parent,
 
-                                                const wxString& title);
 
-     /**
 
-         The currently active view.
 
-     */
 
-     wxView* m_currentView;
 
-     /**
 
-         Stores the integer to be used for the next default document name.
 
-     */
 
-     int m_defaultDocumentNameCounter;
 
-     /**
 
-         A list of all documents.
 
-     */
 
-     wxList m_docs;
 
-     /**
 
-         A pointer to an instance of wxFileHistory, which manages the history of
 
-         recently-visited files on the File menu.
 
-     */
 
-     wxFileHistory* m_fileHistory;
 
-     /**
 
-         The directory last selected by the user when opening a file.
 
-     */
 
-     wxString m_lastDirectory;
 
-     /**
 
-         Stores the maximum number of documents that can be opened before
 
-         existing documents are closed.
 
-         By default, this is @c INT_MAX i.e. practically unlimited.
 
-     */
 
-     int m_maxDocsOpen;
 
- };
 
- /**
 
-     @class wxView
 
-     The view class can be used to model the viewing and editing component of
 
-     an application's file-based data. It is part of the document/view framework
 
-     supported by wxWidgets, and cooperates with the wxDocument, wxDocTemplate
 
-     and wxDocManager classes.
 
-     @library{wxcore}
 
-     @category{docview}
 
-     @see @ref overview_docview_wxview, wxDocument, wxDocTemplate, wxDocManager
 
- */
 
- class wxView : public wxEvtHandler
 
- {
 
- public:
 
-     /**
 
-         Constructor. Define your own default constructor to initialize
 
-         application-specific data.
 
-     */
 
-     wxView();
 
-     /**
 
-         Destructor. Removes itself from the document's list of views.
 
-     */
 
-     virtual ~wxView();
 
-     /**
 
-         Call this from your view frame's wxDocChildFrame::OnActivate() member
 
-         to tell the framework which view is currently active. If your windowing
 
-         system doesn't call wxDocChildFrame::OnActivate(), you may need to call
 
-         this function from any place where you know the view must be active,
 
-         and the framework will need to get the current view.
 
-         The prepackaged view frame wxDocChildFrame calls Activate() from its
 
-         wxDocChildFrame::OnActivate() member.
 
-         This function calls OnActivateView().
 
-     */
 
-     virtual void Activate(bool activate);
 
-     /**
 
-         Closes the view by calling OnClose(). If @a deleteWindow is @true, this
 
-         function should delete the window associated with the view.
 
-     */
 
-     virtual bool Close(bool deleteWindow = true);
 
-     /**
 
-         Gets a pointer to the document associated with the view.
 
-     */
 
-     wxDocument* GetDocument() const;
 
-     /**
 
-         Returns a pointer to the document manager instance associated with this
 
-         view.
 
-     */
 
-     wxDocManager* GetDocumentManager() const;
 
-     /**
 
-         Gets the frame associated with the view (if any). Note that this
 
-         "frame" is not a wxFrame at all in the generic MDI implementation which
 
-         uses notebook pages instead of frames and this is why this method
 
-         returns a wxWindow and not a wxFrame.
 
-     */
 
-     wxWindow* GetFrame() const;
 
-     /**
 
-         Gets the name associated with the view (passed to the wxDocTemplate
 
-         constructor). Not currently used by the framework.
 
-     */
 
-     wxString GetViewName() const;
 
-     /**
 
-         Called when a view is activated by means of Activate(). The default
 
-         implementation does nothing.
 
-     */
 
-     virtual void OnActivateView(bool activate, wxView* activeView,
 
-                                 wxView* deactiveView);
 
-     /**
 
-         Called when the filename has changed. The default implementation
 
-         constructs a suitable title and sets the title of the view frame (if any).
 
-     */
 
-     virtual void OnChangeFilename();
 
-     /**
 
-         Implements closing behaviour. The default implementation calls
 
-         wxDocument::Close() to close the associated document. Does not delete
 
-         the view. The application may wish to do some cleaning up operations in
 
-         this function, @e if a call to wxDocument::Close() succeeded. For
 
-         example, if your views all share the same window, you need to
 
-         disassociate the window from the view and perhaps clear the window. If
 
-         @a deleteWindow is @true, delete the frame associated with the view.
 
-     */
 
-     virtual bool OnClose(bool deleteWindow);
 
-     /**
 
-         Override this to clean up the view when the document is being closed.
 
-     */
 
-     virtual void OnClosingDocument();
 
-     /**
 
-         wxDocManager or wxDocument creates a wxView via a wxDocTemplate. Just
 
-         after the wxDocTemplate creates the wxView, it calls OnCreate(). The
 
-         wxView can create a wxDocChildFrame (or derived class) in its
 
-         wxView::OnCreate() member function. This wxDocChildFrame provides user
 
-         interface elements to view and/or edit the contents of the wxDocument.
 
-         By default, simply returns @true. If the function returns @false, the
 
-         view will be deleted.
 
-     */
 
-     virtual bool OnCreate(wxDocument* doc, long flags);
 
-     /**
 
-         If the printing framework is enabled in the library, this function
 
-         returns a wxPrintout object for the purposes of printing. It should
 
-         create a new object every time it is called; the framework will delete
 
-         objects it creates.
 
-         By default, this function returns an instance of wxDocPrintout, which
 
-         prints and previews one page by calling OnDraw().
 
-         Override to return an instance of a class other than wxDocPrintout.
 
-     */
 
-     virtual wxPrintout* OnCreatePrintout();
 
-     /**
 
-         Override this function to render the view on the given device context.
 
-     */
 
-     virtual void OnDraw(wxDC* dc) = 0;
 
-     /**
 
-         Called when the view should be updated.
 
-         @param sender
 
-             A pointer to the wxView that sent the update request, or @NULL if
 
-             no single view requested the update (for instance, when the
 
-             document is opened).
 
-         @param hint
 
-             This is unused currently, but may in future contain
 
-             application-specific information for making updating more
 
-             efficient.
 
-     */
 
-     virtual void OnUpdate(wxView* sender, wxObject* hint = 0);
 
-     /**
 
-         Associates the given document with the view. Normally called by the
 
-         framework.
 
-     */
 
-     virtual void SetDocument(wxDocument* doc);
 
-     /**
 
-         Sets the frame associated with this view. The application should call
 
-         this if possible, to tell the view about the frame.
 
-         See GetFrame() for the explanation about the mismatch between the
 
-         "Frame" in the method name and the type of its parameter.
 
-     */
 
-     void SetFrame(wxWindow* frame);
 
-     /**
 
-         Sets the view type name. Should only be called by the framework.
 
-     */
 
-     void SetViewName(const wxString& name);
 
-     /**
 
-         The document associated with this view. There may be more than one view
 
-         per document, but there can never be more than one document for one
 
-         view.
 
-     */
 
-     wxDocument* m_viewDocument;
 
-     /**
 
-         Frame associated with the view, if any.
 
-     */
 
-     wxFrame* m_viewFrame;
 
-     /**
 
-         The view type name given to the wxDocTemplate constructor, copied to
 
-         this variable when the view is created. Not currently used by the
 
-         framework.
 
-     */
 
-     wxString m_viewTypeName;
 
- };
 
- /**
 
-     @class wxDocChildFrame
 
-     The wxDocChildFrame class provides a default frame for displaying documents
 
-     on separate windows. This class can only be used for SDI (not MDI) child
 
-     frames.
 
-     The class is part of the document/view framework supported by wxWidgets,
 
-     and cooperates with the wxView, wxDocument, wxDocManager and wxDocTemplate
 
-     classes.
 
-     Notice that this class handles ::wxEVT_ACTIVATE event and activates the
 
-     child view on receiving it. Don't intercept this event unless you want to
 
-     prevent from this happening.
 
-     The same remark applies to ::wxEVT_CLOSE_WINDOW, as wxDocParentFrame the
 
-     frame handles this event by trying to close the associated view.
 
-     @library{wxcore}
 
-     @category{docview}
 
-     @see @ref overview_docview, @ref page_samples_docview, wxFrame
 
- */
 
- class wxDocChildFrame : public wxFrame
 
- {
 
- public:
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxDocChildFrame(wxDocument* doc, wxView* view, wxFrame* parent,
 
-                     wxWindowID id, const wxString& title,
 
-                     const wxPoint& pos = wxDefaultPosition,
 
-                     const wxSize& size = wxDefaultSize,
 
-                     long style = wxDEFAULT_FRAME_STYLE,
 
-                     const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxDocChildFrame();
 
-     /**
 
-         Returns the document associated with this frame.
 
-     */
 
-     wxDocument* GetDocument() const;
 
-     /**
 
-         Returns the view associated with this frame.
 
-     */
 
-     wxView* GetView() const;
 
-     /**
 
-         Sets the document for this frame.
 
-     */
 
-     void SetDocument(wxDocument* doc);
 
-     /**
 
-         Sets the view for this frame.
 
-     */
 
-     void SetView(wxView* view);
 
-     /**
 
-         The document associated with the frame.
 
-     */
 
-     wxDocument* m_childDocument;
 
-     /**
 
-         The view associated with the frame.
 
-     */
 
-     wxView* m_childView;
 
- };
 
- /**
 
-     @class wxDocParentFrame
 
-     The wxDocParentFrame class provides a default top-level frame for
 
-     applications using the document/view framework. This class can only be used
 
-     for SDI (not MDI) parent frames.
 
-     It cooperates with the wxView, wxDocument, wxDocManager and wxDocTemplate
 
-     classes.
 
-     Notice that this class processes ::wxEVT_CLOSE_WINDOW event and tries to
 
-     close all open views from its handler. If all the views can be closed, i.e.
 
-     if none of them contains unsaved changes or the user decides to not save
 
-     them, the window is destroyed. Don't intercept this event in your code
 
-     unless you want to replace this logic.
 
-     @library{wxcore}
 
-     @category{docview}
 
-     @see @ref overview_docview, @ref page_samples_docview, wxFrame
 
- */
 
- class wxDocParentFrame : public wxFrame
 
- {
 
- public:
 
-     /**
 
-         Default constructor.
 
-     */
 
-     wxDocParentFrame();
 
-     /**
 
-         Constructor.
 
-     */
 
-     wxDocParentFrame(wxDocManager* manager, wxFrame* parent,
 
-                      wxWindowID id, const wxString& title,
 
-                      const wxPoint& pos = wxDefaultPosition,
 
-                      const wxSize& size = wxDefaultSize,
 
-                      long style = wxDEFAULT_FRAME_STYLE,
 
-                      const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Destructor.
 
-     */
 
-     virtual ~wxDocParentFrame();
 
-     /**
 
-         Used in two-step construction.
 
-     */
 
-     bool Create(wxDocManager* manager, wxFrame* parent, wxWindowID id,
 
-                 const wxString& title, const wxPoint& pos = wxDefaultPosition,
 
-                 const wxSize& size = wxDefaultSize, long style = 541072960,
 
-                 const wxString& name = wxFrameNameStr);
 
-     /**
 
-         Returns the associated document manager object.
 
-     */
 
-     wxDocManager* GetDocumentManager() const;
 
- };
 
- /**
 
-     @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}
 
-     @see @ref overview_docview, wxView, wxDocTemplate, wxDocManager
 
- */
 
- class wxDocument : public wxEvtHandler
 
- {
 
- 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 = NULL);
 
-     /**
 
-         Destructor. Removes itself from the document manager.
 
-     */
 
-     virtual ~wxDocument();
 
-     /**
 
-         If the view is not already in the list of views, adds the view and
 
-         calls OnChangedViewList().
 
-     */
 
-     virtual bool AddView(wxView* view);
 
-     /**
 
-         Returns true if the document hasn't been modified since the last time
 
-         it had been saved.
 
-         Notice that this function returns @false if the document had been never
 
-         saved at all, so it may be also used to test whether it makes sense to
 
-         save the document: if it returns @true, there is nothing to save but if
 
-         @false is returned, it can be saved, even if it might be not modified
 
-         (this can be used to create an empty document file by the user).
 
-         @see IsModified(), GetDocumentSaved()
 
-         @since 2.9.0
 
-      */
 
-     bool AlreadySaved() const;
 
-     /**
 
-         Activate the first view of the document if any.
 
-         This function simply calls the Raise() method of the frame of the first
 
-         view. You may need to override the Raise() method to get the desired
 
-         effect if you are not using a standard wxFrame for your view. For
 
-         instance, if your document is inside its own notebook tab you could
 
-         implement Raise() like this:
 
-         @code
 
-         void MyNotebookPage::Raise()
 
-         {
 
-             wxNotebook* notebook = wxStaticCast(GetParent(), wxNotebook);
 
-             notebook->SetSelection(notebook->FindPage(this));
 
-         }
 
-         @endcode
 
-         @see GetFirstView()
 
-         @since 2.9.5
 
-      */
 
-     void Activate() const;
 
-     /**
 
-         Closes the document, by calling OnSaveModified() and then (if this
 
-         returned @true) OnCloseDocument(). This does not normally delete the
 
-         document object, use DeleteAllViews() to do this implicitly.
 
-     */
 
-     virtual bool Close();
 
-     /**
 
-         Calls wxView::Close() and deletes each view. Deleting the final view
 
-         will implicitly delete the document itself, because the wxView
 
-         destructor calls RemoveView(). This in turns calls OnChangedViewList(),
 
-         whose default implemention is to save and delete the document if no
 
-         views exist.
 
-     */
 
-     virtual bool DeleteAllViews();
 
-     /**
 
-         Virtual method called from OnCloseDocument().
 
-         This method may be overridden to perform any additional cleanup which
 
-         might be needed when the document is closed.
 
-         The return value of this method is currently ignored.
 
-         The default version does nothing and simply returns @true.
 
-      */
 
-     virtual bool DeleteContents();
 
-     /**
 
-         Returns a pointer to the command processor associated with this
 
-         document.
 
-         @see wxCommandProcessor
 
-     */
 
-     virtual wxCommandProcessor* GetCommandProcessor() const;
 
-     /**
 
-         Gets a pointer to the associated document manager.
 
-     */
 
-     virtual wxDocManager* GetDocumentManager() const;
 
-     /**
 
-         Gets the document type name for this document. See the comment for
 
-         @ref m_documentTypeName.
 
-     */
 
-     wxString GetDocumentName() const;
 
-     /**
 
-         Return true if this document had been already saved.
 
-         @see IsModified()
 
-      */
 
-     bool GetDocumentSaved() const;
 
-     /**
 
-         Gets a pointer to the template that created the document.
 
-     */
 
-     virtual wxDocTemplate* GetDocumentTemplate() const;
 
-     /**
 
-         Intended to return a suitable window for using as a parent for
 
-         document-related dialog boxes. By default, uses the frame associated
 
-         with the first view.
 
-     */
 
-     virtual wxWindow* GetDocumentWindow() const;
 
-     /**
 
-         Gets the filename associated with this document, or "" if none is
 
-         associated.
 
-     */
 
-     wxString GetFilename() const;
 
-     /**
 
-         A convenience function to get the first view for a document, because in
 
-         many cases a document will only have a single view.
 
-         @see GetViews()
 
-     */
 
-     wxView* GetFirstView() const;
 
-     /**
 
-         Gets the title for this document. The document title is used for an
 
-         associated frame (if any), and is usually constructed by the framework
 
-         from the filename.
 
-     */
 
-     wxString GetTitle() const;
 
-     /**
 
-         Return the document name suitable to be shown to the user. The default
 
-         implementation uses the document title, if any, of the name part of the
 
-         document filename if it was set or, otherwise, the string @b unnamed.
 
-     */
 
-     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.
 
-         @see GetFirstView()
 
-     */
 
-     wxList& GetViews();
 
-     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
 
-         maintains its own record of being modified.
 
-         @see Modify()
 
-     */
 
-     virtual bool IsModified() const;
 
-     //@{
 
-     /**
 
-         Override this function and call it from your own LoadObject() before
 
-         streaming your own data. LoadObject() is called by the framework
 
-         automatically when the document contents need to be loaded.
 
-         @note This version of LoadObject() may not exist depending on how
 
-               wxWidgets was configured.
 
-     */
 
-     virtual istream& LoadObject(istream& stream);
 
-     virtual wxInputStream& LoadObject(wxInputStream& stream);
 
-     //@}
 
-     /**
 
-         Call with @true to mark the document as modified since the last save,
 
-         @false otherwise. You may need to override this if your document view
 
-         maintains its own record of being modified.
 
-         @see IsModified()
 
-     */
 
-     virtual void Modify(bool modify);
 
-     /**
 
-         Called when a view is added to or deleted from this document. The
 
-         default implementation saves and deletes the document if no views exist
 
-         (the last one has just been removed).
 
-     */
 
-     virtual void OnChangedViewList();
 
-     /**
 
-         This virtual function is called when the document is being closed.
 
-         The default implementation calls DeleteContents() (which may be
 
-         overridden to perform additional cleanup) and sets the modified flag to
 
-         @false. You can override it to supply additional behaviour when the
 
-         document is closed with Close().
 
-         Notice that previous wxWidgets versions used to call this function also
 
-         from OnNewDocument(), rather counter-intuitively. This is no longer the
 
-         case since wxWidgets 2.9.0.
 
-     */
 
-     virtual bool OnCloseDocument();
 
-     /**
 
-         Called just after the document object is created to give it a chance to
 
-         initialize itself.
 
-         The default implementation uses the template associated with the
 
-         document to create an initial view.
 
-         For compatibility reasons, this method may either delete the document
 
-         itself if its initialization fails or not do it in which case it is
 
-         deleted by caller. It is recommended to delete the document explicitly
 
-         in this function if it can't be initialized.
 
-         @param path
 
-             The associated file path.
 
-         @param flags
 
-             Flags passed to CreateDocument().
 
-         @return
 
-             @true if the initialization was successful or @false if it failed.
 
-     */
 
-     virtual bool OnCreate(const wxString& path, long flags);
 
-     /**
 
-         Override this function if you want a different (or no) command
 
-         processor to be created when the document is created. By default, it
 
-         returns an instance of wxCommandProcessor.
 
-         @see wxCommandProcessor
 
-     */
 
-     virtual wxCommandProcessor* OnCreateCommandProcessor();
 
-     /**
 
-         The default implementation calls OnSaveModified() and DeleteContents(),
 
-         makes a default title for the document, and notifies the views that the
 
-         filename (in fact, the title) has changed.
 
-     */
 
-     virtual bool OnNewDocument();
 
-     /**
 
-         Constructs an input file stream for the given filename (which must not
 
-         be empty), and calls LoadObject(). If LoadObject() returns @true, the
 
-         document is set to unmodified; otherwise, an error message box is
 
-         displayed. The document's views are notified that the filename has
 
-         changed, to give windows an opportunity to update their titles. All of
 
-         the document's views are then updated.
 
-     */
 
-     virtual bool OnOpenDocument(const wxString& filename);
 
-     /**
 
-         Constructs an output file stream for the given filename (which must not
 
-         be empty), and calls SaveObject(). If SaveObject() returns @true, the
 
-         document is set to unmodified; otherwise, an error message box is
 
-         displayed.
 
-     */
 
-     virtual bool OnSaveDocument(const wxString& filename);
 
-     /**
 
-         If the document has been modified, prompts the user to ask if the
 
-         changes should be saved. If the user replies Yes, the Save() function
 
-         is called. If No, the document is marked as unmodified and the function
 
-         succeeds. If Cancel, the function fails.
 
-     */
 
-     virtual bool OnSaveModified();
 
-     /**
 
-         Removes the view from the document's list of views, and calls
 
-         OnChangedViewList().
 
-     */
 
-     virtual bool RemoveView(wxView* view);
 
-     /**
 
-         Saves the document by calling OnSaveDocument() if there is an
 
-         associated filename, or SaveAs() if there is no filename.
 
-     */
 
-     virtual bool Save();
 
-     /**
 
-         Prompts the user for a file to save to, and then calls
 
-         OnSaveDocument().
 
-     */
 
-     virtual bool SaveAs();
 
-     /**
 
-         Discard changes and load last saved version.
 
-         Prompts the user first, and then calls DoOpenDocument() to reload the
 
-         current file.
 
-     */
 
-     virtual bool Revert();
 
-     //@{
 
-     /**
 
-         Override this function and call it from your own SaveObject() before
 
-         streaming your own data. SaveObject() is called by the framework
 
-         automatically when the document contents need to be saved.
 
-         @note This version of SaveObject() may not exist depending on how
 
-               wxWidgets was configured.
 
-     */
 
-     virtual ostream& SaveObject(ostream& stream);
 
-     virtual wxOutputStream& SaveObject(wxOutputStream& stream);
 
-     //@}
 
-     /**
 
-         Sets the command processor to be used for this document. The document
 
-         will then be responsible for its deletion. Normally you should not call
 
-         this; override OnCreateCommandProcessor() instead.
 
-         @see wxCommandProcessor
 
-     */
 
-     virtual void SetCommandProcessor(wxCommandProcessor* processor);
 
-     /**
 
-         Sets the document type name for this document. See the comment for
 
-         @ref m_documentTypeName.
 
-     */
 
-     void SetDocumentName(const wxString& name);
 
-     /**
 
-         Sets the pointer to the template that created the document. Should only
 
-         be called by the framework.
 
-     */
 
-     virtual void SetDocumentTemplate(wxDocTemplate* templ);
 
-     /**
 
-         Sets if this document has been already saved or not.
 
-         Normally there is no need to call this function as the document-view
 
-         framework does it itself as the documents are loaded from and saved to
 
-         the files. However it may be useful in some particular cases, for
 
-         example it may be called with @false argument to prevent the user
 
-         from saving the just opened document into the same file if this
 
-         shouldn't be done for some reason (e.g. file format version changes and
 
-         a new extension should be used for saving).
 
-         @see GetDocumentSaved(), AlreadySaved()
 
-      */
 
-     void SetDocumentSaved(bool saved = true);
 
-     /**
 
-         Sets the filename for this document. Usually called by the framework.
 
-         Calls OnChangeFilename() which in turn calls wxView::OnChangeFilename() for
 
-         all views if @a notifyViews is @true.
 
-     */
 
-     void SetFilename(const wxString& filename, bool notifyViews = false);
 
-     /**
 
-         If @a notifyViews is @true, wxView::OnChangeFilename() is called for
 
-         all views.
 
-         @since 2.9.0
 
-     */
 
-     virtual void OnChangeFilename(bool notifyViews);
 
-     /**
 
-         Sets the title for this document. The document title is used for an
 
-         associated frame (if any), and is usually constructed by the framework
 
-         from the filename.
 
-     */
 
-     void SetTitle(const wxString& title);
 
-     /**
 
-         Updates all views. If @a sender is non-@NULL, does not update this
 
-         view. @a hint represents optional information to allow a view to
 
-         optimize its update.
 
-     */
 
-     virtual void UpdateAllViews(wxView* sender = NULL, wxObject* hint = NULL);
 
- protected:
 
-     /**
 
-         This method is called by OnSaveDocument() to really save the document
 
-         contents to the specified file.
 
-         Base class version creates a file-based stream and calls SaveObject().
 
-         Override this if you need to do something else or prefer not to use
 
-         SaveObject() at all.
 
-      */
 
-     virtual bool DoSaveDocument(const wxString& file);
 
-     /**
 
-         This method is called by OnOpenDocument() to really load the document
 
-         contents from the specified file.
 
-         Base class version creates a file-based stream and calls LoadObject().
 
-         Override this if you need to do something else or prefer not to use
 
-         LoadObject() at all.
 
-      */
 
-     virtual bool DoOpenDocument(const wxString& file);
 
-     /**
 
-         A pointer to the command processor associated with this document.
 
-     */
 
-     wxCommandProcessor* m_commandProcessor;
 
-     /**
 
-         Filename associated with this document ("" if none).
 
-     */
 
-     wxString m_documentFile;
 
-     /**
 
-         @true if the document has been modified, @false otherwise.
 
-     */
 
-     bool m_documentModified;
 
-     /**
 
-         A pointer to the template from which this document was created.
 
-     */
 
-     wxDocTemplate* m_documentTemplate;
 
-     /**
 
-         Document title. The document title is used for an associated frame (if
 
-         any), and is usually constructed by the framework from the filename.
 
-     */
 
-     wxString m_documentTitle;
 
-     /**
 
-         The document type name given to the wxDocTemplate constructor, copied
 
-         to this variable when the document is created. If several document
 
-         templates are created that use the same document type, this variable is
 
-         used in wxDocManager::CreateView() to collate a list of alternative
 
-         view types that can be used on this kind of document. Do not change the
 
-         value of this variable.
 
-     */
 
-     wxString m_documentTypeName;
 
-     /**
 
-         List of wxView instances associated with this document.
 
-     */
 
-     wxList m_documentViews;
 
- };
 
- // ============================================================================
 
- // Global functions/macros
 
- // ============================================================================
 
- /** @addtogroup group_funcmacro_file */
 
- //@{
 
- /**
 
-     Copies the given file to @a stream. Useful when converting an old
 
-     application to use streams (within the document/view framework, for
 
-     example).
 
-     @header{wx/docview.h}
 
- */
 
- bool wxTransferFileToStream(const wxString& filename,
 
-                             ostream& stream);
 
- /**
 
-     Copies the given stream to the file @a filename. Useful when converting an
 
-     old application to use streams (within the document/view framework, for
 
-     example).
 
-     @header{wx/docview.h}
 
- */
 
- bool wxTransferStreamToFile(istream& stream,
 
-                              const wxString& filename);
 
- //@}
 
 
  |