X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/debe6624c1e9d4bf3243381153d1e173c849bcd8..6012f61212b67d510e4a6393272e867a4ceb58c1:/include/wx/gtk/mdi.h diff --git a/include/wx/gtk/mdi.h b/include/wx/gtk/mdi.h index 22fe70b2c4..38f7b63d6c 100644 --- a/include/wx/gtk/mdi.h +++ b/include/wx/gtk/mdi.h @@ -1,146 +1,214 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: mdi.h +// Name: wx/gtk/mdi.h // Purpose: // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifndef __MDIH__ #define __MDIH__ -#ifdef __GNUG__ -#pragma interface -#endif - #include "wx/defs.h" #include "wx/object.h" #include "wx/list.h" #include "wx/control.h" #include "wx/panel.h" #include "wx/frame.h" +#include "wx/toolbar.h" //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- -class wxMDIParentFrame; -class wxMDIClientWindow; -class wxMDIChildFrame; +class WXDLLIMPEXP_CORE wxMDIParentFrame; +class WXDLLIMPEXP_CORE wxMDIClientWindow; +class WXDLLIMPEXP_CORE wxMDIChildFrame; //----------------------------------------------------------------------------- // global data //----------------------------------------------------------------------------- -extern const char* wxFrameNameStr; -extern const char* wxStatusLineNameStr; +extern WXDLLEXPORT_DATA(const wxChar) wxFrameNameStr[]; +extern WXDLLEXPORT_DATA(const wxChar) wxStatusLineNameStr[]; //----------------------------------------------------------------------------- // wxMDIParentFrame //----------------------------------------------------------------------------- -class wxMDIParentFrame: public wxFrame +class WXDLLIMPEXP_CORE wxMDIParentFrame: public wxFrame { - DECLARE_DYNAMIC_CLASS(wxMDIParentFrame) - - friend class wxMDIChildFrame; - - public: - - wxMDIParentFrame(void); - 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 ); - ~wxMDIParentFrame(void); - 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 ); - - 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() +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(); + + (void)Create(parent, id, title, pos, size, style, name); + } + + ~wxMDIParentFrame(); + 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 ); + + wxMDIChildFrame *GetActiveChild() const; + + wxMDIClientWindow *GetClientWindow() const; + virtual wxMDIClientWindow *OnCreateClient(); + + virtual void Cascade() {} + virtual void Tile(wxOrientation WXUNUSED(orient) = wxHORIZONTAL) {} + virtual void ArrangeIcons() {} + virtual void ActivateNext(); + virtual void ActivatePrevious(); + + // implementation + + wxMDIClientWindow *m_clientWindow; + bool m_justInserted; + + virtual void GtkOnSize( int x, int y, int width, int height ); + 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 wxFrame { - DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) - - public: - - wxMDIChildFrame(void); +public: + wxMDIChildFrame(); 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 ); - ~wxMDIChildFrame(void); + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxFrameNameStr ); + + virtual ~wxMDIChildFrame(); 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 ); - void SetMenuBar( wxMenuBar *menu_bar ); - - // no status bars in wxGTK - virtual bool CreateStatusBar( int WXUNUSED(number) = 1 ) { return FALSE; }; - virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number) ) {}; - virtual void SetStatusWidths( int WXUNUSED(n), int *WXUNUSED(width) ) {}; - - virtual void Maximize(void) {}; - virtual void Restore(void) {}; - virtual void Activate(void); - - public: - - wxString m_title; + wxWindowID id, + const wxString& title, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxDEFAULT_FRAME_STYLE, + const wxString& name = wxFrameNameStr ); + + virtual void SetMenuBar( wxMenuBar *menu_bar ); + virtual wxMenuBar *GetMenuBar() const; + + virtual void AddChild( wxWindowBase *child ); + + virtual void Activate(); + +#if wxUSE_STATUSBAR + // no status bars + virtual wxStatusBar* CreateStatusBar( int WXUNUSED(number) = 1, + long WXUNUSED(style) = 1, + wxWindowID WXUNUSED(id) = 1, + const wxString& WXUNUSED(name) = wxEmptyString) + { return (wxStatusBar*)NULL; } + + virtual wxStatusBar *GetStatusBar() const { return (wxStatusBar*)NULL; } + virtual void SetStatusText( const wxString &WXUNUSED(text), int WXUNUSED(number)=0 ) {} + virtual void SetStatusWidths( int WXUNUSED(n), const int WXUNUSED(widths_field)[] ) {} +#endif + + // no size hints + virtual void DoSetSizeHints( int WXUNUSED(minW), + int WXUNUSED(minH), + int WXUNUSED(maxW) = wxDefaultCoord, + int WXUNUSED(maxH) = wxDefaultCoord, + int WXUNUSED(incW) = wxDefaultCoord, + int WXUNUSED(incH) = wxDefaultCoord) {} + +#if wxUSE_TOOLBAR + // no toolbar + virtual wxToolBar* CreateToolBar( long WXUNUSED(style), + wxWindowID WXUNUSED(id), + const wxString& WXUNUSED(name) ) + { return (wxToolBar*)NULL; } + virtual wxToolBar *GetToolBar() const { return (wxToolBar*)NULL; } +#endif // wxUSE_TOOLBAR + + // no icon + virtual void SetIcon(const wxIcon& icon) + { wxTopLevelWindowBase::SetIcon(icon); } + virtual void SetIcons(const wxIconBundle& icons ) + { wxTopLevelWindowBase::SetIcons(icons); } + + // no title + virtual void SetTitle( const wxString &title ); + + // no maximize etc + virtual void Maximize( bool WXUNUSED(maximize) = true ) { } + virtual bool IsMaximized() const { return true; } + virtual void Iconize(bool WXUNUSED(iconize) = true) { } + virtual bool IsIconized() const { return false; } + virtual void Restore() {} + + virtual bool IsTopLevel() const { return false; } + + void OnActivate( wxActivateEvent& event ); + void OnMenuHighlight( wxMenuEvent& event ); + + // implementation + + wxMenuBar *m_menuBar; + GtkNotebookPage *m_page; + bool m_justInserted; + +protected: + // override wxFrame methods to not do anything + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO); + virtual void DoSetClientSize(int width, int height); + virtual void DoGetClientSize( int *width, int *height ) const; + +private: + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxMDIChildFrame) }; //----------------------------------------------------------------------------- // wxMDIClientWindow //----------------------------------------------------------------------------- -class wxMDIClientWindow: public wxWindow +class WXDLLIMPEXP_CORE wxMDIClientWindow: public wxWindow { - DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) - - public: - - wxMDIClientWindow(void); +public: + wxMDIClientWindow(); wxMDIClientWindow( wxMDIParentFrame *parent, long style = 0 ); - ~wxMDIClientWindow(void); + ~wxMDIClientWindow(); virtual bool CreateClient( wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL ); - void AddChild( wxWindow *child ); + +private: + DECLARE_DYNAMIC_CLASS(wxMDIClientWindow) }; #endif // __MDIH__ -