** This is part of the CTSim program
** Copyright (c) 1983-2001 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.85 2001/01/28 20:05:17 kevin Exp $
+** $Id: views.cpp,v 1.90 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
BEGIN_EVENT_TABLE(ImageFileCanvas, wxScrolledWindow)
EVT_MOUSE_EVENTS(ImageFileCanvas::OnMouseEvent)
+EVT_CHAR(ImageFileCanvas::OnChar)
END_EVENT_TABLE()
DrawRubberBandCursor (dc, pt.x, yPt);
m_xCursor = pt.x;
m_yCursor = yPt;
+ wxMenu* pMenu = m_pView->getMenuAnalyze();
+ if (pMenu && ! pMenu->IsEnabled(IFMENU_PLOT_ROW)) {
+ pMenu->Enable (IFMENU_PLOT_ROW, true);
+ pMenu->Enable (IFMENU_PLOT_COL, true);
+ pMenu->Enable (IFMENU_COMPARE_ROW, true);
+ pMenu->Enable (IFMENU_COMPARE_COL, true);
+ pMenu->Enable (IFMENU_PLOT_FFT_ROW, true);
+ pMenu->Enable (IFMENU_PLOT_FFT_COL, true);
+ }
} else
*theApp->getLog() << "Mouse out of image range (" << pt.x << "," << yPt << ")\n";
}
}
}
+void
+ImageFileCanvas::OnChar (wxKeyEvent& event)
+{
+ if (event.GetKeyCode() == WXK_ESCAPE) {
+ m_xCursor = -1;
+ m_yCursor = -1;
+ if (m_pView)
+ m_pView->OnUpdate (NULL);
+ } else
+ wxScrolledWindow::OnChar (event);
+}
+
wxSize
ImageFileCanvas::GetBestSize() const
{
differenceImage.setArraySize (rIF.nx(), rIF.ny());
if (! rIF.subtractImages (rCompareIF, differenceImage)) {
- pDifferenceDoc->getView()->getFrame()->Close(true);
+ pDifferenceDoc->getView()->getFrame()->Show(true);
+ GetDocumentManager()->ActivateView (pDifferenceDoc->getView(), true, false);
+ pDifferenceDoc->getView()->getFrame()->SetFocus();
+ wxCommandEvent event;
+ GetDocumentManager()->OnFileClose (event);
+ GetDocumentManager()->ActivateView (this, true, false);
+ getFrame()->SetFocus();
return;
}
<< " and " << pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str() << ": "
<< os.str().c_str();
differenceImage.labelAdd (os.str().c_str());
- if (theApp->getSetModifyNewDocs())
- pDifferenceDoc->Modify (true);
+ pDifferenceDoc->Modify (true);
pDifferenceDoc->UpdateAllViews (this);
pDifferenceDoc->getView()->OnUpdate (this, NULL);
pDifferenceDoc->getView()->getFrame()->Show(true);
ImageFile& rIF = GetDocument()->getImageFile();
rIF.invertPixelValues (rIF);
rIF.labelAdd ("Invert Pixel Values");
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
ImageFile& rIF = GetDocument()->getImageFile();
rIF.square (rIF);
rIF.labelAdd ("Square Pixel Values");
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
ImageFile& rIF = GetDocument()->getImageFile();
rIF.sqrt (rIF);
rIF.labelAdd ("Square-root Pixel Values");
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
ImageFile& rIF = GetDocument()->getImageFile();
rIF.log (rIF);
rIF.labelAdd ("Logrithm base-e Pixel Values");
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
ImageFile& rIF = GetDocument()->getImageFile();
rIF.exp (rIF);
rIF.labelAdd ("Exponent base-e Pixel Values");
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
newImage.labelsCopy (rRHSIF, s.c_str());
newImage.labelAdd (os.str().c_str());
*theApp->getLog() << os.str().c_str() << "\n";
- if (theApp->getSetModifyNewDocs())
- pNewDoc->Modify(TRUE);
+ pNewDoc->Modify (true);
pNewDoc->UpdateAllViews (this);
pNewDoc->getView()->OnUpdate (this, NULL);
pNewDoc->getView()->getFrame()->Show(true);
newImage.labelsCopy (rRHSIF, s.c_str());
newImage.labelAdd (os.str().c_str());
*theApp->getLog() << os.str().c_str() << "\n";
- if (theApp->getSetModifyNewDocs())
- pNewDoc->Modify(TRUE);
+ pNewDoc->Modify (true);
pNewDoc->UpdateAllViews (this);
pNewDoc->getView()->OnUpdate (this, NULL);
pNewDoc->getView()->getFrame()->Show(true);
newImage.labelsCopy (rRHSIF, s.c_str());
newImage.labelAdd (os.str().c_str());
*theApp->getLog() << os.str().c_str() << "\n";
- if (theApp->getSetModifyNewDocs())
- pNewDoc->Modify(TRUE);
+ pNewDoc->Modify (true);
pNewDoc->UpdateAllViews (this);
pNewDoc->getView()->OnUpdate (this, NULL);
pNewDoc->getView()->getFrame()->Show(true);
newImage.labelsCopy (rRHSIF, s.c_str());
newImage.labelAdd (os.str().c_str());
*theApp->getLog() << os.str().c_str() << "\n";
- if (theApp->getSetModifyNewDocs())
- pNewDoc->Modify(TRUE);
+ pNewDoc->Modify (true);
pNewDoc->UpdateAllViews (this);
pNewDoc->getView()->OnUpdate (this, NULL);
pNewDoc->getView()->getFrame()->Show(true);
rIF.labelAdd ("FFT Image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("IFFT Image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("FFT Rows");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("IFFT Rows");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("FFT Columns");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("IFFT Columns");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
#endif
rIF.labelAdd ("Fourier Image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("Inverse Fourier Image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("Shuffle Natural To Fourier Order");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("Shuffle Fourier To Natural Order");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
rIF.labelAdd ("Magnitude of complex-image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
}
rIF.labelAdd ("Phase of complex-image");
m_bMinSpecified = false;
m_bMaxSpecified = false;
- if (theApp->getSetModifyNewDocs())
- GetDocument()->Modify(TRUE);
+ GetDocument()->Modify (true);
GetDocument()->UpdateAllViews (this);
}
}
image_menu->AppendSeparator();
image_menu->Append (IFMENU_IMAGE_SCALESIZE, "S&cale Size...");
- wxMenu *analyze_menu = new wxMenu;
- analyze_menu->Append (IFMENU_PLOT_ROW, "Plot &Row");
- analyze_menu->Append (IFMENU_PLOT_COL, "Plot &Column");
- analyze_menu->Append (IFMENU_PLOT_HISTOGRAM, "Plot &Histogram");
- analyze_menu->AppendSeparator();
- analyze_menu->Append (IFMENU_PLOT_FFT_ROW, "Plot FFT Row");
- analyze_menu->Append (IFMENU_PLOT_FFT_COL, "Plot FFT Column");
- analyze_menu->AppendSeparator();
- analyze_menu->Append (IFMENU_COMPARE_IMAGES, "Compare &Images...");
- analyze_menu->Append (IFMENU_COMPARE_ROW, "Compare &Row");
- analyze_menu->Append (IFMENU_COMPARE_COL, "Compare &Column");
+ m_pMenuAnalyze = new wxMenu;
+ m_pMenuAnalyze->Append (IFMENU_PLOT_ROW, "Plot &Row");
+ m_pMenuAnalyze->Append (IFMENU_PLOT_COL, "Plot &Column");
+ m_pMenuAnalyze->Append (IFMENU_PLOT_HISTOGRAM, "Plot &Histogram");
+ m_pMenuAnalyze->AppendSeparator();
+ m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_ROW, "Plot FFT Row");
+ m_pMenuAnalyze->Append (IFMENU_PLOT_FFT_COL, "Plot FFT Column");
+ m_pMenuAnalyze->AppendSeparator();
+ m_pMenuAnalyze->Append (IFMENU_COMPARE_IMAGES, "Compare &Images...");
+ m_pMenuAnalyze->Append (IFMENU_COMPARE_ROW, "Compare &Row");
+ m_pMenuAnalyze->Append (IFMENU_COMPARE_COL, "Compare &Column");
+ m_pMenuAnalyze->Enable (IFMENU_PLOT_ROW, false);
+ m_pMenuAnalyze->Enable (IFMENU_PLOT_COL, false);
+ m_pMenuAnalyze->Enable (IFMENU_COMPARE_ROW, false);
+ m_pMenuAnalyze->Enable (IFMENU_COMPARE_COL, false);
+ m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_ROW, false);
+ m_pMenuAnalyze->Enable (IFMENU_PLOT_FFT_COL, false);
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
menu_bar->Append(view_menu, "&View");
menu_bar->Append(image_menu, "&Image");
menu_bar->Append(filter_menu, "Fi<er");
- menu_bar->Append(analyze_menu, "&Analyze");
+ menu_bar->Append(m_pMenuAnalyze, "&Analyze");
menu_bar->Append(help_menu, "&Help");
subframe->SetMenuBar(menu_bar);
ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
{
m_pFrame = CreateChildFrame(doc, this);
- (m_pFrame);
+ (m_pFrame);
m_bMinSpecified = false;
m_bMaxSpecified = false;
bool
ImageFileView::OnClose (bool deleteWindow)
{
+ //GetDocumentManager()->ActivateView (this, false, true);
if (! GetDocument() || ! GetDocument()->Close())
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
SetFrame(NULL);
Activate(false);
-
+
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
m_pFrame->Destroy();
m_pFrame = NULL;
+ if (GetDocument() && GetDocument()->getBadFileOpen())
+ ::wxYield(); // wxWindows bug workaround
}
+
return true;
}
rScaledIF.labelAdd (os.str().c_str());
rIF.scaleImage (rScaledIF);
*theApp->getLog() << os.str().c_str() << "\n";
- if (theApp->getSetModifyNewDocs())
- pScaledDoc->Modify(TRUE);
+ pScaledDoc->Modify (true);
pScaledDoc->UpdateAllViews (this);
pScaledDoc->getView()->OnUpdate (this, NULL);
pScaledDoc->getView()->getFrame()->Show(true);
delete pYImag;
delete pYMag;
}
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
delete pYImag;
delete pYMag;
}
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
delete pYMag;
delete [] pcIn;
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
delete pdTemp;
delete [] pcIn;
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
#endif
delete pX;
delete pY1;
delete pY2;
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
}
delete pX;
delete pY1;
delete pY2;
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
}
rPlotFile.addDescription (os.str().c_str());
delete pX;
delete pY;
- if (theApp->getSetModifyNewDocs())
- pPlotDoc->Modify(true);
+ pPlotDoc->Modify (true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
for (int iView = 0; iView < rProj.nView(); iView++) {
::wxYield();
if (dialogProjections.isCancelled() || ! dialogProjections.projectView (iView)) {
- pProjectionDoc->getView()->getFrame()->Close(true);
+ pProjectionDoc->getView()->getFrame()->Show(true);
+ GetDocumentManager()->ActivateView (pProjectionDoc->getView(), true, false);
+ pProjectionDoc->getView()->getFrame()->SetFocus();
+ wxCommandEvent event;
+ GetDocumentManager()->OnFileClose (event);
+ GetDocumentManager()->ActivateView (this, true, false);
+ getFrame()->SetFocus();
return;
}
::wxYield();
for (int i = 0; i < rProj.nView(); i++) {
theScanner.collectProjections (rProj, rPhantom, i, 1, true, m_iDefaultTrace);
if (! dlgProgress.Update (i+1)) {
- pProjectionDoc->getView()->OnClose(true);
- delete pProjectionDoc;
+ pProjectionDoc->getView()->getFrame()->Show(true);
+ GetDocumentManager()->ActivateView (pProjectionDoc->getView(), true, false);
+ pProjectionDoc->getView()->getFrame()->SetFocus();
+ wxCommandEvent event;
+ GetDocumentManager()->OnFileClose (event);
+ GetDocumentManager()->ActivateView (this, true, false);
+ getFrame()->SetFocus();
return;
}
}
ProjectionFileView* projView = pProjectionDoc->getView();
if (projView) {
projView->OnUpdate (projView, NULL);
- if (projView->getCanvas())
+ if (projView->getCanvas())
projView->getCanvas()->SetClientSize (m_iDefaultNDet, m_iDefaultNView);
if (wxFrame* pFrame = projView->getFrame()) {
pFrame->Show(true);
GetDocumentManager()->ActivateView (projView, true, false);
}
::wxYield();
- if (theApp->getSetModifyNewDocs())
- pProjectionDoc->Modify(true);
+ pProjectionDoc-> Modify(true);
pProjectionDoc->UpdateAllViews (this);
}
}
for (unsigned int i = 0; i < imageFile.nx(); i++) {
rPhantom.convertToImagefile (imageFile, m_iDefaultRasterNSamples, Trace::TRACE_NONE, i, 1, true);
if (! dlgProgress.Update (i+1)) {
- pRasterDoc->Close();
- pRasterDoc->getView()->OnClose(true);
- delete pRasterDoc;
+ GetDocumentManager()->ActivateView (pRasterDoc->getView(), true, true);
+ pRasterDoc->getView()->getFrame()->SetFocus();
+ wxCommandEvent event;
+ GetDocumentManager()->OnFileClose (event);
+ GetDocumentManager()->ActivateView (this, true, false);
+ getFrame()->SetFocus();
return;
}
}
- if (theApp->getSetModifyNewDocs())
- pRasterDoc->Modify(true);
+ pRasterDoc->Modify (true);
pRasterDoc->UpdateAllViews (this);
pRasterDoc->getView()->getFrame()->Show(true);
std::ostringstream os;
bool
PhantomFileView::OnClose (bool deleteWindow)
{
+ //GetDocumentManager()->ActivateView (this, false, true);
if (! GetDocument() || ! GetDocument()->Close())
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
Activate(false);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
- m_pFrame->Destroy();
+ m_pFrame->Destroy();
m_pFrame = NULL;
+ if (GetDocument() && GetDocument()->getBadFileOpen())
+ ::wxYield(); // wxWindows bug workaround
}
return true;
m_iDefaultNX = 256;
m_iDefaultNY = 256;
#endif
-
+
m_iDefaultFilter = SignalFilter::FILTER_ABS_BANDLIMIT;
m_dDefaultFilterParam = 1.;
#if HAVE_FFTW
<< strInterpolation.c_str();
*theApp->getLog() << os.str().c_str() << "\n";
rIF.labelAdd (os.str().c_str());
- if (theApp->getSetModifyNewDocs())
- pPolarDoc->Modify(true);
+ pPolarDoc->Modify (true);
pPolarDoc->UpdateAllViews ();
pPolarDoc->getView()->OnUpdate (this, NULL);
pPolarDoc->getView()->getFrame()->Show(true);
<< strInterpolation.c_str() << ", zeropad=" << m_iDefaultPolarZeropad;
*theApp->getLog() << os.str().c_str() << "\n";
rIF.labelAdd (os.str().c_str());
- if (theApp->getSetModifyNewDocs())
- pPolarDoc->Modify(true);
+ pPolarDoc->Modify (true);
pPolarDoc->UpdateAllViews ();
pPolarDoc->getView()->OnUpdate (this, NULL);
pPolarDoc->getView()->getFrame()->Show(true);
pReconstruct->reconstructView (i, 1);
if (! dlgProgress.Update (i + 1)) {
delete pReconstruct;
- pReconDoc->getView()->OnClose(true);
- delete pReconDoc;
+ GetDocumentManager()->ActivateView (pReconDoc->getView(), true, true);
+ pReconDoc->getView()->getFrame()->SetFocus();
+ wxCommandEvent event;
+ GetDocumentManager()->OnFileClose (event);
+ GetDocumentManager()->ActivateView (this, true, false);
+ getFrame()->SetFocus();
return;
}
}
}
delete pReconstruct;
- if (theApp->getSetModifyNewDocs())
- pReconDoc->Modify(true);
+ pReconDoc->Modify (true);
pReconDoc->UpdateAllViews (this);
if (ImageFileView* rasterView = pReconDoc->getView()) {
rasterView->OnUpdate (rasterView, NULL);
convert_menu->Append (PJMENU_CONVERT_FFT_POLAR, "&FFT->Polar Image...\tCtrl-I");
wxMenu *reconstruct_menu = new wxMenu;
- reconstruct_menu->Append (PJMENU_RECONSTRUCT_FBP, "&Filtered Backprojection...\tCtrl-R");
- reconstruct_menu->Append (PJMENU_RECONSTRUCT_FOURIER, "&Fourier...\tCtrl-E");
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FBP, "&Filtered Backprojection...\tCtrl-R", "Reconstruct image using filtered backprojection");
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FOURIER, "&Fourier...\tCtrl-E", "Reconstruct image using inverse Fourier");
+ reconstruct_menu->Enable (PJMENU_RECONSTRUCT_FOURIER, false);
wxMenu *help_menu = new wxMenu;
help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
bool
ProjectionFileView::OnClose (bool deleteWindow)
{
+ //GetDocumentManager()->ActivateView (this, false, true);
if (! GetDocument() || ! GetDocument()->Close())
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
- m_pCanvas->setView(NULL);
+ m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
wxString s(wxTheApp->GetAppName());
Activate(false);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
m_pFrame->Destroy();
m_pFrame = NULL;
+ if (GetDocument() && GetDocument()->getBadFileOpen())
+ ::wxYield(); // wxWindows bug workaround
}
+
return true;
}
bool
PlotFileView::OnClose (bool deleteWindow)
{
+ //GetDocumentManager()->ActivateView (this, false, true);
if (! GetDocument() || ! GetDocument()->Close())
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
m_pCanvas->setView (NULL);
m_pCanvas = NULL;
}
Activate(false);
- m_pFrame->SetView(NULL);
- SetFrame(NULL);
+ SetFrame(NULL);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
- m_pFrame->Destroy();
+ m_pFrame->Destroy();
m_pFrame = NULL;
- }
+ if (GetDocument() && GetDocument()->getBadFileOpen())
+ ::wxYield(); // wxWindows bug workaround
+ }
+
return true;
}
bool
TextFileView::OnClose (bool deleteWindow)
{
- // if (m_pFrame && m_pFrame->GetTitle() == "Log")
- return false;
+ // if (m_pFrame && m_pFrame->GetTitle() == "Log")
+ return false;
+ //GetDocumentManager()->ActivateView (this, false, true);
if (! GetDocument() || ! GetDocument()->Close())
return false;
- m_pCanvas->Show(false);
Activate(false);
-
+
SetFrame(NULL);
- m_pFrame->SetView(NULL);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
- m_pFrame->Destroy();
+ m_pFrame->Destroy();
m_pFrame = NULL;
-
+ if (GetDocument() && GetDocument()->getBadFileOpen())
+ ::wxYield(); // wxWindows bug workaround
}
+
return TRUE;
}