1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: wx/aui/framemanager.h
3 // Purpose: wxaui: wx advanced user interface - docking window manager
4 // Author: Benjamin I. Williams
8 // Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
9 // Licence: wxWindows Library Licence, Version 3.1
10 ///////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_FRAMEMANAGER_H_
13 #define _WX_FRAMEMANAGER_H_
15 // ----------------------------------------------------------------------------
17 // ----------------------------------------------------------------------------
23 #include "wx/dynarray.h"
24 #include "wx/gdicmn.h"
25 #include "wx/window.h"
34 wxAUI_DOCK_BOTTOM
= 3,
36 wxAUI_DOCK_CENTER
= 5,
37 wxAUI_DOCK_CENTRE
= wxAUI_DOCK_CENTER
40 enum wxAuiManagerOption
42 wxAUI_MGR_ALLOW_FLOATING
= 1 << 0,
43 wxAUI_MGR_ALLOW_ACTIVE_PANE
= 1 << 1,
44 wxAUI_MGR_TRANSPARENT_DRAG
= 1 << 2,
45 wxAUI_MGR_TRANSPARENT_HINT
= 1 << 3,
46 wxAUI_MGR_VENETIAN_BLINDS_HINT
= 1 << 4,
47 wxAUI_MGR_RECTANGLE_HINT
= 1 << 5,
48 wxAUI_MGR_HINT_FADE
= 1 << 6,
49 wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
= 1 << 7,
51 wxAUI_MGR_DEFAULT
= wxAUI_MGR_ALLOW_FLOATING
|
52 wxAUI_MGR_TRANSPARENT_HINT
|
54 wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
58 enum wxAuiPaneDockArtSetting
60 wxAUI_ART_SASH_SIZE
= 0,
61 wxAUI_ART_CAPTION_SIZE
= 1,
62 wxAUI_ART_GRIPPER_SIZE
= 2,
63 wxAUI_ART_PANE_BORDER_SIZE
= 3,
64 wxAUI_ART_PANE_BUTTON_SIZE
= 4,
65 wxAUI_ART_BACKGROUND_COLOUR
= 5,
66 wxAUI_ART_SASH_COLOUR
= 6,
67 wxAUI_ART_ACTIVE_CAPTION_COLOUR
= 7,
68 wxAUI_ART_ACTIVE_CAPTION_GRADIENT_COLOUR
= 8,
69 wxAUI_ART_INACTIVE_CAPTION_COLOUR
= 9,
70 wxAUI_ART_INACTIVE_CAPTION_GRADIENT_COLOUR
= 10,
71 wxAUI_ART_ACTIVE_CAPTION_TEXT_COLOUR
= 11,
72 wxAUI_ART_INACTIVE_CAPTION_TEXT_COLOUR
= 12,
73 wxAUI_ART_BORDER_COLOUR
= 13,
74 wxAUI_ART_GRIPPER_COLOUR
= 14,
75 wxAUI_ART_CAPTION_FONT
= 15,
76 wxAUI_ART_GRADIENT_TYPE
= 16
79 enum wxAuiPaneDockArtGradients
81 wxAUI_GRADIENT_NONE
= 0,
82 wxAUI_GRADIENT_VERTICAL
= 1,
83 wxAUI_GRADIENT_HORIZONTAL
= 2
86 enum wxAuiPaneButtonState
88 wxAUI_BUTTON_STATE_NORMAL
= 0,
89 wxAUI_BUTTON_STATE_HOVER
= 1 << 1,
90 wxAUI_BUTTON_STATE_PRESSED
= 1 << 2,
91 wxAUI_BUTTON_STATE_DISABLED
= 1 << 3,
92 wxAUI_BUTTON_STATE_HIDDEN
= 1 << 4,
93 wxAUI_BUTTON_STATE_CHECKED
= 1 << 5
98 wxAUI_BUTTON_CLOSE
= 101,
99 wxAUI_BUTTON_MAXIMIZE_RESTORE
= 102,
100 wxAUI_BUTTON_MINIMIZE
= 103,
101 wxAUI_BUTTON_PIN
= 104,
102 wxAUI_BUTTON_OPTIONS
= 105,
103 wxAUI_BUTTON_WINDOWLIST
= 106,
104 wxAUI_BUTTON_LEFT
= 107,
105 wxAUI_BUTTON_RIGHT
= 108,
106 wxAUI_BUTTON_UP
= 109,
107 wxAUI_BUTTON_DOWN
= 110,
108 wxAUI_BUTTON_CUSTOM1
= 201,
109 wxAUI_BUTTON_CUSTOM2
= 202,
110 wxAUI_BUTTON_CUSTOM3
= 203
113 enum wxAuiPaneInsertLevel
115 wxAUI_INSERT_PANE
= 0,
116 wxAUI_INSERT_ROW
= 1,
117 wxAUI_INSERT_DOCK
= 2
123 // forwards and array declarations
124 class wxAuiDockUIPart
;
125 class wxAuiPaneButton
;
129 class wxAuiManagerEvent
;
132 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockInfo
, wxAuiDockInfoArray
, WXDLLIMPEXP_AUI
);
133 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockUIPart
, wxAuiDockUIPartArray
, WXDLLIMPEXP_AUI
);
134 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneButton
, wxAuiPaneButtonArray
, WXDLLIMPEXP_AUI
);
135 WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneInfo
, wxAuiPaneInfoArray
, WXDLLIMPEXP_AUI
);
136 WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiPaneInfo
*, wxAuiPaneInfoPtrArray
, class WXDLLIMPEXP_AUI
);
137 WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiDockInfo
*, wxAuiDockInfoPtrArray
, class WXDLLIMPEXP_AUI
);
140 extern WXDLLIMPEXP_AUI wxAuiDockInfo wxAuiNullDockInfo
;
141 extern WXDLLIMPEXP_AUI wxAuiPaneInfo wxAuiNullPaneInfo
;
145 class WXDLLIMPEXP_AUI wxAuiPaneInfo
154 dock_direction
= wxAUI_DOCK_LEFT
;
158 floating_pos
= wxDefaultPosition
;
159 floating_size
= wxDefaultSize
;
160 best_size
= wxDefaultSize
;
161 min_size
= wxDefaultSize
;
162 max_size
= wxDefaultSize
;
171 wxAuiPaneInfo(const wxAuiPaneInfo
& c
)
178 dock_direction
= c
.dock_direction
;
179 dock_layer
= c
.dock_layer
;
180 dock_row
= c
.dock_row
;
181 dock_pos
= c
.dock_pos
;
182 best_size
= c
.best_size
;
183 min_size
= c
.min_size
;
184 max_size
= c
.max_size
;
185 floating_pos
= c
.floating_pos
;
186 floating_size
= c
.floating_size
;
187 dock_proportion
= c
.dock_proportion
;
192 wxAuiPaneInfo
& operator=(const wxAuiPaneInfo
& c
)
199 dock_direction
= c
.dock_direction
;
200 dock_layer
= c
.dock_layer
;
201 dock_row
= c
.dock_row
;
202 dock_pos
= c
.dock_pos
;
203 best_size
= c
.best_size
;
204 min_size
= c
.min_size
;
205 max_size
= c
.max_size
;
206 floating_pos
= c
.floating_pos
;
207 floating_size
= c
.floating_size
;
208 dock_proportion
= c
.dock_proportion
;
215 // Write the safe parts of a newly loaded PaneInfo structure "source" into "this"
216 // used on loading perspectives etc.
217 void SafeSet(wxAuiPaneInfo source
)
219 // note source is not passed by reference so we can overwrite, to keep the
220 // unsafe bits of "dest"
221 source
.window
= window
;
222 source
.frame
= frame
;
223 source
.buttons
= buttons
;
228 bool IsOk() const { return (window
!= NULL
) ? true : false; }
229 bool IsFixed() const { return !HasFlag(optionResizable
); }
230 bool IsResizable() const { return HasFlag(optionResizable
); }
231 bool IsShown() const { return !HasFlag(optionHidden
); }
232 bool IsFloating() const { return HasFlag(optionFloating
); }
233 bool IsDocked() const { return !HasFlag(optionFloating
); }
234 bool IsToolbar() const { return HasFlag(optionToolbar
); }
235 bool IsTopDockable() const { return HasFlag(optionTopDockable
); }
236 bool IsBottomDockable() const { return HasFlag(optionBottomDockable
); }
237 bool IsLeftDockable() const { return HasFlag(optionLeftDockable
); }
238 bool IsRightDockable() const { return HasFlag(optionRightDockable
); }
239 bool IsFloatable() const { return HasFlag(optionFloatable
); }
240 bool IsMovable() const { return HasFlag(optionMovable
); }
241 bool IsDestroyOnClose() const { return HasFlag(optionDestroyOnClose
); }
242 bool IsMaximized() const { return HasFlag(optionMaximized
); }
243 bool HasCaption() const { return HasFlag(optionCaption
); }
244 bool HasGripper() const { return HasFlag(optionGripper
); }
245 bool HasBorder() const { return HasFlag(optionPaneBorder
); }
246 bool HasCloseButton() const { return HasFlag(buttonClose
); }
247 bool HasMaximizeButton() const { return HasFlag(buttonMaximize
); }
248 bool HasMinimizeButton() const { return HasFlag(buttonMinimize
); }
249 bool HasPinButton() const { return HasFlag(buttonPin
); }
250 bool HasGripperTop() const { return HasFlag(optionGripperTop
); }
253 %typemap
(out
) wxAuiPaneInfo
& { $result
= $self
; Py_INCREF($result
); }
255 wxAuiPaneInfo
& Window(wxWindow
* w
) { window
= w
; return *this; }
256 wxAuiPaneInfo
& Name(const wxString
& n
) { name
= n
; return *this; }
257 wxAuiPaneInfo
& Caption(const wxString
& c
) { caption
= c
; return *this; }
258 wxAuiPaneInfo
& Left() { dock_direction
= wxAUI_DOCK_LEFT
; return *this; }
259 wxAuiPaneInfo
& Right() { dock_direction
= wxAUI_DOCK_RIGHT
; return *this; }
260 wxAuiPaneInfo
& Top() { dock_direction
= wxAUI_DOCK_TOP
; return *this; }
261 wxAuiPaneInfo
& Bottom() { dock_direction
= wxAUI_DOCK_BOTTOM
; return *this; }
262 wxAuiPaneInfo
& Center() { dock_direction
= wxAUI_DOCK_CENTER
; return *this; }
263 wxAuiPaneInfo
& Centre() { dock_direction
= wxAUI_DOCK_CENTRE
; return *this; }
264 wxAuiPaneInfo
& Direction(int direction
) { dock_direction
= direction
; return *this; }
265 wxAuiPaneInfo
& Layer(int layer
) { dock_layer
= layer
; return *this; }
266 wxAuiPaneInfo
& Row(int row
) { dock_row
= row
; return *this; }
267 wxAuiPaneInfo
& Position(int pos
) { dock_pos
= pos
; return *this; }
268 wxAuiPaneInfo
& BestSize(const wxSize
& size
) { best_size
= size
; return *this; }
269 wxAuiPaneInfo
& MinSize(const wxSize
& size
) { min_size
= size
; return *this; }
270 wxAuiPaneInfo
& MaxSize(const wxSize
& size
) { max_size
= size
; return *this; }
271 wxAuiPaneInfo
& BestSize(int x
, int y
) { best_size
.Set(x
,y
); return *this; }
272 wxAuiPaneInfo
& MinSize(int x
, int y
) { min_size
.Set(x
,y
); return *this; }
273 wxAuiPaneInfo
& MaxSize(int x
, int y
) { max_size
.Set(x
,y
); return *this; }
274 wxAuiPaneInfo
& FloatingPosition(const wxPoint
& pos
) { floating_pos
= pos
; return *this; }
275 wxAuiPaneInfo
& FloatingPosition(int x
, int y
) { floating_pos
.x
= x
; floating_pos
.y
= y
; return *this; }
276 wxAuiPaneInfo
& FloatingSize(const wxSize
& size
) { floating_size
= size
; return *this; }
277 wxAuiPaneInfo
& FloatingSize(int x
, int y
) { floating_size
.Set(x
,y
); return *this; }
278 wxAuiPaneInfo
& Fixed() { return SetFlag(optionResizable
, false); }
279 wxAuiPaneInfo
& Resizable(bool resizable
= true) { return SetFlag(optionResizable
, resizable
); }
280 wxAuiPaneInfo
& Dock() { return SetFlag(optionFloating
, false); }
281 wxAuiPaneInfo
& Float() { return SetFlag(optionFloating
, true); }
282 wxAuiPaneInfo
& Hide() { return SetFlag(optionHidden
, true); }
283 wxAuiPaneInfo
& Show(bool show
= true) { return SetFlag(optionHidden
, !show
); }
284 wxAuiPaneInfo
& CaptionVisible(bool visible
= true) { return SetFlag(optionCaption
, visible
); }
285 wxAuiPaneInfo
& Maximize() { return SetFlag(optionMaximized
, true); }
286 wxAuiPaneInfo
& Restore() { return SetFlag(optionMaximized
, false); }
287 wxAuiPaneInfo
& PaneBorder(bool visible
= true) { return SetFlag(optionPaneBorder
, visible
); }
288 wxAuiPaneInfo
& Gripper(bool visible
= true) { return SetFlag(optionGripper
, visible
); }
289 wxAuiPaneInfo
& GripperTop(bool attop
= true) { return SetFlag(optionGripperTop
, attop
); }
290 wxAuiPaneInfo
& CloseButton(bool visible
= true) { return SetFlag(buttonClose
, visible
); }
291 wxAuiPaneInfo
& MaximizeButton(bool visible
= true) { return SetFlag(buttonMaximize
, visible
); }
292 wxAuiPaneInfo
& MinimizeButton(bool visible
= true) { return SetFlag(buttonMinimize
, visible
); }
293 wxAuiPaneInfo
& PinButton(bool visible
= true) { return SetFlag(buttonPin
, visible
); }
294 wxAuiPaneInfo
& DestroyOnClose(bool b
= true) { return SetFlag(optionDestroyOnClose
, b
); }
295 wxAuiPaneInfo
& TopDockable(bool b
= true) { return SetFlag(optionTopDockable
, b
); }
296 wxAuiPaneInfo
& BottomDockable(bool b
= true) { return SetFlag(optionBottomDockable
, b
); }
297 wxAuiPaneInfo
& LeftDockable(bool b
= true) { return SetFlag(optionLeftDockable
, b
); }
298 wxAuiPaneInfo
& RightDockable(bool b
= true) { return SetFlag(optionRightDockable
, b
); }
299 wxAuiPaneInfo
& Floatable(bool b
= true) { return SetFlag(optionFloatable
, b
); }
300 wxAuiPaneInfo
& Movable(bool b
= true) { return SetFlag(optionMovable
, b
); }
302 wxAuiPaneInfo
& SaveHidden() { return SetFlag(optionSavedHidden
, HasFlag(optionHidden
)); }
303 wxAuiPaneInfo
& RestoreHidden() { return SetFlag(optionHidden
, HasFlag(optionSavedHidden
)); }
305 wxAuiPaneInfo
& Dockable(bool b
= true)
307 return TopDockable(b
).BottomDockable(b
).LeftDockable(b
).RightDockable(b
);
310 wxAuiPaneInfo
& DefaultPane()
312 state
|= optionTopDockable
| optionBottomDockable
|
313 optionLeftDockable
| optionRightDockable
|
314 optionFloatable
| optionMovable
| optionResizable
|
315 optionCaption
| optionPaneBorder
| buttonClose
;
319 wxAuiPaneInfo
& CentrePane() { return CenterPane(); }
320 wxAuiPaneInfo
& CenterPane()
323 return Center().PaneBorder().Resizable();
326 wxAuiPaneInfo
& ToolbarPane()
329 state
|= (optionToolbar
| optionGripper
);
330 state
&= ~(optionResizable
| optionCaption
);
336 wxAuiPaneInfo
& SetFlag(unsigned int flag
, bool option_state
)
345 bool HasFlag(unsigned int flag
) const
347 return (state
& flag
) ? true:false;
351 %typemap
(out
) wxAuiPaneInfo
& ;
358 optionFloating
= 1 << 0,
359 optionHidden
= 1 << 1,
360 optionLeftDockable
= 1 << 2,
361 optionRightDockable
= 1 << 3,
362 optionTopDockable
= 1 << 4,
363 optionBottomDockable
= 1 << 5,
364 optionFloatable
= 1 << 6,
365 optionMovable
= 1 << 7,
366 optionResizable
= 1 << 8,
367 optionPaneBorder
= 1 << 9,
368 optionCaption
= 1 << 10,
369 optionGripper
= 1 << 11,
370 optionDestroyOnClose
= 1 << 12,
371 optionToolbar
= 1 << 13,
372 optionActive
= 1 << 14,
373 optionGripperTop
= 1 << 15,
374 optionMaximized
= 1 << 16,
375 optionSavedHidden
= 1 << 17,
377 buttonClose
= 1 << 24,
378 buttonMaximize
= 1 << 25,
379 buttonMinimize
= 1 << 26,
381 buttonCustom1
= 1 << 28,
382 buttonCustom2
= 1 << 29,
383 buttonCustom3
= 1 << 30,
384 actionPane
= 1 << 31 // used internally
388 wxString name
; // name of the pane
389 wxString caption
; // caption displayed on the window
391 wxWindow
* window
; // window that is in this pane
392 wxFrame
* frame
; // floating frame window that holds the pane
393 unsigned int state
; // a combination of wxPaneState values
395 int dock_direction
; // dock direction (top, bottom, left, right, center)
396 int dock_layer
; // layer number (0 = innermost layer)
397 int dock_row
; // row number on the docking bar (0 = first row)
398 int dock_pos
; // position inside the row (0 = first position)
400 wxSize best_size
; // size that the layout engine will prefer
401 wxSize min_size
; // minimum size the pane window can tolerate
402 wxSize max_size
; // maximum size the pane window can tolerate
404 wxPoint floating_pos
; // position while floating
405 wxSize floating_size
; // size while floating
406 int dock_proportion
; // proportion while docked
408 wxAuiPaneButtonArray buttons
; // buttons on the pane
410 wxRect rect
; // current rectangle (populated by wxAUI)
415 class WXDLLIMPEXP_AUI wxAuiFloatingFrame
;
417 class WXDLLIMPEXP_AUI wxAuiManager
: public wxEvtHandler
419 friend class wxAuiFloatingFrame
;
423 wxAuiManager(wxWindow
* managed_wnd
= NULL
,
424 unsigned int flags
= wxAUI_MGR_DEFAULT
);
425 virtual ~wxAuiManager();
428 void SetFlags(unsigned int flags
);
429 unsigned int GetFlags() const;
431 void SetManagedWindow(wxWindow
* managed_wnd
);
432 wxWindow
* GetManagedWindow() const;
435 %disownarg
( wxAuiDockArt
* art_provider
);
437 void SetArtProvider(wxAuiDockArt
* art_provider
);
438 wxAuiDockArt
* GetArtProvider() const;
440 wxAuiPaneInfo
& GetPane(wxWindow
* window
);
441 wxAuiPaneInfo
& GetPane(const wxString
& name
);
442 wxAuiPaneInfoArray
& GetAllPanes();
444 bool AddPane(wxWindow
* window
,
445 const wxAuiPaneInfo
& pane_info
);
447 bool AddPane(wxWindow
* window
,
448 const wxAuiPaneInfo
& pane_info
,
449 const wxPoint
& drop_pos
);
451 bool AddPane(wxWindow
* window
,
452 int direction
= wxLEFT
,
453 const wxString
& caption
= wxEmptyString
);
455 bool InsertPane(wxWindow
* window
,
456 const wxAuiPaneInfo
& insert_location
,
457 int insert_level
= wxAUI_INSERT_PANE
);
459 bool DetachPane(wxWindow
* window
);
461 void ClosePane(wxAuiPaneInfo
& pane_info
);
462 void MaximizePane(wxAuiPaneInfo
& pane_info
);
463 void RestorePane(wxAuiPaneInfo
& pane_info
);
464 void RestoreMaximizedPane();
466 wxString
SavePaneInfo(wxAuiPaneInfo
& pane
);
467 void LoadPaneInfo(wxString pane_part
, wxAuiPaneInfo
&pane
);
469 wxString
SavePerspective();
471 bool LoadPerspective(const wxString
& perspective
,
478 virtual wxAuiFloatingFrame
* CreateFloatingFrame(wxWindow
* parent
, const wxAuiPaneInfo
& p
);
480 wxRect
CalculateHintRect(wxWindow
* pane_window
,
482 const wxPoint
& offset
);
484 void DrawHintRect(wxWindow
* pane_window
,
486 const wxPoint
& offset
);
488 virtual void ShowHint(const wxRect
& rect
);
489 virtual void HideHint();
493 // deprecated -- please use SetManagedWindow() and
494 // and GetManagedWindow() instead
496 wxDEPRECATED( void SetFrame(wxFrame
* frame
) );
497 wxDEPRECATED( wxFrame
* GetFrame() const );
501 void UpdateHintWindowConfig();
503 void DoFrameLayout();
505 void LayoutAddPane(wxSizer
* container
,
508 wxAuiDockUIPartArray
& uiparts
,
511 void LayoutAddDock(wxSizer
* container
,
513 wxAuiDockUIPartArray
& uiparts
,
516 wxSizer
* LayoutAll(wxAuiPaneInfoArray
& panes
,
517 wxAuiDockInfoArray
& docks
,
518 wxAuiDockUIPartArray
& uiparts
,
519 bool spacer_only
= false);
521 virtual bool ProcessDockResult(wxAuiPaneInfo
& target
,
522 const wxAuiPaneInfo
& new_pos
);
524 bool DoDrop(wxAuiDockInfoArray
& docks
,
525 wxAuiPaneInfoArray
& panes
,
528 const wxPoint
& action_offset
= wxPoint(0,0));
530 wxAuiPaneInfo
& LookupPane(wxWindow
* window
);
531 wxAuiPaneInfo
& LookupPane(const wxString
& name
);
532 wxAuiDockUIPart
* HitTest(int x
, int y
);
533 wxAuiDockUIPart
* GetPanePart(wxWindow
* pane
);
534 int GetDockPixelOffset(wxAuiPaneInfo
& test
);
535 void OnFloatingPaneMoveStart(wxWindow
* window
);
536 void OnFloatingPaneMoving(wxWindow
* window
, wxDirection dir
);
537 void OnFloatingPaneMoved(wxWindow
* window
, wxDirection dir
);
538 void OnFloatingPaneActivated(wxWindow
* window
);
539 void OnFloatingPaneClosed(wxWindow
* window
, wxCloseEvent
& evt
);
540 void OnFloatingPaneResized(wxWindow
* window
, const wxSize
& size
);
541 void Render(wxDC
* dc
);
542 void Repaint(wxDC
* dc
= NULL
);
543 void ProcessMgrEvent(wxAuiManagerEvent
& event
);
544 void UpdateButtonOnScreen(wxAuiDockUIPart
* button_ui_part
,
545 const wxMouseEvent
& event
);
546 void GetPanePositionsAndSizes(wxAuiDockInfo
& dock
,
547 wxArrayInt
& positions
,
553 // public events (which can be invoked externally)
554 void OnRender(wxAuiManagerEvent
& evt
);
555 void OnPaneButton(wxAuiManagerEvent
& evt
);
560 void OnPaint(wxPaintEvent
& evt
);
561 void OnEraseBackground(wxEraseEvent
& evt
);
562 void OnSize(wxSizeEvent
& evt
);
563 void OnSetCursor(wxSetCursorEvent
& evt
);
564 void OnLeftDown(wxMouseEvent
& evt
);
565 void OnLeftUp(wxMouseEvent
& evt
);
566 void OnMotion(wxMouseEvent
& evt
);
567 void OnLeaveWindow(wxMouseEvent
& evt
);
568 void OnChildFocus(wxChildFocusEvent
& evt
);
569 void OnHintFadeTimer(wxTimerEvent
& evt
);
579 actionDragToolbarPane
,
580 actionDragFloatingPane
585 wxWindow
* m_frame
; // the window being managed
586 wxAuiDockArt
* m_art
; // dock art object which does all drawing
587 unsigned int m_flags
; // manager flags wxAUI_MGR_*
589 wxAuiPaneInfoArray m_panes
; // array of panes structures
590 wxAuiDockInfoArray m_docks
; // array of docks structures
591 wxAuiDockUIPartArray m_uiparts
; // array of UI parts (captions, buttons, etc)
593 int m_action
; // current mouse action
594 wxPoint m_action_start
; // position where the action click started
595 wxPoint m_action_offset
; // offset from upper left of the item clicked
596 wxAuiDockUIPart
* m_action_part
; // ptr to the part the action happened to
597 wxWindow
* m_action_window
; // action frame or window (NULL if none)
598 wxRect m_action_hintrect
; // hint rectangle for the action
600 bool m_has_maximized
;
602 wxAuiDockUIPart
* m_hover_button
;// button uipart being hovered over
603 wxRect m_last_hint
; // last hint rectangle
604 wxPoint m_last_mouse_move
; // last mouse move position (see OnMotion)
606 wxFrame
* m_hint_wnd
; // transparent hint window, if supported by platform
607 wxTimer m_hint_fadetimer
; // transparent fade timer
608 wxByte m_hint_fadeamt
; // transparent fade amount
609 wxByte m_hint_fademax
; // maximum value of hint fade
612 DECLARE_EVENT_TABLE()
618 // event declarations/classes
620 class WXDLLIMPEXP_AUI wxAuiManagerEvent
: public wxEvent
623 wxAuiManagerEvent(wxEventType type
=wxEVT_NULL
) : wxEvent(0, type
)
632 wxAuiManagerEvent(const wxAuiManagerEvent
& c
) : wxEvent(c
)
636 veto_flag
= c
.veto_flag
;
637 canveto_flag
= c
.canveto_flag
;
641 wxEvent
*Clone() const { return new wxAuiManagerEvent(*this); }
643 void SetPane(wxAuiPaneInfo
* p
) { pane
= p
; }
644 void SetButton(int b
) { button
= b
; }
645 void SetDC(wxDC
* pdc
) { dc
= pdc
; }
647 wxAuiPaneInfo
* GetPane() { return pane
; }
648 int GetButton() { return button
; }
649 wxDC
* GetDC() { return dc
; }
651 void Veto(bool veto
= true) { veto_flag
= veto
; }
652 bool GetVeto() const { return veto_flag
; }
653 void SetCanVeto(bool can_veto
) { canveto_flag
= can_veto
; }
654 bool CanVeto() const { return canveto_flag
&& veto_flag
; }
665 DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiManagerEvent
)
670 class WXDLLIMPEXP_AUI wxAuiDockInfo
686 wxAuiDockInfo(const wxAuiDockInfo
& c
)
688 dock_direction
= c
.dock_direction
;
689 dock_layer
= c
.dock_layer
;
690 dock_row
= c
.dock_row
;
692 min_size
= c
.min_size
;
693 resizable
= c
.resizable
;
700 wxAuiDockInfo
& operator=(const wxAuiDockInfo
& c
)
702 dock_direction
= c
.dock_direction
;
703 dock_layer
= c
.dock_layer
;
704 dock_row
= c
.dock_row
;
706 min_size
= c
.min_size
;
707 resizable
= c
.resizable
;
716 bool IsOk() const { return (dock_direction
!= 0) ? true : false; }
717 bool IsHorizontal() const { return (dock_direction
== wxAUI_DOCK_TOP
||
718 dock_direction
== wxAUI_DOCK_BOTTOM
) ? true:false; }
719 bool IsVertical() const { return (dock_direction
== wxAUI_DOCK_LEFT
||
720 dock_direction
== wxAUI_DOCK_RIGHT
||
721 dock_direction
== wxAUI_DOCK_CENTER
) ? true:false; }
723 wxAuiPaneInfoPtrArray panes
; // array of panes
724 wxRect rect
; // current rectangle
725 int dock_direction
; // dock direction (top, bottom, left, right, center)
726 int dock_layer
; // layer number (0 = innermost layer)
727 int dock_row
; // row number on the docking bar (0 = first row)
728 int size
; // size of the dock
729 int min_size
; // minimum size of a dock (0 if there is no min)
730 bool resizable
; // flag indicating whether the dock is resizable
731 bool toolbar
; // flag indicating dock contains only toolbars
732 bool fixed
; // flag indicating that the dock operates on
733 // absolute coordinates as opposed to proportional
737 class WXDLLIMPEXP_AUI wxAuiDockUIPart
753 int type
; // ui part type (see enum above)
754 int orientation
; // orientation (either wxHORIZONTAL or wxVERTICAL)
755 wxAuiDockInfo
* dock
; // which dock the item is associated with
756 wxAuiPaneInfo
* pane
; // which pane the item is associated with
757 wxAuiPaneButton
* button
; // which pane button the item is associated with
758 wxSizer
* cont_sizer
; // the part's containing sizer
759 wxSizerItem
* sizer_item
; // the sizer item of the part
760 wxRect rect
; // client coord rectangle of the part itself
764 class WXDLLIMPEXP_AUI wxAuiPaneButton
767 int button_id
; // id of the button (e.g. buttonClose)
773 // wx event machinery
775 BEGIN_DECLARE_EVENT_TYPES()
776 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI
, wxEVT_AUI_PANEBUTTON
, 0)
777 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI
, wxEVT_AUI_PANECLOSE
, 0)
778 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI
, wxEVT_AUI_PANEMAXIMIZE
, 0)
779 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI
, wxEVT_AUI_PANERESTORE
, 0)
780 DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_AUI
, wxEVT_AUI_RENDER
, 0)
781 END_DECLARE_EVENT_TYPES()
783 typedef void (wxEvtHandler::*wxAuiManagerEventFunction
)(wxAuiManagerEvent
&);
785 #define wxAuiManagerEventHandler(func) \
786 (wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxAuiManagerEventFunction, &func)
788 #define EVT_AUI_PANEBUTTON(func) \
789 wx__DECLARE_EVT0(wxEVT_AUI_PANEBUTTON, wxAuiManagerEventHandler(func))
790 #define EVT_AUI_PANECLOSE(func) \
791 wx__DECLARE_EVT0(wxEVT_AUI_PANECLOSE, wxAuiManagerEventHandler(func))
792 #define EVT_AUI_PANEMAXIMIZE(func) \
793 wx__DECLARE_EVT0(wxEVT_AUI_PANEMAXIMIZE, wxAuiManagerEventHandler(func))
794 #define EVT_AUI_PANERESTORE(func) \
795 wx__DECLARE_EVT0(wxEVT_AUI_PANERESTORE, wxAuiManagerEventHandler(func))
796 #define EVT_AUI_RENDER(func) \
797 wx__DECLARE_EVT0(wxEVT_AUI_RENDER, wxAuiManagerEventHandler(func))
801 %constant wxEventType wxEVT_AUI_PANEBUTTON
;
802 %constant wxEventType wxEVT_AUI_PANECLOSE
;
803 %constant wxEventType wxEVT_AUI_PANEMAXIMIZE
;
804 %constant wxEventType wxEVT_AUI_PANERESTORE
;
805 %constant wxEventType wxEVT_AUI_RENDER
;
808 EVT_AUI_PANEBUTTON
= wx
.PyEventBinder( wxEVT_AUI_PANEBUTTON
)
809 EVT_AUI_PANECLOSE
= wx
.PyEventBinder( wxEVT_AUI_PANECLOSE
)
810 EVT_AUI_PANEMAXIMIZE
= wx
.PyEventBinder( wxEVT_AUI_PANEMAXIMIZE
)
811 EVT_AUI_PANERESTORE
= wx
.PyEventBinder( wxEVT_AUI_PANERESTORE
)
812 EVT_AUI_RENDER
= wx
.PyEventBinder( wxEVT_AUI_RENDER
)
817 #endif //_WX_FRAMEMANAGER_H_