From 95f440605a411c94ff2563c91cb0f51acf78c518 Mon Sep 17 00:00:00 2001 From: "Kevin M. Rosenberg" Date: Thu, 18 Jan 2001 23:34:01 +0000 Subject: [PATCH] r419: Added accelerator tables to frames --- ChangeLog | 2 + msvc/ctsim/ctsim.plg | 223 +++++++++++++++++++++++++++++++++++++++---- src/ctsim.cpp | 18 +++- src/views.cpp | 124 ++++++++++++++++-------- 4 files changed, 303 insertions(+), 64 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32e398e..1325394 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 3.0.0beta1 - Released + * ctsim: Added accelerator (hotkeys) to windows + * ctsim: Online help added as well as HTML help * ctsim: Added icons to Frames on Windows versions diff --git a/msvc/ctsim/ctsim.plg b/msvc/ctsim/ctsim.plg index 5f5daf4..33da497 100644 --- a/msvc/ctsim/ctsim.plg +++ b/msvc/ctsim/ctsim.plg @@ -3,41 +3,222 @@
 

Build Log

---------------------Configuration: ctsim - Win32 Debug-------------------- +--------------------Configuration: libctsim - Win32 Release--------------------

Command Lines

-Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D.tmp" with contents +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF3.tmp" with contents [ -/nologo /G6 /MTd /W3 /Gm /GR /GX /ZI /Od /I "\wx2\include" /I "." /I "..\..\include" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\zlib" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /D VERSION=\"2.5.0\" /D "_DEBUG" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Debug/" /Fp"Debug/ctsim.pch" /YX /Fo"Debug/" /Fd"Debug/" /FD /GZ /c -"C:\ctsim\src\ctsim.cpp" +/nologo /G6 /MT /W3 /GR- /GX /O2 /I "..\..\..\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2\include" /D "NDEBUG" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /Fp"Release/libctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +"D:\ctsim\libctsim\backprojectors.cpp" ] -Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9D.tmp" -Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9E.tmp" with contents +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF3.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF4.tmp" with contents [ -comctl32.lib winmm.lib rpcrt4.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ../libctsim/Debug/libctsim.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\..\lpng108\msvc\win32\libpng\lib_dbg\libpng.lib ..\..\..\lpng108\msvc\win32\zlib\lib_dbg\zlib.lib libcmtd.lib ..\..\..\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib ..\..\..\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib ../../../wx2/lib/wxd.lib xpmd.lib /nologo /subsystem:windows /incremental:yes /pdb:"Debug/ctsim.pdb" /debug /machine:I386 /out:"Debug/ctsim.exe" /pdbtype:sept /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" /libpath:"..\..\..\wx2\lib" -.\Debug\ctsim.obj -.\Debug\dialogs.obj -.\Debug\dlgprojections.obj -.\Debug\dlgreconstruct.obj -.\Debug\docs.obj -.\Debug\views.obj -.\Debug\ctsim.res -\ctsim\msvc\libctsim\Debug\libctsim.lib -"\fftw-2.1.3\Win32\FFTW2st\Debug\FFTW2st.lib" -"\fftw-2.1.3\Win32\RFFTW2st\Debug\RFFTW2st.lib" -\wx2\lib\wxd.lib -\wx2\lib\xpmd.lib +/nologo /G6 /MT /W3 /GR /GX /O2 /I "..\..\..\zlib" /I "..\..\INCLUDE" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2\include" /D "NDEBUG" /D "HAVE_STRING_H" /D "HAVE_GETOPT_H" /D "WIN32" /D "_MBCS" /D "_LIB" /D "MSVC" /D "HAVE_FFTW" /D "HAVE_PNG" /D "HAVE_SGP" /D "HAVE_WXWINDOWS" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /Fp"Release/libctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +"D:\ctsim\libctgraphics\dlgezplot.cpp" +"D:\ctsim\libctgraphics\ezplot.cpp" +"D:\ctsim\libctgraphics\ezset.cpp" +"D:\ctsim\libctgraphics\ezsupport.cpp" +"D:\ctsim\libctsim\filter.cpp" +"D:\ctsim\libctsim\fourier.cpp" +"D:\ctsim\libctsim\globalvars.cpp" +"D:\ctsim\libctsupport\hashtable.cpp" +"D:\ctsim\libctsim\imagefile.cpp" +"D:\ctsim\libctsim\phantom.cpp" +"D:\ctsim\libctsupport\plotfile.cpp" +"D:\ctsim\libctgraphics\pol.cpp" +"D:\ctsim\libctsim\procsignal.cpp" +"D:\ctsim\libctsim\projections.cpp" +"D:\ctsim\libctsim\reconstruct.cpp" +"D:\ctsim\libctsim\scanner.cpp" +"D:\ctsim\libctgraphics\sgp.cpp" +"D:\ctsim\libctsupport\syserror.cpp" +"D:\ctsim\libctsim\trace.cpp" ] -Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSP9E.tmp" +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF4.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF5.tmp" with contents +[ +/nologo /out:"Release\libctsim.lib" +.\Release\array2dfile.obj +.\Release\backprojectors.obj +.\Release\clip.obj +.\Release\consoleio.obj +.\Release\dlgezplot.obj +.\Release\ezplot.obj +.\Release\ezset.obj +.\Release\ezsupport.obj +.\Release\filter.obj +.\Release\fnetorderstream.obj +.\Release\fourier.obj +.\Release\getopt.obj +.\Release\getopt1.obj +.\Release\globalvars.obj +.\Release\hashtable.obj +.\Release\imagefile.obj +.\Release\mathfuncs.obj +.\Release\phantom.obj +.\Release\plotfile.obj +.\Release\pol.obj +.\Release\procsignal.obj +.\Release\projections.obj +.\Release\reconstruct.obj +.\Release\scanner.obj +.\Release\sgp.obj +.\Release\strfuncs.obj +.\Release\syserror.obj +.\Release\trace.obj +.\Release\transformmatrix.obj +.\Release\xform.obj +] +Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF5.tmp" +

Output Window

+Compiling... +backprojectors.cpp +Compiling... +dlgezplot.cpp +ezplot.cpp +ezset.cpp +ezsupport.cpp +filter.cpp +fourier.cpp +globalvars.cpp +hashtable.cpp +imagefile.cpp +phantom.cpp +plotfile.cpp +pol.cpp +procsignal.cpp +projections.cpp +reconstruct.cpp +scanner.cpp +sgp.cpp +syserror.cpp +trace.cpp +Creating library... +

+--------------------Configuration: xpm - Win32 Release-------------------- +

+

Command Lines

+Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF6.tmp" with contents +[ +/nologo /G6 /MT /W3 /GR /GX /O1 /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Fo"Release/" /Fd"Release/" /FD /c +"D:\wx2\src\xpm\attrib.c" +"D:\wx2\src\xpm\crbuffri.c" +"D:\wx2\src\xpm\crdatfri.c" +"D:\wx2\src\xpm\create.c" +"D:\wx2\src\xpm\crifrbuf.c" +"D:\wx2\src\xpm\crifrdat.c" +"D:\wx2\src\xpm\dataxpm.c" +"D:\wx2\src\xpm\hashtab.c" +"D:\wx2\src\xpm\imagexpm.c" +"D:\wx2\src\xpm\info.c" +"D:\wx2\src\xpm\misc.c" +"D:\wx2\src\xpm\parse.c" +"D:\wx2\src\xpm\rdftodat.c" +"D:\wx2\src\xpm\rdftoi.c" +"D:\wx2\src\xpm\rgb.c" +"D:\wx2\src\xpm\scan.c" +"D:\wx2\src\xpm\simx.c" +"D:\wx2\src\xpm\wrffrdat.c" +"D:\wx2\src\xpm\wrffri.c" +] +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF6.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF7.tmp" with contents +[ +/nologo /out:"..\..\lib\xpm.lib" +.\Release\attrib.obj +.\Release\crbuffri.obj +.\Release\crdatfri.obj +.\Release\create.obj +.\Release\crifrbuf.obj +.\Release\crifrdat.obj +.\Release\dataxpm.obj +.\Release\hashtab.obj +.\Release\imagexpm.obj +.\Release\info.obj +.\Release\misc.obj +.\Release\parse.obj +.\Release\rdftodat.obj +.\Release\rdftoi.obj +.\Release\rgb.obj +.\Release\scan.obj +.\Release\simx.obj +.\Release\wrffrdat.obj +.\Release\wrffri.obj +] +Creating command line "link.exe -lib @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF7.tmp" +

Output Window

+Compiling... +attrib.c +crbuffri.c +crdatfri.c +create.c +crifrbuf.c +crifrdat.c +dataxpm.c +hashtab.c +imagexpm.c +info.c +misc.c +parse.c +rdftodat.c +rdftoi.c +rgb.c +scan.c +simx.c +wrffrdat.c +wrffri.c +Generating Code... +Creating library... +

+--------------------Configuration: ctsim - Win32 Release-------------------- +

+

Command Lines

+Creating command line "rc.exe /l 0x409 /fo"Release/ctsim.res" /i "\wx2\include\wx\msw" /i "\wx2\include" /d "NDEBUG" "D:\ctsim\msvc\ctsim\ctsim.rc"" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF8.tmp" with contents +[ +/nologo /G6 /MT /W3 /GR /GX /O2 /I "." /I "..\..\include" /I "..\..\getopt" /I "..\..\..\lpng108" /I "..\..\..\zlib" /I "..\..\..\fftw-2.1.3\fftw" /I "..\..\..\fftw-2.1.3\rfftw" /I "..\..\..\wx2\include" /D "NDEBUG" /D "__WXWIN__" /D "__WXMSW__" /D "HAVE_SGP" /D "HAVE_PNG" /D "HAVE_WXWINDOWS" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "HAVE_STRING_H" /D "HAVE_FFTW" /D "HAVE_RFFTW" /D "HAVE_GETOPT_H" /D "MSVC" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /D CTSIMVERSION=\"3.0.0alpha5\" /FR"Release/" /Fp"Release/ctsim.pch" /YX /Fo"Release/" /Fd"Release/" /FD /c +"D:\ctsim\src\ctsim.cpp" +"D:\ctsim\src\dialogs.cpp" +"D:\ctsim\src\dlgprojections.cpp" +"D:\ctsim\src\dlgreconstruct.cpp" +"D:\ctsim\src\docs.cpp" +"D:\ctsim\src\views.cpp" +] +Creating command line "cl.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF8.tmp" +Creating temporary file "C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF9.tmp" with contents +[ +kernel32.lib user32.lib wsock32.lib comctl32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib libpng.lib zlib.lib xpm.lib /nologo /subsystem:windows /incremental:no /pdb:"Release/ctsim.pdb" /machine:I386 /out:"Release/ctsim.exe" /libpath:"..\..\..\lpng108\msvc\win32\libpng\lib" /libpath:"..\..\..\lpng108\msvc\win32\zlib\lib" /libpath:"..\..\..\wx2\lib" +.\Release\ctsim.obj +.\Release\dialogs.obj +.\Release\dlgprojections.obj +.\Release\dlgreconstruct.obj +.\Release\docs.obj +.\Release\views.obj +.\Release\ctsim.res +\ctsim\msvc\libctsim\Release\libctsim.lib +"\fftw-2.1.3\Win32\FFTW2st\Release\FFTW2st.lib" +"\fftw-2.1.3\Win32\RFFTW2st\Release\RFFTW2st.lib" +\wx2\lib\wx.lib +\wx2\lib\xpm.lib +] +Creating command line "link.exe @C:\DOCUME~1\kevin\LOCALS~1\Temp\RSPF9.tmp"

Output Window

+Compiling resources... Compiling... ctsim.cpp +dialogs.cpp +dlgprojections.cpp +dlgreconstruct.cpp +docs.cpp +views.cpp Linking... +LINK : warning LNK4089: all references to "WSOCK32.dll" discarded by /OPT:REF

Results

-ctsim.exe - 0 error(s), 0 warning(s) +ctsim.exe - 0 error(s), 1 warning(s)
diff --git a/src/ctsim.cpp b/src/ctsim.cpp index c52282b..a2212e8 100644 --- a/src/ctsim.cpp +++ b/src/ctsim.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ctsim.cpp,v 1.35 2001/01/18 21:30:22 kevin Exp $ +** $Id: ctsim.cpp,v 1.36 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 @@ -69,7 +69,7 @@ #endif #endif -static const char* rcsindent = "$Id: ctsim.cpp,v 1.35 2001/01/18 21:30:22 kevin Exp $"; +static const char* rcsindent = "$Id: ctsim.cpp,v 1.36 2001/01/18 23:34:01 kevin Exp $"; struct option CTSimApp::ctsimOptions[] = { @@ -308,6 +308,16 @@ MainFrame::MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const m_dDefaultFilterInputScale = 1.; m_dDefaultFilterOutputScale = 1.; + wxAcceleratorEntry accelEntries[14]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); + accelEntries[4].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); + for (i = 0; i < 10; i++) + accelEntries[i+4].Set (wxACCEL_CTRL, static_cast('0'+i), MAINMENU_WINDOW_BASE+i); + wxAcceleratorTable accelTable (16, accelEntries); + SetAcceleratorTable (accelTable); } void @@ -444,6 +454,10 @@ MainFrame::OnUpdateUI (wxUpdateUIEvent& rEvent) while (iPos < MAX_WINDOW_MENUITEMS && pNode != NULL) { wxDocument* pDoc = static_cast(pNode->GetData()); wxString strFilename = pDoc->GetFilename(); + if (iPos < 10) { + strFilename += "\tCtrl-"; + strFilename += static_cast('0' + iPos); + } static_cast(m_apWindowMenuItems[iPos])->SetName (strFilename); m_apWindowMenuData[iPos] = pDoc; m_pWindowMenu->Enable (MAINMENU_WINDOW_BASE+iPos, true); diff --git a/src/views.cpp b/src/views.cpp index 393e5f4..bc58da2 100644 --- a/src/views.cpp +++ b/src/views.cpp @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: views.cpp,v 1.66 2001/01/18 21:30:22 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 @@ -778,7 +778,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) 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"); @@ -841,7 +841,7 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) wxMenu *help_menu = new wxMenu; help_menu->Append(MAINMENU_HELP_CONTENTS, "&Contents\tF1"); - help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-T"); + help_menu->Append(MAINMENU_HELP_TOPICS, "&Topics\tCtrl-H"); help_menu->Append(MAINMENU_HELP_ABOUT, "&About"); wxMenuBar *menu_bar = new wxMenuBar; @@ -857,17 +857,18 @@ ImageFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->Centre(wxBOTH); - wxAcceleratorEntry accelEntries[9]; + wxAcceleratorEntry accelEntries[10]; accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); - accelEntries[2].Set (wxACCEL_CTRL, static_cast('T'), MAINMENU_HELP_TOPICS); - accelEntries[3].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); - accelEntries[4].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); - accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); - accelEntries[6].Set (wxACCEL_CTRL, static_cast('A'), IFMENU_VIEW_SCALE_AUTO); - accelEntries[7].Set (wxACCEL_CTRL, static_cast('U'), IFMENU_VIEW_SCALE_FULL); - accelEntries[8].Set (wxACCEL_CTRL, static_cast('E'), IFMENU_VIEW_SCALE_MINMAX); - wxAcceleratorTable accelTable (9, accelEntries); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); + accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); + accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); + accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); + accelEntries[7].Set (wxACCEL_CTRL, static_cast('A'), IFMENU_VIEW_SCALE_AUTO); + accelEntries[8].Set (wxACCEL_CTRL, static_cast('U'), IFMENU_VIEW_SCALE_FULL); + accelEntries[9].Set (wxACCEL_CTRL, static_cast('E'), IFMENU_VIEW_SCALE_MINMAX); + wxAcceleratorTable accelTable (10, accelEntries); subframe->SetAcceleratorTable (accelTable); return subframe; @@ -1888,9 +1889,9 @@ PhantomView::CreateChildFrame(wxDocument *doc, wxView *view) 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"); @@ -1903,12 +1904,12 @@ PhantomView::CreateChildFrame(wxDocument *doc, wxView *view) 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_TOPICS, "&Topics"); + 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; @@ -1920,7 +1921,19 @@ PhantomView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); - + + wxAcceleratorEntry accelEntries[8]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); + accelEntries[4].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); + accelEntries[5].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); + accelEntries[6].Set (wxACCEL_CTRL, static_cast('J'), PHMMENU_PROCESS_PROJECTIONS); + accelEntries[7].Set (wxACCEL_CTRL, static_cast('R'), PHMMENU_PROCESS_RASTERIZE); + wxAcceleratorTable accelTable (8, accelEntries); + subframe->SetAcceleratorTable (accelTable); + return subframe; } @@ -2245,12 +2258,12 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) 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"); @@ -2261,16 +2274,16 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) 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->Append(MAINMENU_HELP_TOPICS, "&Topics"); + 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; @@ -2283,6 +2296,21 @@ ProjectionFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); + + wxAcceleratorEntry accelEntries[11]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); + accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); + accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); + accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); + accelEntries[7].Set (wxACCEL_CTRL, static_cast('L'), PJMENU_CONVERT_POLAR); + accelEntries[8].Set (wxACCEL_CTRL, static_cast('I'), PJMENU_CONVERT_FFT_POLAR); + accelEntries[9].Set (wxACCEL_CTRL, static_cast('R'), PJMENU_RECONSTRUCT_FBP); + accelEntries[10].Set (wxACCEL_CTRL, static_cast('E'), PJMENU_RECONSTRUCT_FOURIER); + wxAcceleratorTable accelTable (11, accelEntries); + subframe->SetAcceleratorTable (accelTable); return subframe; } @@ -2534,12 +2562,12 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) 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"); @@ -2550,13 +2578,13 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) 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->Append(MAINMENU_HELP_TOPICS, "&Topics"); + 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; @@ -2568,6 +2596,20 @@ PlotFileView::CreateChildFrame(wxDocument *doc, wxView *view) subframe->SetMenuBar(menu_bar); subframe->Centre(wxBOTH); + + wxAcceleratorEntry accelEntries[10]; + accelEntries[0].Set (wxACCEL_CTRL, static_cast('O'), wxID_OPEN); + accelEntries[1].Set (wxACCEL_CTRL, static_cast('S'), wxID_SAVE); + accelEntries[2].Set (wxACCEL_CTRL, static_cast('W'), wxID_CLOSE); + accelEntries[3].Set (wxACCEL_CTRL, static_cast('H'), MAINMENU_HELP_TOPICS); + accelEntries[4].Set (wxACCEL_CTRL, static_cast('P'), MAINMENU_FILE_CREATE_PHANTOM); + accelEntries[5].Set (wxACCEL_CTRL, static_cast('F'), MAINMENU_FILE_CREATE_FILTER); + accelEntries[6].Set (wxACCEL_NORMAL, WXK_F1, MAINMENU_HELP_CONTENTS); + accelEntries[7].Set (wxACCEL_CTRL, static_cast('E'), PLOTMENU_VIEW_SCALE_MINMAX); + accelEntries[8].Set (wxACCEL_CTRL, static_cast('A'), PLOTMENU_VIEW_SCALE_AUTO); + accelEntries[9].Set (wxACCEL_CTRL, static_cast('U'), PLOTMENU_VIEW_SCALE_FULL); + wxAcceleratorTable accelTable (10, accelEntries); + subframe->SetAcceleratorTable (accelTable); return subframe; } -- 2.34.1