]> git.saurik.com Git - wxWidgets.git/blame_incremental - include/wx/mac/classic/mdi.h
wxHelpController now wxCHMHelpController on Windows
[wxWidgets.git] / include / wx / mac / classic / mdi.h
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: mdi.h
3// Purpose: MDI (Multiple Document Interface) classes.
4// This doesn't have to be implemented just like Windows,
5// it could be a tabbed design as in wxGTK.
6// Author: Stefan Csomor
7// Modified by:
8// Created: 1998-01-01
9// RCS-ID: $Id$
10// Copyright: (c) Stefan Csomor
11// Licence: wxWindows licence
12/////////////////////////////////////////////////////////////////////////////
13
14#ifndef _WX_MDI_H_
15#define _WX_MDI_H_
16
17#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
18#pragma interface "mdi.h"
19#endif
20
21#include "wx/frame.h"
22
23WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
24WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr;
25
26class WXDLLEXPORT wxMDIClientWindow;
27class WXDLLEXPORT wxMDIChildFrame;
28
29class WXDLLEXPORT wxMDIParentFrame: public wxFrame
30{
31 DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
32
33public:
34
35 wxMDIParentFrame();
36 inline wxMDIParentFrame(wxWindow *parent,
37 wxWindowID id,
38 const wxString& title,
39 const wxPoint& pos = wxDefaultPosition,
40 const wxSize& size = wxDefaultSize,
41 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL, // Scrolling refers to client window
42 const wxString& name = wxFrameNameStr)
43 {
44 Create(parent, id, title, pos, size, style, name);
45 }
46
47 ~wxMDIParentFrame();
48
49 bool Create(wxWindow *parent,
50 wxWindowID id,
51 const wxString& title,
52 const wxPoint& pos = wxDefaultPosition,
53 const wxSize& size = wxDefaultSize,
54 long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
55 const wxString& name = wxFrameNameStr);
56
57 // Mac OS activate event
58 virtual void MacActivate(long timestamp, bool activating);
59
60 // wxWidgets activate event
61 void OnActivate(wxActivateEvent& event);
62 void OnSysColourChanged(wxSysColourChangedEvent& event);
63
64 void SetMenuBar(wxMenuBar *menu_bar);
65
66 // Get the active MDI child window (Windows only)
67 wxMDIChildFrame *GetActiveChild() const ;
68
69 // Get the client window
70 inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; };
71
72 // Create the client window class (don't Create the window,
73 // just return a new class)
74 virtual wxMDIClientWindow *OnCreateClient() ;
75
76 // MDI operations
77 virtual void Cascade();
78 virtual void Tile(wxOrientation WXUNUSED(orient) = wxHORIZONTAL);
79 virtual void ArrangeIcons();
80 virtual void ActivateNext();
81 virtual void ActivatePrevious();
82
83protected:
84
85 // TODO maybe have this member
86 wxMDIClientWindow *m_clientWindow;
87 wxMDIChildFrame * m_currentChild;
88 wxMenu* m_windowMenu;
89
90 // TRUE if MDI Frame is intercepting commands, not child
91 bool m_parentFrameActive;
92
93private:
94 friend class WXDLLEXPORT wxMDIChildFrame;
95DECLARE_EVENT_TABLE()
96};
97
98class WXDLLEXPORT wxMDIChildFrame: public wxFrame
99{
100DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
101public:
102
103 wxMDIChildFrame();
104 inline wxMDIChildFrame(wxMDIParentFrame *parent,
105 wxWindowID id,
106 const wxString& title,
107 const wxPoint& pos = wxDefaultPosition,
108 const wxSize& size = wxDefaultSize,
109 long style = wxDEFAULT_FRAME_STYLE,
110 const wxString& name = wxFrameNameStr)
111 {
112 Init() ;
113 Create(parent, id, title, pos, size, style, name);
114 }
115
116 ~wxMDIChildFrame();
117
118 bool Create(wxMDIParentFrame *parent,
119 wxWindowID id,
120 const wxString& title,
121 const wxPoint& pos = wxDefaultPosition,
122 const wxSize& size = wxDefaultSize,
123 long style = wxDEFAULT_FRAME_STYLE,
124 const wxString& name = wxFrameNameStr);
125
126 // Mac OS activate event
127 virtual void MacActivate(long timestamp, bool activating);
128
129 // Set menu bar
130 void SetMenuBar(wxMenuBar *menu_bar);
131
132 // MDI operations
133 virtual void Maximize();
134 virtual void Maximize( bool ){ Maximize() ; } // this one is inherited from wxFrame
135 virtual void Restore();
136 virtual void Activate();
137protected:
138
139 // common part of all ctors
140 void Init();
141};
142
143/* The client window is a child of the parent MDI frame, and itself
144 * contains the child MDI frames.
145 * However, you create the MDI children as children of the MDI parent:
146 * only in the implementation does the client window become the parent
147 * of the children. Phew! So the children are sort of 'adopted'...
148 */
149
150class WXDLLEXPORT wxMDIClientWindow: public wxWindow
151{
152 DECLARE_DYNAMIC_CLASS(wxMDIClientWindow)
153 public:
154
155 wxMDIClientWindow() ;
156 inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0)
157 {
158 CreateClient(parent, style);
159 }
160
161 ~wxMDIClientWindow();
162
163 // Note: this is virtual, to allow overridden behaviour.
164 virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL);
165
166 // Gets the size available for subwindows after menu size, toolbar size
167 // and status bar size have been subtracted. If you want to manage your own
168 // toolbar(s), don't call SetToolBar.
169 void DoGetClientSize(int *width, int *height) const;
170
171 // Explicitly call default scroll behaviour
172 void OnScroll(wxScrollEvent& event);
173
174protected:
175
176DECLARE_EVENT_TABLE()
177};
178
179#endif
180 // _WX_MDI_H_