X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=src%2Fdocs.cpp;h=cf20b310993aaa9c02d3cc6b856b58852c4d0571;hb=dfe03b8fc348b60a8f0b012f3f76c24ad29f21ce;hp=d9b3d1098169533deb28d032598663bbc3912854;hpb=c00c639073653fac7463a88f2b000f263236550d;p=ctsim.git diff --git a/src/docs.cpp b/src/docs.cpp index d9b3d10..cf20b31 100644 --- a/src/docs.cpp +++ b/src/docs.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: docs.cpp,v 1.11 2001/01/02 16:02:13 kevin Exp $ +** $Id: docs.cpp,v 1.15 2001/01/26 05:37:24 kevin Exp $ ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -68,21 +68,17 @@ bool ImageFileDocument::OnSaveDocument(const wxString& filename) bool ImageFileDocument::OnOpenDocument(const wxString& filename) { - if (filename == "untitled.if") { - wxString untitledFilename = theApp->getUntitledFilename(); - SetFilename (untitledFilename, true); - } else { - if (! m_imageFile.fileRead (filename.c_str())) { - *theApp->getLog() << "Unable to read image file " << filename << "\n"; - return false; - } - *theApp->getLog() << "Read image file " << filename << "\n"; - SetFilename(filename, true); + if (! m_imageFile.fileRead (filename.c_str())) { + *theApp->getLog() << "Unable to read image file " << filename << "\n"; + return false; } + *theApp->getLog() << "Read image file " << filename << "\n"; + SetFilename(filename, true); + Modify(false); UpdateAllViews(); GetFirstView()->OnUpdate (GetFirstView(), NULL); - + return true; } @@ -93,13 +89,13 @@ bool ImageFileDocument::IsModified(void) const void ImageFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } -bool ImageFileDocument::OnCloseDocument () -{ - bool bReturn = wxDocument::OnCloseDocument(); - return bReturn; +ImageFileView* +ImageFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); } // ProjectionFileDocument @@ -119,20 +115,16 @@ bool ProjectionFileDocument::OnSaveDocument(const wxString& filename) bool ProjectionFileDocument::OnOpenDocument(const wxString& filename) { - if (filename == "untitled.pj") { - wxString untitledFilename = theApp->getUntitledFilename(); - SetFilename (untitledFilename, true); - } else { - if (! m_projectionFile.read (filename.c_str())) { - *theApp->getLog() << "Unable to read projection file " << filename << "\n"; - return false; - } - *theApp->getLog() << "Read projection file " << filename << "\n"; - SetFilename(filename, true); + if (! m_projectionFile.read (filename.c_str())) { + *theApp->getLog() << "Unable to read projection file " << filename << "\n"; + return false; } + *theApp->getLog() << "Read projection file " << filename << "\n"; + SetFilename(filename, true); Modify(false); UpdateAllViews(); - + GetFirstView()->OnUpdate (GetFirstView(), NULL); + return true; } @@ -143,21 +135,21 @@ bool ProjectionFileDocument::IsModified(void) const void ProjectionFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } -bool ProjectionFileDocument::OnCloseDocument () -{ - bool bReturn = wxDocument::OnCloseDocument(); - return bReturn; +ProjectionFileView* +ProjectionFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); } -// PhantomDocument +// PhantomFileDocument -IMPLEMENT_DYNAMIC_CLASS(PhantomDocument, wxDocument) +IMPLEMENT_DYNAMIC_CLASS(PhantomFileDocument, wxDocument) -bool PhantomDocument::OnOpenDocument(const wxString& filename) +bool PhantomFileDocument::OnOpenDocument(const wxString& filename) { wxString myFilename = filename; if (wxFile::Exists (myFilename)) { @@ -176,11 +168,12 @@ bool PhantomDocument::OnOpenDocument(const wxString& filename) m_idPhantom = m_phantom.id(); Modify(false); UpdateAllViews(); - + GetFirstView()->OnUpdate (GetFirstView(), NULL); + return true; } -bool PhantomDocument::OnSaveDocument(const wxString& filename) +bool PhantomFileDocument::OnSaveDocument(const wxString& filename) { if (! m_phantom.fileWrite (filename.c_str())) { *theApp->getLog() << "Unable to write phantom file " << filename << "\n"; @@ -191,22 +184,22 @@ bool PhantomDocument::OnSaveDocument(const wxString& filename) return true; } -bool PhantomDocument::OnCloseDocument () +bool PhantomFileDocument::IsModified(void) const { - bool bReturn = wxDocument::OnCloseDocument(); - return bReturn; + return false; } -bool PhantomDocument::IsModified(void) const +void PhantomFileDocument::Modify(bool mod) { - return wxDocument::IsModified(); + wxDocument::Modify(mod); } -void PhantomDocument::Modify(bool mod) -{ - wxDocument::Modify(mod); -} +PhantomFileView* +PhantomFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} // PlotFileDocument @@ -226,30 +219,20 @@ bool PlotFileDocument::OnSaveDocument(const wxString& filename) bool PlotFileDocument::OnOpenDocument(const wxString& filename) { - if (filename == "untitled.plt") { - wxString untitledFilename = theApp->getUntitledFilename(); - SetFilename (untitledFilename, true); - } else { - if (! m_plot.fileRead (filename.c_str())) { - *theApp->getLog() << "Unable to read plot file " << filename << "\n"; - return false; - } - *theApp->getLog() << "Read plot file " << filename << "\n"; - SetFilename (filename, true); - m_namePlot = filename.c_str(); + if (! m_plot.fileRead (filename.c_str())) { + *theApp->getLog() << "Unable to read plot file " << filename << "\n"; + return false; } + *theApp->getLog() << "Read plot file " << filename << "\n"; + SetFilename (filename, true); + m_namePlot = filename.c_str(); Modify (false); UpdateAllViews(); GetFirstView()->OnUpdate (NULL, NULL); - + return true; } -bool PlotFileDocument::OnCloseDocument () -{ - bool bReturn = wxDocument::OnCloseDocument(); - return bReturn; -} bool PlotFileDocument::IsModified(void) const { @@ -258,6 +241,62 @@ bool PlotFileDocument::IsModified(void) const void PlotFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } +PlotFileView* +PlotFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} + +////////////////////////////////////////////////////////////////////////// +// +// TextFileDocument +// +////////////////////////////////////////////////////////////////////////// + +IMPLEMENT_DYNAMIC_CLASS(TextFileDocument, wxDocument) + +// Since text windows have their own method for saving to/loading from files, +// we override OnSave/OpenDocument instead of Save/LoadObject +bool TextFileDocument::OnSaveDocument(const wxString& filename) +{ + TextFileView *view = getView(); + if (! view->getTextCtrl()->SaveFile(filename)) + return false; + Modify(false); + return true; +} + +bool TextFileDocument::OnOpenDocument(const wxString& filename) +{ + TextFileView *view = getView(); + + if (! view->getTextCtrl()->LoadFile(filename)) + return false; + + SetFilename (filename, true); + Modify (false); + UpdateAllViews(); + return true; +} + +bool TextFileDocument::IsModified(void) const +{ + return false; + + TextFileView *view = getView(); + + if (view) + return (wxDocument::IsModified() || view->getTextCtrl()->IsModified()); + else + return wxDocument::IsModified(); +} + + +TextFileView* +TextFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +}