| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/aui/framemanager.h
- // Purpose: wxaui: wx advanced user interface - docking window manager
- // Author: Benjamin I. Williams
- // Modified by:
- // Created: 2005-05-17
- // Copyright: (C) Copyright 2005, Kirix Corporation, All Rights Reserved.
- // Licence: wxWindows Library Licence, Version 3.1
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_FRAMEMANAGER_H_
- #define _WX_FRAMEMANAGER_H_
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #include "wx/defs.h"
- #if wxUSE_AUI
- #include "wx/dynarray.h"
- #include "wx/gdicmn.h"
- #include "wx/window.h"
- #include "wx/timer.h"
- #include "wx/sizer.h"
- #include "wx/bitmap.h"
- enum wxAuiManagerDock
- {
- wxAUI_DOCK_NONE = 0,
- wxAUI_DOCK_TOP = 1,
- wxAUI_DOCK_RIGHT = 2,
- wxAUI_DOCK_BOTTOM = 3,
- wxAUI_DOCK_LEFT = 4,
- wxAUI_DOCK_CENTER = 5,
- wxAUI_DOCK_CENTRE = wxAUI_DOCK_CENTER
- };
- enum wxAuiManagerOption
- {
- wxAUI_MGR_ALLOW_FLOATING = 1 << 0,
- wxAUI_MGR_ALLOW_ACTIVE_PANE = 1 << 1,
- wxAUI_MGR_TRANSPARENT_DRAG = 1 << 2,
- wxAUI_MGR_TRANSPARENT_HINT = 1 << 3,
- wxAUI_MGR_VENETIAN_BLINDS_HINT = 1 << 4,
- wxAUI_MGR_RECTANGLE_HINT = 1 << 5,
- wxAUI_MGR_HINT_FADE = 1 << 6,
- wxAUI_MGR_NO_VENETIAN_BLINDS_FADE = 1 << 7,
- wxAUI_MGR_LIVE_RESIZE = 1 << 8,
- wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
- wxAUI_MGR_TRANSPARENT_HINT |
- wxAUI_MGR_HINT_FADE |
- wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
- };
- enum wxAuiPaneDockArtSetting
- {
- wxAUI_DOCKART_SASH_SIZE = 0,
- wxAUI_DOCKART_CAPTION_SIZE = 1,
- wxAUI_DOCKART_GRIPPER_SIZE = 2,
- wxAUI_DOCKART_PANE_BORDER_SIZE = 3,
- wxAUI_DOCKART_PANE_BUTTON_SIZE = 4,
- wxAUI_DOCKART_BACKGROUND_COLOUR = 5,
- wxAUI_DOCKART_SASH_COLOUR = 6,
- wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR = 7,
- wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR = 8,
- wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR = 9,
- wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR = 10,
- wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR = 11,
- wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR = 12,
- wxAUI_DOCKART_BORDER_COLOUR = 13,
- wxAUI_DOCKART_GRIPPER_COLOUR = 14,
- wxAUI_DOCKART_CAPTION_FONT = 15,
- wxAUI_DOCKART_GRADIENT_TYPE = 16
- };
- enum wxAuiPaneDockArtGradients
- {
- wxAUI_GRADIENT_NONE = 0,
- wxAUI_GRADIENT_VERTICAL = 1,
- wxAUI_GRADIENT_HORIZONTAL = 2
- };
- enum wxAuiPaneButtonState
- {
- wxAUI_BUTTON_STATE_NORMAL = 0,
- wxAUI_BUTTON_STATE_HOVER = 1 << 1,
- wxAUI_BUTTON_STATE_PRESSED = 1 << 2,
- wxAUI_BUTTON_STATE_DISABLED = 1 << 3,
- wxAUI_BUTTON_STATE_HIDDEN = 1 << 4,
- wxAUI_BUTTON_STATE_CHECKED = 1 << 5
- };
- enum wxAuiButtonId
- {
- wxAUI_BUTTON_CLOSE = 101,
- wxAUI_BUTTON_MAXIMIZE_RESTORE = 102,
- wxAUI_BUTTON_MINIMIZE = 103,
- wxAUI_BUTTON_PIN = 104,
- wxAUI_BUTTON_OPTIONS = 105,
- wxAUI_BUTTON_WINDOWLIST = 106,
- wxAUI_BUTTON_LEFT = 107,
- wxAUI_BUTTON_RIGHT = 108,
- wxAUI_BUTTON_UP = 109,
- wxAUI_BUTTON_DOWN = 110,
- wxAUI_BUTTON_CUSTOM1 = 201,
- wxAUI_BUTTON_CUSTOM2 = 202,
- wxAUI_BUTTON_CUSTOM3 = 203
- };
- enum wxAuiPaneInsertLevel
- {
- wxAUI_INSERT_PANE = 0,
- wxAUI_INSERT_ROW = 1,
- wxAUI_INSERT_DOCK = 2
- };
- // forwards and array declarations
- class wxAuiDockUIPart;
- class wxAuiPaneButton;
- class wxAuiPaneInfo;
- class wxAuiDockInfo;
- class wxAuiDockArt;
- class wxAuiManagerEvent;
- #ifndef SWIG
- WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockInfo, wxAuiDockInfoArray, WXDLLIMPEXP_AUI);
- WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiDockUIPart, wxAuiDockUIPartArray, WXDLLIMPEXP_AUI);
- WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneButton, wxAuiPaneButtonArray, WXDLLIMPEXP_AUI);
- WX_DECLARE_USER_EXPORTED_OBJARRAY(wxAuiPaneInfo, wxAuiPaneInfoArray, WXDLLIMPEXP_AUI);
- WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiPaneInfo*, wxAuiPaneInfoPtrArray, class WXDLLIMPEXP_AUI);
- WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxAuiDockInfo*, wxAuiDockInfoPtrArray, class WXDLLIMPEXP_AUI);
- #endif // SWIG
- extern WXDLLIMPEXP_AUI wxAuiDockInfo wxAuiNullDockInfo;
- extern WXDLLIMPEXP_AUI wxAuiPaneInfo wxAuiNullPaneInfo;
- class WXDLLIMPEXP_AUI wxAuiPaneInfo
- {
- public:
- wxAuiPaneInfo()
- {
- window = NULL;
- frame = NULL;
- state = 0;
- dock_direction = wxAUI_DOCK_LEFT;
- dock_layer = 0;
- dock_row = 0;
- dock_pos = 0;
- floating_pos = wxDefaultPosition;
- floating_size = wxDefaultSize;
- best_size = wxDefaultSize;
- min_size = wxDefaultSize;
- max_size = wxDefaultSize;
- dock_proportion = 0;
- DefaultPane();
- }
- ~wxAuiPaneInfo() {}
- #ifndef SWIG
- wxAuiPaneInfo(const wxAuiPaneInfo& c)
- {
- name = c.name;
- caption = c.caption;
- icon = c.icon;
- window = c.window;
- frame = c.frame;
- state = c.state;
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- dock_pos = c.dock_pos;
- best_size = c.best_size;
- min_size = c.min_size;
- max_size = c.max_size;
- floating_pos = c.floating_pos;
- floating_size = c.floating_size;
- dock_proportion = c.dock_proportion;
- buttons = c.buttons;
- rect = c.rect;
- }
- wxAuiPaneInfo& operator=(const wxAuiPaneInfo& c)
- {
- name = c.name;
- caption = c.caption;
- window = c.window;
- frame = c.frame;
- state = c.state;
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- dock_pos = c.dock_pos;
- best_size = c.best_size;
- min_size = c.min_size;
- max_size = c.max_size;
- floating_pos = c.floating_pos;
- floating_size = c.floating_size;
- dock_proportion = c.dock_proportion;
- buttons = c.buttons;
- rect = c.rect;
- return *this;
- }
- #endif // SWIG
- // Write the safe parts of a newly loaded PaneInfo structure "source" into "this"
- // used on loading perspectives etc.
- void SafeSet(wxAuiPaneInfo source)
- {
- // note source is not passed by reference so we can overwrite, to keep the
- // unsafe bits of "dest"
- source.window = window;
- source.frame = frame;
- source.buttons = buttons;
- wxCHECK_RET(source.IsValid(),
- "window settings and pane settings are incompatible");
- // now assign
- *this = source;
- }
- bool IsOk() const { return window != NULL; }
- bool IsFixed() const { return !HasFlag(optionResizable); }
- bool IsResizable() const { return HasFlag(optionResizable); }
- bool IsShown() const { return !HasFlag(optionHidden); }
- bool IsFloating() const { return HasFlag(optionFloating); }
- bool IsDocked() const { return !HasFlag(optionFloating); }
- bool IsToolbar() const { return HasFlag(optionToolbar); }
- bool IsTopDockable() const { return HasFlag(optionTopDockable); }
- bool IsBottomDockable() const { return HasFlag(optionBottomDockable); }
- bool IsLeftDockable() const { return HasFlag(optionLeftDockable); }
- bool IsRightDockable() const { return HasFlag(optionRightDockable); }
- bool IsDockable() const
- {
- return HasFlag(optionTopDockable | optionBottomDockable |
- optionLeftDockable | optionRightDockable);
- }
- bool IsFloatable() const { return HasFlag(optionFloatable); }
- bool IsMovable() const { return HasFlag(optionMovable); }
- bool IsDestroyOnClose() const { return HasFlag(optionDestroyOnClose); }
- bool IsMaximized() const { return HasFlag(optionMaximized); }
- bool HasCaption() const { return HasFlag(optionCaption); }
- bool HasGripper() const { return HasFlag(optionGripper); }
- bool HasBorder() const { return HasFlag(optionPaneBorder); }
- bool HasCloseButton() const { return HasFlag(buttonClose); }
- bool HasMaximizeButton() const { return HasFlag(buttonMaximize); }
- bool HasMinimizeButton() const { return HasFlag(buttonMinimize); }
- bool HasPinButton() const { return HasFlag(buttonPin); }
- bool HasGripperTop() const { return HasFlag(optionGripperTop); }
- #ifdef SWIG
- %typemap(out) wxAuiPaneInfo& { $result = $self; Py_INCREF($result); }
- #endif
- wxAuiPaneInfo& Window(wxWindow* w)
- {
- wxAuiPaneInfo test(*this);
- test.window = w;
- wxCHECK_MSG(test.IsValid(), *this,
- "window settings and pane settings are incompatible");
- *this = test;
- return *this;
- }
- wxAuiPaneInfo& Name(const wxString& n) { name = n; return *this; }
- wxAuiPaneInfo& Caption(const wxString& c) { caption = c; return *this; }
- wxAuiPaneInfo& Icon(const wxBitmap& b) { icon = b; return *this; }
- wxAuiPaneInfo& Left() { dock_direction = wxAUI_DOCK_LEFT; return *this; }
- wxAuiPaneInfo& Right() { dock_direction = wxAUI_DOCK_RIGHT; return *this; }
- wxAuiPaneInfo& Top() { dock_direction = wxAUI_DOCK_TOP; return *this; }
- wxAuiPaneInfo& Bottom() { dock_direction = wxAUI_DOCK_BOTTOM; return *this; }
- wxAuiPaneInfo& Center() { dock_direction = wxAUI_DOCK_CENTER; return *this; }
- wxAuiPaneInfo& Centre() { dock_direction = wxAUI_DOCK_CENTRE; return *this; }
- wxAuiPaneInfo& Direction(int direction) { dock_direction = direction; return *this; }
- wxAuiPaneInfo& Layer(int layer) { dock_layer = layer; return *this; }
- wxAuiPaneInfo& Row(int row) { dock_row = row; return *this; }
- wxAuiPaneInfo& Position(int pos) { dock_pos = pos; return *this; }
- wxAuiPaneInfo& BestSize(const wxSize& size) { best_size = size; return *this; }
- wxAuiPaneInfo& MinSize(const wxSize& size) { min_size = size; return *this; }
- wxAuiPaneInfo& MaxSize(const wxSize& size) { max_size = size; return *this; }
- wxAuiPaneInfo& BestSize(int x, int y) { best_size.Set(x,y); return *this; }
- wxAuiPaneInfo& MinSize(int x, int y) { min_size.Set(x,y); return *this; }
- wxAuiPaneInfo& MaxSize(int x, int y) { max_size.Set(x,y); return *this; }
- wxAuiPaneInfo& FloatingPosition(const wxPoint& pos) { floating_pos = pos; return *this; }
- wxAuiPaneInfo& FloatingPosition(int x, int y) { floating_pos.x = x; floating_pos.y = y; return *this; }
- wxAuiPaneInfo& FloatingSize(const wxSize& size) { floating_size = size; return *this; }
- wxAuiPaneInfo& FloatingSize(int x, int y) { floating_size.Set(x,y); return *this; }
- wxAuiPaneInfo& Fixed() { return SetFlag(optionResizable, false); }
- wxAuiPaneInfo& Resizable(bool resizable = true) { return SetFlag(optionResizable, resizable); }
- wxAuiPaneInfo& Dock() { return SetFlag(optionFloating, false); }
- wxAuiPaneInfo& Float() { return SetFlag(optionFloating, true); }
- wxAuiPaneInfo& Hide() { return SetFlag(optionHidden, true); }
- wxAuiPaneInfo& Show(bool show = true) { return SetFlag(optionHidden, !show); }
- wxAuiPaneInfo& CaptionVisible(bool visible = true) { return SetFlag(optionCaption, visible); }
- wxAuiPaneInfo& Maximize() { return SetFlag(optionMaximized, true); }
- wxAuiPaneInfo& Restore() { return SetFlag(optionMaximized, false); }
- wxAuiPaneInfo& PaneBorder(bool visible = true) { return SetFlag(optionPaneBorder, visible); }
- wxAuiPaneInfo& Gripper(bool visible = true) { return SetFlag(optionGripper, visible); }
- wxAuiPaneInfo& GripperTop(bool attop = true) { return SetFlag(optionGripperTop, attop); }
- wxAuiPaneInfo& CloseButton(bool visible = true) { return SetFlag(buttonClose, visible); }
- wxAuiPaneInfo& MaximizeButton(bool visible = true) { return SetFlag(buttonMaximize, visible); }
- wxAuiPaneInfo& MinimizeButton(bool visible = true) { return SetFlag(buttonMinimize, visible); }
- wxAuiPaneInfo& PinButton(bool visible = true) { return SetFlag(buttonPin, visible); }
- wxAuiPaneInfo& DestroyOnClose(bool b = true) { return SetFlag(optionDestroyOnClose, b); }
- wxAuiPaneInfo& TopDockable(bool b = true) { return SetFlag(optionTopDockable, b); }
- wxAuiPaneInfo& BottomDockable(bool b = true) { return SetFlag(optionBottomDockable, b); }
- wxAuiPaneInfo& LeftDockable(bool b = true) { return SetFlag(optionLeftDockable, b); }
- wxAuiPaneInfo& RightDockable(bool b = true) { return SetFlag(optionRightDockable, b); }
- wxAuiPaneInfo& Floatable(bool b = true) { return SetFlag(optionFloatable, b); }
- wxAuiPaneInfo& Movable(bool b = true) { return SetFlag(optionMovable, b); }
- wxAuiPaneInfo& DockFixed(bool b = true) { return SetFlag(optionDockFixed, b); }
- wxAuiPaneInfo& Dockable(bool b = true)
- {
- return TopDockable(b).BottomDockable(b).LeftDockable(b).RightDockable(b);
- }
- wxAuiPaneInfo& DefaultPane()
- {
- wxAuiPaneInfo test(*this);
- test.state |= optionTopDockable | optionBottomDockable |
- optionLeftDockable | optionRightDockable |
- optionFloatable | optionMovable | optionResizable |
- optionCaption | optionPaneBorder | buttonClose;
- wxCHECK_MSG(test.IsValid(), *this,
- "window settings and pane settings are incompatible");
- *this = test;
- return *this;
- }
- wxAuiPaneInfo& CentrePane() { return CenterPane(); }
- wxAuiPaneInfo& CenterPane()
- {
- state = 0;
- return Center().PaneBorder().Resizable();
- }
- wxAuiPaneInfo& ToolbarPane()
- {
- DefaultPane();
- state |= (optionToolbar | optionGripper);
- state &= ~(optionResizable | optionCaption);
- if (dock_layer == 0)
- dock_layer = 10;
- return *this;
- }
- wxAuiPaneInfo& SetFlag(int flag, bool option_state)
- {
- wxAuiPaneInfo test(*this);
- if (option_state)
- test.state |= flag;
- else
- test.state &= ~flag;
- wxCHECK_MSG(test.IsValid(), *this,
- "window settings and pane settings are incompatible");
- *this = test;
- return *this;
- }
- bool HasFlag(int flag) const
- {
- return (state & flag) != 0;
- }
- #ifdef SWIG
- %typemap(out) wxAuiPaneInfo& ;
- #endif
- public:
- // NOTE: You can add and subtract flags from this list,
- // but do not change the values of the flags, because
- // they are stored in a binary integer format in the
- // perspective string. If you really need to change the
- // values around, you'll have to ensure backwards-compatibility
- // in the perspective loading code.
- enum wxAuiPaneState
- {
- optionFloating = 1 << 0,
- optionHidden = 1 << 1,
- optionLeftDockable = 1 << 2,
- optionRightDockable = 1 << 3,
- optionTopDockable = 1 << 4,
- optionBottomDockable = 1 << 5,
- optionFloatable = 1 << 6,
- optionMovable = 1 << 7,
- optionResizable = 1 << 8,
- optionPaneBorder = 1 << 9,
- optionCaption = 1 << 10,
- optionGripper = 1 << 11,
- optionDestroyOnClose = 1 << 12,
- optionToolbar = 1 << 13,
- optionActive = 1 << 14,
- optionGripperTop = 1 << 15,
- optionMaximized = 1 << 16,
- optionDockFixed = 1 << 17,
- buttonClose = 1 << 21,
- buttonMaximize = 1 << 22,
- buttonMinimize = 1 << 23,
- buttonPin = 1 << 24,
- buttonCustom1 = 1 << 26,
- buttonCustom2 = 1 << 27,
- buttonCustom3 = 1 << 28,
- savedHiddenState = 1 << 30, // used internally
- actionPane = 1 << 31 // used internally
- };
- public:
- wxString name; // name of the pane
- wxString caption; // caption displayed on the window
- wxBitmap icon; // icon of the pane, may be invalid
- wxWindow* window; // window that is in this pane
- wxFrame* frame; // floating frame window that holds the pane
- unsigned int state; // a combination of wxPaneState values
- int dock_direction; // dock direction (top, bottom, left, right, center)
- int dock_layer; // layer number (0 = innermost layer)
- int dock_row; // row number on the docking bar (0 = first row)
- int dock_pos; // position inside the row (0 = first position)
- wxSize best_size; // size that the layout engine will prefer
- wxSize min_size; // minimum size the pane window can tolerate
- wxSize max_size; // maximum size the pane window can tolerate
- wxPoint floating_pos; // position while floating
- wxSize floating_size; // size while floating
- int dock_proportion; // proportion while docked
- wxAuiPaneButtonArray buttons; // buttons on the pane
- wxRect rect; // current rectangle (populated by wxAUI)
- bool IsValid() const;
- };
- class WXDLLIMPEXP_FWD_AUI wxAuiFloatingFrame;
- class WXDLLIMPEXP_AUI wxAuiManager : public wxEvtHandler
- {
- friend class wxAuiFloatingFrame;
- public:
- wxAuiManager(wxWindow* managedWnd = NULL,
- unsigned int flags = wxAUI_MGR_DEFAULT);
- virtual ~wxAuiManager();
- void UnInit();
- void SetFlags(unsigned int flags);
- unsigned int GetFlags() const;
- void SetManagedWindow(wxWindow* managedWnd);
- wxWindow* GetManagedWindow() const;
- static wxAuiManager* GetManager(wxWindow* window);
- void SetArtProvider(wxAuiDockArt* artProvider);
- wxAuiDockArt* GetArtProvider() const;
- wxAuiPaneInfo& GetPane(wxWindow* window);
- wxAuiPaneInfo& GetPane(const wxString& name);
- wxAuiPaneInfoArray& GetAllPanes();
- bool AddPane(wxWindow* window,
- const wxAuiPaneInfo& paneInfo);
- bool AddPane(wxWindow* window,
- const wxAuiPaneInfo& paneInfo,
- const wxPoint& dropPos);
- bool AddPane(wxWindow* window,
- int direction = wxLEFT,
- const wxString& caption = wxEmptyString);
- bool InsertPane(wxWindow* window,
- const wxAuiPaneInfo& insertLocation,
- int insertLevel = wxAUI_INSERT_PANE);
- bool DetachPane(wxWindow* window);
- void Update();
- wxString SavePaneInfo(wxAuiPaneInfo& pane);
- void LoadPaneInfo(wxString panePart, wxAuiPaneInfo &pane);
- wxString SavePerspective();
- bool LoadPerspective(const wxString& perspective, bool update = true);
- void SetDockSizeConstraint(double widthPct, double heightPct);
- void GetDockSizeConstraint(double* widthPct, double* heightPct) const;
- void ClosePane(wxAuiPaneInfo& paneInfo);
- void MaximizePane(wxAuiPaneInfo& paneInfo);
- void RestorePane(wxAuiPaneInfo& paneInfo);
- void RestoreMaximizedPane();
- public:
- virtual wxAuiFloatingFrame* CreateFloatingFrame(wxWindow* parent, const wxAuiPaneInfo& p);
- virtual bool CanDockPanel(const wxAuiPaneInfo & p);
- void StartPaneDrag(
- wxWindow* paneWindow,
- const wxPoint& offset);
- wxRect CalculateHintRect(
- wxWindow* paneWindow,
- const wxPoint& pt,
- const wxPoint& offset);
- void DrawHintRect(
- wxWindow* paneWindow,
- const wxPoint& pt,
- const wxPoint& offset);
- virtual void ShowHint(const wxRect& rect);
- virtual void HideHint();
- void OnHintActivate(wxActivateEvent& event);
- public:
- // deprecated -- please use SetManagedWindow() and
- // and GetManagedWindow() instead
- wxDEPRECATED( void SetFrame(wxFrame* frame) );
- wxDEPRECATED( wxFrame* GetFrame() const );
- protected:
- void UpdateHintWindowConfig();
- void DoFrameLayout();
- void LayoutAddPane(wxSizer* container,
- wxAuiDockInfo& dock,
- wxAuiPaneInfo& pane,
- wxAuiDockUIPartArray& uiparts,
- bool spacerOnly);
- void LayoutAddDock(wxSizer* container,
- wxAuiDockInfo& dock,
- wxAuiDockUIPartArray& uiParts,
- bool spacerOnly);
- wxSizer* LayoutAll(wxAuiPaneInfoArray& panes,
- wxAuiDockInfoArray& docks,
- wxAuiDockUIPartArray & uiParts,
- bool spacerOnly = false);
- virtual bool ProcessDockResult(wxAuiPaneInfo& target,
- const wxAuiPaneInfo& newPos);
- bool DoDrop(wxAuiDockInfoArray& docks,
- wxAuiPaneInfoArray& panes,
- wxAuiPaneInfo& drop,
- const wxPoint& pt,
- const wxPoint& actionOffset = wxPoint(0,0));
- wxAuiDockUIPart* HitTest(int x, int y);
- wxAuiDockUIPart* GetPanePart(wxWindow* pane);
- int GetDockPixelOffset(wxAuiPaneInfo& test);
- void OnFloatingPaneMoveStart(wxWindow* window);
- void OnFloatingPaneMoving(wxWindow* window, wxDirection dir );
- void OnFloatingPaneMoved(wxWindow* window, wxDirection dir);
- void OnFloatingPaneActivated(wxWindow* window);
- void OnFloatingPaneClosed(wxWindow* window, wxCloseEvent& evt);
- void OnFloatingPaneResized(wxWindow* window, const wxRect& rect);
- void Render(wxDC* dc);
- void Repaint(wxDC* dc = NULL);
- void ProcessMgrEvent(wxAuiManagerEvent& event);
- void UpdateButtonOnScreen(wxAuiDockUIPart* buttonUiPart,
- const wxMouseEvent& event);
- void GetPanePositionsAndSizes(wxAuiDockInfo& dock,
- wxArrayInt& positions,
- wxArrayInt& sizes);
- /// Ends a resize action, or for live update, resizes the sash
- bool DoEndResizeAction(wxMouseEvent& event);
- void SetActivePane(wxWindow* active_pane);
- public:
- // public events (which can be invoked externally)
- void OnRender(wxAuiManagerEvent& evt);
- void OnPaneButton(wxAuiManagerEvent& evt);
- protected:
- // protected events
- void OnPaint(wxPaintEvent& evt);
- void OnEraseBackground(wxEraseEvent& evt);
- void OnSize(wxSizeEvent& evt);
- void OnSetCursor(wxSetCursorEvent& evt);
- void OnLeftDown(wxMouseEvent& evt);
- void OnLeftUp(wxMouseEvent& evt);
- void OnMotion(wxMouseEvent& evt);
- void OnCaptureLost(wxMouseCaptureLostEvent& evt);
- void OnLeaveWindow(wxMouseEvent& evt);
- void OnChildFocus(wxChildFocusEvent& evt);
- void OnHintFadeTimer(wxTimerEvent& evt);
- void OnFindManager(wxAuiManagerEvent& evt);
- protected:
- enum
- {
- actionNone = 0,
- actionResize,
- actionClickButton,
- actionClickCaption,
- actionDragToolbarPane,
- actionDragFloatingPane
- };
- protected:
- wxWindow* m_frame; // the window being managed
- wxAuiDockArt* m_art; // dock art object which does all drawing
- unsigned int m_flags; // manager flags wxAUI_MGR_*
- wxAuiPaneInfoArray m_panes; // array of panes structures
- wxAuiDockInfoArray m_docks; // array of docks structures
- wxAuiDockUIPartArray m_uiParts; // array of UI parts (captions, buttons, etc)
- int m_action; // current mouse action
- wxPoint m_actionStart; // position where the action click started
- wxPoint m_actionOffset; // offset from upper left of the item clicked
- wxAuiDockUIPart* m_actionPart; // ptr to the part the action happened to
- wxWindow* m_actionWindow; // action frame or window (NULL if none)
- wxRect m_actionHintRect; // hint rectangle for the action
- wxRect m_lastRect;
- wxAuiDockUIPart* m_hoverButton;// button uipart being hovered over
- wxRect m_lastHint; // last hint rectangle
- wxPoint m_lastMouseMove; // last mouse move position (see OnMotion)
- int m_currentDragItem;
- bool m_skipping;
- bool m_hasMaximized;
- double m_dockConstraintX; // 0.0 .. 1.0; max pct of window width a dock can consume
- double m_dockConstraintY; // 0.0 .. 1.0; max pct of window height a dock can consume
- wxFrame* m_hintWnd; // transparent hint window, if supported by platform
- wxTimer m_hintFadeTimer; // transparent fade timer
- wxByte m_hintFadeAmt; // transparent fade amount
- wxByte m_hintFadeMax; // maximum value of hint fade
- void* m_reserved;
- #ifndef SWIG
- DECLARE_EVENT_TABLE()
- DECLARE_CLASS(wxAuiManager)
- #endif // SWIG
- };
- // event declarations/classes
- class WXDLLIMPEXP_AUI wxAuiManagerEvent : public wxEvent
- {
- public:
- wxAuiManagerEvent(wxEventType type=wxEVT_NULL) : wxEvent(0, type)
- {
- manager = NULL;
- pane = NULL;
- button = 0;
- veto_flag = false;
- canveto_flag = true;
- dc = NULL;
- }
- #ifndef SWIG
- wxAuiManagerEvent(const wxAuiManagerEvent& c) : wxEvent(c)
- {
- manager = c.manager;
- pane = c.pane;
- button = c.button;
- veto_flag = c.veto_flag;
- canveto_flag = c.canveto_flag;
- dc = c.dc;
- }
- #endif
- wxEvent *Clone() const { return new wxAuiManagerEvent(*this); }
- void SetManager(wxAuiManager* mgr) { manager = mgr; }
- void SetPane(wxAuiPaneInfo* p) { pane = p; }
- void SetButton(int b) { button = b; }
- void SetDC(wxDC* pdc) { dc = pdc; }
- wxAuiManager* GetManager() const { return manager; }
- wxAuiPaneInfo* GetPane() const { return pane; }
- int GetButton() const { return button; }
- wxDC* GetDC() const { return dc; }
- void Veto(bool veto = true) { veto_flag = veto; }
- bool GetVeto() const { return veto_flag; }
- void SetCanVeto(bool can_veto) { canveto_flag = can_veto; }
- bool CanVeto() const { return canveto_flag && veto_flag; }
- public:
- wxAuiManager* manager;
- wxAuiPaneInfo* pane;
- int button;
- bool veto_flag;
- bool canveto_flag;
- wxDC* dc;
- #ifndef SWIG
- private:
- DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxAuiManagerEvent)
- #endif
- };
- class WXDLLIMPEXP_AUI wxAuiDockInfo
- {
- public:
- wxAuiDockInfo()
- {
- dock_direction = 0;
- dock_layer = 0;
- dock_row = 0;
- size = 0;
- min_size = 0;
- resizable = true;
- fixed = false;
- toolbar = false;
- reserved1 = false;
- }
- #ifndef SWIG
- wxAuiDockInfo(const wxAuiDockInfo& c)
- {
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- size = c.size;
- min_size = c.min_size;
- resizable = c.resizable;
- fixed = c.fixed;
- toolbar = c.toolbar;
- panes = c.panes;
- rect = c.rect;
- reserved1 = c.reserved1;
- }
- wxAuiDockInfo& operator=(const wxAuiDockInfo& c)
- {
- dock_direction = c.dock_direction;
- dock_layer = c.dock_layer;
- dock_row = c.dock_row;
- size = c.size;
- min_size = c.min_size;
- resizable = c.resizable;
- fixed = c.fixed;
- toolbar = c.toolbar;
- panes = c.panes;
- rect = c.rect;
- reserved1 = c.reserved1;
- return *this;
- }
- #endif // SWIG
- bool IsOk() const { return dock_direction != 0; }
- bool IsHorizontal() const { return dock_direction == wxAUI_DOCK_TOP ||
- dock_direction == wxAUI_DOCK_BOTTOM; }
- bool IsVertical() const { return dock_direction == wxAUI_DOCK_LEFT ||
- dock_direction == wxAUI_DOCK_RIGHT ||
- dock_direction == wxAUI_DOCK_CENTER; }
- public:
- wxAuiPaneInfoPtrArray panes; // array of panes
- wxRect rect; // current rectangle
- int dock_direction; // dock direction (top, bottom, left, right, center)
- int dock_layer; // layer number (0 = innermost layer)
- int dock_row; // row number on the docking bar (0 = first row)
- int size; // size of the dock
- int min_size; // minimum size of a dock (0 if there is no min)
- bool resizable; // flag indicating whether the dock is resizable
- bool toolbar; // flag indicating dock contains only toolbars
- bool fixed; // flag indicating that the dock operates on
- // absolute coordinates as opposed to proportional
- bool reserved1;
- };
- class WXDLLIMPEXP_AUI wxAuiDockUIPart
- {
- public:
- enum
- {
- typeCaption,
- typeGripper,
- typeDock,
- typeDockSizer,
- typePane,
- typePaneSizer,
- typeBackground,
- typePaneBorder,
- typePaneButton
- };
- int type; // ui part type (see enum above)
- int orientation; // orientation (either wxHORIZONTAL or wxVERTICAL)
- wxAuiDockInfo* dock; // which dock the item is associated with
- wxAuiPaneInfo* pane; // which pane the item is associated with
- wxAuiPaneButton* button; // which pane button the item is associated with
- wxSizer* cont_sizer; // the part's containing sizer
- wxSizerItem* sizer_item; // the sizer item of the part
- wxRect rect; // client coord rectangle of the part itself
- };
- class WXDLLIMPEXP_AUI wxAuiPaneButton
- {
- public:
- int button_id; // id of the button (e.g. buttonClose)
- };
- #ifndef SWIG
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_BUTTON, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_CLOSE, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_MAXIMIZE, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_RESTORE, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_PANE_ACTIVATED, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_RENDER, wxAuiManagerEvent );
- wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_AUI, wxEVT_AUI_FIND_MANAGER, wxAuiManagerEvent );
- typedef void (wxEvtHandler::*wxAuiManagerEventFunction)(wxAuiManagerEvent&);
- #define wxAuiManagerEventHandler(func) \
- wxEVENT_HANDLER_CAST(wxAuiManagerEventFunction, func)
- #define EVT_AUI_PANE_BUTTON(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_BUTTON, wxAuiManagerEventHandler(func))
- #define EVT_AUI_PANE_CLOSE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_CLOSE, wxAuiManagerEventHandler(func))
- #define EVT_AUI_PANE_MAXIMIZE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_MAXIMIZE, wxAuiManagerEventHandler(func))
- #define EVT_AUI_PANE_RESTORE(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_RESTORE, wxAuiManagerEventHandler(func))
- #define EVT_AUI_PANE_ACTIVATED(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_PANE_ACTIVATED, wxAuiManagerEventHandler(func))
- #define EVT_AUI_RENDER(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_RENDER, wxAuiManagerEventHandler(func))
- #define EVT_AUI_FIND_MANAGER(func) \
- wx__DECLARE_EVT0(wxEVT_AUI_FIND_MANAGER, wxAuiManagerEventHandler(func))
- #else
- %constant wxEventType wxEVT_AUI_PANE_BUTTON;
- %constant wxEventType wxEVT_AUI_PANE_CLOSE;
- %constant wxEventType wxEVT_AUI_PANE_MAXIMIZE;
- %constant wxEventType wxEVT_AUI_PANE_RESTORE;
- %constant wxEventType wxEVT_AUI_PANE_ACTIVATED;
- %constant wxEventType wxEVT_AUI_RENDER;
- %constant wxEventType wxEVT_AUI_FIND_MANAGER;
- %pythoncode {
- EVT_AUI_PANE_BUTTON = wx.PyEventBinder( wxEVT_AUI_PANE_BUTTON )
- EVT_AUI_PANE_CLOSE = wx.PyEventBinder( wxEVT_AUI_PANE_CLOSE )
- EVT_AUI_PANE_MAXIMIZE = wx.PyEventBinder( wxEVT_AUI_PANE_MAXIMIZE )
- EVT_AUI_PANE_RESTORE = wx.PyEventBinder( wxEVT_AUI_PANE_RESTORE )
- EVT_AUI_PANE_ACTIVATED = wx.PyEventBinder( wxEVT_AUI_PANE_ACTIVATED )
- EVT_AUI_RENDER = wx.PyEventBinder( wxEVT_AUI_RENDER )
- EVT_AUI_FIND_MANAGER = wx.PyEventBinder( wxEVT_AUI_FIND_MANAGER )
- }
- #endif // SWIG
- #endif // wxUSE_AUI
- #endif //_WX_FRAMEMANAGER_H_
|