r428: no message
[ctsim.git] / src / views.h
index eee1be8dc1b12c0318755709c2a5920cf5a579d7..834bdfeb3468d45898647982f18879c2fcda97bc 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: views.h,v 1.26 2001/01/06 15:33:15 kevin Exp $
+**  $Id: views.h,v 1.28 2001/01/20 17:43:41 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
 class ImageFileCanvas;
 class ImageFileView : public wxView
 {
+private:
   DECLARE_DYNAMIC_CLASS(ImageFileView)
     
-    wxMemoryDC m_memoryDC;
+  wxMemoryDC m_memoryDC;
   wxBitmap m_bitmap;
   
-private:
   ImageFileCanvas *CreateCanvas(wxView *view, wxFrame *parent);
   wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+  wxMenu* m_pFileMenu;
   
   ImageFileCanvas *m_canvas;
   wxFrame *m_frame;
@@ -57,11 +58,21 @@ private:
   double m_dAutoScaleFactor;
   
   int m_iDefaultExportFormatID;
-  
+
+  wxWindow* getFrameForChild() 
+#if CTSIM_MDI
+  { return theApp->getMainFrame()->GetClientWindow(); }
+#else
+  { return m_frame; }
+#endif
+
 public:
   ImageFileView(void);
   virtual ~ImageFileView(void);
-  
+
+  wxMenu* getFileMenu()
+  { return m_pFileMenu; }
+
   bool OnCreate(wxDocument *doc, long flags);
   void OnDraw(wxDC* dc);
   void OnUpdate(wxView *sender, wxObject *hint = NULL);
@@ -127,16 +138,22 @@ private:
   
   int m_xCursor;
   int m_yCursor;
-  
-public:
   ImageFileView* m_pView;
   
+public:
   ImageFileCanvas (ImageFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~ImageFileCanvas();
+
   virtual void OnDraw(wxDC& dc);
   void OnMouseEvent(wxMouseEvent& event);
   void DrawRubberBandCursor (wxDC& dc, int x, int y);
   bool GetCurrentCursor (int& x, int& y);
-  
+
+  virtual wxSize GetBestSize() const;
+  void setView(ImageFileView* pView)
+  { m_pView = pView; }
+
+
   DECLARE_EVENT_TABLE()
 };
 
@@ -155,6 +172,7 @@ private:
   
   ProjectionFileCanvas *m_canvas;
   wxFrame *m_frame;
+  wxMenu* m_pFileMenu;
   
   int m_iDefaultNX;
   int m_iDefaultNY;
@@ -173,6 +191,13 @@ private:
   int m_iDefaultPolarInterpolation;
   int m_iDefaultPolarZeropad;
 
+  wxWindow* getFrameForChild() 
+#if CTSIM_MDI
+  { return theApp->getMainFrame()->GetClientWindow(); }
+#else
+  { return m_frame; }
+#endif
+
 public:
   ProjectionFileView(void);
   virtual ~ProjectionFileView(void);
@@ -187,9 +212,10 @@ public:
   void OnConvertPolar (wxCommandEvent& event);
   void OnConvertFFTPolar (wxCommandEvent& event);
   
-  wxFrame* getFrame ()
-  { return m_frame; }
+  wxFrame* getFrame ()   { return m_frame; }
   
+  wxMenu* getFileMenu()  { return m_pFileMenu; }
+
   ProjectionFileDocument* GetDocument(void) 
   { return dynamic_cast<ProjectionFileDocument*>(wxView::GetDocument()); }
   DECLARE_EVENT_TABLE()
@@ -197,25 +223,33 @@ public:
 
 class ProjectionFileCanvas: public wxScrolledWindow
 {
-public:
+private:
   ProjectionFileView* m_pView;
-  
+
+public:  
   ProjectionFileCanvas (ProjectionFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~ProjectionFileCanvas() ;
+
+  virtual wxSize GetBestSize() const;
   virtual void OnDraw(wxDC& dc);
+  void setView(ProjectionFileView* pView)
+  { m_pView = pView; }
 };
 
 
 class PhantomCanvas;
 class PhantomView : public wxView
 {
+private:
   DECLARE_DYNAMIC_CLASS(PhantomView)
+  DECLARE_EVENT_TABLE()
     
-private:
   PhantomCanvas *CreateCanvas(wxView *view, wxFrame *parent);
   wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
   
   PhantomCanvas *m_canvas;
   wxFrame *m_frame;
+  wxMenu* m_pFileMenu;
   
   int m_iDefaultNDet;
   int m_iDefaultNView;
@@ -230,6 +264,13 @@ private:
   int m_iDefaultRasterNY;
   int m_iDefaultRasterNSamples;
 
+  wxWindow* getFrameForChild() 
+#if CTSIM_MDI
+  { return theApp->getMainFrame()->GetClientWindow(); }
+#else
+  { return m_frame; }
+#endif
+
 public:
   PhantomView(void);
   virtual ~PhantomView(void);
@@ -245,15 +286,20 @@ public:
   PhantomDocument* GetDocument(void) 
   { return dynamic_cast<PhantomDocument*>(wxView::GetDocument()); }
   
-  DECLARE_EVENT_TABLE()
+  wxMenu* getFileMenu() { return m_pFileMenu; }
 };
 
 class PhantomCanvas: public wxScrolledWindow
 {
-public:
+private:
   PhantomView* m_pView;
-  
+
+public:  
   PhantomCanvas (PhantomView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~PhantomCanvas();
+
+  void setView(PhantomView* pView)
+  { m_pView = pView; }
   virtual void OnDraw(wxDC& dc);
 };
 
@@ -268,6 +314,7 @@ private:
   
   PlotFileCanvas *m_canvas;
   wxFrame *m_frame;
+  wxMenu* m_pFileMenu;
   EZPlot* m_pEZPlot;
   
   bool m_bMinSpecified;
@@ -276,6 +323,13 @@ private:
   double m_dMaxPixel;
   double m_dAutoScaleFactor;
   
+  wxWindow* getFrameForChild() 
+#if CTSIM_MDI
+  { return theApp->getMainFrame()->GetClientWindow(); }
+#else
+  { return m_frame; }
+#endif
+
 public:
   PlotFileView(void);
   virtual ~PlotFileView(void);
@@ -293,6 +347,7 @@ public:
   wxFrame* getFrame ()
   { return m_frame; }
   
+  wxMenu* getFileMenu() { return m_pFileMenu; }
   PlotFileDocument* GetDocument(void) 
   { return dynamic_cast<PlotFileDocument*>(wxView::GetDocument()); }
   
@@ -301,11 +356,55 @@ public:
 
 class PlotFileCanvas: public wxScrolledWindow
 {
-public:
+private:
   PlotFileView* m_pView;
   
+public:
   PlotFileCanvas (PlotFileView* v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style);
+  virtual ~PlotFileCanvas();
   virtual void OnDraw(wxDC& dc);
+
+  void setView (PlotFileView* pView)
+  { m_pView = pView; }
+};
+
+
+class TextEditCanvas;
+class TextEditView: public wxView
+{
+private:
+  DECLARE_DYNAMIC_CLASS(TextEditView)
+
+    wxFrame *m_pFrame;
+    wxMenu* m_pFileMenu;
+    TextEditCanvas *m_pCanvas;
+  
+public:
+    TextEditView() 
+      : wxView() , m_pFrame(0), m_pCanvas(0)
+    {}
+    ~TextEditView();
+
+   wxFrame *CreateChildFrame(wxDocument *doc, wxView *view);
+
+    bool OnCreate (wxDocument *doc, long flags);
+    void OnDraw (wxDC *dc);
+    void OnUpdate (wxView *sender, wxObject *hint = (wxObject *) NULL);
+    bool OnClose (bool deleteWindow = TRUE);
+
+    TextEditCanvas* getTextCtrl() { return m_pCanvas; }
+
+  wxMenu* getFileMenu() { return m_pFileMenu; }
+};
+
+class TextEditCanvas: public wxTextCtrl
+{
+    TextEditView *m_pView;
+
+public:    
+    TextEditCanvas (TextEditView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, long style);
+    ~TextEditCanvas ();
 };