-// 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