X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4e553af1602940b9018af50d2d49cb4779c91307..e0dec8753abaf97e006ea1185bfb6775b28df0a8:/samples/docview/view.h diff --git a/samples/docview/view.h b/samples/docview/view.h index 3c3fd2c240..3ba84d8847 100644 --- a/samples/docview/view.h +++ b/samples/docview/view.h @@ -1,49 +1,73 @@ ///////////////////////////////////////////////////////////////////////////// -// 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 __VIEW_H__ -#define __VIEW_H__ +#ifndef _WX_SAMPLES_DOCVIEW_VIEW_H_ +#define _WX_SAMPLES_DOCVIEW_VIEW_H_ #include "wx/docview.h" -class DrawingView; +// ---------------------------------------------------------------------------- +// Drawing view classes +// ---------------------------------------------------------------------------- + +// The window showing the drawing itself class MyCanvas : public wxScrolledWindow { public: - DrawingView* m_view; + // 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(); - MyCanvas(DrawingView*, wxFrame*, const wxPoint& pos, const wxSize& size, const long style); virtual void OnDraw(wxDC& dc); -protected: + // 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); - DECLARE_EVENT_TABLE() -}; -class MyTextWindow: public wxTextCtrl -{ -public: - wxView* m_view; + wxView *m_view; - MyTextWindow(wxView *v, wxFrame *frame, const wxPoint& pos, const wxSize& size, const long style); + // the segment being currently drawn or NULL if none + DoodleSegment *m_currentSegment; + + // the last mouse press position + wxPoint m_lastMousePos; + + DECLARE_EVENT_TABLE() }; +// The view using MyCanvas to show its contents class DrawingView : public wxView { public: - wxFrame* m_frame; - MyCanvas* m_canvas; - - DrawingView() { m_canvas = NULL; m_frame = NULL; }; - virtual ~DrawingView() {}; + DrawingView() : wxView(), m_canvas(NULL) {} virtual bool OnCreate(wxDocument *doc, long flags); virtual void OnDraw(wxDC *dc); @@ -52,35 +76,94 @@ public: DrawingDocument* GetDocument(); -protected: +private: void OnCut(wxCommandEvent& event); -private: + MyCanvas *m_canvas; + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(DrawingView) }; +// ---------------------------------------------------------------------------- +// Text view classes +// ---------------------------------------------------------------------------- + +// The view using a standard wxTextCtrl to show its contents class TextEditView : public wxView { public: - wxFrame* m_frame; - MyTextWindow* m_textsw; - - TextEditView(): wxView() { m_frame = NULL; m_textsw = NULL; } - virtual ~TextEditView() {} + TextEditView() : wxView(), m_text(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); + wxTextCtrl *GetText() const { return m_text; } + private: - void OnCopy(wxCommandEvent& WXUNUSED(event)) { m_textsw->Copy(); } - void OnPaste(wxCommandEvent& WXUNUSED(event)) { m_textsw->Paste(); } - void OnSelectAll(wxCommandEvent& WXUNUSED(event)) { m_textsw->SelectAll(); } + 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) }; -#endif +// ---------------------------------------------------------------------------- +// 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: + ImageDetailsView(ImageDetailsDocument *doc); + + virtual void OnDraw(wxDC *dc); + virtual bool OnClose(bool deleteWindow); + +private: + wxFrame *m_frame; + + wxDECLARE_NO_COPY_CLASS(ImageDetailsView); +}; + +#endif // _WX_SAMPLES_DOCVIEW_VIEW_H_