X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f57fe24c6389876d7ddf02aa7a09f3b48a6956de..a43a4f9d4d4a7f107e81bc7de0c1eea729593ee2:/include/wx/motif/mdi.h diff --git a/include/wx/motif/mdi.h b/include/wx/motif/mdi.h index b843dc4e60..557f0044db 100644 --- a/include/wx/motif/mdi.h +++ b/include/wx/motif/mdi.h @@ -16,7 +16,16 @@ #pragma interface "mdi.h" #endif +/* +New MDI scheme using tabs. We can use a wxNotebook to implement the client +window. wxMDIChildFrame can be implemented as an XmMainWindow widget +as before, and is a child of the notebook _and_ of the parent frame... +but wxMDIChildFrame::GetParent should return the parent frame. + +*/ + #include "wx/frame.h" +#include "wx/notebook.h" WXDLLEXPORT_DATA(extern const char*) wxFrameNameStr; WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; @@ -24,11 +33,6 @@ WXDLLEXPORT_DATA(extern const char*) wxStatusLineNameStr; class WXDLLEXPORT wxMDIClientWindow; class WXDLLEXPORT wxMDIChildFrame; -#if wxUSE_MDI_WIDGETS -class XsMDICanvas; -class wxXsMDIWindow; -#endif - class WXDLLEXPORT wxMDIParentFrame: public wxFrame { DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) @@ -68,6 +72,7 @@ public: // and status bar size have been subtracted. If you want to manage your own // toolbar(s), don't call SetToolBar. void GetClientSize(int *width, int *height) const; + wxSize GetClientSize() const { return wxWindow::GetClientSize(); } // Get the active MDI child window wxMDIChildFrame *GetActiveChild() const ; @@ -87,12 +92,24 @@ public: virtual void ActivatePrevious(); // Implementation + + // Set the active child inline void SetActiveChild(wxMDIChildFrame* child) { m_activeChild = child; } + // Set the child's menubar into the parent frame + void SetChildMenuBar(wxMDIChildFrame* frame); + + inline wxMenuBar* GetActiveMenuBar() const { return m_activeMenuBar; } + + // Redirect events to active child first + virtual bool ProcessEvent(wxEvent& event); + + protected: wxMDIClientWindow* m_clientWindow; wxMDIChildFrame* m_activeChild; + wxMenuBar* m_activeMenuBar; DECLARE_EVENT_TABLE() }; @@ -127,15 +144,34 @@ public: // Set menu bar void SetMenuBar(wxMenuBar *menu_bar); void SetTitle(const wxString& title); + void SetClientSize(int width, int height); + void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } + void GetClientSize(int *width, int *height) const; + wxSize GetClientSize() const { return wxWindow::GetClientSize(); } + void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); + virtual void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) + { wxWindow::SetSize(rect, sizeFlags); } + virtual void SetSize(const wxSize& size) { wxWindow::SetSize(size); } + void GetSize(int *width, int *height) const; + wxSize GetSize() const { return wxWindow::GetSize(); } + void GetPosition(int *x, int *y) const ; + wxPoint GetPosition() const { return wxWindow::GetPosition(); } // Set icon virtual void SetIcon(const wxIcon& icon); + // Override wxFrame operations + void CaptureMouse(); + void ReleaseMouse(); + void Raise(); + void Lower(void); + void SetSizeHints(int minW = -1, int minH = -1, int maxW = -1, int maxH = -1, int incW = -1, int incH = -1); + // MDI operations virtual void Maximize(); inline void Minimize() { Iconize(TRUE); }; @@ -144,17 +180,26 @@ public: virtual void Activate(); virtual bool IsIconized() const ; + // Is the frame maximized? Returns TRUE for + // wxMDIChildFrame due to the tabbed implementation. + virtual bool IsMaximized(void) const ; + bool Show(bool show); - void BuildClientArea(WXWidget parent); + + inline WXWidget GetMainWidget() const { return m_mainWidget; }; inline WXWidget GetTopWidget() const { return m_mainWidget; }; -#if wxUSE_MDI_WIDGETS - inline wxXsMDIWindow *GetMDIWindow() const { return m_mdiWindow; }; -#endif + inline WXWidget GetClientWidget() const { return m_mainWidget; }; + +/* virtual void OnRaise(); virtual void OnLower(); +*/ + + inline void SetMDIParentFrame(wxMDIParentFrame* parentFrame) { m_mdiParentFrame = parentFrame; } + inline wxMDIParentFrame* GetMDIParentFrame() const { return m_mdiParentFrame; } protected: - wxXsMDIWindow* m_mdiWindow ; + wxMDIParentFrame* m_mdiParentFrame; }; /* The client window is a child of the parent MDI frame, and itself @@ -164,7 +209,7 @@ protected: * of the children. Phew! So the children are sort of 'adopted'... */ -class WXDLLEXPORT wxMDIClientWindow: public wxWindow +class WXDLLEXPORT wxMDIClientWindow: public wxNotebook { DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) public: @@ -178,12 +223,21 @@ class WXDLLEXPORT wxMDIClientWindow: public wxWindow ~wxMDIClientWindow(); void SetSize(int x, int y, int width, int height, int sizeFlags = wxSIZE_AUTO); + void SetSize(const wxRect& rect, int sizeFlags = wxSIZE_AUTO) + { wxWindow::SetSize(rect, sizeFlags); } + void SetSize(const wxSize& size) { wxWindow::SetSize(size); } + void SetClientSize(int width, int height); + void SetClientSize(const wxSize& size) { wxWindow::SetClientSize(size); } + void GetClientSize(int *width, int *height) const; + wxSize GetClientSize() const { return wxWindow::GetClientSize(); } void GetSize(int *width, int *height) const ; - void GetPosition(int *x, int *y) const ; + wxSize GetSize() const { return wxWindow::GetSize(); } + void GetPosition(int *x, int *y) const ; + wxPoint GetPosition() const { return wxWindow::GetPosition(); } // Note: this is virtual, to allow overridden behaviour. virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL); @@ -191,18 +245,11 @@ class WXDLLEXPORT wxMDIClientWindow: public wxWindow // Explicitly call default scroll behaviour void OnScroll(wxScrollEvent& event); -#if wxUSE_MDI_WIDGETS - inline XsMDICanvas* GetMDICanvas() const { return m_mdiCanvas; } - WXWidget GetTopWidget() const { return m_topWidget; } -#endif + // Implementation + void OnPageChanged(wxNotebookEvent& event); protected: -#if wxUSE_MDI_WIDGETS - XsMDICanvas* m_mdiCanvas; - WXWidget m_topWidget; -#endif - DECLARE_EVENT_TABLE() };