1 /*****************************************************************************
5 ** Purpose: Top-level routines for CTSim program
6 ** Programmer: Kevin Rosenberg
7 ** Date Started: July 2000
9 ** This is part of the CTSim program
10 ** Copyright (C) 1983-2000 Kevin Rosenberg
12 ** $Id: ctsim.h,v 1.30 2001/01/20 17:43:41 kevin Exp $
14 ** This program is free software; you can redistribute it and/or modify
15 ** it under the terms of the GNU General Public License (version 2) as
16 ** published by the Free Software Foundation.
18 ** This program is distributed in the hope that it will be useful,
19 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
20 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 ** GNU General Public License for more details.
23 ** You should have received a copy of the GNU General Public License
24 ** along with this program; if not, write to the Free Software
25 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
26 ******************************************************************************/
41 #include "wx/config.h"
46 #define CTSIM_CUSTOM_MRU 1
48 #if defined(CTSIM_MDI) && !wxUSE_MDI_ARCHITECTURE
49 #error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h!
52 #include "wx/docmdi.h"
58 class ImageFileDocument;
62 #include "wx/docview.h"
63 #include "wx/textctrl.h"
66 #include "wx/html/helpctrl.h"
67 #include "dlgezplot.h"
70 #if defined(__WXMSW__)
71 #define CTSIM_WINHELP 1
74 // Define a new frame for main window
76 class MainFrame: public wxDocMDIParentFrame
78 class MainFrame: public wxDocParentFrame
81 DECLARE_CLASS(MainFrame)
83 wxMenu* m_pWindowMenu;
85 enum { MAX_WINDOW_MENUITEMS = 20 };
86 wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS];
87 wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS];
89 int m_iDefaultPhantomID;
90 int m_iDefaultFilterID;
91 int m_iDefaultFilterDomainID;
92 unsigned int m_iDefaultFilterXSize;
93 unsigned int m_iDefaultFilterYSize;
94 double m_dDefaultFilterParam;
95 double m_dDefaultFilterBandwidth;
96 double m_dDefaultFilterInputScale;
97 double m_dDefaultFilterOutputScale;
100 wxWinHelpController m_winHelp;
102 wxHtmlHelpController m_htmlHelp;
105 MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type);
108 #ifdef CTSIM_CUSTOM_MRU
109 void OnMRUFile (wxCommandEvent& event);
111 void OnSize (wxSizeEvent& event);
114 wxWinHelpController& getWinHelpController()
117 wxHtmlHelpController& getHtmlHelpController()
118 { return m_htmlHelp; }
120 void showHelp (int commandID);
122 void OnAbout (wxCommandEvent& event);
123 void OnHelpTopics (wxCommandEvent& event);
124 void OnHelpContents (wxCommandEvent& event);
125 void OnCreatePhantom (wxCommandEvent& event);
127 #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG))
128 void OnHelpSecondary (wxCommandEvent& event);
131 void OnCreateFilter (wxCommandEvent& event);
132 void OnExit (wxCommandEvent& event);
134 void OnUpdateUI (wxUpdateUIEvent& event);
136 void OnWindowMenu0 (wxCommandEvent& event);
137 void OnWindowMenu1 (wxCommandEvent& event);
138 void OnWindowMenu2 (wxCommandEvent& event);
139 void OnWindowMenu3 (wxCommandEvent& event);
140 void OnWindowMenu4 (wxCommandEvent& event);
141 void OnWindowMenu5 (wxCommandEvent& event);
142 void OnWindowMenu6 (wxCommandEvent& event);
143 void OnWindowMenu7 (wxCommandEvent& event);
144 void OnWindowMenu8 (wxCommandEvent& event);
145 void OnWindowMenu9 (wxCommandEvent& event);
146 void OnWindowMenu10 (wxCommandEvent& event);
147 void OnWindowMenu11 (wxCommandEvent& event);
148 void OnWindowMenu12 (wxCommandEvent& event);
149 void OnWindowMenu13 (wxCommandEvent& event);
150 void OnWindowMenu14 (wxCommandEvent& event);
151 void OnWindowMenu15 (wxCommandEvent& event);
152 void OnWindowMenu16 (wxCommandEvent& event);
153 void OnWindowMenu17 (wxCommandEvent& event);
154 void OnWindowMenu18 (wxCommandEvent& event);
155 void OnWindowMenu19 (wxCommandEvent& event);
157 void DoWindowMenu (int iMenuPosition, wxCommandEvent& event);
159 DECLARE_EVENT_TABLE()
164 class CTSimApp: public wxApp
167 wxDocManager* m_docManager;
171 void usage (const char* program);
173 static struct option ctsimOptions[];
175 enum { O_HELP, O_VERSION };
182 MainFrame* getMainFrame() const
188 wxDocManager* getDocManager()
189 { return m_docManager; }
191 wxString getUntitledFilename();
193 EZPlotDialog* makeEZPlotDialog()
194 { return new EZPlotDialog (m_pFrame); }
196 void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector<ImageFileDocument*>& vecIF);
198 bool getSetModifyNewDocs() const
201 void setIconForFrame (wxFrame* pFrame);
202 wxConfig* getConfig()
203 { return m_pConfig; }
206 DECLARE_APP(CTSimApp)
208 extern class CTSimApp* theApp;
211 MAINMENU_WINDOW_BASE = 500,
212 MAINMENU_HELP_ABOUT = 600,
213 MAINMENU_HELP_CONTENTS,
214 MAINMENU_HELP_TOPICS,
215 MAINMENU_HELP_SECONDARY,
216 MAINMENU_FILE_CREATE_PHANTOM,
218 MAINMENU_FILE_CREATE_FILTER,
221 PJMENU_FILE_PROPERTIES,
222 PJMENU_RECONSTRUCT_FBP,
223 PJMENU_RECONSTRUCT_FOURIER,
224 PJMENU_CONVERT_POLAR,
225 PJMENU_CONVERT_FFT_POLAR,
228 IFMENU_FILE_PROPERTIES,
234 IFMENU_PLOT_HISTOGRAM,
236 IFMENU_VIEW_SCALE_AUTO,
237 IFMENU_VIEW_SCALE_MINMAX,
238 IFMENU_VIEW_SCALE_FULL,
240 IFMENU_COMPARE_IMAGES,
243 IFMENU_IMAGE_SCALESIZE,
245 IFMENU_IMAGE_SUBTRACT,
246 IFMENU_IMAGE_MULTIPLY,
249 IFMENU_FILTER_INVERTVALUES,
251 IFMENU_FILTER_SQUARE,
254 IFMENU_FILTER_FOURIER,
255 IFMENU_FILTER_INVERSE_FOURIER,
258 IFMENU_FILTER_FFT_ROWS,
259 IFMENU_FILTER_FFT_COLS,
260 IFMENU_FILTER_IFFT_ROWS,
261 IFMENU_FILTER_IFFT_COLS,
262 IFMENU_FILTER_MAGNITUDE,
264 IFMENU_FILTER_SHUFFLENATURALTOFOURIERORDER,
265 IFMENU_FILTER_SHUFFLEFOURIERTONATURALORDER,
267 PHMMENU_FILE_PROPERTIES,
268 PHMMENU_PROCESS_RASTERIZE,
269 PHMMENU_PROCESS_PROJECTIONS,
271 PLOTMENU_VIEW_SCALE_MINMAX,
272 PLOTMENU_VIEW_SCALE_AUTO,
273 PLOTMENU_VIEW_SCALE_FULL,