X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fdocs.cpp;h=88e6ba59222e8f2f8c5dda1b7e6649bf73ace788;hp=8bdb8d017925ec936583ec51403c3e78c00f4007;hb=cbcb02ba9b76a82c9a09ce1c7712431bb215575a;hpb=a5d437cb4228b07f8c005eaca497c317b8c19d14 diff --git a/src/docs.cpp b/src/docs.cpp index 8bdb8d0..88e6ba5 100644 --- a/src/docs.cpp +++ b/src/docs.cpp @@ -7,9 +7,9 @@ ** Date Started: July 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: docs.cpp,v 1.14 2001/01/20 17:43:41 kevin Exp $ +** $Id: docs.cpp,v 1.17 2001/01/30 02:20:50 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,20 +68,20 @@ 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 (! OnSaveModified()) + return false; + + if (! m_imageFile.fileRead (filename.c_str())) { + *theApp->getLog() << "Unable to read image file " << filename << "\n"; + m_bBadFileOpen = true; + return false; } + *theApp->getLog() << "Read image file " << filename << "\n"; + SetFilename(filename, true); Modify(false); UpdateAllViews(); GetFirstView()->OnUpdate (GetFirstView(), NULL); + m_bBadFileOpen = false; return true; } @@ -93,9 +93,14 @@ bool ImageFileDocument::IsModified(void) const void ImageFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } +ImageFileView* +ImageFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} // ProjectionFileDocument @@ -114,21 +119,21 @@ 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 (! OnSaveModified()) + return false; + + if (! m_projectionFile.read (filename.c_str())) { + *theApp->getLog() << "Unable to read projection file " << filename << "\n"; + m_bBadFileOpen = true; + return false; } + *theApp->getLog() << "Read projection file " << filename << "\n"; + SetFilename(filename, true); Modify(false); UpdateAllViews(); GetFirstView()->OnUpdate (GetFirstView(), NULL); - + m_bBadFileOpen = false; + return true; } @@ -139,17 +144,25 @@ bool ProjectionFileDocument::IsModified(void) const void ProjectionFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } +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) { + if (! OnSaveModified()) + return false; + wxString myFilename = filename; if (wxFile::Exists (myFilename)) { m_phantom.createFromFile (myFilename); @@ -162,17 +175,19 @@ bool PhantomDocument::OnOpenDocument(const wxString& filename) SetFilename (myFilename, true); if (m_phantom.fail()) { *theApp->getLog() << "Failure creating phantom " << myFilename << "\n"; + m_bBadFileOpen = true; return false; } m_idPhantom = m_phantom.id(); Modify(false); UpdateAllViews(); GetFirstView()->OnUpdate (GetFirstView(), NULL); - + m_bBadFileOpen = false; + 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"; @@ -183,17 +198,23 @@ bool PhantomDocument::OnSaveDocument(const wxString& filename) return true; } -bool PhantomDocument::IsModified(void) const +bool PhantomFileDocument::IsModified(void) const { return false; } -void PhantomDocument::Modify(bool mod) +void PhantomFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } +PhantomFileView* +PhantomFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} + // PlotFileDocument IMPLEMENT_DYNAMIC_CLASS(PlotFileDocument, wxDocument) @@ -212,22 +233,22 @@ 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 (! OnSaveModified()) + return false; + + if (! m_plot.fileRead (filename.c_str())) { + *theApp->getLog() << "Unable to read plot file " << filename << "\n"; + m_bBadFileOpen = true; + return false; } + *theApp->getLog() << "Read plot file " << filename << "\n"; + SetFilename (filename, true); + m_namePlot = filename.c_str(); Modify (false); UpdateAllViews(); GetFirstView()->OnUpdate (NULL, NULL); - + m_bBadFileOpen = false; + return true; } @@ -239,50 +260,72 @@ bool PlotFileDocument::IsModified(void) const void PlotFileDocument::Modify(bool mod) { - wxDocument::Modify(mod); + wxDocument::Modify(mod); } +PlotFileView* +PlotFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} ////////////////////////////////////////////////////////////////////////// // -// TextEditDocument +// TextFileDocument // ////////////////////////////////////////////////////////////////////////// -IMPLEMENT_DYNAMIC_CLASS(TextEditDocument, wxDocument) +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 TextEditDocument::OnSaveDocument(const wxString& filename) +bool TextFileDocument::OnSaveDocument(const wxString& filename) { - TextEditView *view = dynamic_cast(GetFirstView()); - if (! view->getTextCtrl()->SaveFile(filename)) - return false; - Modify(false); - return true; + TextFileView *view = getView(); + if (! view->getTextCtrl()->SaveFile(filename)) + return false; + Modify(false); + return true; } -bool TextEditDocument::OnOpenDocument(const wxString& filename) +bool TextFileDocument::OnOpenDocument(const wxString& filename) { - TextEditView *view = dynamic_cast(GetFirstView()); - - if (filename != "Log.txt" && ! view->getTextCtrl()->LoadFile(filename)) - return false; - - SetFilename (filename, true); - Modify (false); - UpdateAllViews(); - return true; + TextFileView *view = getView(); + + if (! view->getTextCtrl()->LoadFile(filename)) { + m_bBadFileOpen = true; + return false; + } + + SetFilename (filename, true); + Modify (false); + UpdateAllViews(); + m_bBadFileOpen = false; + return true; } -bool TextEditDocument::IsModified(void) const +bool TextFileDocument::IsModified(void) const { return false; - - TextEditView *view = dynamic_cast(GetFirstView()); + + TextFileView *view = getView(); + if (view) return (wxDocument::IsModified() || view->getTextCtrl()->IsModified()); else return wxDocument::IsModified(); } + +TextFileView* +TextFileDocument::getView() const +{ + return dynamic_cast(GetFirstView()); +} + +wxTextCtrl* +TextFileDocument::getTextCtrl() +{ + return dynamic_cast(GetFirstView())->getTextCtrl(); +} +