X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=src%2Fctsim.h;h=06d4cc34447ff5400761c456fd4525ae5e9a60d6;hp=b7954f5fc8c7fce33603bfa2182f1912ae53804c;hb=d16eb37cbc73f67fc29a60645e0b1ac7fe32767e;hpb=dfe03b8fc348b60a8f0b012f3f76c24ad29f21ce diff --git a/src/ctsim.h b/src/ctsim.h index b7954f5..06d4cc3 100644 --- a/src/ctsim.h +++ b/src/ctsim.h @@ -1,15 +1,15 @@ /***************************************************************************** ** FILE IDENTIFICATION ** -** Name: ctsim.cpp -** Purpose: Top-level routines for CTSim program +** Name: ctsim.h +** Purpose: Header file for CTSim ** Programmer: Kevin Rosenberg ** 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.31 2001/01/26 05:37:24 kevin Exp $ +** $Id: ctsim.h,v 1.60 2001/03/18 18:08:26 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,10 +35,20 @@ #include #endif +#ifdef MSVC +#define HAVE_WXTHREADS 1 +#else +#undef HAVE_WXTHREADS +#define HAVE_WXTHREADS 1 +#endif + #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/config.h" +#ifdef __WXMSW__ +#include "wx/msw/helpchm.h" +#endif #ifdef MSVC #define CTSIM_MDI 1 @@ -59,6 +69,11 @@ class ProjectionFileDocument; class PhantomFileDocument; class PlotFileDocument; class TextFileDocument; +class BackgroundManager; + +#if wxUSE_GLCANVAS +class Graph3dFileDocument; +#endif #include #include "wx/docview.h" @@ -67,9 +82,10 @@ class TextFileDocument; #include "wx/help.h" #include "wx/html/helpctrl.h" #include "dlgezplot.h" +#include "ctsim-map.h" -#if defined(__WXMSW__) +#if defined(__WXMSW__) || defined (MSVC) #define CTSIM_WINHELP 1 #endif @@ -84,12 +100,15 @@ private: 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]; + int m_iDefaultImportFormat; int m_iDefaultPhantomID; int m_iDefaultFilterID; int m_iDefaultFilterDomainID; @@ -100,14 +119,16 @@ private: double m_dDefaultFilterInputScale; double m_dDefaultFilterOutputScale; + bool m_bShuttingDown; + #if CTSIM_WINHELP - wxWinHelpController m_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); - ~MainFrame(); + virtual ~MainFrame(); #ifdef CTSIM_CUSTOM_MRU void OnMRUFile (wxCommandEvent& event); @@ -115,7 +136,7 @@ public: void OnSize (wxSizeEvent& event); #if CTSIM_WINHELP - wxWinHelpController& getWinHelpController() + wxCHMHelpController& getWinHelpController() {return m_winHelp; } #endif wxHtmlHelpController& getHtmlHelpController() @@ -124,10 +145,17 @@ public: void showHelp (int commandID); void OnAbout (wxCommandEvent& event); - void OnHelpTopics (wxCommandEvent& event); void OnHelpContents (wxCommandEvent& event); + void OnHelpTips (wxCommandEvent& event); void OnCreatePhantom (wxCommandEvent& event); - + void OnPreferences (wxCommandEvent& event); + void OnLogEvent (wxCommandEvent& event); // used by thread children + void OnNewImageFile (wxCommandEvent& event); + void OnNewProjectionFile (wxCommandEvent& event); + + void OnHelpButton (wxCommandEvent& event); + void OnImport (wxCommandEvent& event); + #if defined(CTSIM_WINHELP) && (defined(DEBUG) || defined(_DEBUG)) void OnHelpSecondary (wxCommandEvent& event); #endif @@ -159,6 +187,8 @@ public: void OnWindowMenu19 (wxCommandEvent& event); void DoWindowMenu (int iMenuPosition, wxCommandEvent& event); + + bool getShuttingDown() const { return m_bShuttingDown; } }; @@ -166,21 +196,35 @@ class wxDocManager; class CTSimApp: public wxApp { private: - enum { O_HELP, O_VERSION }; + enum { O_HELP, O_PRINT, O_VERSION }; static struct option ctsimOptions[]; - + + bool m_bAdvancedOptions; + bool m_bSetModifyNewDocs; + bool m_bVerboseLogging; + bool m_bShowStartupTips; + long m_iCurrentTip; + bool m_bUseBackgroundTasks; + wxDocManager* m_docManager; MainFrame* m_pFrame; wxConfig* m_pConfig; wxTextCtrl* m_pLog; + TextFileDocument* m_pLogDoc; wxDocTemplate* m_pDocTemplImage; wxDocTemplate* m_pDocTemplProjection; wxDocTemplate* m_pDocTemplPhantom; wxDocTemplate* m_pDocTemplPlot; wxDocTemplate* m_pDocTemplText; +#if wxUSE_GLCANVAS + wxDocTemplate* m_pDocTemplGraph3d; +#endif void usage (const char* program); - + void openConfig(); + void closeConfig(); + BackgroundManager* m_pBackgroundMgr; + public: CTSimApp(); bool OnInit(); @@ -195,31 +239,50 @@ public: { return m_docManager; } wxString getUntitledFilename(); - + + int getNumberCPU() const { return wxThread::GetCPUCount(); } + EZPlotDialog* makeEZPlotDialog() { 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; } + bool getVerboseLogging() const { return m_bVerboseLogging; } + void setVerboseLogging (bool bVerbose) { m_bVerboseLogging = bVerbose; } + bool getStartupTips() const { return m_bShowStartupTips; } + void setStartupTips(bool bTips) { m_bShowStartupTips = bTips; } + bool getUseBackgroundTasks() const { return m_bUseBackgroundTasks; } + void setUseBackgroundTasks(bool bBkgd) { m_bUseBackgroundTasks = bBkgd; } + + BackgroundManager* getBackgroundManager() {return m_pBackgroundMgr;} + + void ShowTips(); + void setIconForFrame (wxFrame* pFrame); wxConfig* getConfig() { return m_pConfig; } + bool getAskDeleteNewDocs() const { return m_bSetModifyNewDocs; } + void setAskDeleteNewDocs(bool bAsk) { m_bSetModifyNewDocs = bAsk; } 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) @@ -230,22 +293,36 @@ enum { MAINMENU_WINDOW_BASE = 500, MAINMENU_HELP_ABOUT = 600, MAINMENU_HELP_CONTENTS, - MAINMENU_HELP_TOPICS, + MAINMENU_HELP_TIPS, +#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, + MAINMENU_LOG_EVENT, + MAINMENU_IMPORT, PJMENU_FILE_PROPERTIES, PJMENU_RECONSTRUCT_FBP, + PJMENU_RECONSTRUCT_FBP_REBIN, PJMENU_RECONSTRUCT_FOURIER, + PJMENU_CONVERT_RECTANGULAR, PJMENU_CONVERT_POLAR, PJMENU_CONVERT_FFT_POLAR, + PJMENU_CONVERT_PARALLEL, + PJMENU_PLOT_TTHETA_SAMPLING, + PJMENU_PLOT_HISTOGRAM, + PJMENU_ARTIFACT_REDUCTION, IFMENU_FILE_EXPORT, IFMENU_FILE_PROPERTIES, - + + IFMENU_EDIT_COPY, + IFMENU_EDIT_CUT, + IFMENU_EDIT_PASTE, + IFMENU_PLOT_ROW, IFMENU_PLOT_COL, IFMENU_PLOT_FFT_ROW, @@ -264,7 +341,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, @@ -286,10 +366,23 @@ enum { PHMMENU_FILE_PROPERTIES, PHMMENU_PROCESS_RASTERIZE, PHMMENU_PROCESS_PROJECTIONS, - + + PLOTMENU_FILE_PROPERTIES, PLOTMENU_VIEW_SCALE_MINMAX, PLOTMENU_VIEW_SCALE_AUTO, 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, + + RECONSTRUCTION_THREAD_EVENT, + NEW_IMAGEFILE_EVENT, + NEW_PROJECTIONFILE_EVENT, }; #endif