X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fctsim.h;h=c87880332c2fff2104e4bf4e44f9dd2a0de71036;hp=e92b16bb5ee8ac40c8a87bdd20b9046a58b93308;hb=d3fa225aa232e132cc198672c4fc148f96a1ab8c;hpb=ec73e3f9aa11aea5ba6a4255489fdca63d2b4990 diff --git a/src/ctsim.h b/src/ctsim.h index e92b16b..c878803 100644 --- a/src/ctsim.h +++ b/src/ctsim.h @@ -7,9 +7,9 @@ ** Date Started: July 2000 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg +** Copyright (c) 1983-2001 Kevin Rosenberg ** -** $Id: ctsim.h,v 1.25 2001/01/17 11:00:18 kevin Exp $ +** $Id: ctsim.h,v 1.43 2001/02/11 04:56:38 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 @@ -35,22 +35,36 @@ #include #endif +#ifndef WX_PRECOMP +#include "wx/wx.h" +#endif +#include "wx/config.h" +#include "wx/msw/helpchm.h" + #ifdef MSVC -// #define CTSIM_MDI 1 +#define CTSIM_MDI 1 #endif +#define CTSIM_CUSTOM_MRU 1 +#if defined(CTSIM_MDI) && !wxUSE_MDI_ARCHITECTURE +#error You must set wxUSE_MDI_ARCHITECTURE to 1 in setup.h! +#endif +#ifdef CTSIM_MDI +#include "wx/docmdi.h" +#endif class wxMenu; class wxDocument; - class ImageFileDocument; - -#include - -#ifndef WX_PRECOMP -#include "wx/wx.h" +class ProjectionFileDocument; +class PhantomFileDocument; +class PlotFileDocument; +class TextFileDocument; +#if wxUSE_GLCANVAS +class Graph3dFileDocument; #endif +#include #include "wx/docview.h" #include "wx/textctrl.h" #include "wx/menu.h" @@ -59,18 +73,25 @@ class ImageFileDocument; #include "dlgezplot.h" +#if defined(__WXMSW__) +#define CTSIM_WINHELP 1 +#endif + // Define a new frame for main window #if CTSIM_MDI -class MainFrame: public wxMDIParentFrame +class MainFrame: public wxDocMDIParentFrame #else class MainFrame: public wxDocParentFrame #endif { - DECLARE_CLASS(MainFrame) private: - wxTextCtrl* m_pLog; + DECLARE_CLASS(MainFrame) + DECLARE_EVENT_TABLE() + +#ifndef CTSIM_MDI wxMenu* m_pWindowMenu; - +#endif + enum { MAX_WINDOW_MENUITEMS = 20 }; wxMenuItem* m_apWindowMenuItems[MAX_WINDOW_MENUITEMS]; wxDocument* m_apWindowMenuData[MAX_WINDOW_MENUITEMS]; @@ -84,38 +105,47 @@ private: double m_dDefaultFilterBandwidth; double m_dDefaultFilterInputScale; double m_dDefaultFilterOutputScale; - -#ifdef __WXMSW__ - wxWinHelpController m_help; -#else - wxHtmlHelpController m_help; -#endif + bool m_bShuttingDown; + +#if CTSIM_WINHELP + wxCHMHelpController m_winHelp; +#endif + wxHtmlHelpController m_htmlHelp; public: MainFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long type); - -#ifdef __WXMSW__ - wxWinHelpController& getHelpController() - {return m_help; } -#else - wxHtmlHelpController& getHelpController() - { return m_help; } + virtual ~MainFrame(); + +#ifdef CTSIM_CUSTOM_MRU + void OnMRUFile (wxCommandEvent& event); +#endif + void OnSize (wxSizeEvent& event); + +#if CTSIM_WINHELP + wxCHMHelpController& getWinHelpController() + {return m_winHelp; } #endif + wxHtmlHelpController& getHtmlHelpController() + { return m_htmlHelp; } + void showHelp (int commandID); void OnAbout (wxCommandEvent& event); void OnHelpTopics (wxCommandEvent& event); + void OnHelpContents (wxCommandEvent& event); void OnCreatePhantom (wxCommandEvent& event); + void OnPreferences (wxCommandEvent& event); +#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) + void OnHelpSecondary (wxCommandEvent& event); +#endif + void OnCreateFilter (wxCommandEvent& event); void OnExit (wxCommandEvent& event); void OnUpdateUI (wxUpdateUIEvent& event); - wxTextCtrl* getLog() - { return m_pLog; } - void OnWindowMenu0 (wxCommandEvent& event); void OnWindowMenu1 (wxCommandEvent& event); void OnWindowMenu2 (wxCommandEvent& event); @@ -138,22 +168,46 @@ public: void OnWindowMenu19 (wxCommandEvent& event); void DoWindowMenu (int iMenuPosition, wxCommandEvent& event); - - DECLARE_EVENT_TABLE() + + bool getShuttingDown() const { return m_bShuttingDown; } }; class wxDocManager; class CTSimApp: public wxApp { +private: + enum { O_HELP, O_VERSION }; + static struct option ctsimOptions[]; + + bool m_bAdvancedOptions; + wxDocManager* m_docManager; + MainFrame* m_pFrame; + wxConfig* m_pConfig; + wxTextCtrl* m_pLog; + wxDocTemplate* m_pDocTemplImage; + wxDocTemplate* m_pDocTemplProjection; + wxDocTemplate* m_pDocTemplPhantom; + wxDocTemplate* m_pDocTemplPlot; + wxDocTemplate* m_pDocTemplText; +#if wxUSE_GLCANVAS + wxDocTemplate* m_pDocTemplGraph3d; +#endif + + TextFileDocument* m_pLogDoc; + + void usage (const char* program); + public: CTSimApp(); bool OnInit(); int OnExit(); MainFrame* getMainFrame() const { return m_pFrame; } + wxTextCtrl* getLog() - { return m_pFrame->getLog(); } + { return m_pLog; } + wxDocManager* getDocManager() { return m_docManager; } @@ -163,36 +217,50 @@ public: { return new EZPlotDialog (m_pFrame); } void getCompatibleImages (const ImageFileDocument* pIFDoc, std::vector& vecIF); - - bool getSetModifyNewDocs() const - { return true; } - + bool getAdvancedOptions() const { return m_bAdvancedOptions; } + void setAdvancedOptions (bool bAdv) { m_bAdvancedOptions = bAdv; } + void setIconForFrame (wxFrame* pFrame); + wxConfig* getConfig() + { return m_pConfig; } -private: - wxDocManager* m_docManager; - MainFrame* m_pFrame; - - void usage (const char* program); - - static struct option ctsimOptions[]; - - enum { O_HELP, O_VERSION }; + wxDocTemplate* getDocTemplImage() { return m_pDocTemplImage; } + wxDocTemplate* getDocTemplProjection() { return m_pDocTemplProjection; } + wxDocTemplate* getDocTemplPhantom() { return m_pDocTemplPhantom; } + wxDocTemplate* getDocTemplPlot() { return m_pDocTemplPlot; } + wxDocTemplate* getDocTemplText() { return m_pDocTemplText; } +#if wxUSE_GLCANVAS + wxDocTemplate* getDocTemplGraph3d() { return m_pDocTemplGraph3d; } +#endif + TextFileDocument* getLogDoc() { return m_pLogDoc; } + + ProjectionFileDocument* newProjectionDoc(); + ImageFileDocument* newImageDoc(); + PhantomFileDocument* newPhantomDoc(); + PlotFileDocument* newPlotDoc(); + TextFileDocument* newTextDoc(); +#if wxUSE_GLCANVAS + Graph3dFileDocument* newGraph3dDoc(); +#endif }; DECLARE_APP(CTSimApp) extern class CTSimApp* theApp; - enum { - MAINMENU_HELP_ABOUT = 500, - MAINMENU_WINDOW_BASE, + MAINMENU_WINDOW_BASE = 500, + MAINMENU_HELP_ABOUT = 600, + MAINMENU_HELP_CONTENTS, MAINMENU_HELP_TOPICS, +#if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) + MAINMENU_HELP_SECONDARY, +#endif MAINMENU_FILE_CREATE_PHANTOM, MAINMENU_FILE_CREATE_FILTER, MAINMENU_FILE_EXIT, + MAINMENU_FILE_PREFERENCES, PJMENU_FILE_PROPERTIES, PJMENU_RECONSTRUCT_FBP, @@ -221,7 +289,10 @@ enum { IFMENU_IMAGE_SUBTRACT, IFMENU_IMAGE_MULTIPLY, IFMENU_IMAGE_DIVIDE, - +#if wxUSE_GLCANVAS + IFMENU_IMAGE_CONVERT3D, +#endif + IFMENU_FILTER_INVERTVALUES, IFMENU_FILTER_SQRT, IFMENU_FILTER_SQUARE, @@ -246,8 +317,15 @@ enum { PLOTMENU_VIEW_SCALE_MINMAX, PLOTMENU_VIEW_SCALE_AUTO, - PLOTMENU_VIEW_SCALE_FULL, - + PLOTMENU_VIEW_SCALE_FULL, + + GRAPH3D_VIEW_SURFACE, + GRAPH3D_VIEW_COLOR, + GRAPH3D_VIEW_LIGHTING, + GRAPH3D_VIEW_SMOOTH, + GRAPH3D_VIEW_SCALE_AUTO, + GRAPH3D_VIEW_SCALE_MINMAX, + GRAPH3D_VIEW_SCALE_FULL, }; #endif