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
virtual bool SaveAs();
virtual bool Revert();
+#if wxUSE_STD_IOSTREAM
virtual ostream& SaveObject(ostream& stream);
virtual istream& LoadObject(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);
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);
// 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);
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;
wxList m_templates;
wxView* m_currentView;
wxFileHistory* m_fileHistory;
+ wxString m_lastDirectory;
+ static wxDocManager* sm_docManager;
DECLARE_EVENT_TABLE()
};
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;
};
// ----------------------------------------------------------------------------
// Operations
virtual void AddFileToHistory(const wxString& file);
+ virtual void RemoveFileFromHistory(int i);
virtual int GetMaxFiles() const { return m_fileMaxFiles; }
virtual void UseMenu(wxMenu *menu);
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);
+#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__