2006-07-21 09:36:21 -04:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
2011-03-19 20:14:35 -04:00
|
|
|
// Name: wx/aui/tabmdi.h
|
2006-07-21 09:36:21 -04:00
|
|
|
// Purpose: Generic MDI (Multiple Document Interface) classes
|
|
|
|
// Author: Hans Van Leemputten
|
|
|
|
// Modified by: Benjamin I. Williams / Kirix Corporation
|
|
|
|
// Created: 29/07/2002
|
|
|
|
// Copyright: (c) Hans Van Leemputten
|
|
|
|
// Licence: wxWindows licence
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef _WX_AUITABMDI_H_
|
|
|
|
#define _WX_AUITABMDI_H_
|
|
|
|
|
2018-05-12 13:51:03 -04:00
|
|
|
#if wxUSE_AUI && wxUSE_MDI
|
2006-08-18 04:05:41 -04:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// headers
|
|
|
|
// ----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
#include "wx/frame.h"
|
|
|
|
#include "wx/panel.h"
|
|
|
|
#include "wx/notebook.h"
|
2006-11-08 14:16:40 -05:00
|
|
|
#include "wx/icon.h"
|
2018-05-12 17:40:57 -04:00
|
|
|
#include "wx/mdi.h"
|
2006-07-21 10:55:21 -04:00
|
|
|
#include "wx/aui/auibook.h"
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
// classes
|
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
2007-07-09 06:09:52 -04:00
|
|
|
class WXDLLIMPEXP_FWD_AUI wxAuiMDIParentFrame;
|
|
|
|
class WXDLLIMPEXP_FWD_AUI wxAuiMDIClientWindow;
|
|
|
|
class WXDLLIMPEXP_FWD_AUI wxAuiMDIChildFrame;
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2006-11-01 13:51:44 -05:00
|
|
|
// wxAuiMDIParentFrame
|
2006-07-21 09:36:21 -04:00
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
class WXDLLIMPEXP_AUI wxAuiMDIParentFrame : public wxFrame
|
2006-07-21 09:36:21 -04:00
|
|
|
{
|
|
|
|
public:
|
2006-11-01 13:51:44 -05:00
|
|
|
wxAuiMDIParentFrame();
|
|
|
|
wxAuiMDIParentFrame(wxWindow *parent,
|
2006-07-21 09:36:21 -04:00
|
|
|
wxWindowID winid,
|
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
|
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
~wxAuiMDIParentFrame();
|
2006-07-24 02:30:49 -04:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
bool Create(wxWindow *parent,
|
|
|
|
wxWindowID winid,
|
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
|
|
|
|
const wxString& name = wxFrameNameStr );
|
|
|
|
|
2006-11-08 05:31:52 -05:00
|
|
|
void SetArtProvider(wxAuiTabArt* provider);
|
|
|
|
wxAuiTabArt* GetArtProvider();
|
|
|
|
wxAuiNotebook* GetNotebook() const;
|
2009-01-25 06:58:39 -05:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
#if wxUSE_MENUS
|
2007-04-14 05:58:37 -04:00
|
|
|
wxMenu* GetWindowMenu() const { return m_pWindowMenu; }
|
2006-07-21 09:36:21 -04:00
|
|
|
void SetWindowMenu(wxMenu* pMenu);
|
|
|
|
|
2015-09-06 20:20:42 -04:00
|
|
|
virtual void SetMenuBar(wxMenuBar *pMenuBar) wxOVERRIDE;
|
2006-07-21 09:36:21 -04:00
|
|
|
#endif // wxUSE_MENUS
|
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
void SetChildMenuBar(wxAuiMDIChildFrame *pChild);
|
2006-07-21 09:36:21 -04:00
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
wxAuiMDIChildFrame *GetActiveChild() const;
|
2007-01-01 14:49:10 -05:00
|
|
|
void SetActiveChild(wxAuiMDIChildFrame* pChildFrame);
|
2006-07-21 09:36:21 -04:00
|
|
|
|
2006-11-01 15:02:40 -05:00
|
|
|
wxAuiMDIClientWindow *GetClientWindow() const;
|
|
|
|
virtual wxAuiMDIClientWindow *OnCreateClient();
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
virtual void Cascade() { /* Has no effect */ }
|
2006-11-28 10:25:59 -05:00
|
|
|
virtual void Tile(wxOrientation orient = wxHORIZONTAL);
|
2006-07-21 09:36:21 -04:00
|
|
|
virtual void ArrangeIcons() { /* Has no effect */ }
|
|
|
|
virtual void ActivateNext();
|
|
|
|
virtual void ActivatePrevious();
|
|
|
|
|
|
|
|
protected:
|
2006-11-07 07:52:02 -05:00
|
|
|
wxAuiMDIClientWindow* m_pClientWindow;
|
|
|
|
wxEvent* m_pLastEvt;
|
2006-07-24 02:30:49 -04:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
#if wxUSE_MENUS
|
|
|
|
wxMenu *m_pWindowMenu;
|
|
|
|
wxMenuBar *m_pMyMenuBar;
|
|
|
|
#endif // wxUSE_MENUS
|
|
|
|
|
|
|
|
protected:
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
#if wxUSE_MENUS
|
|
|
|
void RemoveWindowMenu(wxMenuBar *pMenuBar);
|
|
|
|
void AddWindowMenu(wxMenuBar *pMenuBar);
|
|
|
|
|
|
|
|
void DoHandleMenu(wxCommandEvent &event);
|
2012-03-15 09:49:54 -04:00
|
|
|
void DoHandleUpdateUI(wxUpdateUIEvent &event);
|
2006-07-21 09:36:21 -04:00
|
|
|
#endif // wxUSE_MENUS
|
|
|
|
|
2015-09-06 20:20:42 -04:00
|
|
|
virtual bool ProcessEvent(wxEvent& event) wxOVERRIDE;
|
2009-01-25 06:58:39 -05:00
|
|
|
|
2015-09-06 20:20:42 -04:00
|
|
|
virtual void DoGetClientSize(int *width, int *height) const wxOVERRIDE;
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
private:
|
2020-02-11 09:48:13 -05:00
|
|
|
void OnClose(wxCloseEvent& event);
|
|
|
|
|
|
|
|
// close all children, return false if any of them vetoed it
|
|
|
|
bool CloseAll();
|
|
|
|
|
2015-04-23 07:49:01 -04:00
|
|
|
wxDECLARE_EVENT_TABLE();
|
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxAuiMDIParentFrame);
|
2006-07-21 09:36:21 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2006-11-01 13:51:44 -05:00
|
|
|
// wxAuiMDIChildFrame
|
2006-07-21 09:36:21 -04:00
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
2018-05-12 17:40:57 -04:00
|
|
|
class WXDLLIMPEXP_AUI wxAuiMDIChildFrame : public wxTDIChildFrame
|
2006-07-21 09:36:21 -04:00
|
|
|
{
|
|
|
|
public:
|
2006-11-01 13:51:44 -05:00
|
|
|
wxAuiMDIChildFrame();
|
|
|
|
wxAuiMDIChildFrame(wxAuiMDIParentFrame *parent,
|
2006-07-21 09:36:21 -04:00
|
|
|
wxWindowID winid,
|
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
virtual ~wxAuiMDIChildFrame();
|
|
|
|
bool Create(wxAuiMDIParentFrame *parent,
|
2006-07-21 09:36:21 -04:00
|
|
|
wxWindowID winid,
|
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
|
|
|
|
#if wxUSE_MENUS
|
2018-05-12 20:17:47 -04:00
|
|
|
virtual void SetMenuBar(wxMenuBar *menuBar) wxOVERRIDE;
|
|
|
|
virtual wxMenuBar *GetMenuBar() const wxOVERRIDE;
|
2006-07-21 09:36:21 -04:00
|
|
|
#endif // wxUSE_MENUS
|
|
|
|
|
2018-05-12 20:17:47 -04:00
|
|
|
virtual void SetTitle(const wxString& title) wxOVERRIDE;
|
2006-07-21 09:36:21 -04:00
|
|
|
|
2018-05-12 20:15:30 -04:00
|
|
|
virtual void SetIcons(const wxIconBundle& icons) wxOVERRIDE;
|
2006-11-08 14:07:52 -05:00
|
|
|
|
2018-05-12 20:17:47 -04:00
|
|
|
virtual void Activate() wxOVERRIDE;
|
2015-09-06 20:20:42 -04:00
|
|
|
virtual bool Destroy() wxOVERRIDE;
|
2006-07-24 02:30:49 -04:00
|
|
|
|
2015-09-06 20:20:42 -04:00
|
|
|
virtual bool Show(bool show = true) wxOVERRIDE;
|
2007-07-04 16:54:36 -04:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
void OnMenuHighlight(wxMenuEvent& evt);
|
2006-07-24 02:30:49 -04:00
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
void SetMDIParentFrame(wxAuiMDIParentFrame* parent);
|
|
|
|
wxAuiMDIParentFrame* GetMDIParentFrame() const;
|
2009-01-25 06:58:39 -05:00
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
protected:
|
|
|
|
void Init();
|
|
|
|
|
|
|
|
public:
|
|
|
|
// This function needs to be called when a size change is confirmed,
|
|
|
|
// we needed this function to prevent anybody from the outside
|
|
|
|
// changing the panel... it messes the UI layout when we would allow it.
|
|
|
|
void ApplyMDIChildFrameRect();
|
|
|
|
|
2006-11-08 14:07:52 -05:00
|
|
|
protected:
|
|
|
|
wxAuiMDIParentFrame* m_pMDIParentFrame;
|
2011-10-30 10:20:03 -04:00
|
|
|
bool m_activateOnCreate;
|
2006-11-08 14:07:52 -05:00
|
|
|
|
|
|
|
#if wxUSE_MENUS
|
|
|
|
wxMenuBar* m_pMenuBar;
|
|
|
|
#endif // wxUSE_MENUS
|
|
|
|
|
|
|
|
|
|
|
|
|
2006-07-21 09:36:21 -04:00
|
|
|
private:
|
2015-04-23 07:49:01 -04:00
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxAuiMDIChildFrame);
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
2006-07-21 09:36:21 -04:00
|
|
|
|
2006-11-01 15:02:40 -05:00
|
|
|
friend class wxAuiMDIClientWindow;
|
2006-07-21 09:36:21 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
2006-11-01 15:02:40 -05:00
|
|
|
// wxAuiMDIClientWindow
|
2006-07-21 09:36:21 -04:00
|
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
2006-11-01 15:02:40 -05:00
|
|
|
class WXDLLIMPEXP_AUI wxAuiMDIClientWindow : public wxAuiNotebook
|
2006-07-21 09:36:21 -04:00
|
|
|
{
|
|
|
|
public:
|
2006-11-01 15:02:40 -05:00
|
|
|
wxAuiMDIClientWindow();
|
|
|
|
wxAuiMDIClientWindow(wxAuiMDIParentFrame *parent, long style = 0);
|
2006-07-24 02:30:49 -04:00
|
|
|
|
2006-11-01 13:51:44 -05:00
|
|
|
virtual bool CreateClient(wxAuiMDIParentFrame *parent,
|
2006-07-21 09:36:21 -04:00
|
|
|
long style = wxVSCROLL | wxHSCROLL);
|
|
|
|
|
2012-09-26 08:20:07 -04:00
|
|
|
virtual wxAuiMDIChildFrame* GetActiveChild();
|
|
|
|
virtual void SetActiveChild(wxAuiMDIChildFrame* pChildFrame)
|
|
|
|
{
|
|
|
|
SetSelection(GetPageIndex(pChildFrame));
|
|
|
|
}
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
protected:
|
|
|
|
|
2011-10-30 10:20:03 -04:00
|
|
|
void PageChanged(int oldSelection, int newSelection);
|
2006-11-10 03:11:01 -05:00
|
|
|
void OnPageClose(wxAuiNotebookEvent& evt);
|
|
|
|
void OnPageChanged(wxAuiNotebookEvent& evt);
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
private:
|
2015-04-23 07:49:01 -04:00
|
|
|
wxDECLARE_DYNAMIC_CLASS(wxAuiMDIClientWindow);
|
|
|
|
wxDECLARE_EVENT_TABLE();
|
2006-07-21 09:36:21 -04:00
|
|
|
};
|
2018-05-12 13:51:03 -04:00
|
|
|
#endif // wxUSE_AUI && wxUSE_MDI
|
2006-07-21 09:36:21 -04:00
|
|
|
|
|
|
|
#endif // _WX_AUITABMDI_H_
|