X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c801d85f158c4cba50b588807daabdcbd0ed3853..56b18fda9452fc39ba91f4060a39721db7e2f437:/include/wx/gtk/mdi.h diff --git a/include/wx/gtk/mdi.h b/include/wx/gtk/mdi.h index ff9181d771..53d10e8e28 100644 --- a/include/wx/gtk/mdi.h +++ b/include/wx/gtk/mdi.h @@ -1,146 +1,153 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h -// Purpose: +// Name: wx/gtk/mdi.h +// Purpose: TDI-based MDI implementation for wxGTK // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Modified by: 2008-10-31 Vadim Zeitlin: derive from the base classes +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling +// (c) 2008 Vadim Zeitlin +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +#ifndef _WX_GTK_MDI_H_ +#define _WX_GTK_MDI_H_ -#ifndef __MDIH__ -#define __MDIH__ +#include "wx/frame.h" -#ifdef __GNUG__ -#pragma interface -#endif +class WXDLLIMPEXP_FWD_CORE wxMDIChildFrame; +class WXDLLIMPEXP_FWD_CORE wxMDIClientWindow; -#include "wx/defs.h" -#include "wx/object.h" -#include "wx/list.h" -#include "wx/control.h" -#include "wx/panel.h" -#include "wx/frame.h" +typedef struct _GtkNotebook GtkNotebook; //----------------------------------------------------------------------------- -// classes +// wxMDIParentFrame //----------------------------------------------------------------------------- -class wxMDIParentFrame; -class wxMDIClientWindow; -class wxMDIChildFrame; +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(); -//----------------------------------------------------------------------------- -// global data -//----------------------------------------------------------------------------- + (void)Create(parent, id, title, pos, size, style, name); + } -extern const char* wxFrameNameStr; -extern const char* wxStatusLineNameStr; + 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); -//----------------------------------------------------------------------------- -// wxMDIParentFrame -//----------------------------------------------------------------------------- + // we don't store the active child in m_currentChild unlike the base class + // version so override this method to find it dynamically + virtual wxMDIChildFrame *GetActiveChild() const; -class wxMDIParentFrame: public wxFrame -{ - DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class wxMDIChildFrame; - - public: - - wxMDIParentFrame(void); - wxMDIParentFrame( wxWindow *parent, - const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - const long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - ~wxMDIParentFrame(void); - bool Create( wxWindow *parent, - const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - const long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, - const wxString& name = wxFrameNameStr ); - - void OnSize( wxSizeEvent& event ); - void OnActivate( wxActivateEvent& event ); - - void SetMenuBar( wxMenuBar *menu_bar ); - void GetClientSize(int *width, int *height) const; - wxMDIChildFrame *GetActiveChild(void) const; - - wxMDIClientWindow *GetClientWindow(void) const; - virtual wxMDIClientWindow *OnCreateClient(void); - - virtual void Cascade(void) {}; - virtual void Tile(void) {}; - virtual void ArrangeIcons(void) {}; - virtual void ActivateNext(void); - virtual void ActivatePrevious(void); - - void OnSysColourChanged(wxSysColourChangedEvent& event); - - protected: - wxMDIClientWindow * m_clientWindow; - wxMDIChildFrame * m_currentChild; - bool m_parentFrameActive; - -// DECLARE_EVENT_TABLE() + // implement base class pure virtuals + // ---------------------------------- + + virtual void ActivateNext(); + virtual void ActivatePrevious(); + + static bool IsTDI() { return true; } + + // implementation + + bool m_justInserted; + + virtual void OnInternalIdle(); + +protected: + void Init(); + virtual void DoGetClientSize(int* width, int* height) const; + +private: + friend class wxMDIChildFrame; + + DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) }; //----------------------------------------------------------------------------- // wxMDIChildFrame //----------------------------------------------------------------------------- -class wxMDIChildFrame: public wxPanel +class WXDLLIMPEXP_CORE wxMDIChildFrame : public wxTDIChildFrame { - DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) - - public: - - wxMDIChildFrame(void); - wxMDIChildFrame( wxMDIParentFrame *parent, - const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - const long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - ~wxMDIChildFrame(void); - bool Create( wxMDIParentFrame *parent, - const wxWindowID id, const wxString& title, - const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - const long style = wxDEFAULT_FRAME_STYLE, const wxString& name = wxFrameNameStr ); - void SetMenuBar( wxMenuBar *menu_bar ); - - // no status bars in wxGTK - virtual bool CreateStatusBar( const int WXUNUSED(number) = 1 ) { return FALSE; }; - virtual void SetStatusText( const wxString &WXUNUSED(text), const int WXUNUSED(number) ) {}; - virtual void SetStatusWidths( const int WXUNUSED(n), const int *WXUNUSED(width) ) {}; - - virtual void Maximize(void) {}; - virtual void Restore(void) {}; - virtual void Activate(void); - - public: - - wxString m_title; +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(); + + virtual void SetMenuBar( wxMenuBar *menu_bar ); + virtual wxMenuBar *GetMenuBar() const; + + virtual void Activate(); + + virtual void SetTitle(const wxString& title); + + // implementation + + void OnActivate( wxActivateEvent& event ); + void OnMenuHighlight( wxMenuEvent& event ); + + wxMenuBar *m_menuBar; + GtkNotebookPage *m_page; + bool m_justInserted; + +private: + void Init(); + + GtkNotebook *GTKGetNotebook() const; + + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) }; //----------------------------------------------------------------------------- // wxMDIClientWindow //----------------------------------------------------------------------------- -class wxMDIClientWindow: public wxWindow +class WXDLLIMPEXP_CORE wxMDIClientWindow : public wxMDIClientWindowBase { - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - - public: - - wxMDIClientWindow(void); - wxMDIClientWindow( wxMDIParentFrame *parent, const long style = 0 ); - ~wxMDIClientWindow(void); - virtual bool CreateClient( wxMDIParentFrame *parent, const long style = wxVSCROLL | wxHSCROLL ); - void AddChild( wxWindow *child ); -}; +public: + wxMDIClientWindow() { } + + virtual bool CreateClient(wxMDIParentFrame *parent, + long style = wxVSCROLL | wxHSCROLL); -#endif // __MDIH__ +private: + virtual void AddChildGTK(wxWindowGTK* child); + + DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) +}; +#endif // _WX_GTK_MDI_H_