X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/457814b5aa2ee5c83abc65a6aee2a3ebcb1af34f..78eecde0860f23a11932c53b1e59e41a6effd6bb:/samples/docview/docview.h diff --git a/samples/docview/docview.h b/samples/docview/docview.h index b48e4de09c..c3b91f3d4b 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 license ///////////////////////////////////////////////////////////////////////////// -#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) + }; + + MyApp(); + + // 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(wxDocument *doc, wxView *view, bool isCanvas); - protected: - wxDocManager* m_docManager; -}; + // 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; } -DECLARE_APP(MyApp) +private: + // append the standard document-oriented menu commands to this menu + void AppendDocumentFileCommands(wxMenu *menu, bool supportsPrinting); -// 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, 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() -}; + // 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); -extern MyFrame *GetMainFrame(void); -#define DOCVIEW_CUT 1 -#define DOCVIEW_ABOUT 2 + // 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_