r438: no message
[ctsim.git] / src / views.cpp
index 167c76e011ee0e04a6cb72d8cddb28b901bf493c..62a15395e2cba28502e528d6399d5cf111d821da 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: views.cpp,v 1.69 2001/01/20 17:43:41 kevin Exp $
+**  $Id: views.cpp,v 1.71 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
@@ -81,6 +81,8 @@ ImageFileCanvas::~ImageFileCanvas()
   if (m_pView) {
     wxMenu* pMenu = m_pView->getFileMenu();
     theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
+    m_pView->canvasClosed();
+    m_pView = NULL;
   }
 }
 
@@ -354,7 +356,7 @@ ImageFileView::OnCompare (wxCommandEvent& event)
       os << "Comparative Statistics: d=" << d << ", r=" << r << ", e=" << e << "\n";
       *theApp->getLog() << os.str().c_str();
       if (dialogGetCompare.getMakeDifferenceImage()) {
-        ImageFileDocument* pDifferenceDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+        ImageFileDocument* pDifferenceDoc = theApp->newImageDoc();
         if (! pDifferenceDoc) {
           sys_error (ERR_SEVERE, "Unable to create image file");
           return;
@@ -456,7 +458,7 @@ ImageFileView::OnAdd (wxCommandEvent& event)
       ImageFile& rIF = GetDocument()->getImageFile();
       ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
       const ImageFile& rRHSIF = pRHSDoc->getImageFile();
-      ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
       if (! pNewDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -496,7 +498,7 @@ ImageFileView::OnSubtract (wxCommandEvent& event)
       ImageFile& rIF = GetDocument()->getImageFile();
       ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
       const ImageFile& rRHSIF = pRHSDoc->getImageFile();
-      ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
       if (! pNewDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -536,7 +538,7 @@ ImageFileView::OnMultiply (wxCommandEvent& event)
       ImageFile& rIF = GetDocument()->getImageFile();
       ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
       const ImageFile& rRHSIF = pRHSDoc->getImageFile();
-      ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
       if (! pNewDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -576,7 +578,7 @@ ImageFileView::OnDivide (wxCommandEvent& event)
       ImageFile& rIF = GetDocument()->getImageFile();
       ImageFileDocument* pRHSDoc = dialogGetCompare.getImageFileDocument();
       const ImageFile& rRHSIF = pRHSDoc->getImageFile();
-      ImageFileDocument* pNewDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pNewDoc = theApp->newImageDoc();
       if (! pNewDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -996,10 +998,10 @@ ImageFileView::OnClose (bool deleteWindow)
   
 //  m_canvas->Clear();
 //  m_canvas->setView(NULL);
-//  m_canvas = NULL;
+  m_canvas = NULL;
   wxString s(theApp->GetAppName());
-  if (m_frame)
-    m_frame->SetTitle(s);
+//  if (m_frame)
+//    m_frame->SetTitle(s);
   SetFrame(NULL);
   
   Activate(false);
@@ -1069,7 +1071,7 @@ ImageFileView::OnScaleSize (wxCommandEvent& event)
     unsigned int iNewNY = dialogGetXYSize.getYSize();
     std::ostringstream os;
     os << "Scale Size from (" << iOldNX << "," << iOldNY << ") to (" << iNewNX << "," << iNewNY << ")";
-    ImageFileDocument* pScaledDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+    ImageFileDocument* pScaledDoc = theApp->newImageDoc();
     if (! pScaledDoc) {
       sys_error (ERR_SEVERE, "Unable to create image file");
       return;
@@ -1119,7 +1121,7 @@ ImageFileView::OnPlotRow (wxCommandEvent& event)
         pYMag[i] = ::sqrt (v[i][yCursor] * v[i][yCursor] + vImag[i][yCursor] * vImag[i][yCursor]);
       }
     }
-    PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
     if (! pPlotDoc) {
       sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
     } else {
@@ -1203,7 +1205,7 @@ ImageFileView::OnPlotCol (wxCommandEvent& event)
         pYMag[i] = ::sqrt (v[xCursor][i] * v[xCursor][i] + vImag[xCursor][i] * vImag[xCursor][i]);
       }
     }
-    PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
     if (! pPlotDoc) {
       sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
     } else {
@@ -1301,7 +1303,7 @@ ImageFileView::OnPlotFFTRow (wxCommandEvent& event)
     Fourier::shuffleFourierToNaturalOrder (pYImag, nx);
     Fourier::shuffleFourierToNaturalOrder (pYMag, nx);
     
-    PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
     if (! pPlotDoc) {
       sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
     } else {
@@ -1399,7 +1401,7 @@ ImageFileView::OnPlotFFTCol (wxCommandEvent& event)
       pYMag[i] = ::sqrt (pcIn[i].re * pcIn[i].re + pcIn[i].im * pcIn[i].im);
     }
     
-    PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
     if (! pPlotDoc) {
       sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
     } else {
@@ -1484,7 +1486,7 @@ ImageFileView::OnCompareCol (wxCommandEvent& event)
         pY1[i] = v1[xCursor][i];
         pY2[i] = v2[xCursor][i];
       }
-      PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+      PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
       if (! pPlotDoc) {
         sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
       } else {
@@ -1575,7 +1577,7 @@ ImageFileView::OnCompareRow (wxCommandEvent& event)
         pY1[i] = v1[i][yCursor];
         pY2[i] = v2[i][yCursor];
       }
-      PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+      PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
       if (! pPlotDoc) {
         sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
       } else {
@@ -1638,7 +1640,7 @@ ImageFileView::OnPlotHistogram (wxCommandEvent& event)
   int ny = rIF.ny();
   
   if (v != NULL && nx > 0 && ny > 0) {
-    PlotFileDocument* pPlotDoc = dynamic_cast<PlotFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.plt", wxDOC_SILENT));
+    PlotFileDocument* pPlotDoc = theApp->newPlotDoc();
     if (! pPlotDoc) {
       sys_error (ERR_SEVERE, "Internal error: unable to create Plot file");
       return;
@@ -1694,7 +1696,7 @@ ImageFileView::OnPlotHistogram (wxCommandEvent& event)
 
 // PhantomCanvas
 
-PhantomCanvas::PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
+PhantomCanvas::PhantomCanvas (PhantomFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
 : wxScrolledWindow(frame, -1, pos, size, style)
 {
   m_pView = v;
@@ -1705,6 +1707,8 @@ PhantomCanvas::~PhantomCanvas ()
   if (m_pView) {
     wxMenu* pMenu = m_pView->getFileMenu();
     theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
+    m_pView->canvasClosed();
+    m_pView = NULL;
   }
 }
 
@@ -1716,17 +1720,17 @@ PhantomCanvas::OnDraw (wxDC& dc)
 }
 
 
-// PhantomView
+// PhantomFileView
 
-IMPLEMENT_DYNAMIC_CLASS(PhantomView, wxView)
+IMPLEMENT_DYNAMIC_CLASS(PhantomFileView, wxView)
 
-BEGIN_EVENT_TABLE(PhantomView, wxView)
-EVT_MENU(PHMMENU_FILE_PROPERTIES, PhantomView::OnProperties)
-EVT_MENU(PHMMENU_PROCESS_RASTERIZE, PhantomView::OnRasterize)
-EVT_MENU(PHMMENU_PROCESS_PROJECTIONS, PhantomView::OnProjections)
+BEGIN_EVENT_TABLE(PhantomFileView, wxView)
+EVT_MENU(PHMMENU_FILE_PROPERTIES, PhantomFileView::OnProperties)
+EVT_MENU(PHMMENU_PROCESS_RASTERIZE, PhantomFileView::OnRasterize)
+EVT_MENU(PHMMENU_PROCESS_PROJECTIONS, PhantomFileView::OnProjections)
 END_EVENT_TABLE()
 
-PhantomView::PhantomView(void) 
+PhantomFileView::PhantomFileView(void) 
 : wxView(), m_canvas(NULL), m_frame(NULL), m_pFileMenu(0)
 {
   m_iDefaultNDet = 367;
@@ -1743,12 +1747,12 @@ PhantomView::PhantomView(void)
   m_iDefaultRasterNSamples = 2;
 }
 
-PhantomView::~PhantomView()
+PhantomFileView::~PhantomFileView()
 {
 }
 
 void
-PhantomView::OnProperties (wxCommandEvent& event)
+PhantomFileView::OnProperties (wxCommandEvent& event)
 {
   const int idPhantom = GetDocument()->getPhantomID();
   const wxString& namePhantom = GetDocument()->getPhantomName();
@@ -1765,7 +1769,7 @@ PhantomView::OnProperties (wxCommandEvent& event)
 
 
 void
-PhantomView::OnProjections (wxCommandEvent& event)
+PhantomFileView::OnProjections (wxCommandEvent& event)
 {
   DialogGetProjectionParameters dialogProjection (getFrameForChild(), m_iDefaultNDet, m_iDefaultNView, m_iDefaultNSample, m_dDefaultRotation, m_dDefaultFocalLength, m_dDefaultFieldOfView, m_iDefaultGeometry, m_iDefaultTrace);
   int retVal = dialogProjection.ShowModal();
@@ -1782,7 +1786,7 @@ PhantomView::OnProjections (wxCommandEvent& event)
     
     if (m_iDefaultNDet > 0 && m_iDefaultNView > 0 && sGeometry != "") {
       const Phantom& rPhantom = GetDocument()->getPhantom();
-      ProjectionFileDocument* pProjectionDoc = dynamic_cast<ProjectionFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.pj", wxDOC_SILENT));
+      ProjectionFileDocument* pProjectionDoc = theApp->newProjectionDoc();
       if (! pProjectionDoc) {
         sys_error (ERR_SEVERE, "Unable to create projection document");
         return;
@@ -1854,7 +1858,7 @@ PhantomView::OnProjections (wxCommandEvent& event)
 
 
 void
-PhantomView::OnRasterize (wxCommandEvent& event)
+PhantomFileView::OnRasterize (wxCommandEvent& event)
 {
   DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY, m_iDefaultRasterNSamples);
   int retVal = dialogRaster.ShowModal();
@@ -1866,7 +1870,7 @@ PhantomView::OnRasterize (wxCommandEvent& event)
       m_iDefaultRasterNSamples = 1;
     if (m_iDefaultRasterNX > 0 && m_iDefaultRasterNY > 0) {
       const Phantom& rPhantom = GetDocument()->getPhantom();
-      ImageFileDocument* pRasterDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pRasterDoc = theApp->newImageDoc();
       if (! pRasterDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -1903,13 +1907,13 @@ PhantomView::OnRasterize (wxCommandEvent& event)
 
 
 PhantomCanvas* 
-PhantomView::CreateCanvas (wxView *view, wxFrame *parent)
+PhantomFileView::CreateCanvas (wxView *view, wxFrame *parent)
 {
   PhantomCanvas* pCanvas;
   int width, height;
   parent->GetClientSize(&width, &height);
   
-  pCanvas = new PhantomCanvas (dynamic_cast<PhantomView*>(view), parent, wxPoint(0, 0), wxSize(width, height), 0);
+  pCanvas = new PhantomCanvas (dynamic_cast<PhantomFileView*>(view), parent, wxPoint(0, 0), wxSize(width, height), 0);
   
   pCanvas->SetBackgroundColour(*wxWHITE);
   pCanvas->Clear();
@@ -1918,7 +1922,7 @@ PhantomView::CreateCanvas (wxView *view, wxFrame *parent)
 }
 
 wxFrame*
-PhantomView::CreateChildFrame(wxDocument *doc, wxView *view)
+PhantomFileView::CreateChildFrame(wxDocument *doc, wxView *view)
 {
 #if CTSIM_MDI
   wxDocMDIChildFrame *subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(256, 256), wxDEFAULT_FRAME_STYLE);
@@ -1984,14 +1988,14 @@ PhantomView::CreateChildFrame(wxDocument *doc, wxView *view)
 
 
 bool 
-PhantomView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
 {
   m_frame = CreateChildFrame(doc, this);
   SetFrame(m_frame);
   
   int width, height;
   m_frame->GetClientSize(&width, &height);
-  m_frame->SetTitle("PhantomView");
+  m_frame->SetTitle("PhantomFileView");
   m_canvas = CreateCanvas (this, m_frame);
   
 #ifdef __X__
@@ -2007,21 +2011,21 @@ PhantomView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
 }
 
 void 
-PhantomView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+PhantomFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 {
   if (m_canvas)
     m_canvas->Refresh();
 }
 
 bool 
-PhantomView::OnClose (bool deleteWindow)
+PhantomFileView::OnClose (bool deleteWindow)
 {
   if (!GetDocument()->Close())
     return false;
   
 //  m_canvas->Clear();
 //  m_canvas->setView(NULL);
-//  m_canvas = NULL;
+  m_canvas = NULL;
   wxString s(wxTheApp->GetAppName());
   if (m_frame)
     m_frame->SetTitle(s);
@@ -2029,14 +2033,16 @@ PhantomView::OnClose (bool deleteWindow)
   
   Activate(false);
   
-  if (deleteWindow)
+  if (deleteWindow) {
     delete m_frame;
+    m_frame = NULL;
+  }
   
   return true;
 }
 
 void
-PhantomView::OnDraw (wxDC* dc)
+PhantomFileView::OnDraw (wxDC* dc)
 {
   int xsize, ysize;
   m_canvas->GetClientSize (&xsize, &ysize);
@@ -2060,6 +2066,8 @@ ProjectionFileCanvas::~ProjectionFileCanvas ()
   if (m_pView) {
     wxMenu* pMenu = m_pView->getFileMenu();
     theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
+    m_pView->canvasClosed();
+    m_pView = NULL;
   }
 }
 
@@ -2146,7 +2154,7 @@ ProjectionFileView::OnConvertPolar (wxCommandEvent& event)
     wxString strInterpolation (dialogPolar.getInterpolationName());
     m_iDefaultPolarNX = dialogPolar.getXSize();
     m_iDefaultPolarNY = dialogPolar.getYSize();
-    ImageFileDocument* pPolarDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+    ImageFileDocument* pPolarDoc = theApp->newImageDoc();
     ImageFile& rIF = pPolarDoc->getImageFile();
     if (! pPolarDoc) {
       sys_error (ERR_SEVERE, "Unable to create image file");
@@ -2180,7 +2188,7 @@ ProjectionFileView::OnConvertFFTPolar (wxCommandEvent& event)
     m_iDefaultPolarNX = dialogPolar.getXSize();
     m_iDefaultPolarNY = dialogPolar.getYSize();
     m_iDefaultPolarZeropad = dialogPolar.getZeropad();
-    ImageFileDocument* pPolarDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+    ImageFileDocument* pPolarDoc = theApp->newImageDoc();
     ImageFile& rIF = pPolarDoc->getImageFile();
     if (! pPolarDoc) {
       sys_error (ERR_SEVERE, "Unable to create image file");
@@ -2232,7 +2240,7 @@ ProjectionFileView::OnReconstructFBP (wxCommandEvent& event)
     m_iDefaultBackprojector = Backprojector::convertBackprojectNameToID (optBackprojectName.c_str());
     m_iDefaultTrace = dialogReconstruction.getTrace();
     if (m_iDefaultNX > 0 && m_iDefaultNY > 0) {
-      ImageFileDocument* pReconDoc = dynamic_cast<ImageFileDocument*>(theApp->getDocManager()->CreateDocument("untitled.if", wxDOC_SILENT));
+      ImageFileDocument* pReconDoc = theApp->newImageDoc();
       if (! pReconDoc) {
         sys_error (ERR_SEVERE, "Unable to create image file");
         return;
@@ -2339,6 +2347,8 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
   m_pFileMenu->AppendSeparator();
   m_pFileMenu->Append(MAINMENU_FILE_EXIT, "E&xit");
 #endif
+  theApp->getDocManager()->FileHistoryAddFilesToMenu(m_pFileMenu);
+  theApp->getDocManager()->FileHistoryUseMenu(m_pFileMenu);
   
   wxMenu *convert_menu = new wxMenu;
   convert_menu->Append (PJMENU_CONVERT_POLAR, "&Polar Image...\tCtrl-L");
@@ -2474,12 +2484,12 @@ ProjectionFileView::OnClose (bool deleteWindow)
   if (!GetDocument()->Close())
     return false;
   
-//  m_canvas->Clear();
-//  m_canvas->setView(NULL);
-//  m_canvas = NULL;
-  wxString s(wxTheApp->GetAppName());
-  if (m_frame)
-    m_frame->SetTitle(s);
+  //m_canvas->Clear();
+  //m_canvas->setView(NULL);
+  m_canvas = NULL;
+//  wxString s(wxTheApp->GetAppName());
+//  if (m_frame)
+//    m_frame->SetTitle(s);
   SetFrame(NULL);
   
   Activate(false);
@@ -2505,6 +2515,8 @@ PlotFileCanvas::~PlotFileCanvas ()
   if (m_pView) {
     wxMenu* pMenu = m_pView->getFileMenu();
     theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
+    m_pView->canvasClosed();
+    m_pView = NULL;
   }
 }
 
@@ -2798,12 +2810,12 @@ PlotFileView::OnClose (bool deleteWindow)
   if (!GetDocument()->Close())
     return false;
   
-//  m_canvas->Clear();
-//  m_canvas->setView (NULL);
-//  m_canvas = NULL;
-  wxString s(wxTheApp->GetAppName());
-  if (m_frame)
-    m_frame->SetTitle(s);
+  //m_canvas->Clear();
+  //m_canvas->setView (NULL);
+  m_canvas = NULL;
+//  wxString s(wxTheApp->GetAppName());
+//  if (m_frame)
+//    m_frame->SetTitle(s);
   SetFrame(NULL);
   
   Activate(false);
@@ -2819,23 +2831,21 @@ PlotFileView::OnClose (bool deleteWindow)
 ////////////////////////////////////////////////////////////////
 
 
-IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView)
+IMPLEMENT_DYNAMIC_CLASS(TextFileView, wxView)
 
-TextEditView::~TextEditView() 
+TextFileView::~TextFileView() 
 {
-  if (m_pFileMenu)
-    theApp->getDocManager()->FileHistoryRemoveMenu (m_pFileMenu);
 }
 
-bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+bool TextFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
 {
   m_pFrame = CreateChildFrame(doc, this);
   SetFrame (m_pFrame);
   
   int width, height;
   m_pFrame->GetClientSize(&width, &height);
-  m_pFrame->SetTitle("TextEdit");
-  m_pCanvas = new TextEditCanvas (this, m_pFrame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE | wxTE_READONLY);
+  m_pFrame->SetTitle("TextFile");
+  m_pCanvas = new TextFileCanvas (this, m_pFrame, wxPoint(0, 0), wxSize(width, height), wxTE_MULTILINE | wxTE_READONLY);
   m_pFrame->SetTitle("Log");
   
 #ifdef __X__
@@ -2852,16 +2862,16 @@ bool TextEditView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
 }
 
 // Handled by wxTextWindow
-void TextEditView::OnDraw(wxDC *WXUNUSED(dc) )
+void TextFileView::OnDraw(wxDC *WXUNUSED(dc) )
 {
 }
 
-void TextEditView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+void TextFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
 {
 }
 
 bool 
-TextEditView::OnClose (bool deleteWindow)
+TextFileView::OnClose (bool deleteWindow)
 {
   return false;
   
@@ -2879,12 +2889,12 @@ TextEditView::OnClose (bool deleteWindow)
 }
 
 wxFrame*
-TextEditView::CreateChildFrame (wxDocument *doc, wxView *view)
+TextFileView::CreateChildFrame (wxDocument *doc, wxView *view)
 {
 #if CTSIM_MDI
-  wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, "TextEdit Frame", wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE);
+  wxDocMDIChildFrame* subframe = new wxDocMDIChildFrame (doc, view, theApp->getMainFrame(), -1, "TextFile Frame", wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE);
 #else
-  wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, "TextEdit Frame", wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE);
+  wxDocChildFrame* subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, "TextFile Frame", wxPoint(-1, -1), wxSize(300, 150), wxDEFAULT_FRAME_STYLE);
 #endif
   theApp->setIconForFrame (subframe);
   
@@ -2935,15 +2945,17 @@ TextEditView::CreateChildFrame (wxDocument *doc, wxView *view)
 
 
 // Define a constructor for my text subwindow
-TextEditCanvas::TextEditCanvas (TextEditView* v, wxFrame* frame, const wxPoint& pos, const wxSize& size, long style)
+TextFileCanvas::TextFileCanvas (TextFileView* v, wxFrame* frame, const wxPoint& pos, const wxSize& size, long style)
   : wxTextCtrl (frame, -1, "", pos, size, style), m_pView(v)
 {
 }
 
-TextEditCanvas::~TextEditCanvas ()
+TextFileCanvas::~TextFileCanvas ()
 {
   if (m_pView) {
     wxMenu* pMenu = m_pView->getFileMenu();
     theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
+    m_pView->canvasClosed();
+    m_pView = NULL;
   }
 }