418ab1e742
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
379 lines
14 KiB
TeX
379 lines
14 KiB
TeX
\section{\class{wxFrameManager}}\label{wxframemanager}
|
|
|
|
wxFrameManager is the central class of the wxAUI class framework.
|
|
|
|
See also \helpref{wxAUI overview}{wxauioverview}.
|
|
|
|
wxFrameManager manages the panes associated with it
|
|
for a particular wxFrame, using a pane's wxPaneInfo information to
|
|
determine each pane's docking and floating behavior. wxFrameManager
|
|
uses wxWidgets' sizer mechanism to plan the layout of each frame. It
|
|
uses a replaceable dock art class to do all drawing, so all drawing is
|
|
localized in one area, and may be customized depending on an
|
|
applications' specific needs.
|
|
|
|
wxFrameManager works as follows: The programmer adds panes to the class,
|
|
or makes changes to existing pane properties (dock position, floating
|
|
state, show state, etc.). To apply these changes, wxFrameManager's
|
|
Update() function is called. This batch processing can be used to avoid
|
|
flicker, by modifying more than one pane at a time, and then "committing"
|
|
all of the changes at once by calling Update().
|
|
|
|
Panes can be added quite easily:
|
|
|
|
\begin{verbatim}
|
|
wxTextCtrl* text1 = new wxTextCtrl(this, -1);
|
|
wxTextCtrl* text2 = new wxTextCtrl(this, -1);
|
|
m_mgr.AddPane(text1, wxLEFT, wxT("Pane Caption"));
|
|
m_mgr.AddPane(text2, wxBOTTOM, wxT("Pane Caption"));
|
|
m_mgr.Update();
|
|
\end{verbatim}
|
|
|
|
Later on, the positions can be modified easily. The following will float
|
|
an existing pane in a tool window:
|
|
|
|
\begin{verbatim}
|
|
m_mgr.GetPane(text1).Float();
|
|
\end{verbatim}
|
|
|
|
\wxheading{Layers, Rows and Directions, Positions}
|
|
|
|
Inside wxAUI, the docking layout is figured out by checking several
|
|
pane parameters. Four of these are important for determining where a
|
|
pane will end up:
|
|
|
|
{\bf Direction:}
|
|
Each docked pane has a direction, Top, Bottom, Left, Right, or
|
|
Center. This is fairly self-explanatory. The pane will be placed in the
|
|
location specified by this variable.
|
|
|
|
{\bf Position:}
|
|
More than one pane can be placed inside of a dock. Imagine to panes
|
|
being docked on the left side of a window. One pane can be placed over
|
|
another. In proportionally managed docks, the pane position indicates
|
|
it's sequential position, starting with zero. So, in our scenario with
|
|
two panes docked on the left side, the top pane in the dock would have
|
|
position 0, and the second one would occupy position 1.
|
|
|
|
{\bf Row:}
|
|
A row can allow for two docks to be placed next to each other. One of
|
|
the most common places for this to happen is in the toolbar. Multiple
|
|
toolbar rows are allowed, the first row being in row 0, and the second
|
|
in row 1. Rows can also be used on vertically docked panes.
|
|
|
|
|
|
{\bf Layer:}
|
|
A layer is akin to an onion. Layer 0 is the very center of the
|
|
managed pane. Thus, if a pane is in layer 0, it will be closest to the
|
|
center window (also sometimes known as the "content window").
|
|
Increasing layers "swallow up" all layers of a lower value. This can
|
|
look very similar to multiple rows, but is different because all panes
|
|
in a lower level yield to panes in higher levels. The best way to
|
|
understand layers is by running the wxAUI sample.
|
|
|
|
\wxheading{Derived from}
|
|
|
|
\helpref{wxEvent}{wxevent}
|
|
|
|
\wxheading{Include files}
|
|
|
|
<wx/aui/aui.h>
|
|
|
|
\wxheading{See also}
|
|
|
|
\helpref{wxPaneInfo}{wxpaneinfo}
|
|
|
|
\wxheading{Data structures}
|
|
|
|
\begin{verbatim}
|
|
enum wxFrameManagerDock
|
|
{
|
|
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
|
|
}
|
|
\end{verbatim}
|
|
|
|
\begin{verbatim}
|
|
enum wxFrameManagerOption
|
|
{
|
|
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_TRANSPARENT_HINT_FADE = 1 << 4,
|
|
wxAUI_MGR_DISABLE_VENETIAN_BLINDS = 1 << 5,
|
|
wxAUI_MGR_DISABLE_VENETIAN_BLINDS_FADE = 1 << 6,
|
|
|
|
wxAUI_MGR_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
|
|
wxAUI_MGR_TRANSPARENT_HINT |
|
|
wxAUI_MGR_TRANSPARENT_HINT_FADE |
|
|
wxAUI_MGR_DISABLE_VENETIAN_BLINDS_FADE
|
|
}
|
|
\end{verbatim}
|
|
|
|
|
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
|
|
|
|
|
\membersection{wxFrameManager::wxFrameManager}\label{wxframemanagerwxframemanager}
|
|
|
|
\func{}{wxFrameManager}{\param{wxWindow* }{managed\_wnd = NULL}, \param{unsigned int }{flags = wxAUI\_MGR\_DEFAULT}}
|
|
|
|
Constructor. \arg{frame} specifies the wxFrame which should be managed.
|
|
\arg{flags} specifies options which allow the frame management behavior
|
|
to be modified.
|
|
|
|
\membersection{wxFrameManager::\destruct{wxFrameManager}}\label{wxframemanagerdtor}
|
|
|
|
\func{}{\destruct{wxFrameManager}}{\void}
|
|
|
|
|
|
\membersection{wxFrameManager::AddPane}\label{wxframemanageraddpane}
|
|
|
|
\func{bool}{AddPane}{\param{wxWindow* }{window}, \param{const wxPaneInfo\& }{pane\_info}}
|
|
|
|
|
|
\func{bool}{AddPane}{\param{wxWindow* }{window}, \param{const wxPaneInfo\& }{pane\_info}, \param{const wxPoint\& }{drop\_pos}}
|
|
|
|
|
|
\func{bool}{AddPane}{\param{wxWindow* }{window}, \param{int }{direction = wxLEFT}, \param{const wxString\& }{caption = wxEmptyString}}
|
|
|
|
Tells the frame manager to start managing a child window.
|
|
|
|
\membersection{wxFrameManager::DetachPane}\label{wxframemanagerdetachpane}
|
|
|
|
\func{bool}{DetachPane}{\param{wxWindow* }{window}}
|
|
|
|
Tells the wxFrameManager to stop managing the pane specified by window.
|
|
The window, if in a floated frame, is reparented to the frame managed
|
|
by wxFrameManager.
|
|
|
|
\membersection{wxFrameManager::DoDrop}\label{wxframemanagerdodrop}
|
|
|
|
\func{bool}{DoDrop}{\param{wxDockInfoArray\& }{docks}, \param{wxPaneInfoArray\& }{panes}, \param{wxPaneInfo\& }{drop}, \param{const wxPoint\& }{pt}, \param{const wxPoint\& }{action\_offset = wxPoint(0,0)}}
|
|
|
|
|
|
\membersection{wxFrameManager::DoFrameLayout}\label{wxframemanagerdoframelayout}
|
|
|
|
\func{void}{DoFrameLayout}{\void}
|
|
|
|
|
|
\membersection{wxFrameManager::DrawHintRect}\label{wxframemanagerdrawhintrect}
|
|
|
|
\func{void}{DrawHintRect}{\param{wxWindow* }{pane\_window}, \param{const wxPoint\& }{pt}, \param{const wxPoint\& }{offset}}
|
|
|
|
|
|
\membersection{wxFrameManager::GetAllPanes}\label{wxframemanagergetallpanes}
|
|
|
|
\func{wxPaneInfoArray\&}{GetAllPanes}{\void}
|
|
|
|
Returns an array of all panes managed by the frame manager.
|
|
|
|
\membersection{wxFrameManager::GetArtProvider}\label{wxframemanagergetartprovider}
|
|
|
|
\constfunc{wxDockArt*}{GetArtProvider}{\void}
|
|
|
|
Returns the current art provider being used.
|
|
|
|
\membersection{wxFrameManager::GetDockPixelOffset}\label{wxframemanagergetdockpixeloffset}
|
|
|
|
\func{int}{GetDockPixelOffset}{\param{wxPaneInfo\& }{test}}
|
|
|
|
|
|
\membersection{wxFrameManager::GetFlags}\label{wxframemanagergetflags}
|
|
|
|
\constfunc{unsigned int}{GetFlags}{\void}
|
|
|
|
Returns the current manager's flags.
|
|
|
|
\membersection{wxFrameManager::GetManagedWindow}\label{wxframemanagergetmanagedwindow}
|
|
|
|
\constfunc{wxWindow*}{GetManagedWindow}{\void}
|
|
|
|
Returns the frame currently being managed by wxFrameManager.
|
|
|
|
\membersection{wxFrameManager::GetPane}\label{wxframemanagergetpane}
|
|
|
|
\func{wxPaneInfo\&}{GetPane}{\param{wxWindow* }{window}}
|
|
|
|
{\it GetPanel} is used to lookup a wxPaneInfo object
|
|
either by window pointer or by pane name, which acts as a unique id for
|
|
a window pane. The returned wxPaneInfo object may then be modified to
|
|
change a pane's look, state or position. After one or more
|
|
modifications to wxPaneInfo, wxFrameManager::Update() should be called
|
|
to commit the changes to the user interface. If the lookup failed
|
|
(meaning the pane could not be found in the manager), a call to the
|
|
returned wxPaneInfo's IsOk() method will return false.
|
|
|
|
\func{wxPaneInfo\&}{GetPane}{\param{const wxString\& }{name}}
|
|
|
|
|
|
\membersection{wxFrameManager::GetPanePart}\label{wxframemanagergetpanepart}
|
|
|
|
\func{wxDockUIPart*}{GetPanePart}{\param{wxWindow* }{pane}}
|
|
|
|
|
|
\membersection{wxFrameManager::GetPanePositionsAndSizes}\label{wxframemanagergetpanepositionsandsizes}
|
|
|
|
\func{void}{GetPanePositionsAndSizes}{\param{wxDockInfo\& }{dock}, \param{wxArrayInt\& }{positions}, \param{wxArrayInt\& }{sizes}}
|
|
|
|
|
|
\membersection{wxFrameManager::HideHint}\label{wxframemanagerhidehint}
|
|
|
|
\func{void}{HideHint}{\void}
|
|
|
|
|
|
\membersection{wxFrameManager::HitTest}\label{wxframemanagerhittest}
|
|
|
|
\func{wxDockUIPart*}{HitTest}{\param{int }{x}, \param{int }{y}}
|
|
|
|
|
|
\membersection{wxFrameManager::InsertPane}\label{wxframemanagerinsertpane}
|
|
|
|
\func{bool}{InsertPane}{\param{wxWindow* }{window}, \param{const wxPaneInfo\& }{insert\_location}, \param{int }{insert\_level = wxAUI\_INSERT\_PANE}}
|
|
|
|
This method is used to insert either a previously unmanaged pane window
|
|
into the frame manager, or to insert a currently managed pane somewhere
|
|
else. {\it InsertPane} will push all panes, rows, or docks aside and
|
|
insert the window into the position specified by \arg{insert\_location}.
|
|
Because \arg{insert\_location} can specify either a pane, dock row, or dock
|
|
layer, the \arg{insert\_level} parameter is used to disambiguate this. The
|
|
parameter \arg{insert\_level} can take a value of wxAUI\_INSERT\_PANE, wxAUI\_INSERT\_ROW
|
|
or wxAUI\_INSERT\_DOCK.
|
|
|
|
\membersection{wxFrameManager::LayoutAddDock}\label{wxframemanagerlayoutadddock}
|
|
|
|
\func{void}{LayoutAddDock}{\param{wxSizer* }{container}, \param{wxDockInfo\& }{dock}, \param{wxDockUIPartArray\& }{uiparts}, \param{bool }{spacer\_only}}
|
|
|
|
|
|
\membersection{wxFrameManager::LayoutAddPane}\label{wxframemanagerlayoutaddpane}
|
|
|
|
\func{void}{LayoutAddPane}{\param{wxSizer* }{container}, \param{wxDockInfo\& }{dock}, \param{wxPaneInfo\& }{pane}, \param{wxDockUIPartArray\& }{uiparts}, \param{bool }{spacer\_only}}
|
|
|
|
|
|
\membersection{wxFrameManager::LayoutAll}\label{wxframemanagerlayoutall}
|
|
|
|
\func{wxSizer*}{LayoutAll}{\param{wxPaneInfoArray\& }{panes}, \param{wxDockInfoArray\& }{docks}, \param{wxDockUIPartArray\& }{uiparts}, \param{bool }{spacer\_only = false}}
|
|
|
|
|
|
\membersection{wxFrameManager::LoadPaneInfo}\label{wxframemanagerloadpaneinfo}
|
|
|
|
\func{void}{LoadPaneInfo}{\param{wxString }{pane\_part}, \param{wxPaneInfo\& }{pane}}
|
|
|
|
|
|
\membersection{wxFrameManager::LoadPerspective}\label{wxframemanagerloadperspective}
|
|
|
|
\func{bool}{LoadPerspective}{\param{const wxString\& }{perspective}, \param{bool }{update = true}}
|
|
|
|
Loads a saved perspective. If update is true, wxFrameManager::Update()
|
|
is automatically invoked, thus realizing the saved perspective on screen.
|
|
|
|
\membersection{wxFrameManager::LookupPane}\label{wxframemanagerlookuppane}
|
|
|
|
\func{wxPaneInfo\&}{LookupPane}{\param{wxWindow* }{window}}
|
|
|
|
|
|
\func{wxPaneInfo\&}{LookupPane}{\param{const wxString\& }{name}}
|
|
|
|
|
|
\membersection{wxFrameManager::ProcessDockResult}\label{wxframemanagerprocessdockresult}
|
|
|
|
\func{bool}{ProcessDockResult}{\param{wxPaneInfo\& }{target}, \param{const wxPaneInfo\& }{new\_pos}}
|
|
|
|
|
|
\membersection{wxFrameManager::ProcessMgrEvent}\label{wxframemanagerprocessmgrevent}
|
|
|
|
\func{void}{ProcessMgrEvent}{\param{wxFrameManagerEvent\& }{event}}
|
|
|
|
|
|
\membersection{wxFrameManager::Render}\label{wxframemanagerrender}
|
|
|
|
\func{void}{Render}{\param{wxDC* }{dc}}
|
|
|
|
|
|
\membersection{wxFrameManager::Repaint}\label{wxframemanagerrepaint}
|
|
|
|
\func{void}{Repaint}{\param{wxDC* }{dc = NULL}}
|
|
|
|
|
|
\membersection{wxFrameManager::SavePaneInfo}\label{wxframemanagersavepaneinfo}
|
|
|
|
\func{wxString}{SavePaneInfo}{\param{wxPaneInfo\& }{pane}}
|
|
|
|
|
|
\membersection{wxFrameManager::SavePerspective}\label{wxframemanagersaveperspective}
|
|
|
|
\func{wxString}{SavePerspective}{\void}
|
|
|
|
Saves the entire user interface layout into an encoded wxString, which
|
|
can then be stored by the application (probably using wxConfig). When
|
|
a perspective is restored using LoadPerspective(), the entire user
|
|
interface will return to the state it was when the perspective was saved.
|
|
|
|
\membersection{wxFrameManager::SetArtProvider}\label{wxframemanagersetartprovider}
|
|
|
|
\func{void}{SetArtProvider}{\param{wxDockArt* }{art\_provider}}
|
|
|
|
Instructs wxFrameManager to use art provider specified by parameter
|
|
\arg{art\_provider} for all drawing calls. This allows plugable
|
|
look-and-feel features. The previous art provider object, if any,
|
|
will be deleted by wxFrameManager.
|
|
|
|
\membersection{wxFrameManager::SetFlags}\label{wxframemanagersetflags}
|
|
|
|
\func{void}{SetFlags}{\param{unsigned int }{flags}}
|
|
|
|
This method is used to specify wxFrameManager's settings flags. \arg{flags}
|
|
specifies options which allow the frame management behavior to be modified.
|
|
|
|
\membersection{wxFrameManager::SetManagedWindow}\label{wxframemanagersetmanagedwindow}
|
|
|
|
\func{void}{SetManagedWindow}{\param{wxWindow* }{managed\_wnd}}
|
|
|
|
Called to specify the frame which is to be managed by wxFrameManager.
|
|
|
|
\membersection{wxFrameManager::ShowHint}\label{wxframemanagershowhint}
|
|
|
|
\func{void}{ShowHint}{\param{const wxRect\& }{rect}}
|
|
|
|
|
|
\membersection{wxFrameManager::UnInit}\label{wxframemanageruninit}
|
|
|
|
\func{void}{UnInit}{\void}
|
|
|
|
Uninitializes the framework and should be called before a frame is
|
|
destroyed. UnInit() is usually called in the managed wxFrame's destructor.
|
|
|
|
\membersection{wxFrameManager::Update}\label{wxframemanagerupdate}
|
|
|
|
\func{void}{Update}{\void}
|
|
|
|
This method is called after any number of changes are
|
|
made to any of the managed panes. Update() must be invoked after
|
|
AddPane() or InsertPane() are called in order to "realize" or "commit"
|
|
the changes. In addition, any number of changes may be made to
|
|
wxPaneInfo structures (retrieved with wxFrameManager::GetPane), but to
|
|
realize the changes, Update() must be called. This construction allows
|
|
pane flicker to be avoided by updating the whole layout at one time.
|
|
|
|
\membersection{wxFrameManager::UpdateButtonOnScreen}\label{wxframemanagerupdatebuttononscreen}
|
|
|
|
\func{void}{UpdateButtonOnScreen}{\param{wxDockUIPart* }{button\_ui\_part}, \param{const wxMouseEvent\& }{event}}
|
|
|
|
|
|
\membersection{wxFrameManager::wxDEPRECATED}\label{wxframemanagerwxdeprecated}
|
|
|
|
\func{}{wxDEPRECATED}{\param{void }{SetFrame(wxFrame* frame)}}
|
|
|
|
deprecated -- please use SetManagedWindow() and
|
|
and GetManagedWindow() instead
|
|
|
|
|
|
\func{}{wxDEPRECATED}{\param{wxFrame* GetFrame() }{const}}
|
|
|