** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.70 2001/01/26 00:45:24 kevin Exp $
+** $Id: views.cpp,v 1.80 2001/01/27 21:21:57 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
ImageFileCanvas::ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style)
-: wxScrolledWindow(frame, -1, pos, size, style)
+: wxScrolledWindow(frame, -1, pos, size, style), m_pView(v), m_xCursor(-1), m_yCursor(-1)
{
- m_pView = v;
- m_xCursor = -1;
- m_yCursor = -1;
}
ImageFileCanvas::~ImageFileCanvas()
{
- if (m_pView) {
- wxMenu* pMenu = m_pView->getFileMenu();
- theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
- m_pView->canvasClosed();
- m_pView = NULL;
- }
+ m_pView = NULL;
}
void
EVT_MENU(IFMENU_PLOT_HISTOGRAM, ImageFileView::OnPlotHistogram)
END_EVENT_TABLE()
-ImageFileView::ImageFileView(void)
-: wxView(), m_canvas(NULL), m_frame(NULL), m_bMinSpecified(false), m_bMaxSpecified(false), m_pFileMenu(0)
+ImageFileView::ImageFileView()
+: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pFileMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false)
{
m_iDefaultExportFormatID = ImageFile::FORMAT_PNG;
}
-ImageFileView::~ImageFileView(void)
+ImageFileView::~ImageFileView()
{
+ theApp->getDocManager()->FileHistoryRemoveMenu (m_pFileMenu);
}
void
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;
differenceImage.setArraySize (rIF.nx(), rIF.ny());
if (! rIF.subtractImages (rCompareIF, differenceImage)) {
- pDifferenceDoc->DeleteAllViews();
+ pDifferenceDoc->getView()->getFrame()->Close(true);
return;
}
if (theApp->getSetModifyNewDocs())
pDifferenceDoc->Modify(true);
pDifferenceDoc->UpdateAllViews(this);
- pDifferenceDoc->GetFirstView()->OnUpdate (this, NULL);
+ pDifferenceDoc->getView()->OnUpdate (this, NULL);
+ pDifferenceDoc->getView()->getFrame()->Show(true);
}
wxMessageBox(os.str().c_str(), "Image Comparison");
}
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;
if (theApp->getSetModifyNewDocs())
pNewDoc->Modify(TRUE);
pNewDoc->UpdateAllViews(this);
- pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->getFrame()->Show(true);
}
}
}
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;
if (theApp->getSetModifyNewDocs())
pNewDoc->Modify(TRUE);
pNewDoc->UpdateAllViews(this);
- pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->getFrame()->Show(true);
}
}
}
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;
if (theApp->getSetModifyNewDocs())
pNewDoc->Modify(TRUE);
pNewDoc->UpdateAllViews(this);
- pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->getFrame()->Show(true);
}
}
}
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;
if (theApp->getSetModifyNewDocs())
pNewDoc->Modify(TRUE);
pNewDoc->UpdateAllViews(this);
- pNewDoc->GetFirstView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->OnUpdate (this, NULL);
+ pNewDoc->getView()->getFrame()->Show(true);
}
}
}
return pCanvas;
}
-wxFrame*
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
{
#if CTSIM_MDI
bool
ImageFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
{
- m_frame = CreateChildFrame(doc, this);
- SetFrame (m_frame);
+ m_pFrame = CreateChildFrame(doc, this);
+ SetFrame (m_pFrame);
m_bMinSpecified = false;
m_bMaxSpecified = false;
m_dAutoScaleFactor = 1.;
int width, height;
- m_frame->GetClientSize (&width, &height);
- m_frame->SetTitle("ImageFileView");
- m_canvas = CreateCanvas (this, m_frame);
+ m_pFrame->GetClientSize (&width, &height);
+ m_pFrame->SetTitle("ImageFileView");
+ m_pCanvas = CreateCanvas (this, m_pFrame);
int x, y; // X requires a forced resize
- m_frame->GetSize(&x, &y);
- m_frame->SetSize(-1, -1, x, y);
- m_frame->SetFocus();
- m_frame->Show(true);
+ m_pFrame->GetSize(&x, &y);
+ m_pFrame->SetSize(-1, -1, x, y);
+ m_pFrame->SetFocus();
+ m_pFrame->Show(true);
Activate(true);
return true;
void
ImageFileView::OnDraw (wxDC* dc)
{
- wxSize sizeWindow = m_frame->GetClientSize();
- wxSize sizeBest = m_canvas->GetBestSize();
+ wxSize sizeWindow = m_pFrame->GetClientSize();
+ wxSize sizeBest = m_pCanvas->GetBestSize();
if (sizeWindow.x > sizeBest.x || sizeWindow.y > sizeBest.y)
- m_frame->SetClientSize (sizeBest);
+ m_pFrame->SetClientSize (sizeBest);
if (m_bitmap.Ok())
dc->DrawBitmap(m_bitmap, 0, 0, false);
int xCursor, yCursor;
- if (m_canvas->GetCurrentCursor (xCursor, yCursor))
- m_canvas->DrawRubberBandCursor (*dc, xCursor, yCursor);
+ if (m_pCanvas->GetCurrentCursor (xCursor, yCursor))
+ m_pCanvas->DrawRubberBandCursor (*dc, xCursor, yCursor);
}
int xSize = nx;
int ySize = ny;
ySize = clamp (ySize, 0, 800);
- m_frame->SetClientSize (xSize, ySize);
- m_canvas->SetScrollbars(20, 20, nx/20, ny/20);
- m_canvas->SetBackgroundColour(*wxWHITE);
+ m_pFrame->SetClientSize (xSize, ySize);
+ m_pCanvas->SetScrollbars(20, 20, nx/20, ny/20);
+ m_pCanvas->SetBackgroundColour(*wxWHITE);
}
- if (m_canvas)
- m_canvas->Refresh();
+ if (m_pCanvas)
+ m_pCanvas->Refresh();
}
bool
ImageFileView::OnClose (bool deleteWindow)
{
- if (!GetDocument()->Close())
+ if (! GetDocument() || ! GetDocument()->Close())
return false;
-// m_canvas->Clear();
-// m_canvas->setView(NULL);
- m_canvas = NULL;
+ if (m_pCanvas) {
+ m_pCanvas->Clear();
+ m_pCanvas->Show(false);
+ m_pCanvas->setView(NULL);
+ m_pCanvas = NULL;
+ }
wxString s(theApp->GetAppName());
-// if (m_frame)
-// m_frame->SetTitle(s);
+ if (m_pFrame)
+ m_pFrame->SetTitle(s);
SetFrame(NULL);
Activate(false);
if (deleteWindow) {
- delete m_frame;
- return true;
+ m_pFrame->Show(false);
+ m_pFrame->Destroy();
+// delete m_pFrame;
+ m_pFrame = NULL;
}
return true;
}
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;
if (theApp->getSetModifyNewDocs())
pScaledDoc->Modify(TRUE);
pScaledDoc->UpdateAllViews (this);
- pScaledDoc->GetFirstView()->OnUpdate (this, NULL);
+ pScaledDoc->getView()->OnUpdate (this, NULL);
+ pScaledDoc->getView()->getFrame()->Show(true);
}
}
ImageFileView::OnPlotRow (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No row selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
ImageFileView::OnPlotCol (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
ImageFileView::OnPlotFFTRow (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No row selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
ImageFileView::OnPlotFFTCol (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
ImageFileView::OnCompareCol (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
ImageFileView::OnCompareRow (wxCommandEvent& event)
{
int xCursor, yCursor;
- if (! m_canvas->GetCurrentCursor (xCursor, yCursor)) {
+ if (! m_pCanvas->GetCurrentCursor (xCursor, yCursor)) {
wxMessageBox ("No column selected. Please use left mouse button on image to select column","Error");
return;
}
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 {
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;
// 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;
PhantomCanvas::~PhantomCanvas ()
{
- if (m_pView) {
- wxMenu* pMenu = m_pView->getFileMenu();
- theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
- m_pView->canvasClosed();
m_pView = NULL;
- }
}
void
}
-// 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)
-: wxView(), m_canvas(NULL), m_frame(NULL), m_pFileMenu(0)
+PhantomFileView::PhantomFileView()
+: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pFileMenu(0)
{
m_iDefaultNDet = 367;
m_iDefaultNView = 320;
- m_iDefaultNSample = 2;
+ m_iDefaultNSample = 1;
m_dDefaultRotation = 1;
m_dDefaultFocalLength = 2;
m_dDefaultFieldOfView = 1;
m_iDefaultRasterNSamples = 2;
}
-PhantomView::~PhantomView()
+PhantomFileView::~PhantomFileView()
{
+ theApp->getDocManager()->FileHistoryRemoveMenu (m_pFileMenu);
}
void
-PhantomView::OnProperties (wxCommandEvent& event)
+PhantomFileView::OnProperties (wxCommandEvent& event)
{
const int idPhantom = GetDocument()->getPhantomID();
const wxString& namePhantom = GetDocument()->getPhantomName();
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();
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;
if (m_iDefaultTrace > Trace::TRACE_CONSOLE) {
ProjectionsDialog dialogProjections (theScanner, rProj, rPhantom, m_iDefaultTrace, dynamic_cast<wxWindow*>(getFrameForChild()));
for (int iView = 0; iView < rProj.nView(); iView++) {
- ::wxYield();
::wxYield();
if (dialogProjections.isCancelled() || ! dialogProjections.projectView (iView)) {
- pProjectionDoc->DeleteAllViews();
+ pProjectionDoc->getView()->getFrame()->Close(true);
return;
}
::wxYield();
- ::wxYield();
while (dialogProjections.isPaused()) {
::wxYield();
::wxUsleep(50);
for (int i = 0; i < rProj.nView(); i++) {
theScanner.collectProjections (rProj, rPhantom, i, 1, true, m_iDefaultTrace);
if (! dlgProgress.Update (i+1)) {
- pProjectionDoc->DeleteAllViews();
+ pProjectionDoc->getView()->getFrame()->Close(true);
return;
}
}
rProj.setRemark (os.str());
*theApp->getLog() << os.str().c_str() << "\n";
- m_frame->Lower();
+ m_pFrame->Lower();
::wxYield();
ProjectionFileView* projView = dynamic_cast<ProjectionFileView*>(pProjectionDoc->GetFirstView());
if (projView) {
::wxYield();
if (theApp->getSetModifyNewDocs())
pProjectionDoc->Modify(true);
+ pProjectionDoc->getView()->getFrame()->Show(true);
pProjectionDoc->UpdateAllViews(this);
}
}
void
-PhantomView::OnRasterize (wxCommandEvent& event)
+PhantomFileView::OnRasterize (wxCommandEvent& event)
{
DialogGetRasterParameters dialogRaster (getFrameForChild(), m_iDefaultRasterNX, m_iDefaultRasterNY, m_iDefaultRasterNSamples);
int retVal = dialogRaster.ShowModal();
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;
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->DeleteAllViews();
+ pRasterDoc->Close();
+ pRasterDoc->getView()->getFrame()->Close(true);
return;
}
}
if (theApp->getSetModifyNewDocs())
pRasterDoc->Modify(true);
pRasterDoc->UpdateAllViews(this);
+ pRasterDoc->getView()->getFrame()->Show(true);
std::ostringstream os;
os << "Rasterize Phantom " << rPhantom.name() << ": XSize=" << m_iDefaultRasterNX << ", YSize="
<< m_iDefaultRasterNY << ", nSamples=" << m_iDefaultRasterNSamples;
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();
return pCanvas;
}
-wxFrame*
-PhantomView::CreateChildFrame(wxDocument *doc, wxView *view)
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+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);
bool
-PhantomView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
+PhantomFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
- m_frame = CreateChildFrame(doc, this);
- SetFrame(m_frame);
+ m_pFrame = CreateChildFrame(doc, this);
+ SetFrame(m_pFrame);
int width, height;
- m_frame->GetClientSize(&width, &height);
- m_frame->SetTitle("PhantomView");
- m_canvas = CreateCanvas (this, m_frame);
+ m_pFrame->GetClientSize(&width, &height);
+ m_pFrame->SetTitle("PhantomFileView");
+ m_pCanvas = CreateCanvas (this, m_pFrame);
#ifdef __X__
int x, y; // X requires a forced resize
- m_frame->GetSize(&x, &y);
- m_frame->SetSize(-1, -1, x, y);
+ m_pFrame->GetSize(&x, &y);
+ m_pFrame->SetSize(-1, -1, x, y);
#endif
- m_frame->Show(true);
+ m_pFrame->Show(true);
Activate(true);
return true;
}
void
-PhantomView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
+PhantomFileView::OnUpdate(wxView *WXUNUSED(sender), wxObject *WXUNUSED(hint) )
{
- if (m_canvas)
- m_canvas->Refresh();
+ if (m_pCanvas)
+ m_pCanvas->Refresh();
}
bool
-PhantomView::OnClose (bool deleteWindow)
+PhantomFileView::OnClose (bool deleteWindow)
{
- if (!GetDocument()->Close())
+ if (! GetDocument() || ! GetDocument()->Close())
return false;
-// m_canvas->Clear();
-// m_canvas->setView(NULL);
- m_canvas = NULL;
+ if (m_pCanvas) {
+ m_pCanvas->Clear();
+ m_pCanvas->setView(NULL);
+ m_pCanvas->Show(false);
+ m_pCanvas = NULL;
+ }
wxString s(wxTheApp->GetAppName());
- if (m_frame)
- m_frame->SetTitle(s);
+ if (m_pFrame)
+ m_pFrame->SetTitle(s);
SetFrame(NULL);
Activate(false);
if (deleteWindow) {
- delete m_frame;
- m_frame = NULL;
+ m_pFrame->Show(false);
+ m_pFrame->Destroy();
+// delete m_pFrame;
+ m_pFrame = NULL;
}
return true;
}
void
-PhantomView::OnDraw (wxDC* dc)
+PhantomFileView::OnDraw (wxDC* dc)
{
int xsize, ysize;
- m_canvas->GetClientSize (&xsize, &ysize);
+ m_pCanvas->GetClientSize (&xsize, &ysize);
SGPDriver driver (dc, xsize, ysize);
SGP sgp (driver);
const Phantom& rPhantom = GetDocument()->getPhantom();
ProjectionFileCanvas::~ProjectionFileCanvas ()
{
- if (m_pView) {
- wxMenu* pMenu = m_pView->getFileMenu();
- theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
- m_pView->canvasClosed();
- m_pView = NULL;
- }
+ m_pView = NULL;
}
void
EVT_MENU(PJMENU_CONVERT_FFT_POLAR, ProjectionFileView::OnConvertFFTPolar)
END_EVENT_TABLE()
-ProjectionFileView::ProjectionFileView(void)
-: wxView(), m_canvas(NULL), m_frame(NULL), m_pFileMenu(0)
+ProjectionFileView::ProjectionFileView()
+: wxView(), m_pCanvas(NULL), m_pFrame(NULL), m_pFileMenu(0)
{
m_iDefaultNX = 256;
m_iDefaultNY = 256;
m_iDefaultPolarZeropad = 1;
}
-ProjectionFileView::~ProjectionFileView(void)
+ProjectionFileView::~ProjectionFileView()
{
+ theApp->getDocManager()->FileHistoryRemoveMenu (m_pFileMenu);
}
void
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");
if (theApp->getSetModifyNewDocs())
pPolarDoc->Modify(true);
pPolarDoc->UpdateAllViews();
- pPolarDoc->GetFirstView()->OnUpdate (this, NULL);
+ pPolarDoc->getView()->OnUpdate (this, NULL);
+ pPolarDoc->getView()->getFrame()->Show(true);
}
}
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");
if (theApp->getSetModifyNewDocs())
pPolarDoc->Modify(true);
pPolarDoc->UpdateAllViews();
- pPolarDoc->GetFirstView()->OnUpdate (this, NULL);
-}}
+ pPolarDoc->getView()->OnUpdate (this, NULL);
+ pPolarDoc->getView()->getFrame()->Show(true);
+}
+}
void
ProjectionFileView::OnReconstructFourier (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;
if (pDlgReconstruct->isCancelled() || ! pDlgReconstruct->reconstructView (iView)) {
delete pDlgReconstruct;
delete pReconstruct;
- pReconDoc->DeleteAllViews();
+ pReconDoc->getView()->getFrame()->Close(true);
return;
}
::wxYield();
pReconstruct->reconstructView (i, 1);
if (! dlgProgress.Update(i + 1)) {
delete pReconstruct;
- pReconDoc->DeleteAllViews();
+ pReconDoc->getView()->getFrame()->Close(true);
return;
}
}
if (theApp->getSetModifyNewDocs())
pReconDoc->Modify(true);
pReconDoc->UpdateAllViews(this);
+ pReconDoc->getView()->getFrame()->Show(true);
ImageFileView* rasterView = dynamic_cast<ImageFileView*>(pReconDoc->GetFirstView());
if (rasterView) {
rasterView->getFrame()->SetFocus();
return pCanvas;
}
-wxFrame*
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view)
{
#ifdef CTSIM_MDI
bool
ProjectionFileView::OnCreate(wxDocument *doc, long WXUNUSED(flags) )
{
- m_frame = CreateChildFrame(doc, this);
- SetFrame(m_frame);
+ m_pFrame = CreateChildFrame(doc, this);
+ SetFrame(m_pFrame);
int width, height;
- m_frame->GetClientSize(&width, &height);
- m_frame->SetTitle("ProjectionFileView");
- m_canvas = CreateCanvas(this, m_frame);
+ m_pFrame->GetClientSize(&width, &height);
+ m_pFrame->SetTitle("ProjectionFileView");
+ m_pCanvas = CreateCanvas(this, m_pFrame);
#ifdef __X__
int x, y; // X requires a forced resize
- m_frame->GetSize(&x, &y);
- m_frame->SetSize(-1, -1, x, y);
+ m_pFrame->GetSize(&x, &y);
+ m_pFrame->SetSize(-1, -1, x, y);
#endif
- m_frame->Show(true);
+ m_pFrame->Show(true);
Activate(true);
return true;
void
ProjectionFileView::OnDraw (wxDC* dc)
{
- wxSize clientSize = m_frame->GetClientSize();
- wxSize bestSize = m_canvas->GetBestSize();
+ wxSize clientSize = m_pFrame->GetClientSize();
+ wxSize bestSize = m_pCanvas->GetBestSize();
if (clientSize.x > bestSize.x || clientSize.y > bestSize.y)
- m_frame->SetClientSize (bestSize);
+ m_pFrame->SetClientSize (bestSize);
if (m_bitmap.Ok())
dc->DrawBitmap (m_bitmap, 0, 0, false);
int ySize = nView;
xSize = clamp (xSize, 0, 800);
ySize = clamp (ySize, 0, 800);
- m_frame->SetClientSize (xSize, ySize);
- m_canvas->SetScrollbars (20, 20, nDet/20, nView/20);
+ m_pFrame->SetClientSize (xSize, ySize);
+ m_pCanvas->SetScrollbars (20, 20, nDet/20, nView/20);
}
- if (m_canvas)
- m_canvas->Refresh();
+ if (m_pCanvas)
+ m_pCanvas->Refresh();
}
bool
ProjectionFileView::OnClose (bool deleteWindow)
{
- if (!GetDocument()->Close())
+ if (! GetDocument() || ! 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);
- SetFrame(NULL);
+ if (m_pCanvas) {
+ m_pCanvas->Clear();
+ m_pCanvas->setView(NULL);
+ m_pCanvas->Show(false);
+ m_pCanvas = NULL;
+ }
+ wxString s(wxTheApp->GetAppName());
+ if (m_pFrame)
+ m_pFrame->SetTitle(s);
+// SetFrame(NULL);
Activate(false);
if (deleteWindow) {
- delete m_frame;
- return true;
+ m_pFrame->Show(false);
+ m_pFrame->Destroy();
+// delete m_pFrame;
+ m_pFrame = NULL;
}
return true;
}
PlotFileCanvas::~PlotFileCanvas ()
{
- if (m_pView) {
- wxMenu* pMenu = m_pView->getFileMenu();
- theApp->getDocManager()->FileHistoryRemoveMenu (pMenu);
- m_pView->canvasClosed();
m_pView = NULL;
- }
}
void
EVT_MENU(PLOTMENU_VIEW_SCALE_FULL, PlotFileView::OnScaleFull)
END_EVENT_TABLE()
-PlotFileView::PlotFileView(void)
-: wxView(), m_canvas(NULL), m_frame(NULL), m_pEZPlot(NULL), m_pFileMenu(0)
+PlotFileView::PlotFileView()
+: wxView(), m_pFrame(NULL), m_pCanvas(NULL), m_pEZPlot(NULL), m_pFileMenu(0), m_bMinSpecified(false), m_bMaxSpecified(false)
{
- m_bMinSpecified = false;
- m_bMaxSpecified = false;
}
-PlotFileView::~PlotFileView(void)
+PlotFileView::~PlotFileView()
{
if (m_pEZPlot)
delete m_pEZPlot;
+
+ theApp->getDocManager()->FileHistoryRemoveMenu (m_pFileMenu);
}
void
return pCanvas;
}
-wxFrame*
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view)
{
#ifdef CTSIM_MDI
bool
PlotFileView::OnCreate (wxDocument *doc, long WXUNUSED(flags) )
{
- m_frame = CreateChildFrame(doc, this);
- SetFrame(m_frame);
+ m_pFrame = CreateChildFrame(doc, this);
+ SetFrame(m_pFrame);
m_bMinSpecified = false;
m_bMaxSpecified = false;
m_dAutoScaleFactor = 1.;
int width, height;
- m_frame->GetClientSize(&width, &height);
- m_frame->SetTitle ("Plot File");
- m_canvas = CreateCanvas (this, m_frame);
+ m_pFrame->GetClientSize(&width, &height);
+ m_pFrame->SetTitle ("Plot File");
+ m_pCanvas = CreateCanvas (this, m_pFrame);
#ifdef __X__
int x, y; // X requires a forced resize
- m_frame->GetSize(&x, &y);
- m_frame->SetSize(-1, -1, x, y);
+ m_pFrame->GetSize(&x, &y);
+ m_pFrame->SetSize(-1, -1, x, y);
#endif
- m_frame->Show(true);
+ m_pFrame->Show(true);
Activate(true);
return true;
if (iNColumns > 0 && iNRecords > 0) {
int xsize, ysize;
- m_canvas->GetClientSize (&xsize, &ysize);
+ m_pCanvas->GetClientSize (&xsize, &ysize);
SGPDriver driver (dc, xsize, ysize);
SGP sgp (driver);
if (m_pEZPlot)
delete pdY;
}
- if (m_canvas)
- m_canvas->Refresh();
+ if (m_pCanvas)
+ m_pCanvas->Refresh();
}
bool
PlotFileView::OnClose (bool deleteWindow)
{
- if (!GetDocument()->Close())
+ if (! GetDocument() || ! 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);
+ if (m_pCanvas) {
+ m_pCanvas->Clear();
+ m_pCanvas->setView (NULL);
+ m_pCanvas->Show(false);
+ m_pCanvas = NULL;
+ }
+ wxString s(wxTheApp->GetAppName());
+ if (m_pFrame)
+ m_pFrame->SetTitle(s);
SetFrame(NULL);
Activate(false);
if (deleteWindow) {
- delete m_frame;
- return true;
+ m_pFrame->Show(false);
+ m_pFrame->Destroy();
+// delete m_pFrame;
+ m_pFrame = NULL;
}
return true;
}
////////////////////////////////////////////////////////////////
-IMPLEMENT_DYNAMIC_CLASS(TextEditView, wxView)
+IMPLEMENT_DYNAMIC_CLASS(TextFileView, wxView)
-TextEditView::~TextEditView()
+TextFileView::~TextFileView()
{
+ 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__
}
// 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;
+ if (m_pFrame && m_pFrame->GetTitle() == "Log")
+ return false;
- if (!GetDocument()->Close())
+ if (! GetDocument() || ! GetDocument()->Close())
return false;
-
+
+ m_pCanvas->Show(false);
Activate(false);
- if (deleteWindow)
- {
- delete m_pFrame;
- return TRUE;
+ if (deleteWindow) {
+ m_pFrame->Show(false);
+ m_pFrame->Destroy();
+// delete m_pFrame;
+ m_pFrame = NULL;
+
}
return TRUE;
}
-wxFrame*
-TextEditView::CreateChildFrame (wxDocument *doc, wxView *view)
+#if CTSIM_MDI
+wxDocMDIChildFrame*
+#else
+wxDocChildFrame*
+#endif
+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);
// 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;
- }
+ m_pView = NULL;
}