X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6bdf5153fef0772f7dca91c67073dee8f87e467d..14619f10b0bdb630206607abd0ce0319d45e095a:/samples/docview/view.h?ds=sidebyside diff --git a/samples/docview/view.h b/samples/docview/view.h index b956daadeb..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,31 +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); - virtual bool ProcessEvent(wxEvent&); + + 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) }; -#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_