b9f933ab5d
By Hans Van Leemputten (hansvl) - This patch implements a generic notebook based mdi, due to that wxMDIChildFrame could not derive from wxFrame some things in the samples and in the docmdi classes needed to be adjusted... basically this comes down to not do (wxFrame *) but instead do (wxMDIChildFrame *), or store a pointer to the frame in a wxWindow* instead of a wxFrame variable... - The main reason wxMDIChildFrame cannot derive from wxFrame is that it would take to much platform specific functions to be overwritten (= lot of ifdef's). This then couldn't be called generic anymore, so that's why we need to derive from wxPanel... - Tested on/with: 1. wxMSW (I disabled the MSW MDI implementation to be able to test it), tested it with the MDI sample, docvwmdi sample and docview sample and also tested it with wxWorkshop. (test = compile and run) 2. wxX11, tested with the same set wxWin samples as the wxMSW test. I also compiled wxWorkshop with it, but could not run wxWorkshop due to some issue not related to the MDI implementation. - How to apply: * Apply the patch * move mdig.cpp into wxWindows/src/generic/ * move mdig.h into wxWindows/include/wx/generic/ - Some extra things that still need to be done: * File lists, project files should be updated to include mdig.cpp (the patch only change this on wxX11) * The configuration script should be updated. * Maybe wxUSE_GENERIC_MDI_ARCHITECTURE also should be added so it is only included when wanted... git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
92 lines
2.5 KiB
C++
92 lines
2.5 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: docmdi.h
|
|
// Purpose: Frame classes for MDI document/view applications
|
|
// Author: Julian Smart
|
|
// Modified by:
|
|
// Created: 01/02/97
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c)
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_DOCMDI_H_
|
|
#define _WX_DOCMDI_H_
|
|
|
|
#ifdef __GNUG__
|
|
#pragma interface "docmdi.h"
|
|
#endif
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_MDI_ARCHITECTURE && wxUSE_DOC_VIEW_ARCHITECTURE
|
|
|
|
#include "wx/docview.h"
|
|
#include "wx/mdi.h"
|
|
|
|
/*
|
|
* Use this instead of wxMDIParentFrame
|
|
*/
|
|
|
|
class WXDLLEXPORT wxDocMDIParentFrame: public wxMDIParentFrame
|
|
{
|
|
DECLARE_CLASS(wxDocMDIParentFrame)
|
|
public:
|
|
wxDocMDIParentFrame(wxDocManager *manager, wxFrame *parent, wxWindowID id,
|
|
const wxString& title, const wxPoint& pos = wxDefaultPosition,
|
|
const wxSize& size = wxDefaultSize, long style = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
|
|
|
|
// Extend event processing to search the document manager's event table
|
|
virtual bool ProcessEvent(wxEvent& event);
|
|
|
|
wxDocManager *GetDocumentManager(void) const { return m_docManager; }
|
|
|
|
void OnExit(wxCommandEvent& event);
|
|
void OnMRUFile(wxCommandEvent& event);
|
|
void OnCloseWindow(wxCloseEvent& event);
|
|
|
|
protected:
|
|
wxDocManager *m_docManager;
|
|
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
/*
|
|
* Use this instead of wxMDIChildFrame
|
|
*/
|
|
|
|
class WXDLLEXPORT wxDocMDIChildFrame: public wxMDIChildFrame
|
|
{
|
|
DECLARE_CLASS(wxDocMDIChildFrame)
|
|
|
|
public:
|
|
wxDocMDIChildFrame(wxDocument *doc, wxView *view, wxMDIParentFrame *frame, wxWindowID id,
|
|
const wxString& title, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
|
long type = wxDEFAULT_FRAME_STYLE, const wxString& name = "frame");
|
|
~wxDocMDIChildFrame(void);
|
|
|
|
// Extend event processing to search the view's event table
|
|
virtual bool ProcessEvent(wxEvent& event);
|
|
|
|
void OnActivate(wxActivateEvent& event);
|
|
void OnCloseWindow(wxCloseEvent& event);
|
|
|
|
inline wxDocument *GetDocument(void) const { return m_childDocument; }
|
|
inline wxView *GetView(void) const { return m_childView; }
|
|
inline void SetDocument(wxDocument *doc) { m_childDocument = doc; }
|
|
inline void SetView(wxView *view) { m_childView = view; }
|
|
bool Destroy() { m_childView = (wxView *)NULL; return wxMDIChildFrame::Destroy(); }
|
|
protected:
|
|
wxDocument* m_childDocument;
|
|
wxView* m_childView;
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
|
|
};
|
|
|
|
#endif
|
|
// wxUSE_MDI_ARCHITECTURE
|
|
|
|
#endif
|
|
// _WX_DOCMDI_H_
|