** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: views.cpp,v 1.54 2001/01/07 23:18:13 kevin Exp $
+** $Id: views.cpp,v 1.67 2001/01/18 23:34:01 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
ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view)
{
#if CTSIM_MDI
- wxMDIChildFrame *subframe = new wxMDIChildFrame(theApp->getMainFrame(), -1, "ImageFile Frame", wxPoint(-1, -1), wxSize(0, 0), wxDEFAULT_FRAME_STYLE);
+ wxMDIChildFrame *subframe = new wxMDIChildFrame (theApp->getMainFrame(), -1, "ImageFile Frame", wxPoint(-1, -1), wxSize(0, 0), wxDEFAULT_FRAME_STYLE);
#else
- wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, "ImageFile Frame", wxPoint(-1, -1), wxSize(0, 0), wxDEFAULT_FRAME_STYLE);
+ wxDocChildFrame *subframe = new wxDocChildFrame (doc, view, theApp->getMainFrame(), -1, "ImageFile Frame", wxPoint(-1, -1), wxSize(0, 0), wxDEFAULT_FRAME_STYLE);
#endif
-
+ theApp->setIconForFrame (subframe);
+
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
- file_menu->Append(wxID_OPEN, "&Open...");
- file_menu->Append(wxID_SAVE, "&Save");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
+ file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O");
+ file_menu->Append(wxID_SAVE, "&Save\tCtrl-S");
file_menu->Append(wxID_SAVEAS, "Save &As...");
- file_menu->Append(wxID_CLOSE, "&Close");
+ file_menu->Append(wxID_CLOSE, "&Close\tCtrl-W");
file_menu->AppendSeparator();
file_menu->Append(IFMENU_FILE_PROPERTIES, "P&roperties");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
wxMenu *view_menu = new wxMenu;
- view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, "Display Scale &Set...");
- view_menu->Append(IFMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...");
- view_menu->Append(IFMENU_VIEW_SCALE_FULL, "Display &Full Scale");
+ view_menu->Append(IFMENU_VIEW_SCALE_MINMAX, "Display Scale S&et...\tCtrl-E");
+ view_menu->Append(IFMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...\tCtrl-A");
+ view_menu->Append(IFMENU_VIEW_SCALE_FULL, "Display F&ull Scale\tCtrl-U");
wxMenu* filter_menu = new wxMenu;
filter_menu->Append (IFMENU_FILTER_INVERTVALUES, "&Invert Values");
analyze_menu->Append (IFMENU_COMPARE_COL, "Compare &Column");
wxMenu *help_menu = new wxMenu;
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->Centre(wxBOTH);
+ wxAcceleratorEntry accelEntries[10];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('A'), IFMENU_VIEW_SCALE_AUTO);
+ accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('U'), IFMENU_VIEW_SCALE_FULL);
+ accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('E'), IFMENU_VIEW_SCALE_MINMAX);
+ wxAcceleratorTable accelTable (10, accelEntries);
+ subframe->SetAcceleratorTable (accelTable);
+
return subframe;
}
if (v != NULL && yCursor < ny) {
double* pX = new double [nx];
double* pYReal = new double [nx];
- double *pYImag, *pYMag;
+ double *pYImag = NULL;
+ double *pYMag = NULL;
if (rIF.isComplex()) {
pYImag = new double [nx];
pYMag = new double [nx];
rPlotFile.addColumn (2, pYImag);
rPlotFile.addColumn (3, pYMag);
}
- for (int iL = 0; iL < rIF.nLabels(); iL++)
+ for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
os << " Plot of " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
*theApp->getLog() << os.str().c_str() << "\n";
if (v != NULL && xCursor < nx) {
double* pX = new double [ny];
double* pYReal = new double [ny];
- double *pYImag, *pYMag;
+ double* pYImag = NULL;
+ double* pYMag = NULL;
if (rIF.isComplex()) {
pYImag = new double [ny];
pYMag = new double [ny];
rPlotFile.addColumn (2, pYImag);
rPlotFile.addColumn (3, pYMag);
}
- for (int iL = 0; iL < rIF.nLabels(); iL++)
+ for (unsigned int iL = 0; iL < rIF.nLabels(); iL++)
rPlotFile.addDescription (rIF.labelGet(iL).getLabelString().c_str());
os << " Plot of " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
*theApp->getLog() << os.str().c_str() << "\n";
unsigned int iL;
for (iL = 0; iL < rIF.nLabels(); iL++) {
- std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle();
+ std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
s += ": ";
s += rIF.labelGet(iL).getLabelString();
rPlotFile.addDescription (s.c_str());
}
- for (iL = 0; iL < rIF.nLabels(); iL++) {
- std::string s = pCompareDoc->GetFirstView()->GetFrame()->GetTitle();
+ for (iL = 0; iL < rCompareIF.nLabels(); iL++) {
+ std::string s = pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str();
s += ": ";
s += rCompareIF.labelGet(iL).getLabelString();
rPlotFile.addDescription (s.c_str());
}
- os << " Between " << GetDocument()->GetFirstView()->GetFrame()->GetTitle() << " and "
- << pCompareDoc->GetFirstView()->GetFrame()->GetTitle();
+ os << " Between " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " and "
+ << pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str();
*theApp->getLog() << os.str().c_str() << "\n";
rPlotFile.addDescription (os.str().c_str());
}
rPlotFile.addColumn (2, pY2);
unsigned int iL;
for (iL = 0; iL < rIF.nLabels(); iL++) {
- std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle();
+ std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
s += ": ";
s += rIF.labelGet(iL).getLabelString();
rPlotFile.addDescription (s.c_str());
}
- for (iL = 0; iL < rIF.nLabels(); iL++) {
- std::string s = pCompareDoc->GetFirstView()->GetFrame()->GetTitle();
+ for (iL = 0; iL < rCompareIF.nLabels(); iL++) {
+ std::string s = pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str();
s += ": ";
s += rCompareIF.labelGet(iL).getLabelString();
rPlotFile.addDescription (s.c_str());
}
- os << " Between " << GetDocument()->GetFirstView()->GetFrame()->GetTitle() << " and "
- << pCompareDoc->GetFirstView()->GetFrame()->GetTitle();
+ os << " Between " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str() << " and "
+ << pCompareDoc->GetFirstView()->GetFrame()->GetTitle().c_str();
*theApp->getLog() << os.str().c_str() << "\n";
rPlotFile.addDescription (os.str().c_str());
}
rPlotFile.addColumn (0, pX);
rPlotFile.addColumn (1, pY);
for (unsigned int iL = 0; iL < rIF.nLabels(); iL++) {
- std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle();
+ std::string s = GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
s += ": ";
s += rIF.labelGet(iL).getLabelString();
rPlotFile.addDescription (s.c_str());
}
- os << " Plot of " << GetDocument()->GetFirstView()->GetFrame()->GetTitle();
+ os << " Plot of " << GetDocument()->GetFirstView()->GetFrame()->GetTitle().c_str();
*theApp->getLog() << os.str().c_str() << "\n";
rPlotFile.addDescription (os.str().c_str());
delete pX;
#else
wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, "Phantom Frame", wxPoint(10, 10), wxSize(256, 256), wxDEFAULT_FRAME_STYLE);
#endif
+ theApp->setIconForFrame (subframe);
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
- file_menu->Append(wxID_OPEN, "&Open...");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
+ file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O");
file_menu->Append(wxID_SAVEAS, "Save &As...");
file_menu->Append(wxID_CLOSE, "&Close");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
wxMenu *process_menu = new wxMenu;
- process_menu->Append(PHMMENU_PROCESS_RASTERIZE, "&Rasterize...");
- process_menu->Append(PHMMENU_PROCESS_PROJECTIONS, "&Projections...");
+ process_menu->Append(PHMMENU_PROCESS_RASTERIZE, "&Rasterize...\tCtrl-R");
+ process_menu->Append(PHMMENU_PROCESS_PROJECTIONS, "&Projections...\tCtrl-J");
wxMenu *help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
-
+
+ wxAcceleratorEntry accelEntries[8];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ accelEntries[6].Set (wxACCEL_CTRL, static_cast<int>('J'), PHMMENU_PROCESS_PROJECTIONS);
+ accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('R'), PHMMENU_PROCESS_RASTERIZE);
+ wxAcceleratorTable accelTable (8, accelEntries);
+ subframe->SetAcceleratorTable (accelTable);
+
return subframe;
}
const Projections& rProj = GetDocument()->getProjections();
imageFile.setArraySize (m_iDefaultNX, m_iDefaultNY);
- if (m_iDefaultFilterMethod != ProcessSignal::FILTER_METHOD_CONVOLUTION && m_iDefaultFilterGeneration == ProcessSignal::FILTER_GENERATION_DIRECT && rProj.geometry() != Scanner::GEOMETRY_PARALLEL) {
- wxMessageBox ("Sorry!\nCurrently, frequency-based filtering with direct filter generation is not support for geometries other than parallel.\nAborting command.", "Not Supported", wxOK | wxICON_WARNING, m_frame);
- return;
- }
-
Reconstructor* pReconstruct = new Reconstructor (rProj, imageFile, optFilterName.c_str(), m_dDefaultFilterParam, optFilterMethodName.c_str(), m_iDefaultZeropad, optFilterGenerationName.c_str(), optInterpName.c_str(), m_iDefaultInterpParam, optBackprojectName.c_str(), m_iDefaultTrace);
Timer timerRecon;
#else
wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, "Projection Frame", wxPoint(10, 10), wxSize(0, 0), wxDEFAULT_FRAME_STYLE);
#endif
+ theApp->setIconForFrame (subframe);
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
- file_menu->Append(wxID_OPEN, "&Open...");
- file_menu->Append(wxID_SAVE, "&Save");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
+ file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O");
+ file_menu->Append(wxID_SAVE, "&Save\tCtrl-S");
file_menu->Append(wxID_SAVEAS, "Save &As...");
- file_menu->Append(wxID_CLOSE, "&Close");
+ file_menu->Append(wxID_CLOSE, "&Close\tCtrl-W");
file_menu->AppendSeparator();
file_menu->Append(PJMENU_FILE_PROPERTIES, "P&roperties");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
wxMenu *convert_menu = new wxMenu;
- convert_menu->Append (PJMENU_CONVERT_POLAR, "&Polar Image...");
- convert_menu->Append (PJMENU_CONVERT_FFT_POLAR, "&FFT->Polar Image...");
+ convert_menu->Append (PJMENU_CONVERT_POLAR, "&Polar Image...\tCtrl-L");
+ 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...");
- reconstruct_menu->Append (PJMENU_RECONSTRUCT_FOURIER, "&Fourier...");
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FBP, "&Filtered Backprojection...\tCtrl-R");
+ reconstruct_menu->Append (PJMENU_RECONSTRUCT_FOURIER, "&Fourier...\tCtrl-E");
wxMenu *help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
- help_menu->AppendSeparator();
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
+
+ wxAcceleratorEntry accelEntries[11];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('L'), PJMENU_CONVERT_POLAR);
+ accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('I'), PJMENU_CONVERT_FFT_POLAR);
+ accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('R'), PJMENU_RECONSTRUCT_FBP);
+ accelEntries[10].Set (wxACCEL_CTRL, static_cast<int>('E'), PJMENU_RECONSTRUCT_FOURIER);
+ wxAcceleratorTable accelTable (11, accelEntries);
+ subframe->SetAcceleratorTable (accelTable);
return subframe;
}
#else
wxDocChildFrame *subframe = new wxDocChildFrame(doc, view, theApp->getMainFrame(), -1, "Plot Frame", wxPoint(10, 10), wxSize(500, 300), wxDEFAULT_FRAME_STYLE);
#endif
+ theApp->setIconForFrame (subframe);
wxMenu *file_menu = new wxMenu;
- file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...");
- file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...");
- file_menu->Append(wxID_OPEN, "&Open...");
- file_menu->Append(wxID_SAVE, "&Save");
+ file_menu->Append(MAINMENU_FILE_CREATE_PHANTOM, "Cr&eate Phantom...\tCtrl-P");
+ file_menu->Append(MAINMENU_FILE_CREATE_FILTER, "Create &Filter...\tCtrl-F");
+ file_menu->Append(wxID_OPEN, "&Open...\tCtrl-O");
+ file_menu->Append(wxID_SAVE, "&Save\tCtrl-S");
file_menu->Append(wxID_SAVEAS, "Save &As...");
- file_menu->Append(wxID_CLOSE, "&Close");
+ file_menu->Append(wxID_CLOSE, "&Close\tCtrl-W");
file_menu->AppendSeparator();
file_menu->Append(PJMENU_FILE_PROPERTIES, "P&roperties");
file_menu->Append(wxID_PREVIEW, "Print Pre&view");
wxMenu *view_menu = new wxMenu;
- view_menu->Append(PLOTMENU_VIEW_SCALE_MINMAX, "Display Scale &Set...");
- view_menu->Append(PLOTMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...");
- view_menu->Append(PLOTMENU_VIEW_SCALE_FULL, "Display &Full Scale");
+ view_menu->Append(PLOTMENU_VIEW_SCALE_MINMAX, "Display Scale &Set...\tCtrl-E");
+ view_menu->Append(PLOTMENU_VIEW_SCALE_AUTO, "Display Scale &Auto...\tCtrl-A");
+ view_menu->Append(PLOTMENU_VIEW_SCALE_FULL, "Display &Full Scale\tCtrl-U");
wxMenu *help_menu = new wxMenu;
- help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents");
- help_menu->AppendSeparator();
+ help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1");
+ help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H");
help_menu->Append(MAINMENU_HELP_ABOUT, "&About");
wxMenuBar *menu_bar = new wxMenuBar;
subframe->SetMenuBar(menu_bar);
subframe->Centre(wxBOTH);
+
+ wxAcceleratorEntry accelEntries[10];
+ accelEntries[0].Set (wxACCEL_CTRL, static_cast<int>('O'), wxID_OPEN);
+ accelEntries[1].Set (wxACCEL_CTRL, static_cast<int>('S'), wxID_SAVE);
+ accelEntries[2].Set (wxACCEL_CTRL, static_cast<int>('W'), wxID_CLOSE);
+ accelEntries[3].Set (wxACCEL_CTRL, static_cast<int>('H'), MAINMENU_HELP_TOPICS);
+ accelEntries[4].Set (wxACCEL_CTRL, static_cast<int>('P'), MAINMENU_FILE_CREATE_PHANTOM);
+ accelEntries[5].Set (wxACCEL_CTRL, static_cast<int>('F'), MAINMENU_FILE_CREATE_FILTER);
+ accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS);
+ accelEntries[7].Set (wxACCEL_CTRL, static_cast<int>('E'), PLOTMENU_VIEW_SCALE_MINMAX);
+ accelEntries[8].Set (wxACCEL_CTRL, static_cast<int>('A'), PLOTMENU_VIEW_SCALE_AUTO);
+ accelEntries[9].Set (wxACCEL_CTRL, static_cast<int>('U'), PLOTMENU_VIEW_SCALE_FULL);
+ wxAcceleratorTable accelTable (10, accelEntries);
+ subframe->SetAcceleratorTable (accelTable);
return subframe;
}