X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/caf0debf72cfec867c2780810187fde443f9ed72..d3211838bf578eb8ada5a608b66626a6bde6846a:/include/wx/docview.h diff --git a/include/wx/docview.h b/include/wx/docview.h index 598d84c125..ac803a61aa 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -36,7 +36,11 @@ class WXDLLEXPORT wxCommandProcessor; class WXDLLEXPORT wxFileHistory; class WXDLLEXPORT wxConfigBase; -#include "wx/ioswrap.h" +#if wxUSE_STD_IOSTREAM + #include "wx/ioswrap.h" +#else + #include "wx/stream.h" +#endif // Document manager flags enum @@ -84,8 +88,18 @@ public: virtual bool SaveAs(); virtual bool Revert(); - virtual ostream& SaveObject(ostream& stream); - virtual istream& LoadObject(istream& stream); +#if wxUSE_STD_IOSTREAM + virtual wxSTD ostream& SaveObject(wxSTD ostream& stream); + virtual wxSTD istream& LoadObject(wxSTD istream& stream); +#else + virtual wxOutputStream& SaveObject(wxOutputStream& stream); + virtual wxInputStream& LoadObject(wxInputStream& stream); +#endif + +#if wxUSE_SERIAL + // need this to keep from hiding the virtual from wxObject + virtual void LoadObject(wxObjectInputStream& stream) { wxObject::LoadObject(stream); }; +#endif // Called by wxWindows virtual bool OnSaveDocument(const wxString& filename); @@ -302,9 +316,30 @@ public: void OnUndo(wxCommandEvent& event); void OnRedo(wxCommandEvent& event); + // Handlers for UI update commands + void OnUpdateFileOpen(wxUpdateUIEvent& event); + void OnUpdateFileClose(wxUpdateUIEvent& event); + void OnUpdateFileRevert(wxUpdateUIEvent& event); + void OnUpdateFileNew(wxUpdateUIEvent& event); + void OnUpdateFileSave(wxUpdateUIEvent& event); + void OnUpdateFileSaveAs(wxUpdateUIEvent& event); + void OnUpdateUndo(wxUpdateUIEvent& event); + void OnUpdateRedo(wxUpdateUIEvent& event); + + void OnUpdatePrint(wxUpdateUIEvent& event); + void OnUpdatePrintSetup(wxUpdateUIEvent& event); + void OnUpdatePreview(wxUpdateUIEvent& event); + // Extend event processing to search the view's event table virtual bool ProcessEvent(wxEvent& event); + // called when file format detection didn't work, can be overridden to do + // something in this case + // This is of course completely stupid, because if the file dialog is + // cancelled you get an assert. Brilliant. -- JACS +// virtual void OnOpenFileFailure() { wxFAIL_MSG(_T("file format mismatch")); } + virtual void OnOpenFileFailure() { } + virtual wxDocument *CreateDocument(const wxString& path, long flags = 0); virtual wxView *CreateView(wxDocument *doc, long flags = 0); virtual void DeleteTemplate(wxDocTemplate *temp, long flags = 0); @@ -313,9 +348,9 @@ public: virtual wxDocTemplate *SelectDocumentPath(wxDocTemplate **templates, int noTemplates, wxString& path, long flags, bool save = FALSE); virtual wxDocTemplate *SelectDocumentType(wxDocTemplate **templates, - int noTemplates); + int noTemplates, bool sort = FALSE); virtual wxDocTemplate *SelectViewType(wxDocTemplate **templates, - int noTemplates); + int noTemplates, bool sort = FALSE); virtual wxDocTemplate *FindTemplateForPath(const wxString& path); void AssociateTemplate(wxDocTemplate *temp); @@ -338,16 +373,21 @@ public: virtual void ActivateView(wxView *view, bool activate = TRUE, bool deleting = FALSE); virtual wxView *GetCurrentView() const; - virtual wxList& GetDocuments() const { return (wxList&) m_docs; } + wxList& GetDocuments() { return m_docs; } + wxList& GetTemplates() { return m_templates; } // Make a default document name virtual bool MakeDefaultName(wxString& buf); + // Make a frame title (override this to do something different) + virtual wxString MakeFrameTitle(wxDocument* doc); + virtual wxFileHistory *OnCreateFileHistory(); virtual wxFileHistory *GetFileHistory() const { return m_fileHistory; } // File history management virtual void AddFileToHistory(const wxString& file); + virtual void RemoveFileFromHistory(int i); virtual int GetNoHistoryFiles() const; virtual wxString GetHistoryFile(int i) const; virtual void FileHistoryUseMenu(wxMenu *menu); @@ -360,6 +400,12 @@ public: virtual void FileHistoryAddFilesToMenu(); virtual void FileHistoryAddFilesToMenu(wxMenu* menu); + inline wxString GetLastDirectory() const { return m_lastDirectory; } + inline void SetLastDirectory(const wxString& dir) { m_lastDirectory = dir; } + + // Get the current document manager + static wxDocManager* GetDocumentManager() { return sm_docManager; } + protected: long m_flags; int m_defaultDocumentNameCounter; @@ -368,6 +414,8 @@ protected: wxList m_templates; wxView* m_currentView; wxFileHistory* m_fileHistory; + wxString m_lastDirectory; + static wxDocManager* sm_docManager; DECLARE_EVENT_TABLE() }; @@ -402,6 +450,7 @@ public: wxView *GetView() const { return m_childView; } void SetDocument(wxDocument *doc) { m_childDocument = doc; } void SetView(wxView *view) { m_childView = view; } + bool Destroy() { m_childView = (wxView *)NULL; return wxFrame::Destroy(); } protected: wxDocument* m_childDocument; @@ -518,11 +567,20 @@ public: int GetMaxCommands() const { return m_maxNoCommands; } virtual void ClearCommands(); + // By default, the accelerators are "\tCtrl+Z" and "\tCtrl+Y" + const wxString& GetUndoAccelerator() const { return m_undoAccelerator; } + const wxString& GetRedoAccelerator() const { return m_redoAccelerator; } + + void SetUndoAccelerator(const wxString& accel) { m_undoAccelerator = accel; } + void SetRedoAccelerator(const wxString& accel) { m_redoAccelerator = accel; } + protected: int m_maxNoCommands; wxList m_commands; wxNode* m_currentCommand; wxMenu* m_commandEditMenu; + wxString m_undoAccelerator; + wxString m_redoAccelerator; }; // ---------------------------------------------------------------------------- @@ -539,6 +597,7 @@ public: // Operations virtual void AddFileToHistory(const wxString& file); + virtual void RemoveFileFromHistory(int i); virtual int GetMaxFiles() const { return m_fileMaxFiles; } virtual void UseMenu(wxMenu *menu); @@ -573,9 +632,16 @@ protected: int m_fileMaxFiles; }; +#if wxUSE_STD_IOSTREAM // For compatibility with existing file formats: // converts from/to a stream to/from a temporary file. -bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, ostream& stream); -bool WXDLLEXPORT wxTransferStreamToFile(istream& stream, const wxString& filename); +bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, wxSTD ostream& stream); +bool WXDLLEXPORT wxTransferStreamToFile(wxSTD istream& stream, const wxString& filename); +#else +// For compatibility with existing file formats: +// converts from/to a stream to/from a temporary file. +bool WXDLLEXPORT wxTransferFileToStream(const wxString& filename, wxOutputStream& stream); +bool WXDLLEXPORT wxTransferStreamToFile(wxInputStream& stream, const wxString& filename); +#endif #endif // _WX_DOCH__