]>
git.saurik.com Git - wxWidgets.git/blob - interface/aui/aui.h
1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxAuiManager
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
11 @headerfile aui.h wx/aui/aui.h
13 wxAuiManager is the central class of the wxAUI class framework.
15 See also @ref overview_wxauioverview.
17 wxAuiManager manages the panes associated with it
18 for a particular wxFrame, using a pane's wxAuiPaneInfo information to
19 determine each pane's docking and floating behavior. wxAuiManager
20 uses wxWidgets' sizer mechanism to plan the layout of each frame. It
21 uses a replaceable dock art class to do all drawing, so all drawing is
22 localized in one area, and may be customized depending on an
23 application's specific needs.
25 wxAuiManager works as follows: the programmer adds panes to the class,
26 or makes changes to existing pane properties (dock position, floating
27 state, show state, etc.). To apply these changes, wxAuiManager's
28 Update() function is called. This batch processing can be used to avoid
29 flicker, by modifying more than one pane at a time, and then "committing"
30 all of the changes at once by calling Update().
32 Panes can be added quite easily:
35 wxTextCtrl* text1 = new wxTextCtrl(this, -1);
36 wxTextCtrl* text2 = new wxTextCtrl(this, -1);
37 m_mgr.AddPane(text1, wxLEFT, wxT("Pane Caption"));
38 m_mgr.AddPane(text2, wxBOTTOM, wxT("Pane Caption"));
42 Later on, the positions can be modified easily. The following will float
43 an existing pane in a tool window:
46 m_mgr.GetPane(text1).Float();
52 @see wxAuiPaneInfo, wxAuiDockArt
54 class wxAuiManager
: public wxEvtHandler
58 Constructor. @a managed_wnd specifies the wxFrame which should be managed.
59 @a flags specifies options which allow the frame management behavior
62 wxAuiManager ( wxWindow
* managed_wnd
= NULL
,
63 unsigned int flags
= wxAUI_MGR_DEFAULT
);
72 AddPane() tells the frame manager to start managing a child window. There are
73 several versions of this function. The first version allows the full spectrum of pane parameter possibilities. The second version is used for simpler user interfaces which do not require as much configuration. The last version allows a drop position to be specified, which will determine where the pane will be added.
75 bool AddPane ( wxWindow
* window
, const wxAuiPaneInfo
& pane_info
);
76 bool AddPane ( wxWindow
* window
, int direction
= wxLEFT
,
77 const wxString
& caption
= wxEmptyString
);
78 bool AddPane ( wxWindow
* window
,
79 const wxAuiPaneInfo
& pane_info
,
80 const wxPoint
& drop_pos
);
84 Tells the wxAuiManager to stop managing the pane specified by window.
85 The window, if in a floated frame, is reparented to the frame managed
88 bool DetachPane ( wxWindow
* window
);
91 Returns an array of all panes managed by the frame manager.
93 wxAuiPaneInfoArray
GetAllPanes ();
96 Returns the current art provider being used.
97 See also: wxAuiDockArt.
99 wxAuiDockArt
* GetArtProvider () const ;
102 Returns the current dock constraint values. See SetDockSizeConstraint() for
105 void GetDockSizeConstraint ( double * widthpct
, double * heightpct
);
108 Returns the current manager's flags.
110 unsigned int GetFlags () const ;
113 Returns the frame currently being managed by wxAuiManager.
115 wxWindow
* GetManagedWindow () const ;
118 Calling this method will return the wxAuiManager for a given window. The @a
119 window parameter should
120 specify any child window or sub-child window of the frame or window managed by
122 The @a window parameter need not be managed by the manager itself, nor does it
123 even need to be a child
124 or sub-child of a managed window. It must however be inside the window
125 hierarchy underneath the managed
128 static wxAuiManager
* GetManager ( wxWindow
* window
);
132 @e GetPane is used to lookup a wxAuiPaneInfo object
133 either by window pointer or by pane name, which acts as a unique id for
134 a window pane. The returned wxAuiPaneInfo object may then be modified to
135 change a pane's look, state or position. After one or more
136 modifications to wxAuiPaneInfo, wxAuiManager::Update() should be called
137 to commit the changes to the user interface. If the lookup failed
138 (meaning the pane could not be found in the manager), a call to the
139 returned wxAuiPaneInfo's IsOk() method will return @false.
141 wxAuiPaneInfo
GetPane ( wxWindow
* window
);
142 wxAuiPaneInfo
GetPane ( const wxString
& name
);
146 HideHint() hides any docking hint that may be visible.
151 This method is used to insert either a previously unmanaged pane window
152 into the frame manager, or to insert a currently managed pane somewhere
153 else. @e InsertPane will push all panes, rows, or docks aside and
154 insert the window into the position specified by @e insert_location.
155 Because @a insert_location can specify either a pane, dock row, or dock
156 layer, the @a insert_level parameter is used to disambiguate this. The
157 parameter @a insert_level can take a value of wxAUI_INSERT_PANE,
159 or wxAUI_INSERT_DOCK.
161 bool InsertPane ( wxWindow
* window
,
162 const wxAuiPaneInfo
& insert_location
,
163 int insert_level
= wxAUI_INSERT_PANE
);
166 LoadPaneInfo() is similar to to LoadPerspective, with the exception that it
167 only loads information about a single pane. It is used in combination with SavePaneInfo().
169 void LoadPaneInfo ( wxString pane_part
, wxAuiPaneInfo
& pane
);
172 Loads a saved perspective. If update is @true, wxAuiManager::Update()
173 is automatically invoked, thus realizing the saved perspective on screen.
175 bool LoadPerspective ( const wxString
& perspective
,
179 ProcessDockResult() is a protected member of the wxAUI layout manager. It can
180 be overridden by derived classes to provide custom docking calculations.
182 bool ProcessDockResult ( wxAuiPaneInfo
& target
,
183 const wxAuiPaneInfo
& new_pos
);
186 SavePaneInfo() is similar to SavePerspective, with the exception that it only
187 saves information about a single pane. It is used in combination with LoadPaneInfo().
189 wxString
SavePaneInfo ( wxAuiPaneInfo
& pane
);
192 Saves the entire user interface layout into an encoded wxString, which
193 can then be stored by the application (probably using wxConfig). When
194 a perspective is restored using LoadPerspective(), the entire user
195 interface will return to the state it was when the perspective was saved.
197 wxString
SavePerspective ();
200 Instructs wxAuiManager to use art provider specified by parameter
201 @a art_provider for all drawing calls. This allows plugable
202 look-and-feel features. The previous art provider object, if any,
203 will be deleted by wxAuiManager.
204 See also: wxAuiDockArt.
206 void SetArtProvider ( wxAuiDockArt
* art_provider
);
209 When a user creates a new dock by dragging a window into a docked position,
210 often times the large size of the
211 window will create a dock that is unwieldly large. wxAuiManager by default
212 limits the size of any
213 new dock to 1/3 of the window size. For horizontal docks, this would be 1/3 of
214 the window height. For
215 vertical docks, 1/3 of the width. Calling this function will adjust this
216 constraint value. The numbers
217 must be between 0.0 and 1.0. For instance, calling SetDockSizeContraint with
218 0.5, 0.5 will cause new
219 docks to be limited to half of the size of the entire managed window.
221 void SetDockSizeConstraint ( double widthpct
, double heightpct
);
224 This method is used to specify wxAuiManager's settings flags. @e flags
225 specifies options which allow the frame management behavior to be modified.
227 void SetFlags ( unsigned int flags
);
230 Called to specify the frame or window which is to be managed by wxAuiManager.
231 Frame management is not restricted to just frames. Child windows or custom controls are also allowed.
233 void SetManagedWindow ( wxWindow
* managed_wnd
);
236 This function is used by controls to explicitly show a hint window at the
237 specified rectangle. It is rarely called, and is mostly used by controls implementing custom pane drag/drop behaviour. The specified rectangle should be in screen coordinates.
239 void ShowHint ( const wxRect
& rect
);
242 Uninitializes the framework and should be called before a managed frame or
243 window is destroyed. UnInit() is usually called in the managed wxFrame's destructor. It is necessary to call this function before the managed frame or window is destroyed, otherwise the manager cannot remove its custom event handlers from a window.
248 This method is called after any number of changes are
249 made to any of the managed panes. Update() must be invoked after
250 AddPane() or InsertPane() are called in order to "realize" or "commit"
251 the changes. In addition, any number of changes may be made to
252 wxAuiPaneInfo structures (retrieved with wxAuiManager::GetPane), but to
253 realize the changes, Update() must be called. This construction allows
254 pane flicker to be avoided by updating the whole layout at one time.
263 @headerfile aui.h wx/aui/aui.h
265 wxAuiPaneInfo is part of the wxAUI class framework.
266 See also @ref overview_wxauioverview.
268 wxAuiPaneInfo specifies all the parameters for a pane.
269 These parameters specify where the pane is on the
270 screen, whether it is docked or floating, or hidden.
271 In addition, these parameters specify the pane's
272 docked position, floating position, preferred size,
273 minimum size, caption text among many other parameters.
278 @see wxAuiManager, wxAuiDockArt
288 wxAuiPaneInfo ( const wxAuiPaneInfo
& c
);
293 BestSize() sets the ideal size for the pane. The docking manager will attempt
294 to use this size as much as possible when docking or floating the pane.
296 wxAuiPaneInfo
BestSize ( const wxSize
& size
);
297 wxAuiPaneInfo
BestSize ( int x
, int y
);
301 Bottom() sets the pane dock position to the bottom side of the frame. This is
302 the same thing as calling Direction(wxAUI_DOCK_BOTTOM).
304 wxAuiPaneInfo
Bottom ();
307 BottomDockable() indicates whether a pane can be docked at the bottom of the
310 wxAuiPaneInfo
BottomDockable ( bool b
= true );
313 Caption() sets the caption of the pane.
315 wxAuiPaneInfo
Caption ( const wxString
& c
);
318 CaptionVisible indicates that a pane caption should be visible. If @false, no
319 pane caption is drawn.
321 wxAuiPaneInfo
CaptionVisible ( bool visible
= true );
325 Center() sets the pane dock position to the left side of the frame.
326 The centre pane is the space in the middle after all border panes (left, top,
327 right, bottom) are subtracted from the layout.
328 This is the same thing as calling Direction(wxAUI_DOCK_CENTRE).
330 wxAuiPaneInfo
Centre ();
331 wxAuiPaneInfo
Center ();
336 CentrePane() specifies that the pane should adopt the default center pane
337 settings. Centre panes usually do not have caption bars. This function provides an easy way of preparing a pane to be displayed in the center dock position.
339 wxAuiPaneInfo
CentrePane ();
340 wxAuiPaneInfo
CenterPane ();
344 CloseButton() indicates that a close button should be drawn for the pane.
346 wxAuiPaneInfo
CloseButton ( bool visible
= true );
349 DefaultPane() specifies that the pane should adopt the default pane settings.
351 wxAuiPaneInfo
DefaultPane ();
354 DestroyOnClose() indicates whether a pane should be detroyed when it is closed.
355 Normally a pane is simply hidden when the close button is clicked. Setting DestroyOnClose to @true will cause the window to be destroyed when the user clicks the pane's close button.
357 wxAuiPaneInfo
DestroyOnClose ( bool b
= true );
360 Direction() determines the direction of the docked pane. It is functionally the
361 same as calling Left(), Right(), Top() or Bottom(), except that docking direction may be specified programmatically via the parameter.
363 wxAuiPaneInfo
Direction ( int direction
);
366 Dock() indicates that a pane should be docked. It is the opposite of Float().
368 wxAuiPaneInfo
Dock ();
371 DockFixed() causes the containing dock to have no resize sash. This is useful
372 for creating panes that span the entire width or height of a dock, but should not be resizable in the other direction.
374 wxAuiPaneInfo
DockFixed ( bool b
= true );
377 Dockable() specifies whether a frame can be docked or not. It is the same as
378 specifying TopDockable(b).BottomDockable(b).LeftDockable(b).RightDockable(b).
380 wxAuiPaneInfo
Dockable ( bool b
= true );
383 Fixed() forces a pane to be fixed size so that it cannot be resized. After
384 calling Fixed(), IsFixed() will return @true.
386 wxAuiPaneInfo
Fixed ();
389 Float() indicates that a pane should be floated. It is the opposite of Dock().
391 wxAuiPaneInfo
Float ();
394 Floatable() sets whether the user will be able to undock a pane and turn it
395 into a floating window.
397 wxAuiPaneInfo
Floatable ( bool b
= true );
401 FloatingPosition() sets the position of the floating pane.
403 wxAuiPaneInfo
FloatingPosition ( const wxPoint
& pos
);
404 wxAuiPaneInfo
FloatingPosition ( int x
, int y
);
409 FloatingSize() sets the size of the floating pane.
411 wxAuiPaneInfo
FloatingSize ( const wxSize
& size
);
412 wxAuiPaneInfo
FloatingSize ( int x
, int y
);
416 Gripper() indicates that a gripper should be drawn for the pane.
418 wxAuiPaneInfo
Gripper ( bool visible
= true );
421 GripperTop() indicates that a gripper should be drawn at the top of the pane.
423 wxAuiPaneInfo
GripperTop ( bool attop
= true );
426 HasBorder() returns @true if the pane displays a border.
428 bool HasBorder () const ;
431 HasCaption() returns @true if the pane displays a caption.
433 bool HasCaption () const ;
436 HasCloseButton() returns @true if the pane displays a button to close the pane.
438 bool HasCloseButton () const ;
441 HasFlag() returns @true if the the property specified by flag is active for the
444 bool HasFlag ( unsigned int flag
) const ;
447 HasGripper() returns @true if the pane displays a gripper.
449 bool HasGripper () const ;
452 HasGripper() returns @true if the pane displays a gripper at the top.
454 bool HasGripperTop () const ;
457 HasMaximizeButton() returns @true if the pane displays a button to maximize the
460 bool HasMaximizeButton () const ;
463 HasMinimizeButton() returns @true if the pane displays a button to minimize the
466 bool HasMinimizeButton () const ;
469 HasPinButton() returns @true if the pane displays a button to float the pane.
471 bool HasPinButton () const ;
474 Hide() indicates that a pane should be hidden.
476 wxAuiPaneInfo
Hide ();
479 IsBottomDockable() returns @true if the pane can be docked at the bottom of the
482 bool IsBottomDockable () const ;
485 IsDocked() returns @true if the pane is docked.
487 bool IsDocked () const ;
490 IsFixed() returns @true if the pane cannot be resized.
492 bool IsFixed () const ;
495 IsFloatable() returns @true if the pane can be undocked and displayed as a
498 bool IsFloatable () const ;
501 IsFloating() returns @true if the pane is floating.
503 bool IsFloating () const ;
506 IsLeftDockable() returns @true if the pane can be docked on the left of the
509 bool IsLeftDockable () const ;
512 IsMoveable() returns @true if the docked frame can be undocked or moved to
513 another dock position.
515 bool IsMovable () const ;
518 IsOk() returns @true if the wxAuiPaneInfo structure is valid. A pane structure
519 is valid if it has an associated window.
524 IsResizable() returns @true if the pane can be resized.
526 bool IsResizable () const ;
529 IsRightDockable() returns @true if the pane can be docked on the right of the
532 bool IsRightDockable () const ;
535 IsShown() returns @true if the pane is currently shown.
537 bool IsShown () const ;
540 IsToolbar() returns @true if the pane contains a toolbar.
542 bool IsToolbar () const ;
545 IsTopDockable() returns @true if the pane can be docked at the top of the
548 bool IsTopDockable () const ;
551 Layer() determines the layer of the docked pane. The dock layer is similar to
552 an onion, the inner-most layer being layer 0. Each shell moving in the outward direction has a higher layer number. This allows for more complex docking layout formation.
554 wxAuiPaneInfo
Layer ( int layer
);
557 Left() sets the pane dock position to the left side of the frame. This is the
558 same thing as calling Direction(wxAUI_DOCK_LEFT).
560 wxAuiPaneInfo
Left ();
563 LeftDockable() indicates whether a pane can be docked on the left of the frame.
565 wxAuiPaneInfo
LeftDockable ( bool b
= true );
569 MaxSize() sets the maximum size of the pane.
571 wxAuiPaneInfo
MaxSize ( const wxSize
& size
);
572 wxAuiPaneInfo
MaxSize ( int x
, int y
);
576 MaximizeButton() indicates that a maximize button should be drawn for the pane.
578 wxAuiPaneInfo
MaximizeButton ( bool visible
= true );
582 MinSize() sets the minimum size of the pane. Please note that this is only
583 partially supported as of this writing.
585 wxAuiPaneInfo
MinSize ( const wxSize
& size
);
586 wxAuiPaneInfo
MinSize ( int x
, int y
);
590 MinimizeButton() indicates that a minimize button should be drawn for the pane.
592 wxAuiPaneInfo
MinimizeButton ( bool visible
= true );
595 Movable indicates whether a frame can be moved.
597 wxAuiPaneInfo
Movable ( bool b
= true );
600 Name() sets the name of the pane so it can be referenced in lookup functions.
601 If a name is not specified by the user, a random name is assigned to the pane when it is added to the manager.
603 wxAuiPaneInfo
Name ( const wxString
& n
);
606 PaneBorder indicates that a border should be drawn for the pane.
608 wxAuiPaneInfo
PaneBorder ( bool visible
= true );
611 PinButton() indicates that a pin button should be drawn for the pane.
613 wxAuiPaneInfo
PinButton ( bool visible
= true );
616 Position() determines the position of the docked pane.
618 wxAuiPaneInfo
Position ( int pos
);
621 Resizable() allows a pane to be resized if the parameter is @true, and forces it
622 to be a fixed size if the parameter is @false. This is simply an antonym for Fixed().
624 wxAuiPaneInfo
Resizable ( bool resizable
= true );
627 Right() sets the pane dock position to the right side of the frame.
629 wxAuiPaneInfo
Right ();
632 RightDockable() indicates whether a pane can be docked on the right of the
635 wxAuiPaneInfo
RightDockable ( bool b
= true );
638 Row() determines the row of the docked pane.
640 wxAuiPaneInfo
Row ( int row
);
643 Write the safe parts of a newly loaded PaneInfo structure "source" into "this"
644 used on loading perspectives etc.
646 void SafeSet ( wxAuiPaneInfo source
);
649 SetFlag() turns the property given by flag on or off with the option_state
652 wxAuiPaneInfo
SetFlag ( unsigned int flag
, bool option_state
);
655 Show() indicates that a pane should be shown.
657 wxAuiPaneInfo
Show ( bool show
= true );
660 ToolbarPane() specifies that the pane should adopt the default toolbar pane
663 wxAuiPaneInfo
ToolbarPane ();
666 Top() sets the pane dock position to the top of the frame.
671 TopDockable() indicates whether a pane can be docked at the top of the frame.
673 wxAuiPaneInfo
TopDockable ( bool b
= true );
676 Window() assigns the window pointer that the wxAuiPaneInfo should use. This
677 normally does not need to be specified, as the window pointer is automatically assigned to the wxAuiPaneInfo structure as soon as it is added to the manager.
679 wxAuiPaneInfo
Window ( wxWindow
* w
);
682 Makes a copy of the wxAuiPaneInfo object.
684 wxAuiPaneInfo
& operator operator =( const wxAuiPaneInfo
& c
);