]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/docview.h
extended RemoveLast() to take size_t parameter
[wxWidgets.git] / include / wx / docview.h
index 598d84c1254e520258595d245ba91f7d3b5208e8..1672e1c02899318eefee91c9e8bc1e26eed4249b 100644 (file)
@@ -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();
 
+#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);
@@ -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()
 };
@@ -518,11 +566,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 +596,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 +631,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);
+#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__