** 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.87 2001/01/28 22:45:54 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
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";
}
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;
}
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;
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
+ m_pCanvas->Show(false);
m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
+ m_pFrame->Show(false);
wxString s(theApp->GetAppName());
if (m_pFrame)
m_pFrame->SetTitle(s);
SetFrame(NULL);
Activate(false);
-
+
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
m_pFrame->Destroy();
m_pFrame = NULL;
}
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
#endif
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
}
if (theApp->getSetModifyNewDocs())
pPlotDoc->Modify(true);
pPlotDoc->UpdateAllViews ();
+ pPlotDoc->getView()->OnUpdate (this, NULL);
+ pPlotDoc->getView()->getFrame()->Show(true);
}
}
}
if (theApp->getSetModifyNewDocs())
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);
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;
}
}
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
+ m_pCanvas->Show(false);
m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
+ m_pFrame->Show(false);
wxString s(wxTheApp->GetAppName());
if (m_pFrame)
m_pFrame->SetTitle(s);
Activate(false);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
- m_pFrame->Destroy();
+ m_pFrame->Destroy();
m_pFrame = NULL;
}
m_iDefaultNX = 256;
m_iDefaultNY = 256;
#endif
-
+
m_iDefaultFilter = SignalFilter::FILTER_ABS_BANDLIMIT;
m_dDefaultFilterParam = 1.;
#if HAVE_FFTW
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;
}
}
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");
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
+ m_pCanvas->Show(false);
m_pCanvas->setView(NULL);
m_pCanvas = NULL;
}
+ m_pFrame->Show(false);
wxString s(wxTheApp->GetAppName());
if (m_pFrame)
m_pFrame->SetTitle(s);
Activate(false);
if (deleteWindow) {
- m_pFrame->Show(false);
- ::wxYield();
m_pFrame->Destroy();
m_pFrame = NULL;
}
return false;
if (m_pCanvas) {
- m_pCanvas->Show(false);
+ m_pCanvas->Show(false);
m_pCanvas->setView (NULL);
m_pCanvas = NULL;
}
+ m_pFrame->Show(false);
wxString s(wxTheApp->GetAppName());
if (m_pFrame)
m_pFrame->SetTitle(s);
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;
}
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;
if (! GetDocument() || ! GetDocument()->Close())
return false;
m_pCanvas->Show(false);
+ m_pFrame->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;
}