// RCS-ID: $Id$
// Copyright: (c) 1998 Julian Smart
// (c) 2008 Vadim Zeitlin
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_SAMPLES_DOCVIEW_DOC_H_
#include "wx/docview.h"
#include "wx/cmdproc.h"
#include "wx/vector.h"
+#include "wx/image.h"
// This sample is written to build both with wxUSE_STD_IOSTREAM==0 and 1, which
// somewhat complicates its code but is necessary in order to support building
// ----------------------------------------------------------------------------
-// A simple text document class
+// wxTextDocument: wxDocument and wxTextCtrl married
// ----------------------------------------------------------------------------
-class TextEditView;
-class TextEditDocument : public wxDocument
+class wxTextDocument : public wxDocument
{
public:
- TextEditDocument() : wxDocument() { }
- TextEditView *GetFirstView() const;
+ wxTextDocument() : wxDocument() { }
+
+ virtual bool OnCreate(const wxString& path, long flags);
+
+ virtual wxTextCtrl* GetTextCtrl() const = 0;
- virtual bool DoSaveDocument(const wxString& filename);
- virtual bool DoOpenDocument(const wxString& filename);
virtual bool IsModified() const;
virtual void Modify(bool mod);
- DECLARE_NO_COPY_CLASS(TextEditDocument)
+protected:
+ virtual bool DoSaveDocument(const wxString& filename);
+ virtual bool DoOpenDocument(const wxString& filename);
+
+ void OnTextChange(wxCommandEvent& event);
+
+ wxDECLARE_NO_COPY_CLASS(wxTextDocument);
+ DECLARE_CLASS(wxTextDocument)
+};
+
+// ----------------------------------------------------------------------------
+// A very simple text document class
+// ----------------------------------------------------------------------------
+
+class TextEditDocument : public wxTextDocument
+{
+public:
+ TextEditDocument() : wxTextDocument() { }
+ virtual wxTextCtrl* GetTextCtrl() const;
+
+ wxDECLARE_NO_COPY_CLASS(TextEditDocument);
DECLARE_DYNAMIC_CLASS(TextEditDocument)
};
+// ----------------------------------------------------------------------------
+// Image and image details document classes (both are read-only for simplicity)
+// ----------------------------------------------------------------------------
+
+// This is a normal document containing an image, just like TextEditDocument
+// above contains some text. It can be created from an image file on disk as
+// usual.
+class ImageDocument : public wxDocument
+{
+public:
+ ImageDocument() : wxDocument() { }
+
+ virtual bool OnOpenDocument(const wxString& file);
+
+ wxImage GetImage() const { return m_image; }
+
+protected:
+ virtual bool DoOpenDocument(const wxString& file);
+
+private:
+ wxImage m_image;
+
+ wxDECLARE_NO_COPY_CLASS(ImageDocument);
+ DECLARE_DYNAMIC_CLASS(ImageDocument)
+};
+
+// This is a child document of ImageDocument: this document doesn't
+// correspond to any file on disk, it's part of ImageDocument and can't be
+// instantiated independently of it.
+class ImageDetailsDocument : public wxDocument
+{
+public:
+ ImageDetailsDocument(ImageDocument *parent);
+
+ // accessors for ImageDetailsView
+ wxSize GetSize() const { return m_size; }
+ unsigned long GetNumColours() const { return m_numColours; }
+ wxBitmapType GetType() const { return m_type; }
+ bool HasAlpha() const { return m_hasAlpha; }
+
+private:
+ // some information about the image we choose to show to the user
+ wxSize m_size;
+ unsigned long m_numColours;
+ wxBitmapType m_type;
+ bool m_hasAlpha;
+
+ wxDECLARE_NO_COPY_CLASS(ImageDetailsDocument);
+};
+
#endif // _WX_SAMPLES_DOCVIEW_DOC_H_