X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/29548835934ad15172eb84782599a5c07e713035..6968a3b87cee46f5c5af9b46e1ef97f17133cef7:/include/wx/docview.h?ds=sidebyside diff --git a/include/wx/docview.h b/include/wx/docview.h index ee7067b09d..ae45ba71cd 100644 --- a/include/wx/docview.h +++ b/include/wx/docview.h @@ -17,9 +17,11 @@ #if wxUSE_DOC_VIEW_ARCHITECTURE #include "wx/list.h" +#include "wx/dlist.h" #include "wx/string.h" #include "wx/frame.h" #include "wx/filehistory.h" +#include "wx/vector.h" #if wxUSE_PRINTING_ARCHITECTURE #include "wx/print.h" @@ -59,6 +61,10 @@ enum #define wxMAX_FILE_HISTORY 9 +typedef wxVector wxDocVector; +typedef wxVector wxViewVector; +typedef wxVector wxDocTemplateVector; + class WXDLLIMPEXP_CORE wxDocument : public wxEvtHandler { public: @@ -139,8 +145,17 @@ public: virtual bool AddView(wxView *view); virtual bool RemoveView(wxView *view); + +#ifndef __VISUALC6__ + wxViewVector GetViewsVector() const + { + return m_documentViews.AsVector(); + } +#endif // !__VISUALC6__ + wxList& GetViews() { return m_documentViews; } const wxList& GetViews() const { return m_documentViews; } + wxView *GetFirstView() const; virtual void UpdateAllViews(wxView *sender = NULL, wxObject *hint = NULL); @@ -172,6 +187,10 @@ public: // dialogs. Override if necessary. virtual wxWindow *GetDocumentWindow() 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. + bool IsChildDocument() const { return m_documentParent != NULL; } + protected: wxList m_documentViews; wxString m_documentFile; @@ -179,13 +198,18 @@ protected: wxString m_documentTypeName; wxDocTemplate* m_documentTemplate; bool m_documentModified; + + // if the document parent is non-NULL, it's a pseudo-document corresponding + // to a part of the parent document which can't be saved or loaded + // independently of its parent and is always closed when its parent is wxDocument* m_documentParent; + wxCommandProcessor* m_commandProcessor; bool m_savedYet; // Called by OnSaveDocument and OnOpenDocument to implement standard - // Save/Load behavior. Re-implement in derived class for custom - // behavior. + // Save/Load behaviour. Re-implement in derived class for custom + // behaviour. virtual bool DoSaveDocument(const wxString& file); virtual bool DoOpenDocument(const wxString& file); @@ -193,6 +217,10 @@ protected: wxString DoGetUserReadableName() const; private: + // list of all documents whose m_documentParent is this one + typedef wxDList DocsList; + DocsList m_childDocuments; + DECLARE_ABSTRACT_CLASS(wxDocument) wxDECLARE_NO_COPY_CLASS(wxDocument); }; @@ -371,8 +399,12 @@ public: void OnFileRevert(wxCommandEvent& event); void OnFileSave(wxCommandEvent& event); void OnFileSaveAs(wxCommandEvent& event); + void OnMRUFile(wxCommandEvent& event); +#if wxUSE_PRINTING_ARCHITECTURE void OnPrint(wxCommandEvent& event); void OnPreview(wxCommandEvent& event); + void OnPageSetup(wxCommandEvent& event); +#endif // wxUSE_PRINTING_ARCHITECTURE void OnUndo(wxCommandEvent& event); void OnRedo(wxCommandEvent& event); @@ -382,6 +414,7 @@ public: void OnUpdateFileRevert(wxUpdateUIEvent& event); void OnUpdateFileNew(wxUpdateUIEvent& event); void OnUpdateFileSave(wxUpdateUIEvent& event); + void OnUpdateFileSaveAs(wxUpdateUIEvent& event); void OnUpdateUndo(wxUpdateUIEvent& event); void OnUpdateRedo(wxUpdateUIEvent& event); @@ -410,6 +443,9 @@ public: void AssociateTemplate(wxDocTemplate *temp); void DisassociateTemplate(wxDocTemplate *temp); + // Find template from document class info, may return NULL. + wxDocTemplate* FindTemplate(const wxClassInfo* documentClassInfo); + wxDocument *GetCurrentDocument() const; void SetMaxDocsOpen(int n) { m_maxDocsOpen = n; } @@ -433,6 +469,18 @@ public: virtual void ActivateView(wxView *view, bool activate = true); virtual wxView *GetCurrentView() const { return m_currentView; } +#ifndef __VISUALC6__ + wxDocVector GetDocumentsVector() const + { + return m_docs.AsVector(); + } + + wxDocTemplateVector GetTemplatesVector() const + { + return m_templates.AsVector(); + } +#endif // !__VISUALC6__ + wxList& GetDocuments() { return m_docs; } wxList& GetTemplates() { return m_templates; } @@ -467,6 +515,13 @@ public: // Get the current document manager static wxDocManager* GetDocumentManager() { return sm_docManager; } +#if wxUSE_PRINTING_ARCHITECTURE + wxPageSetupDialogData& GetPageSetupDialogData() + { return m_pageSetupDialogData; } + const wxPageSetupDialogData& GetPageSetupDialogData() const + { return m_pageSetupDialogData; } +#endif // wxUSE_PRINTING_ARCHITECTURE + #if WXWIN_COMPATIBILITY_2_8 // deprecated, override GetDefaultName() instead wxDEPRECATED_BUT_USED_INTERNALLY( @@ -479,7 +534,15 @@ public: wxDEPRECATED( size_t GetNoHistoryFiles() const ); #endif // WXWIN_COMPATIBILITY_2_6 + 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 and notify the + // user about it but this method can be overridden to customize it. + virtual void OnMRUFileNotExist(unsigned n, const wxString& filename); + + // Open the MRU file with the given index in our associated file history. + void DoOpenMRUFile(unsigned n); #if wxUSE_PRINTING_ARCHITECTURE virtual wxPreviewFrame* CreatePreviewFrame(wxPrintPreviewBase* preview, wxWindow *parent, @@ -497,6 +560,9 @@ protected: // view and returns it then wxView *GetActiveView() const; + // activate the first view of the given document if any + void ActivateDocument(wxDocument *doc); + int m_defaultDocumentNameCounter; int m_maxDocsOpen; @@ -507,6 +573,10 @@ protected: wxString m_lastDirectory; static wxDocManager* sm_docManager; +#if wxUSE_PRINTING_ARCHITECTURE + wxPageSetupDialogData m_pageSetupDialogData; +#endif // wxUSE_PRINTING_ARCHITECTURE + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxDocManager) wxDECLARE_NO_COPY_CLASS(wxDocManager); @@ -772,12 +842,6 @@ public: wxDocManager *GetDocumentManager() const { return m_docManager; } protected: - // Open the MRU file with the given index in our associated file history. - // - // This is called from the derived class event handler for the MRU menu - // items. - void DoOpenMRUFile(unsigned n); - wxDocManager *m_docManager; wxDECLARE_NO_COPY_CLASS(wxDocParentFrameAnyBase); @@ -819,8 +883,6 @@ public: this->Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxDocParentFrameAny::OnExit)); - this->Connect(wxID_FILE1, wxID_FILE9, wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxDocParentFrameAny::OnMRUFile)); this->Connect(wxEVT_CLOSE_WINDOW, wxCloseEventHandler(wxDocParentFrameAny::OnCloseWindow)); @@ -843,11 +905,6 @@ private: this->Close(); } - void OnMRUFile(wxCommandEvent& event) - { - DoOpenMRUFile(event.GetId() - wxID_FILE1); - } - void OnCloseWindow(wxCloseEvent& event) { if ( m_docManager && !m_docManager->Clear(!event.CanVeto()) ) @@ -918,7 +975,7 @@ private: class WXDLLIMPEXP_CORE wxDocPrintout : public wxPrintout { public: - wxDocPrintout(wxView *view = NULL, const wxString& title = wxT("Printout")); + wxDocPrintout(wxView *view = NULL, const wxString& title = wxString()); // implement wxPrintout methods virtual bool OnPrintPage(int page); @@ -955,7 +1012,7 @@ wxTransferStreamToFile(wxInputStream& stream, const wxString& filename); // these flags are not used anywhere by wxWidgets and kept only for an unlikely // case of existing user code using them for its own purposes -#ifdef WXWIN_COMPATIBILITY_2_8 +#if WXWIN_COMPATIBILITY_2_8 enum { wxDOC_SDI = 1,