X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8907154c1a8a6882c6797d1f16393ddfb23e7f3a..2a45803fc3877afd0ae3ce356dfe216505165882:/samples/docview/docview.h diff --git a/samples/docview/docview.h b/samples/docview/docview.h index 06582fb354..0c7708c24b 100644 --- a/samples/docview/docview.h +++ b/samples/docview/docview.h @@ -1,62 +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 -// Licence: wxWindows license +// Copyright: (c) 1998 Julian Smart +// (c) 2008 Vadim Zeitlin +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#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); - - wxFrame *CreateChildFrame(wxDocument *doc, wxView *view, bool isCanvas); - -protected: - wxDocManager* m_docManager; -}; + // 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) + }; -DECLARE_APP(MyApp) + MyApp(); -// 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); - + // override some wxApp virtual methods + virtual bool OnInit(); + virtual int OnExit(); + + virtual void OnInitCmdLine(wxCmdLineParser& parser); + virtual bool OnCmdLineParsed(wxCmdLineParser& parser); + + // 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); + + // create the edit menu for drawing documents + wxMenu *CreateDrawingEditMenu(); + + // 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); + + + // 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); - MyCanvas *CreateCanvas(wxView *view, wxFrame *parent); - - DECLARE_EVENT_TABLE() -}; -extern MyFrame *GetMainFrame(void); -#define DOCVIEW_CUT 1 -#define DOCVIEW_ABOUT wxID_ABOUT + // the currently used mode + Mode m_mode; -extern bool singleWindowMode; + // 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 +#endif // _WX_SAMPLES_DOCVIEW_DOCVIEW_H_