]>
Commit | Line | Data |
---|---|---|
7c78e7c7 RR |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: mdi.cpp | |
01b2eeec KB |
3 | // Purpose: MDI classes |
4 | // Author: AUTHOR | |
5 | // Modified by: | |
6 | // Created: ??/??/98 | |
7 | // RCS-ID: $Id$ | |
8 | // Copyright: (c) AUTHOR | |
7c78e7c7 RR |
9 | // Licence: wxWindows licence |
10 | ///////////////////////////////////////////////////////////////////////////// | |
11 | ||
12 | #ifdef __GNUG__ | |
13 | #pragma implementation "mdi.h" | |
14 | #endif | |
15 | ||
16 | #include "wx/mdi.h" | |
7c78e7c7 | 17 | |
01b2eeec | 18 | extern wxList wxModelessWindows; |
7c78e7c7 | 19 | |
01b2eeec KB |
20 | IMPLEMENT_DYNAMIC_CLASS(wxMDIParentFrame, wxFrame) |
21 | IMPLEMENT_DYNAMIC_CLASS(wxMDIChildFrame, wxFrame) | |
22 | IMPLEMENT_DYNAMIC_CLASS(wxMDIClientWindow, wxWindow) | |
7c78e7c7 | 23 | |
01b2eeec KB |
24 | BEGIN_EVENT_TABLE(wxMDIParentFrame, wxFrame) |
25 | EVT_SIZE(wxMDIParentFrame::OnSize) | |
26 | EVT_ACTIVATE(wxMDIParentFrame::OnActivate) | |
27 | EVT_SYS_COLOUR_CHANGED(wxMDIParentFrame::OnSysColourChanged) | |
28 | END_EVENT_TABLE() | |
7c78e7c7 | 29 | |
01b2eeec KB |
30 | BEGIN_EVENT_TABLE(wxMDIClientWindow, wxWindow) |
31 | EVT_SCROLL(wxMDIClientWindow::OnScroll) | |
32 | END_EVENT_TABLE() | |
7c78e7c7 | 33 | |
7c78e7c7 | 34 | |
01b2eeec | 35 | // Parent frame |
7c78e7c7 | 36 | |
01b2eeec | 37 | wxMDIParentFrame::wxMDIParentFrame() |
7c78e7c7 | 38 | { |
01b2eeec | 39 | } |
7c78e7c7 | 40 | |
01b2eeec KB |
41 | bool wxMDIParentFrame::Create(wxWindow *parent, |
42 | wxWindowID id, | |
43 | const wxString& title, | |
44 | const wxPoint& pos, | |
45 | const wxSize& size, | |
46 | long style, | |
47 | const wxString& name) | |
7c78e7c7 | 48 | { |
01b2eeec KB |
49 | if (!parent) |
50 | wxTopLevelWindows.Append(this); | |
51 | ||
52 | SetName(name); | |
53 | m_windowStyle = style; | |
54 | ||
55 | if (parent) parent->AddChild(this); | |
7c78e7c7 | 56 | |
01b2eeec KB |
57 | if ( id > -1 ) |
58 | m_windowId = id; | |
59 | else | |
60 | m_windowId = (int)NewControlId(); | |
61 | ||
62 | // TODO: create MDI parent frame | |
63 | ||
64 | wxModelessWindows.Append(this); | |
65 | ||
66 | return TRUE; | |
67 | } | |
68 | ||
69 | wxMDIParentFrame::~wxMDIParentFrame() | |
7c78e7c7 | 70 | { |
01b2eeec | 71 | } |
7c78e7c7 | 72 | |
01b2eeec KB |
73 | // Get size *available for subwindows* i.e. excluding menu bar. |
74 | void wxMDIParentFrame::GetClientSize(int *x, int *y) const | |
7c78e7c7 | 75 | { |
01b2eeec KB |
76 | // TODO |
77 | } | |
7c78e7c7 | 78 | |
01b2eeec | 79 | void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) |
7c78e7c7 | 80 | { |
01b2eeec KB |
81 | // TODO |
82 | if (!menu_bar) | |
83 | { | |
84 | m_frameMenuBar = NULL; | |
85 | return; | |
86 | } | |
87 | ||
88 | if (menu_bar->m_menuBarFrame) | |
89 | return; | |
7c78e7c7 | 90 | |
01b2eeec KB |
91 | m_frameMenuBar = menu_bar; |
92 | } | |
93 | ||
94 | void wxMDIParentFrame::OnSize(wxSizeEvent& event) | |
7c78e7c7 | 95 | { |
47d67540 | 96 | #if wxUSE_CONSTRAINTS |
01b2eeec KB |
97 | if (GetAutoLayout()) |
98 | Layout(); | |
99 | #endif | |
100 | int x = 0; | |
101 | int y = 0; | |
102 | int width, height; | |
103 | GetClientSize(&width, &height); | |
104 | ||
105 | if ( GetClientWindow() ) | |
106 | GetClientWindow()->SetSize(x, y, width, height); | |
107 | } | |
7c78e7c7 | 108 | |
01b2eeec | 109 | void wxMDIParentFrame::OnActivate(wxActivateEvent& event) |
7c78e7c7 | 110 | { |
01b2eeec KB |
111 | // Do nothing |
112 | } | |
7c78e7c7 | 113 | |
01b2eeec KB |
114 | // Returns the active MDI child window |
115 | wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const | |
7c78e7c7 | 116 | { |
01b2eeec KB |
117 | // TODO |
118 | return NULL; | |
119 | } | |
7c78e7c7 | 120 | |
01b2eeec KB |
121 | // Create the client window class (don't Create the window, |
122 | // just return a new class) | |
123 | wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() | |
7c78e7c7 | 124 | { |
01b2eeec KB |
125 | return new wxMDIClientWindow ; |
126 | } | |
7c78e7c7 | 127 | |
01b2eeec KB |
128 | // Responds to colour changes, and passes event on to children. |
129 | void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) | |
7c78e7c7 | 130 | { |
01b2eeec | 131 | // TODO |
7c78e7c7 | 132 | |
01b2eeec KB |
133 | // Propagate the event to the non-top-level children |
134 | wxFrame::OnSysColourChanged(event); | |
135 | } | |
136 | ||
137 | // MDI operations | |
138 | void wxMDIParentFrame::Cascade() | |
7c78e7c7 | 139 | { |
01b2eeec KB |
140 | // TODO |
141 | } | |
7c78e7c7 | 142 | |
01b2eeec | 143 | void wxMDIParentFrame::Tile() |
7c78e7c7 | 144 | { |
01b2eeec KB |
145 | // TODO |
146 | } | |
7c78e7c7 | 147 | |
01b2eeec KB |
148 | void wxMDIParentFrame::ArrangeIcons() |
149 | { | |
150 | // TODO | |
151 | } | |
7c78e7c7 | 152 | |
01b2eeec KB |
153 | void wxMDIParentFrame::ActivateNext() |
154 | { | |
155 | // TODO | |
156 | } | |
7c78e7c7 | 157 | |
01b2eeec | 158 | void wxMDIParentFrame::ActivatePrevious() |
7c78e7c7 | 159 | { |
01b2eeec KB |
160 | // TODO |
161 | } | |
162 | ||
163 | // Child frame | |
7c78e7c7 | 164 | |
01b2eeec | 165 | wxMDIChildFrame::wxMDIChildFrame() |
7c78e7c7 | 166 | { |
01b2eeec | 167 | } |
7c78e7c7 | 168 | |
01b2eeec KB |
169 | bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, |
170 | wxWindowID id, | |
171 | const wxString& title, | |
172 | const wxPoint& pos, | |
173 | const wxSize& size, | |
174 | long style, | |
175 | const wxString& name) | |
7c78e7c7 | 176 | { |
01b2eeec KB |
177 | SetName(name); |
178 | ||
179 | if ( id > -1 ) | |
180 | m_windowId = id; | |
181 | else | |
182 | m_windowId = (int)NewControlId(); | |
183 | ||
184 | if (parent) parent->AddChild(this); | |
185 | ||
186 | // TODO: create child frame | |
7c78e7c7 | 187 | |
01b2eeec KB |
188 | wxModelessWindows.Append(this); |
189 | return FALSE; | |
190 | } | |
191 | ||
192 | wxMDIChildFrame::~wxMDIChildFrame() | |
7c78e7c7 | 193 | { |
01b2eeec | 194 | } |
7c78e7c7 | 195 | |
01b2eeec KB |
196 | // Set the client size (i.e. leave the calculation of borders etc. |
197 | // to wxWindows) | |
198 | void wxMDIChildFrame::SetClientSize(int width, int height) | |
7c78e7c7 | 199 | { |
01b2eeec | 200 | // TODO |
7c78e7c7 RR |
201 | } |
202 | ||
01b2eeec | 203 | void wxMDIChildFrame::GetPosition(int *x, int *y) const |
7c78e7c7 | 204 | { |
01b2eeec | 205 | // TODO |
7c78e7c7 | 206 | } |
01b2eeec KB |
207 | |
208 | void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) | |
209 | { | |
210 | // TODO | |
211 | if (!menu_bar) | |
7c78e7c7 | 212 | { |
01b2eeec KB |
213 | m_frameMenuBar = NULL; |
214 | return; | |
7c78e7c7 | 215 | } |
01b2eeec KB |
216 | |
217 | if (menu_bar->m_menuBarFrame) | |
218 | return; | |
219 | m_frameMenuBar = menu_bar; | |
220 | } | |
7c78e7c7 | 221 | |
01b2eeec KB |
222 | // MDI operations |
223 | void wxMDIChildFrame::Maximize() | |
7c78e7c7 | 224 | { |
01b2eeec KB |
225 | // TODO |
226 | } | |
7c78e7c7 | 227 | |
01b2eeec | 228 | void wxMDIChildFrame::Restore() |
7c78e7c7 | 229 | { |
01b2eeec KB |
230 | // TODO |
231 | } | |
7c78e7c7 | 232 | |
01b2eeec | 233 | void wxMDIChildFrame::Activate() |
7c78e7c7 | 234 | { |
01b2eeec KB |
235 | // TODO |
236 | } | |
7c78e7c7 | 237 | |
01b2eeec | 238 | // Client window |
7c78e7c7 | 239 | |
01b2eeec | 240 | wxMDIClientWindow::wxMDIClientWindow() |
7c78e7c7 | 241 | { |
01b2eeec | 242 | } |
7c78e7c7 | 243 | |
01b2eeec | 244 | wxMDIClientWindow::~wxMDIClientWindow() |
7c78e7c7 | 245 | { |
01b2eeec | 246 | } |
7c78e7c7 | 247 | |
01b2eeec | 248 | bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) |
7c78e7c7 | 249 | { |
01b2eeec KB |
250 | // TODO create client window |
251 | m_backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_APPWORKSPACE); | |
7c78e7c7 | 252 | |
01b2eeec KB |
253 | return FALSE; |
254 | } | |
7c78e7c7 | 255 | |
01b2eeec KB |
256 | // Explicitly call default scroll behaviour |
257 | void wxMDIClientWindow::OnScroll(wxScrollEvent& event) | |
7c78e7c7 | 258 | { |
01b2eeec KB |
259 | Default(); // Default processing |
260 | } | |
7c78e7c7 | 261 |