X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..bc9d3d911cfb51f612a699d7fb00f57eb5b2097c:/samples/docview/view.h diff --git a/samples/docview/view.h b/samples/docview/view.h index 35d5fbf7ef..3ba84d8847 100644 --- a/samples/docview/view.h +++ b/samples/docview/view.h @@ -1,75 +1,169 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: view.h +// Name: samples/docview/view.h // Purpose: View classes // Author: Julian Smart -// Modified by: +// Modified by: Vadim Zeitlin: merge with the MDI version and general cleanup // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart -// Licence: wxWindows license +// Copyright: (c) 1998 Julian Smart +// (c) 2008 Vadim Zeitlin +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __VIEWSAMPLEH__ -#define __VIEWSAMPLEH__ +#ifndef _WX_SAMPLES_DOCVIEW_VIEW_H_ +#define _WX_SAMPLES_DOCVIEW_VIEW_H_ #include "wx/docview.h" -class MyCanvas: public wxScrolledWindow +// ---------------------------------------------------------------------------- +// Drawing view classes +// ---------------------------------------------------------------------------- + +// The window showing the drawing itself +class MyCanvas : public wxScrolledWindow { public: - wxView *view; - - MyCanvas(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + // view may be NULL if we're not associated with one yet, but parent must + // be a valid pointer + MyCanvas(wxView *view, wxWindow *parent = NULL); + virtual ~MyCanvas(); + virtual void OnDraw(wxDC& dc); + + // in a normal multiple document application a canvas is associated with + // one view from the beginning until the end, but to support the single + // document mode in which all documents reuse the same MyApp::GetCanvas() + // we need to allow switching the canvas from one view to another one + + void SetView(wxView *view) + { + wxASSERT_MSG( !m_view, "shouldn't be already associated with a view" ); + + m_view = view; + } + + void ResetView() + { + wxASSERT_MSG( m_view, "should be associated with a view" ); + + m_view = NULL; + } + +private: void OnMouseEvent(wxMouseEvent& event); - + + wxView *m_view; + + // the segment being currently drawn or NULL if none + DoodleSegment *m_currentSegment; + + // the last mouse press position + wxPoint m_lastMousePos; + DECLARE_EVENT_TABLE() }; -class MyTextWindow: public wxTextCtrl +// The view using MyCanvas to show its contents +class DrawingView : public wxView { public: - wxView *view; - - MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); -}; + DrawingView() : wxView(), m_canvas(NULL) {} + + virtual bool OnCreate(wxDocument *doc, long flags); + virtual void OnDraw(wxDC *dc); + virtual void OnUpdate(wxView *sender, wxObject *hint = NULL); + virtual bool OnClose(bool deleteWindow = true); + + DrawingDocument* GetDocument(); -class DrawingView: public wxView -{ - DECLARE_DYNAMIC_CLASS(DrawingView) private: -public: - wxFrame *frame; - MyCanvas *canvas; - - DrawingView(void) { canvas = (MyCanvas *) NULL; frame = (wxFrame *) NULL; }; - ~DrawingView(void) {}; - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = true); - void OnCut(wxCommandEvent& event); - + + MyCanvas *m_canvas; + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(DrawingView) }; -class TextEditView: public wxView +// ---------------------------------------------------------------------------- +// Text view classes +// ---------------------------------------------------------------------------- + +// The view using a standard wxTextCtrl to show its contents +class TextEditView : public wxView { +public: + TextEditView() : wxView(), m_text(NULL) {} + + virtual bool OnCreate(wxDocument *doc, long flags); + virtual void OnDraw(wxDC *dc); + virtual bool OnClose(bool deleteWindow = true); + + wxTextCtrl *GetText() const { return m_text; } + +private: + void OnCopy(wxCommandEvent& WXUNUSED(event)) { m_text->Copy(); } + void OnPaste(wxCommandEvent& WXUNUSED(event)) { m_text->Paste(); } + void OnSelectAll(wxCommandEvent& WXUNUSED(event)) { m_text->SelectAll(); } + + wxTextCtrl *m_text; + + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(TextEditView) +}; + +// ---------------------------------------------------------------------------- +// ImageCanvas +// ---------------------------------------------------------------------------- + +class ImageCanvas : public wxScrolledWindow +{ +public: + ImageCanvas(wxView*); + + virtual void OnDraw(wxDC& dc); +private: + wxView *m_view; +}; + +// ---------------------------------------------------------------------------- +// ImageView +// ---------------------------------------------------------------------------- + +class ImageView : public wxView +{ +public: + ImageView() : wxView() {} + + virtual bool OnCreate(wxDocument*, long flags); + virtual void OnDraw(wxDC*); + virtual bool OnClose(bool deleteWindow = true); + virtual void OnUpdate(wxView *sender, wxObject *hint = NULL); + + ImageDocument* GetDocument(); + private: + ImageCanvas* m_canvas; + + DECLARE_DYNAMIC_CLASS(ImageView) +}; + +// ---------------------------------------------------------------------------- +// ImageDetailsView +// ---------------------------------------------------------------------------- + +class ImageDetailsView : public wxView +{ public: - wxFrame *frame; - MyTextWindow *textsw; - - TextEditView(): wxView() { frame = (wxFrame *) NULL; textsw = (MyTextWindow *) NULL; } - ~TextEditView(void) {} - - bool OnCreate(wxDocument *doc, long flags); - void OnDraw(wxDC *dc); - void OnUpdate(wxView *sender, wxObject *hint = (wxObject *) NULL); - bool OnClose(bool deleteWindow = true); + ImageDetailsView(ImageDetailsDocument *doc); + + virtual void OnDraw(wxDC *dc); + virtual bool OnClose(bool deleteWindow); + +private: + wxFrame *m_frame; + + wxDECLARE_NO_COPY_CLASS(ImageDetailsView); }; -#endif +#endif // _WX_SAMPLES_DOCVIEW_VIEW_H_