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.
+ 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 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.
*/
long GetFlags() 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().
+ 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,
+ virtual bool InitDocument(wxDocument* doc,
+ const wxString& path,
long flags = 0);
/**
/**
Called when the filename has changed. The default implementation
- constructs a suitable title and sets the title of the view frame (if
- any).
+ constructs a suitable title and sets the title of the view frame (if any).
*/
virtual void OnChangeFilename();
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = "frame");
+ const wxString& name = wxFrameNameStr);
/**
Destructor.
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE,
- const wxString& name = "frame");
+ const wxString& name = wxFrameNameStr);
/**
Destructor.
*/
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;
+
/**
Closes the document, by calling OnSaveModified() and then (if this
returned @true) OnCloseDocument(). This does not normally delete the
*/
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 wxString GetUserReadableName() const;
+ //@{
/**
Returns the list whose elements are the views on the document.
@see GetFirstView()
*/
- wxList GetViews() const;
+ wxList& GetViews();
+ const wxList& GetViews() const;
+ //@}
/**
Returns @true if the document has been modified since the last save,
/**
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. If this
- function returns @false, the document is deleted.
+ 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);
/**
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
*/
- void SetFilename(const wxString& filename, bool notifyViews = false);
+ virtual void OnChangeFilename(bool notifyViews);
/**
Sets the title for this document. The document title is used for an
called, as this is not done automatically.
*/
virtual void UseMenu(wxMenu* menu);
-
- /**
- A character array of strings corresponding to the most recently opened
- files.
- */
- char** m_fileHistory;
-
- /**
- The number of files stored in the history array.
- */
- size_t m_fileHistoryN;
-
- /**
- The maximum number of files to be stored and displayed on the menu.
- */
- size_t m_fileMaxFiles;
-
- /**
- The file menu used to display the file history list (if enabled).
- */
- wxMenu* m_fileMenu;
};
// Global functions/macros
// ============================================================================
-/** @ingroup group_funcmacro_file */
+/** @addtogroup group_funcmacro_file */
//@{
/**