From 828c8f98d5346c58b8fa75b043fba7a2a007b337 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Fri, 9 Jan 2009 16:01:34 +0000 Subject: [PATCH] Minor samples/docview refactoring (closes #10081) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- samples/docview/doc.cpp | 42 +++++++++++++++++++++++------------------ samples/docview/doc.h | 29 +++++++++++++++++++++------- 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/samples/docview/doc.cpp b/samples/docview/doc.cpp index 4108800ede..f43bbb1c13 100644 --- a/samples/docview/doc.cpp +++ b/samples/docview/doc.cpp @@ -171,42 +171,48 @@ DocumentIstream& DoodleSegment::LoadObject(DocumentIstream& istream) } // ---------------------------------------------------------------------------- -// TextEditDocument implementation +// wxTextDocument: wxDocument and wxTextCtrl married // ---------------------------------------------------------------------------- -IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument) +IMPLEMENT_CLASS(wxTextDocument, wxDocument) // Since text windows have their own method for saving to/loading from files, // we override DoSave/OpenDocument instead of Save/LoadObject -bool TextEditDocument::DoSaveDocument(const wxString& filename) +bool wxTextDocument::DoSaveDocument(const wxString& filename) { - return GetFirstView()->GetText()->SaveFile(filename); + return GetTextCtrl()->SaveFile(filename); } -bool TextEditDocument::DoOpenDocument(const wxString& filename) +bool wxTextDocument::DoOpenDocument(const wxString& filename) { - return GetFirstView()->GetText()->LoadFile(filename); + return GetTextCtrl()->LoadFile(filename); } -bool TextEditDocument::IsModified() const +bool wxTextDocument::IsModified() const { - TextEditView* view = GetFirstView(); - return wxDocument::IsModified() || (view && view->GetText()->IsModified()); + wxTextCtrl* wnd = GetTextCtrl(); + return wxDocument::IsModified() || (wnd && wnd->IsModified()); } -void TextEditDocument::Modify(bool modified) +void wxTextDocument::Modify(bool modified) { - TextEditView* view = GetFirstView(); - wxDocument::Modify(modified); - if ( !modified && view && view->GetText() ) - view->GetText()->DiscardEdits(); + wxTextCtrl* wnd = GetTextCtrl(); + if (wnd && !modified) + { + wnd->DiscardEdits(); + } } -TextEditView* TextEditDocument::GetFirstView() const +// ---------------------------------------------------------------------------- +// TextEditDocument implementation +// ---------------------------------------------------------------------------- + +IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument) + +wxTextCtrl* TextEditDocument::GetTextCtrl() const { - wxView* view = wxDocument::GetFirstView(); - return view ? wxStaticCast(view, TextEditView) : NULL; + wxView* view = GetFirstView(); + return view ? wxStaticCast(view, TextEditView)->GetText() : NULL; } - diff --git a/samples/docview/doc.h b/samples/docview/doc.h index a4547ec65f..280f1656c0 100644 --- a/samples/docview/doc.h +++ b/samples/docview/doc.h @@ -157,21 +157,36 @@ public: // ---------------------------------------------------------------------------- -// A simple text document class +// wxTextDocument: wxDocument and wxTextCtrl married // ---------------------------------------------------------------------------- -class TextEditView; -class TextEditDocument : public wxDocument +class wxTextDocument : public wxDocument { public: - TextEditDocument() : wxDocument() { } - TextEditView *GetFirstView() const; + wxTextDocument() : wxDocument() { } + virtual wxTextCtrl* GetTextCtrl() const = 0; - virtual bool DoSaveDocument(const wxString& filename); - virtual bool DoOpenDocument(const wxString& filename); virtual bool IsModified() const; virtual void Modify(bool mod); +protected: + virtual bool DoSaveDocument(const wxString& filename); + virtual bool DoOpenDocument(const wxString& filename); + + DECLARE_NO_COPY_CLASS(wxTextDocument) + DECLARE_CLASS(wxTextDocument) +}; + +// ---------------------------------------------------------------------------- +// A very simple text document class +// ---------------------------------------------------------------------------- + +class TextEditDocument : public wxTextDocument +{ +public: + TextEditDocument() : wxTextDocument() { } + virtual wxTextCtrl* GetTextCtrl() const; + DECLARE_NO_COPY_CLASS(TextEditDocument) DECLARE_DYNAMIC_CLASS(TextEditDocument) }; -- 2.47.2