]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/aui/framemanager.h
Fix text origin and bounding box computations in wxSVGFileDC.
[wxWidgets.git] / interface / wx / aui / framemanager.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: aui/aui.h
e54c96f1 3// Purpose: interface of wxAuiManager
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
526954c5 6// Licence: wxWindows licence
23324ae1
FM
7/////////////////////////////////////////////////////////////////////////////
8
47d602c1
FM
9
10/**
ea6e8ec5 11 @todo wxAuiPaneInfo dock direction types used with wxAuiManager.
47d602c1
FM
12*/
13enum wxAuiManagerDock
14{
15 wxAUI_DOCK_NONE = 0,
16 wxAUI_DOCK_TOP = 1,
17 wxAUI_DOCK_RIGHT = 2,
18 wxAUI_DOCK_BOTTOM = 3,
19 wxAUI_DOCK_LEFT = 4,
20 wxAUI_DOCK_CENTER = 5,
21 wxAUI_DOCK_CENTRE = wxAUI_DOCK_CENTER
22};
23
24
25/**
c75e580c 26 wxAuiManager behaviour and visual effects style flags.
47d602c1
FM
27*/
28enum wxAuiManagerOption
29{
c75e580c 30 /// Allow a pane to be undocked to take the form of a wxMiniFrame.
47d602c1 31 wxAUI_MGR_ALLOW_FLOATING = 1 << 0,
c75e580c 32 /// Change the color of the title bar of the pane when it is activated.
47d602c1 33 wxAUI_MGR_ALLOW_ACTIVE_PANE = 1 << 1,
c75e580c 34 /// Make the pane transparent during its movement.
47d602c1 35 wxAUI_MGR_TRANSPARENT_DRAG = 1 << 2,
c75e580c 36 /// The possible location for docking is indicated by a translucent area.
47d602c1 37 wxAUI_MGR_TRANSPARENT_HINT = 1 << 3,
c75e580c
VZ
38 /// The possible location for docking is indicated by a gradually appearing
39 /// partially transparent area.
47d602c1 40 wxAUI_MGR_VENETIAN_BLINDS_HINT = 1 << 4,
c75e580c 41 /// The possible location for docking is indicated by a rectangular outline.
47d602c1 42 wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
c75e580c 43 /// The translucent area where the pane could be docked appears gradually.
47d602c1 44 wxAUI_MGR_HINT_FADE = 1 << 6,
c75e580c 45 /// Used in complement of wxAUI_MGR_VENETIAN_BLINDS_HINT to show the hint immediately.
47d602c1 46 wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
c75e580c
VZ
47 /// When a docked pane is resized, its content is refreshed in live (instead of moving
48 /// the border alone and refreshing the content at the end).
68030cae 49 wxAUI_MGR_LIVE_RESIZE = 1 << 8,
c75e580c 50 /// Default behavior.
47d602c1
FM
51 wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
52 wxAUI_MGR_TRANSPARENT_HINT |
53 wxAUI_MGR_HINT_FADE |
54 wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
55};
56
23324ae1
FM
57/**
58 @class wxAuiManager
7c913512 59
23324ae1 60 wxAuiManager is the central class of the wxAUI class framework.
7c913512 61
47d602c1
FM
62 wxAuiManager manages the panes associated with it for a particular wxFrame,
63 using a pane's wxAuiPaneInfo information to determine each pane's docking
4c51a665 64 and floating behaviour.
7c913512 65
ea6e8ec5
BP
66 wxAuiManager uses wxWidgets' sizer mechanism to plan the layout of each
67 frame. It uses a replaceable dock art class to do all drawing, so all
68 drawing is localized in one area, and may be customized depending on an
69 application's specific needs.
7c913512 70
23324ae1
FM
71 wxAuiManager works as follows: the programmer adds panes to the class,
72 or makes changes to existing pane properties (dock position, floating
73 state, show state, etc.). To apply these changes, wxAuiManager's
74 Update() function is called. This batch processing can be used to avoid
75 flicker, by modifying more than one pane at a time, and then "committing"
76 all of the changes at once by calling Update().
7c913512 77
23324ae1 78 Panes can be added quite easily:
7c913512 79
23324ae1
FM
80 @code
81 wxTextCtrl* text1 = new wxTextCtrl(this, -1);
82 wxTextCtrl* text2 = new wxTextCtrl(this, -1);
f8ebb70d
FM
83 m_mgr.AddPane(text1, wxLEFT, "Pane Caption");
84 m_mgr.AddPane(text2, wxBOTTOM, "Pane Caption");
23324ae1
FM
85 m_mgr.Update();
86 @endcode
7c913512 87
23324ae1
FM
88 Later on, the positions can be modified easily. The following will float
89 an existing pane in a tool window:
7c913512 90
23324ae1
FM
91 @code
92 m_mgr.GetPane(text1).Float();
93 @endcode
7c913512 94
47d602c1 95
3a74a290 96 @section auimanager_layers Layers, Rows and Directions, Positions
47d602c1 97
8d483c9b 98 Inside wxAUI, the docking layout is figured out by checking several pane
ea6e8ec5
BP
99 parameters. Four of these are important for determining where a pane will
100 end up:
101
102 @li Direction: Each docked pane has a direction, Top, Bottom, Left, Right,
103 or Center. This is fairly self-explanatory. The pane will be placed in
104 the location specified by this variable.
105 @li Position: More than one pane can be placed inside of a dock. Imagine
106 two panes being docked on the left side of a window. One pane can be
107 placed over another. In proportionally managed docks, the pane
108 position indicates its sequential position, starting with zero. So, in
109 our scenario with two panes docked on the left side, the top pane in
110 the dock would have position 0, and the second one would occupy
47d602c1 111 position 1.
ea6e8ec5
BP
112 @li Row: A row can allow for two docks to be placed next to each other.
113 One of the most common places for this to happen is in the toolbar.
114 Multiple toolbar rows are allowed, the first row being row 0, and the
115 second row 1. Rows can also be used on vertically docked panes.
116 @li Layer: A layer is akin to an onion. Layer 0 is the very center of the
117 managed pane. Thus, if a pane is in layer 0, it will be closest to the
118 center window (also sometimes known as the "content window").
119 Increasing layers "swallow up" all layers of a lower value. This can
120 look very similar to multiple rows, but is different because all panes
121 in a lower level yield to panes in higher levels. The best way to
122 understand layers is by running the wxAUI sample.
123
c75e580c
VZ
124 @beginStyleTable
125 @style{wxAUI_MGR_ALLOW_FLOATING}
126 Allow a pane to be undocked to take the form of a wxMiniFrame.
127 @style{wxAUI_MGR_ALLOW_ACTIVE_PANE}
128 Change the color of the title bar of the pane when it is activated.
129 @style{wxAUI_MGR_TRANSPARENT_DRAG}
130 Make the pane transparent during its movement.
131 @style{wxAUI_MGR_TRANSPARENT_HINT}
132 The possible location for docking is indicated by a translucent area.
133 @style{wxAUI_MGR_VENETIAN_BLINDS_HINT}
134 The possible location for docking is indicated by gradually
135 appearing partially transparent hint.
136 @style{wxAUI_MGR_RECTANGLE_HINT}
137 The possible location for docking is indicated by a rectangular
138 outline.
139 @style{wxAUI_MGR_HINT_FADE}
140 The translucent area where the pane could be docked appears gradually.
141 @style{wxAUI_MGR_NO_VENETIAN_BLINDS_FADE}
142 Used in complement of wxAUI_MGR_VENETIAN_BLINDS_HINT to show the
143 docking hint immediately.
144 @style{wxAUI_MGR_LIVE_RESIZE}
145 When a docked pane is resized, its content is refreshed in live (instead of moving
146 the border alone and refreshing the content at the end).
147 @style{wxAUI_MGR_DEFAULT}
148 Default behavior, combines: wxAUI_MGR_ALLOW_FLOATING | wxAUI_MGR_TRANSPARENT_HINT |
149 wxAUI_MGR_HINT_FADE | wxAUI_MGR_NO_VENETIAN_BLINDS_FADE.
150 @endStyleTable
ea6e8ec5 151
3051a44a 152 @beginEventEmissionTable{wxAuiManagerEvent}
ea6e8ec5
BP
153 @event{EVT_AUI_PANE_BUTTON(func)}
154 Triggered when any button is pressed for any docked panes.
155 @event{EVT_AUI_PANE_CLOSE(func)}
156 Triggered when a docked or floating pane is closed.
157 @event{EVT_AUI_PANE_MAXIMIZE(func)}
158 Triggered when a pane is maximized.
159 @event{EVT_AUI_PANE_RESTORE(func)}
160 Triggered when a pane is restored.
3a1ec1d5
VZ
161 @event{EVT_AUI_PANE_ACTIVATED(func)}
162 Triggered when a pane is made 'active'. This event is new since
163 wxWidgets 2.9.4.
ea6e8ec5
BP
164 @event{EVT_AUI_RENDER(func)}
165 This event can be caught to override the default renderer in order to
166 custom draw your wxAuiManager window (not recommended).
167 @endEventTable
47d602c1 168
35b8c1a0 169 @library{wxaui}
23324ae1 170 @category{aui}
7c913512 171
ea6e8ec5 172 @see @ref overview_aui, wxAuiNotebook, wxAuiDockArt, wxAuiPaneInfo
23324ae1
FM
173*/
174class wxAuiManager : public wxEvtHandler
175{
176public:
177 /**
94cac3bf
VZ
178 Constructor.
179
180 @param managed_wnd
181 Specifies the wxFrame which should be managed.
182 @param flags
183 Specifies the frame management behaviour and visual effects
184 with the ::wxAuiManagerOption's style flags.
23324ae1 185 */
4cc4bfaf 186 wxAuiManager(wxWindow* managed_wnd = NULL,
23324ae1
FM
187 unsigned int flags = wxAUI_MGR_DEFAULT);
188
189 /**
47d602c1 190 Dtor.
23324ae1 191 */
8d483c9b 192 virtual ~wxAuiManager();
23324ae1
FM
193
194 //@{
195 /**
47d602c1
FM
196 AddPane() tells the frame manager to start managing a child window.
197 There are several versions of this function. The first version allows
198 the full spectrum of pane parameter possibilities. The second version is
199 used for simpler user interfaces which do not require as much configuration.
200 The last version allows a drop position to be specified, which will determine
201 where the pane will be added.
23324ae1
FM
202 */
203 bool AddPane(wxWindow* window, const wxAuiPaneInfo& pane_info);
7c913512
FM
204 bool AddPane(wxWindow* window, int direction = wxLEFT,
205 const wxString& caption = wxEmptyString);
206 bool AddPane(wxWindow* window,
207 const wxAuiPaneInfo& pane_info,
208 const wxPoint& drop_pos);
23324ae1
FM
209 //@}
210
211 /**
212 Tells the wxAuiManager to stop managing the pane specified by window.
213 The window, if in a floated frame, is reparented to the frame managed
214 by wxAuiManager.
215 */
216 bool DetachPane(wxWindow* window);
217
218 /**
219 Returns an array of all panes managed by the frame manager.
220 */
d2aa927a 221 wxAuiPaneInfoArray& GetAllPanes();
23324ae1
FM
222
223 /**
224 Returns the current art provider being used.
47d602c1 225 @see wxAuiDockArt.
23324ae1 226 */
328f5751 227 wxAuiDockArt* GetArtProvider() const;
23324ae1
FM
228
229 /**
47d602c1
FM
230 Returns the current dock constraint values.
231 See SetDockSizeConstraint() for more information.
23324ae1 232 */
d2aa927a 233 void GetDockSizeConstraint(double* widthpct, double* heightpct) const;
23324ae1
FM
234
235 /**
94cac3bf 236 Returns the current ::wxAuiManagerOption's flags.
23324ae1 237 */
328f5751 238 unsigned int GetFlags() const;
23324ae1
FM
239
240 /**
241 Returns the frame currently being managed by wxAuiManager.
242 */
328f5751 243 wxWindow* GetManagedWindow() const;
23324ae1
FM
244
245 /**
47d602c1 246 Calling this method will return the wxAuiManager for a given window.
8d483c9b 247 The @a window parameter should specify any child window or sub-child
47d602c1
FM
248 window of the frame or window managed by wxAuiManager.
249
4cc4bfaf 250 The @a window parameter need not be managed by the manager itself, nor does it
47d602c1
FM
251 even need to be a child or sub-child of a managed window. It must however
252 be inside the window hierarchy underneath the managed window.
23324ae1
FM
253 */
254 static wxAuiManager* GetManager(wxWindow* window);
255
256 //@{
257 /**
47d602c1
FM
258 GetPane() is used to lookup a wxAuiPaneInfo object either by window pointer
259 or by pane name, which acts as a unique id for a window pane.
260
261 The returned wxAuiPaneInfo object may then be modified to change a pane's
8d483c9b
FM
262 look, state or position. After one or more modifications to wxAuiPaneInfo,
263 wxAuiManager::Update() should be called to commit the changes to the user
264 interface. If the lookup failed (meaning the pane could not be found in the
47d602c1 265 manager), a call to the returned wxAuiPaneInfo's IsOk() method will return @false.
23324ae1 266 */
882678eb
FM
267 wxAuiPaneInfo& GetPane(wxWindow* window);
268 wxAuiPaneInfo& GetPane(const wxString& name);
23324ae1
FM
269 //@}
270
271 /**
272 HideHint() hides any docking hint that may be visible.
273 */
d2aa927a 274 virtual void HideHint();
23324ae1
FM
275
276 /**
277 This method is used to insert either a previously unmanaged pane window
7c913512 278 into the frame manager, or to insert a currently managed pane somewhere
47d602c1
FM
279 else. InsertPane() will push all panes, rows, or docks aside and
280 insert the window into the position specified by @a insert_location.
281
4cc4bfaf 282 Because @a insert_location can specify either a pane, dock row, or dock
47d602c1
FM
283 layer, the @a insert_level parameter is used to disambiguate this.
284 The parameter @a insert_level can take a value of wxAUI_INSERT_PANE,
285 wxAUI_INSERT_ROW or wxAUI_INSERT_DOCK.
23324ae1
FM
286 */
287 bool InsertPane(wxWindow* window,
288 const wxAuiPaneInfo& insert_location,
289 int insert_level = wxAUI_INSERT_PANE);
290
291 /**
57ab6f23 292 LoadPaneInfo() is similar to LoadPerspective, with the exception that it
47d602c1
FM
293 only loads information about a single pane. It is used in combination with
294 SavePaneInfo().
23324ae1
FM
295 */
296 void LoadPaneInfo(wxString pane_part, wxAuiPaneInfo& pane);
297
298 /**
299 Loads a saved perspective. If update is @true, wxAuiManager::Update()
300 is automatically invoked, thus realizing the saved perspective on screen.
301 */
302 bool LoadPerspective(const wxString& perspective,
4cc4bfaf 303 bool update = true);
23324ae1 304
23324ae1
FM
305 /**
306 SavePaneInfo() is similar to SavePerspective, with the exception that it only
47d602c1
FM
307 saves information about a single pane. It is used in combination with
308 LoadPaneInfo().
23324ae1
FM
309 */
310 wxString SavePaneInfo(wxAuiPaneInfo& pane);
311
312 /**
313 Saves the entire user interface layout into an encoded wxString, which
47d602c1
FM
314 can then be stored by the application (probably using wxConfig).
315
316 When a perspective is restored using LoadPerspective(), the entire user
23324ae1
FM
317 interface will return to the state it was when the perspective was saved.
318 */
319 wxString SavePerspective();
320
321 /**
322 Instructs wxAuiManager to use art provider specified by parameter
8d483c9b 323 @a art_provider for all drawing calls.
47d602c1
FM
324 This allows plugable look-and-feel features. The previous art provider object,
325 if any, will be deleted by wxAuiManager.
326
327 @see wxAuiDockArt.
23324ae1
FM
328 */
329 void SetArtProvider(wxAuiDockArt* art_provider);
330
331 /**
332 When a user creates a new dock by dragging a window into a docked position,
47d602c1 333 often times the large size of the window will create a dock that is unwieldly
8d483c9b 334 large. wxAuiManager by default limits the size of any new dock to 1/3 of the
47d602c1
FM
335 window size. For horizontal docks, this would be 1/3 of the window height.
336 For vertical docks, 1/3 of the width.
337
338 Calling this function will adjust this constraint value. The numbers must be
339 between 0.0 and 1.0. For instance, calling SetDockSizeContraint with
340 0.5, 0.5 will cause new docks to be limited to half of the size of the
341 entire managed window.
23324ae1
FM
342 */
343 void SetDockSizeConstraint(double widthpct, double heightpct);
344
345 /**
94cac3bf 346 This method is used to specify ::wxAuiManagerOption's flags. @a flags
4c51a665 347 specifies options which allow the frame management behaviour to be modified.
23324ae1 348 */
d56f17d8 349 void SetFlags(unsigned int flags);
23324ae1
FM
350
351 /**
7c913512 352 Called to specify the frame or window which is to be managed by wxAuiManager.
47d602c1
FM
353 Frame management is not restricted to just frames. Child windows or custom
354 controls are also allowed.
23324ae1
FM
355 */
356 void SetManagedWindow(wxWindow* managed_wnd);
357
358 /**
359 This function is used by controls to explicitly show a hint window at the
47d602c1 360 specified rectangle. It is rarely called, and is mostly used by controls
8d483c9b 361 implementing custom pane drag/drop behaviour.
47d602c1 362 The specified rectangle should be in screen coordinates.
23324ae1 363 */
d2aa927a 364 virtual void ShowHint(const wxRect& rect);
23324ae1
FM
365
366 /**
367 Uninitializes the framework and should be called before a managed frame or
8d483c9b
FM
368 window is destroyed. UnInit() is usually called in the managed wxFrame's
369 destructor. It is necessary to call this function before the managed frame
370 or window is destroyed, otherwise the manager cannot remove its custom event
47d602c1 371 handlers from a window.
23324ae1
FM
372 */
373 void UnInit();
374
375 /**
376 This method is called after any number of changes are
377 made to any of the managed panes. Update() must be invoked after
378 AddPane() or InsertPane() are called in order to "realize" or "commit"
379 the changes. In addition, any number of changes may be made to
380 wxAuiPaneInfo structures (retrieved with wxAuiManager::GetPane), but to
381 realize the changes, Update() must be called. This construction allows
382 pane flicker to be avoided by updating the whole layout at one time.
383 */
384 void Update();
1d497b99
FM
385
386protected:
387
388 /**
389 ProcessDockResult() is a protected member of the wxAUI layout manager.
390 It can be overridden by derived classes to provide custom docking calculations.
391 */
392 virtual bool ProcessDockResult(wxAuiPaneInfo& target,
393 const wxAuiPaneInfo& new_pos);
23324ae1
FM
394};
395
396
e54c96f1 397
23324ae1
FM
398/**
399 @class wxAuiPaneInfo
7c913512 400
23324ae1 401 wxAuiPaneInfo is part of the wxAUI class framework.
47d602c1 402 See also @ref overview_aui.
7c913512 403
23324ae1 404 wxAuiPaneInfo specifies all the parameters for a pane.
47d602c1
FM
405 These parameters specify where the pane is on the screen, whether it is docked
406 or floating, or hidden.
8d483c9b 407 In addition, these parameters specify the pane's docked position, floating
47d602c1 408 position, preferred size, minimum size, caption text among many other parameters.
7c913512 409
23324ae1
FM
410 @library{wxbase}
411 @category{aui}
7c913512 412
e54c96f1 413 @see wxAuiManager, wxAuiDockArt
23324ae1 414*/
7c913512 415class wxAuiPaneInfo
23324ae1
FM
416{
417public:
47d602c1
FM
418 wxAuiPaneInfo();
419
23324ae1
FM
420 /**
421 Copy constructor.
422 */
7c913512 423 wxAuiPaneInfo(const wxAuiPaneInfo& c);
23324ae1
FM
424
425 //@{
426 /**
427 BestSize() sets the ideal size for the pane. The docking manager will attempt
428 to use this size as much as possible when docking or floating the pane.
429 */
882678eb
FM
430 wxAuiPaneInfo& BestSize(const wxSize& size);
431 wxAuiPaneInfo& BestSize(int x, int y);
23324ae1
FM
432 //@}
433
434 /**
435 Bottom() sets the pane dock position to the bottom side of the frame. This is
436 the same thing as calling Direction(wxAUI_DOCK_BOTTOM).
437 */
d2aa927a 438 wxAuiPaneInfo& Bottom();
23324ae1
FM
439
440 /**
441 BottomDockable() indicates whether a pane can be docked at the bottom of the
442 frame.
443 */
d2aa927a 444 wxAuiPaneInfo& BottomDockable(bool b = true);
23324ae1
FM
445
446 /**
447 Caption() sets the caption of the pane.
448 */
d2aa927a 449 wxAuiPaneInfo& Caption(const wxString& c);
23324ae1
FM
450
451 /**
452 CaptionVisible indicates that a pane caption should be visible. If @false, no
453 pane caption is drawn.
454 */
d2aa927a 455 wxAuiPaneInfo& CaptionVisible(bool visible = true);
23324ae1
FM
456
457 //@{
458 /**
459 Center() sets the pane dock position to the left side of the frame.
460 The centre pane is the space in the middle after all border panes (left, top,
461 right, bottom) are subtracted from the layout.
23324ae1
FM
462 This is the same thing as calling Direction(wxAUI_DOCK_CENTRE).
463 */
382f12e4
FM
464 wxAuiPaneInfo& Centre();
465 wxAuiPaneInfo& Center();
23324ae1
FM
466 //@}
467
468 //@{
469 /**
470 CentrePane() specifies that the pane should adopt the default center pane
8d483c9b 471 settings. Centre panes usually do not have caption bars.
47d602c1
FM
472 This function provides an easy way of preparing a pane to be displayed in
473 the center dock position.
23324ae1 474 */
382f12e4
FM
475 wxAuiPaneInfo& CentrePane();
476 wxAuiPaneInfo& CenterPane();
23324ae1
FM
477 //@}
478
479 /**
480 CloseButton() indicates that a close button should be drawn for the pane.
481 */
d2aa927a 482 wxAuiPaneInfo& CloseButton(bool visible = true);
23324ae1
FM
483
484 /**
485 DefaultPane() specifies that the pane should adopt the default pane settings.
486 */
d2aa927a 487 wxAuiPaneInfo& DefaultPane();
23324ae1
FM
488
489 /**
57ab6f23 490 DestroyOnClose() indicates whether a pane should be destroyed when it is closed.
8d483c9b 491 Normally a pane is simply hidden when the close button is clicked.
47d602c1
FM
492 Setting DestroyOnClose to @true will cause the window to be destroyed when
493 the user clicks the pane's close button.
23324ae1 494 */
d2aa927a 495 wxAuiPaneInfo& DestroyOnClose(bool b = true);
23324ae1
FM
496
497 /**
498 Direction() determines the direction of the docked pane. It is functionally the
47d602c1
FM
499 same as calling Left(), Right(), Top() or Bottom(), except that docking direction
500 may be specified programmatically via the parameter.
23324ae1 501 */
d2aa927a 502 wxAuiPaneInfo& Direction(int direction);
23324ae1
FM
503
504 /**
505 Dock() indicates that a pane should be docked. It is the opposite of Float().
506 */
d2aa927a 507 wxAuiPaneInfo& Dock();
23324ae1
FM
508
509 /**
510 DockFixed() causes the containing dock to have no resize sash. This is useful
8d483c9b 511 for creating panes that span the entire width or height of a dock, but should
47d602c1 512 not be resizable in the other direction.
23324ae1 513 */
d2aa927a 514 wxAuiPaneInfo& DockFixed(bool b = true);
23324ae1
FM
515
516 /**
517 Dockable() specifies whether a frame can be docked or not. It is the same as
518 specifying TopDockable(b).BottomDockable(b).LeftDockable(b).RightDockable(b).
519 */
d2aa927a 520 wxAuiPaneInfo& Dockable(bool b = true);
23324ae1
FM
521
522 /**
523 Fixed() forces a pane to be fixed size so that it cannot be resized. After
524 calling Fixed(), IsFixed() will return @true.
525 */
d2aa927a 526 wxAuiPaneInfo& Fixed();
23324ae1
FM
527
528 /**
529 Float() indicates that a pane should be floated. It is the opposite of Dock().
530 */
d2aa927a 531 wxAuiPaneInfo& Float();
23324ae1
FM
532
533 /**
534 Floatable() sets whether the user will be able to undock a pane and turn it
535 into a floating window.
536 */
d2aa927a 537 wxAuiPaneInfo& Floatable(bool b = true);
23324ae1
FM
538
539 //@{
540 /**
541 FloatingPosition() sets the position of the floating pane.
542 */
882678eb
FM
543 wxAuiPaneInfo& FloatingPosition(const wxPoint& pos);
544 wxAuiPaneInfo& FloatingPosition(int x, int y);
23324ae1
FM
545 //@}
546
547 //@{
548 /**
549 FloatingSize() sets the size of the floating pane.
550 */
882678eb
FM
551 wxAuiPaneInfo& FloatingSize(const wxSize& size);
552 wxAuiPaneInfo& FloatingSize(int x, int y);
23324ae1
FM
553 //@}
554
555 /**
556 Gripper() indicates that a gripper should be drawn for the pane.
557 */
d2aa927a 558 wxAuiPaneInfo& Gripper(bool visible = true);
23324ae1
FM
559
560 /**
561 GripperTop() indicates that a gripper should be drawn at the top of the pane.
562 */
d2aa927a 563 wxAuiPaneInfo& GripperTop(bool attop = true);
23324ae1
FM
564
565 /**
566 HasBorder() returns @true if the pane displays a border.
567 */
328f5751 568 bool HasBorder() const;
23324ae1
FM
569
570 /**
571 HasCaption() returns @true if the pane displays a caption.
572 */
328f5751 573 bool HasCaption() const;
23324ae1
FM
574
575 /**
576 HasCloseButton() returns @true if the pane displays a button to close the pane.
577 */
328f5751 578 bool HasCloseButton() const;
23324ae1
FM
579
580 /**
e227438f
VZ
581 HasFlag() returns @true if the property specified by flag is active for
582 the pane.
23324ae1 583 */
e227438f 584 bool HasFlag(int flag) const;
23324ae1
FM
585
586 /**
587 HasGripper() returns @true if the pane displays a gripper.
588 */
328f5751 589 bool HasGripper() const;
23324ae1
FM
590
591 /**
592 HasGripper() returns @true if the pane displays a gripper at the top.
593 */
328f5751 594 bool HasGripperTop() const;
23324ae1
FM
595
596 /**
597 HasMaximizeButton() returns @true if the pane displays a button to maximize the
598 pane.
599 */
328f5751 600 bool HasMaximizeButton() const;
23324ae1
FM
601
602 /**
603 HasMinimizeButton() returns @true if the pane displays a button to minimize the
604 pane.
605 */
328f5751 606 bool HasMinimizeButton() const;
23324ae1
FM
607
608 /**
609 HasPinButton() returns @true if the pane displays a button to float the pane.
610 */
328f5751 611 bool HasPinButton() const;
23324ae1
FM
612
613 /**
614 Hide() indicates that a pane should be hidden.
615 */
d2aa927a 616 wxAuiPaneInfo& Hide();
23324ae1 617
4254f672
VZ
618 /**
619 Icon() sets the icon of the pane.
620
621 Notice that the height of the icon should be smaller than the value
622 returned by wxAuiDockArt::GetMetric(wxAUI_DOCKART_CAPTION_SIZE) to
623 ensure that it appears correctly.
624
625 @since 2.9.2
626 */
627 wxAuiPaneInfo& Icon(const wxBitmap& b);
628
23324ae1
FM
629 /**
630 IsBottomDockable() returns @true if the pane can be docked at the bottom of the
631 managed frame.
ab84bafe
VZ
632
633 @see IsDockable()
23324ae1 634 */
328f5751 635 bool IsBottomDockable() const;
23324ae1
FM
636
637 /**
ab84bafe
VZ
638 Returns @true if the pane can be docked at any side.
639
640 @see IsTopDockable(), IsBottomDockable(), IsLeftDockable(), IsRightDockable()
641
642 @since 2.9.2
643 */
644 bool IsDockable() const;
645
646 /**
647 IsDocked() returns @true if the pane is currently docked.
23324ae1 648 */
328f5751 649 bool IsDocked() const;
23324ae1
FM
650
651 /**
652 IsFixed() returns @true if the pane cannot be resized.
653 */
328f5751 654 bool IsFixed() const;
23324ae1
FM
655
656 /**
657 IsFloatable() returns @true if the pane can be undocked and displayed as a
658 floating window.
659 */
328f5751 660 bool IsFloatable() const;
23324ae1
FM
661
662 /**
663 IsFloating() returns @true if the pane is floating.
664 */
328f5751 665 bool IsFloating() const;
23324ae1
FM
666
667 /**
668 IsLeftDockable() returns @true if the pane can be docked on the left of the
669 managed frame.
ab84bafe
VZ
670
671 @see IsDockable()
23324ae1 672 */
328f5751 673 bool IsLeftDockable() const;
23324ae1
FM
674
675 /**
676 IsMoveable() returns @true if the docked frame can be undocked or moved to
677 another dock position.
678 */
328f5751 679 bool IsMovable() const;
23324ae1
FM
680
681 /**
682 IsOk() returns @true if the wxAuiPaneInfo structure is valid. A pane structure
683 is valid if it has an associated window.
684 */
328f5751 685 bool IsOk() const;
23324ae1
FM
686
687 /**
688 IsResizable() returns @true if the pane can be resized.
689 */
328f5751 690 bool IsResizable() const;
23324ae1
FM
691
692 /**
693 IsRightDockable() returns @true if the pane can be docked on the right of the
694 managed frame.
ab84bafe
VZ
695
696 @see IsDockable()
23324ae1 697 */
328f5751 698 bool IsRightDockable() const;
23324ae1
FM
699
700 /**
701 IsShown() returns @true if the pane is currently shown.
702 */
328f5751 703 bool IsShown() const;
23324ae1
FM
704
705 /**
706 IsToolbar() returns @true if the pane contains a toolbar.
707 */
328f5751 708 bool IsToolbar() const;
23324ae1
FM
709
710 /**
711 IsTopDockable() returns @true if the pane can be docked at the top of the
712 managed frame.
ab84bafe
VZ
713
714 @see IsDockable()
23324ae1 715 */
328f5751 716 bool IsTopDockable() const;
23324ae1
FM
717
718 /**
719 Layer() determines the layer of the docked pane. The dock layer is similar to
8d483c9b
FM
720 an onion, the inner-most layer being layer 0. Each shell moving in the outward
721 direction has a higher layer number. This allows for more complex docking layout
47d602c1 722 formation.
23324ae1 723 */
d2aa927a 724 wxAuiPaneInfo& Layer(int layer);
23324ae1
FM
725
726 /**
727 Left() sets the pane dock position to the left side of the frame. This is the
728 same thing as calling Direction(wxAUI_DOCK_LEFT).
729 */
d2aa927a 730 wxAuiPaneInfo& Left();
23324ae1
FM
731
732 /**
733 LeftDockable() indicates whether a pane can be docked on the left of the frame.
734 */
d2aa927a 735 wxAuiPaneInfo& LeftDockable(bool b = true);
23324ae1
FM
736
737 //@{
738 /**
739 MaxSize() sets the maximum size of the pane.
740 */
882678eb
FM
741 wxAuiPaneInfo& MaxSize(const wxSize& size);
742 wxAuiPaneInfo& MaxSize(int x, int y);
23324ae1
FM
743 //@}
744
745 /**
746 MaximizeButton() indicates that a maximize button should be drawn for the pane.
747 */
d2aa927a 748 wxAuiPaneInfo& MaximizeButton(bool visible = true);
23324ae1
FM
749
750 //@{
751 /**
752 MinSize() sets the minimum size of the pane. Please note that this is only
753 partially supported as of this writing.
754 */
882678eb
FM
755 wxAuiPaneInfo& MinSize(const wxSize& size);
756 wxAuiPaneInfo& MinSize(int x, int y);
23324ae1
FM
757 //@}
758
759 /**
760 MinimizeButton() indicates that a minimize button should be drawn for the pane.
761 */
d2aa927a 762 wxAuiPaneInfo& MinimizeButton(bool visible = true);
23324ae1
FM
763
764 /**
765 Movable indicates whether a frame can be moved.
766 */
d2aa927a 767 wxAuiPaneInfo& Movable(bool b = true);
23324ae1
FM
768
769 /**
770 Name() sets the name of the pane so it can be referenced in lookup functions.
8d483c9b 771 If a name is not specified by the user, a random name is assigned to the pane
47d602c1 772 when it is added to the manager.
23324ae1 773 */
d2aa927a 774 wxAuiPaneInfo& Name(const wxString& n);
23324ae1
FM
775
776 /**
777 PaneBorder indicates that a border should be drawn for the pane.
778 */
d2aa927a 779 wxAuiPaneInfo& PaneBorder(bool visible = true);
23324ae1
FM
780
781 /**
782 PinButton() indicates that a pin button should be drawn for the pane.
783 */
d2aa927a 784 wxAuiPaneInfo& PinButton(bool visible = true);
23324ae1
FM
785
786 /**
787 Position() determines the position of the docked pane.
788 */
d2aa927a 789 wxAuiPaneInfo& Position(int pos);
23324ae1
FM
790
791 /**
792 Resizable() allows a pane to be resized if the parameter is @true, and forces it
793 to be a fixed size if the parameter is @false. This is simply an antonym for Fixed().
794 */
d2aa927a 795 wxAuiPaneInfo& Resizable(bool resizable = true);
23324ae1
FM
796
797 /**
798 Right() sets the pane dock position to the right side of the frame.
799 */
d2aa927a 800 wxAuiPaneInfo& Right();
23324ae1
FM
801
802 /**
803 RightDockable() indicates whether a pane can be docked on the right of the
804 frame.
805 */
d2aa927a 806 wxAuiPaneInfo& RightDockable(bool b = true);
23324ae1
FM
807
808 /**
809 Row() determines the row of the docked pane.
810 */
d2aa927a 811 wxAuiPaneInfo& Row(int row);
23324ae1
FM
812
813 /**
814 Write the safe parts of a newly loaded PaneInfo structure "source" into "this"
815 used on loading perspectives etc.
816 */
817 void SafeSet(wxAuiPaneInfo source);
818
819 /**
820 SetFlag() turns the property given by flag on or off with the option_state
821 parameter.
822 */
d56f17d8 823 wxAuiPaneInfo& SetFlag(int flag, bool option_state);
23324ae1
FM
824
825 /**
826 Show() indicates that a pane should be shown.
827 */
d2aa927a 828 wxAuiPaneInfo& Show(bool show = true);
23324ae1
FM
829
830 /**
831 ToolbarPane() specifies that the pane should adopt the default toolbar pane
832 settings.
833 */
d2aa927a 834 wxAuiPaneInfo& ToolbarPane();
23324ae1
FM
835
836 /**
837 Top() sets the pane dock position to the top of the frame.
838 */
d2aa927a 839 wxAuiPaneInfo& Top();
23324ae1
FM
840
841 /**
842 TopDockable() indicates whether a pane can be docked at the top of the frame.
843 */
d2aa927a 844 wxAuiPaneInfo& TopDockable(bool b = true);
23324ae1
FM
845
846 /**
8d483c9b
FM
847 Window() assigns the window pointer that the wxAuiPaneInfo should use.
848 This normally does not need to be specified, as the window pointer is
849 automatically assigned to the wxAuiPaneInfo structure as soon as it is added
47d602c1 850 to the manager.
23324ae1 851 */
d2aa927a 852 wxAuiPaneInfo& Window(wxWindow* w);
23324ae1
FM
853
854 /**
855 Makes a copy of the wxAuiPaneInfo object.
856 */
1d497b99 857 wxAuiPaneInfo& operator=(const wxAuiPaneInfo& c);
23324ae1 858};
e54c96f1 859
ea6e8ec5
BP
860
861
862/**
863 @class wxAuiManagerEvent
864
865 Event used to indicate various actions taken with wxAuiManager.
866
867 See wxAuiManager for available event types.
868
9ccf8289
FM
869 @beginEventTable{wxAuiManagerEvent}
870 @event{EVT_AUI_PANE_BUTTON(func)}
871 Triggered when any button is pressed for any docked panes.
872 @event{EVT_AUI_PANE_CLOSE(func)}
873 Triggered when a docked or floating pane is closed.
874 @event{EVT_AUI_PANE_MAXIMIZE(func)}
875 Triggered when a pane is maximized.
876 @event{EVT_AUI_PANE_RESTORE(func)}
877 Triggered when a pane is restored.
3a1ec1d5
VZ
878 @event{EVT_AUI_PANE_ACTIVATED(func)}
879 Triggered when a pane is made 'active'. This event is new since
880 wxWidgets 2.9.4.
9ccf8289
FM
881 @event{EVT_AUI_RENDER(func)}
882 This event can be caught to override the default renderer in order to
883 custom draw your wxAuiManager window (not recommended).
884 @endEventTable
3a1ec1d5 885
ea6e8ec5
BP
886 @library{wxaui}
887 @category{events,aui}
888
889 @see wxAuiManager, wxAuiPaneInfo
890*/
891class wxAuiManagerEvent : public wxEvent
892{
893public:
894 /**
895 Constructor.
896 */
897 wxAuiManagerEvent(wxEventType type = wxEVT_NULL);
898
899 /**
900 @return @true if this event can be vetoed.
901
902 @see Veto()
903 */
904 bool CanVeto();
905
906 /**
907 @return The ID of the button that was clicked.
908 */
909 int GetButton();
910
911 /**
912 @todo What is this?
913 */
914 wxDC* GetDC();
915
916 /**
917 @return @true if this event was vetoed.
918
919 @see Veto()
920 */
921 bool GetVeto();
922
923 /**
924 @return The wxAuiManager this event is associated with.
925 */
926 wxAuiManager* GetManager();
927
928 /**
929 @return The pane this event is associated with.
930 */
931 wxAuiPaneInfo* GetPane();
932
933 /**
934 Sets the ID of the button clicked that triggered this event.
935 */
936 void SetButton(int button);
937
938 /**
939 Sets whether or not this event can be vetoed.
940 */
941 void SetCanVeto(bool can_veto);
942
943 /**
944 @todo What is this?
945 */
946 void SetDC(wxDC* pdc);
947
948 /**
949 Sets the wxAuiManager this event is associated with.
950 */
951 void SetManager(wxAuiManager* manager);
952
953 /**
954 Sets the pane this event is associated with.
955 */
956 void SetPane(wxAuiPaneInfo* pane);
957
958 /**
959 Cancels the action indicated by this event if CanVeto() is @true.
960 */
961 void Veto(bool veto = true);
962};
963