X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2108f33a68772013d4e1c9dc2e476bb8ae77ad8f..f92099657f465d782a8e32444d59f8ebdbdce182:/samples/docview/docview.h?ds=sidebyside diff --git a/samples/docview/docview.h b/samples/docview/docview.h index fb9201406f..0c7708c24b 100644 --- a/samples/docview/docview.h +++ b/samples/docview/docview.h @@ -1,66 +1,88 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: docview.h +// Name: samples/docview/docview.h // Purpose: Document/view demo // 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 "docview.h" -#endif - -#ifndef __DOCVIEWSAMPLEH__ -#define __DOCVIEWSAMPLEH__ +#ifndef _WX_SAMPLES_DOCVIEW_DOCVIEW_H_ +#define _WX_SAMPLES_DOCVIEW_DOCVIEW_H_ #include "wx/docview.h" -class wxDocManager; +class MyFrame; +class MyCanvas; +class DrawingView; // Define a new application -class MyApp: public wxApp +class MyApp : public wxApp { - public: - MyApp(void); - bool OnInit(void); - int OnExit(void); +public: + // this sample can be launched in several different ways: + enum Mode + { +#if wxUSE_MDI_ARCHITECTURE + Mode_MDI, // MDI mode: multiple documents, single top level window +#endif // wxUSE_MDI_ARCHITECTURE + Mode_SDI, // SDI mode: multiple documents, multiple top level windows + Mode_Single // single document mode (and hence single top level window) + }; - wxFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas); + MyApp(); - protected: - wxDocManager* m_docManager; -}; + // override some wxApp virtual methods + virtual bool OnInit(); + virtual int OnExit(); -DECLARE_APP(MyApp) + virtual void OnInitCmdLine(wxCmdLineParser& parser); + virtual bool OnCmdLineParsed(wxCmdLineParser& parser); -// Define a new frame -class MyCanvas; -class MyFrame: public wxDocParentFrame -{ - DECLARE_CLASS(MyFrame) - public: - wxMenu *editMenu; - - // This pointer only needed if in single window mode - MyCanvas *canvas; - - MyFrame(wxDocManager *manager, wxFrame *frame, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, - const long type); - - void OnAbout(wxCommandEvent& event); - MyCanvas *CreateCanvas(wxView *view, wxFrame *parent); - -DECLARE_EVENT_TABLE() -}; + // our specific methods + Mode GetMode() const { return m_mode; } + wxFrame *CreateChildFrame(wxView *view, bool isCanvas); + + // these accessors should only be called in single document mode, otherwise + // the pointers are NULL and an assert is triggered + MyCanvas *GetMainWindowCanvas() const + { wxASSERT(m_canvas); return m_canvas; } + wxMenu *GetMainWindowEditMenu() const + { wxASSERT(m_menuEdit); return m_menuEdit; } + +private: + // append the standard document-oriented menu commands to this menu + void AppendDocumentFileCommands(wxMenu *menu, bool supportsPrinting); -extern MyFrame *GetMainFrame(void); + // create the edit menu for drawing documents + wxMenu *CreateDrawingEditMenu(); -#define DOCVIEW_CUT 1 -#define DOCVIEW_ABOUT 2 + // create and associate with the given frame the menu bar containing the + // given file and edit (possibly NULL) menus as well as the standard help + // one + void CreateMenuBarForFrame(wxFrame *frame, wxMenu *file, wxMenu *edit); -extern bool singleWindowMode; -#endif + // show the about box: as we can have different frames it's more + // convenient, even if somewhat less usual, to handle this in the + // application object itself + void OnAbout(wxCommandEvent& event); + + + // the currently used mode + Mode m_mode; + + // only used if m_mode == Mode_Single + MyCanvas *m_canvas; + wxMenu *m_menuEdit; + + DECLARE_EVENT_TABLE() + wxDECLARE_NO_COPY_CLASS(MyApp); +}; + +DECLARE_APP(MyApp) + +#endif // _WX_SAMPLES_DOCVIEW_DOCVIEW_H_