+private:
+ DECLARE_DYNAMIC_CLASS(PhantomFileView)
+ DECLARE_EVENT_TABLE()
+
+ PhantomCanvas *CreateCanvas (wxFrame* parent);
+#if CTSIM_MDI
+ wxDocMDIChildFrame* m_pFrame;
+ wxDocMDIChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#else
+ wxDocChildFrame* m_pFrame;
+ wxDocChildFrame* CreateChildFrame(wxDocument *doc, wxView *view);
+#endif
+
+ PhantomCanvas *m_pCanvas;
+ wxMenu* m_pFileMenu;
+
+ int m_iDefaultNDet;
+ int m_iDefaultNView;
+ int m_iDefaultNSample;
+ int m_iDefaultGeometry;
+ int m_iDefaultTrace;
+ double m_dDefaultRotation;
+ double m_dDefaultFocalLength;
+ double m_dDefaultCenterDetectorLength;
+ double m_dDefaultViewRatio;
+ double m_dDefaultScanRatio;
+
+ int m_iDefaultRasterNX;
+ int m_iDefaultRasterNY;
+ int m_iDefaultRasterNSamples;
+ double m_dDefaultRasterViewRatio;
+
+ wxWindow* getFrameForChild()
+#if CTSIM_MDI
+ { return theApp->getMainFrame(); }
+#else
+ { return m_pFrame; }
+#endif
+
+public:
+ PhantomFileView();
+ virtual ~PhantomFileView();
+ void canvasClosed()
+ { m_pCanvas = NULL; m_pFrame = NULL; }
+
+ bool OnCreate(wxDocument *doc, long flags);
+ void OnUpdate(wxView *sender, wxObject *hint = NULL);
+ bool OnClose (bool deleteWindow = true);
+ void OnDraw(wxDC* dc);
+ void OnProperties (wxCommandEvent& event);
+ void OnRasterize (wxCommandEvent& event);
+ void OnProjections (wxCommandEvent& event);
+
+ PhantomFileDocument* GetDocument()
+ { return dynamic_cast<PhantomFileDocument*>(wxView::GetDocument()); }
+
+ wxMenu* getFileMenu() { return m_pFileMenu; }
+#if CTSIM_MDI
+ wxDocMDIChildFrame* getFrame() { return m_pFrame; }
+#else
+ wxDocChildFrame* getFrame() { return m_pFrame; }
+#endif
+};