X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ef0e92205a01c7d0ca6f381cc690cb5d4fa595c9..11e3c6ef36393fb5863ea2f9601d8facd73acb12:/include/wx/osx/mdi.h?ds=sidebyside diff --git a/include/wx/osx/mdi.h b/include/wx/osx/mdi.h index 1e0c1fed86..3dd21bf646 100644 --- a/include/wx/osx/mdi.h +++ b/include/wx/osx/mdi.h @@ -1,5 +1,154 @@ -#ifdef __WXMAC_CLASSIC__ -#include "wx/osx/classic/mdi.h" -#else -#include "wx/osx/carbon/mdi.h" -#endif +///////////////////////////////////////////////////////////////////////////// +// Name: wx/osx/mdi.h +// Purpose: MDI (Multiple Document Interface) classes. +// Author: Stefan Csomor +// Modified by: 2008-10-31 Vadim Zeitlin: derive from the base classes +// Created: 1998-01-01 +// RCS-ID: $Id$ +// Copyright: (c) Stefan Csomor +// (c) 2008 Vadim Zeitlin +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_OSX_CARBON_MDI_H_ +#define _WX_OSX_CARBON_MDI_H_ + +class WXDLLIMPEXP_CORE wxMDIParentFrame : public wxMDIParentFrameBase +{ +public: + wxMDIParentFrame() { Init(); } + wxMDIParentFrame(wxWindow *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, + const wxString& name = wxFrameNameStr) + { + Init(); + Create(parent, id, title, pos, size, style, name); + } + + bool Create(wxWindow *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, + const wxString& name = wxFrameNameStr); + + virtual ~wxMDIParentFrame(); + + // implement/override base class [pure] virtuals + // --------------------------------------------- + + static bool IsTDI() { return false; } + + virtual void AddChild(wxWindowBase *child); + virtual void RemoveChild(wxWindowBase *child); + + virtual void ActivateNext() { /* TODO */ } + virtual void ActivatePrevious() { /* TODO */ } + + virtual bool Show(bool show = true); + + + // Mac-specific implementation from now on + // --------------------------------------- + + // Mac OS activate event + virtual void MacActivate(long timestamp, bool activating); + + // wxWidgets activate event + void OnActivate(wxActivateEvent& event); + void OnSysColourChanged(wxSysColourChangedEvent& event); + + void SetMenuBar(wxMenuBar *menu_bar); + + // Get rect to be used to center top-level children + virtual void GetRectForTopLevelChildren(int *x, int *y, int *w, int *h); + +protected: + // common part of all ctors + void Init(); + + // returns true if this frame has some contents and so should be visible, + // false if it's used solely as container for its children + bool ShouldBeVisible() const; + + + wxMenu *m_windowMenu; + + // true if MDI Frame is intercepting commands, not child + bool m_parentFrameActive; + + // true if the frame should be shown but is not because it is empty and + // useless otherwise than a container for its children + bool m_shouldBeShown; + +private: + friend class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame; + + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) +}; + +class WXDLLIMPEXP_CORE wxMDIChildFrame : public wxMDIChildFrameBase +{ +public: + wxMDIChildFrame() { Init(); } + wxMDIChildFrame(wxMDIParentFrame *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxFrameNameStr) + { + Init() ; + Create(parent, id, title, pos, size, style, name); + } + + bool Create(wxMDIParentFrame *parent, + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxFrameNameStr); + + virtual ~wxMDIChildFrame(); + + // un-override the base class override + virtual bool IsTopLevel() const { return true; } + + // implement MDI operations + virtual void Activate(); + + + // Mac OS activate event + virtual void MacActivate(long timestamp, bool activating); + +protected: + // common part of all ctors + void Init(); + + DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) +}; + +class WXDLLIMPEXP_CORE wxMDIClientWindow : public wxMDIClientWindowBase +{ +public: + wxMDIClientWindow() { } + virtual ~wxMDIClientWindow(); + + virtual bool CreateClient(wxMDIParentFrame *parent, + long style = wxVSCROLL | wxHSCROLL); + +protected: + virtual void DoGetClientSize(int *width, int *height) const; + + DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) +}; + +#endif // _WX_OSX_CARBON_MDI_H_