X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c67daf87774c71ae9f73af9969008af220e52a11..f92099657f465d782a8e32444d59f8ebdbdce182:/samples/docview/view.h diff --git a/samples/docview/view.h b/samples/docview/view.h index 2f068c7c04..3ba84d8847 100644 --- a/samples/docview/view.h +++ b/samples/docview/view.h @@ -1,79 +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 and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) 1998 Julian Smart +// (c) 2008 Vadim Zeitlin +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -// #pragma interface -#endif - -#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); +public: + // 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); -DECLARE_EVENT_TABLE() + 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); +public: + 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(); + +private: + void OnCut(wxCommandEvent& event); + + MyCanvas *m_canvas; + + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(DrawingView) }; -class DrawingView: public wxView +// ---------------------------------------------------------------------------- +// Text view classes +// ---------------------------------------------------------------------------- + +// The view using a standard wxTextCtrl to show its contents +class TextEditView : 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); - -DECLARE_EVENT_TABLE() +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) }; -class TextEditView: public wxView +// ---------------------------------------------------------------------------- +// ImageDetailsView +// ---------------------------------------------------------------------------- + +class ImageDetailsView : public wxView { - DECLARE_DYNAMIC_CLASS(TextEditView) - private: - public: - wxFrame *frame; - MyTextWindow *textsw; - - TextEditView(wxDocument *doc = (wxDocument *) NULL): wxView(doc) { 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); +public: + 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_