]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/mdi.h
Add wxDataFormat GetMatchingPair() which wxGTK and wxMSW already had under different...
[wxWidgets.git] / include / wx / osx / mdi.h
index 1e0c1fed86f702277232813780d5875ed551382b..cea49387eb9b4cda50819b26e411332c043dcfd3 100644 (file)
@@ -1,5 +1,154 @@
-#ifdef __WXMAC_CLASSIC__
-#include "wx/osx/classic/mdi.h"
-#else
-#include "wx/osx/carbon/mdi.h"
-#endif
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/osx/carbon/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_