wxAuiManager

wxAuiManager は wxAUI クラスフレームワークの中心となるクラスです。
wxAuiManager is the central class of the wxAUI class framework.
wxAUI overview も参照してください。
See also wxAUI overview.
wxAuiManager は特定の wxFrame に関連付けられたウィンドウ枠を管理します。 このクラスはウィンドウ枠の wxAuiPaneInfo 情報を使用して各ウィンドウ枠をドックへ格納するか、 フローティングするかを決定します。 wxAuiManager は各フレームを配置するのに wxWidgets のサイザーの仕組みを利用します。 このクラスは描画に置き換え可能なドッククラスを使用するため、 描画処理はすべて 1 箇所に限定され、アプリケーションの必要に応じてカスタマイズすることができます。
wxAuiManager manages the panes associated with it for a particular wxFrame, using a pane's wxAuiPaneInfo information to determine each pane's docking and floating behavior. wxAuiManager 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 application's specific needs.
wxAuiManager は次のように動作します: プログラマはクラスにウィンドウ枠を追加するか、すでにあるウィンドウ枠の プロパティ (ドック位置、フローティングや表示の状態など) を変更します。 この変更を適用するために wxAuiManager の Update() 関数を呼びます。 この一括処理を行うことで、一度に複数のウィンドウ枠を変更することによるちらつきを防ぎ、 Update() を呼ぶことで一度にすべての変更を "確定" します。
wxAuiManager 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, wxAuiManager'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:
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();
後で位置を簡単に変更することができます。 以下はツールウィンドウのウィンドウ枠をフロートします。
Later on, the positions can be modified easily. The following will float an existing pane in a tool window:
m_mgr.GetPane(text1).Float();

レイヤ、行、方向、位置
Layers, Rows and Directions, Positions

wxAUI の内部では、ドックに格納するときの配置はいくつかのウィンドウ枠のパラメータを チェックすることで決定されます。 この 4 つはウィンドウ枠の位置を最終的に決定するのに重要な項目です。
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:
方向: ドックに格納されるウィンドウ枠はそれぞれ上、下、左、右、中央という方向を持っています。 読んで字のごとく、ウィンドウ枠はこの値の指定する位置に配置されます。
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.
位置: 複数のウィンドウ枠をドック内に配置することができます。 ウィンドウの左端に 2 つのウィンドウ枠がドックに格納されてるのを想像してみてください。 ひとつのウィンドウ枠をもう一方の上へ配置できます。 バランスよく管理されるドックでは、ウィンドウ枠の位置は 0 から順番になっています。 そのため、 2 つのウィンドウ枠を左端のドックに格納する場合、ドックの一番上のウィンドウ枠は位置 0、 2 番目のウィンドウ枠は位置 1 となります。
Position: More than one pane can be placed inside of a dock. Imagine two 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 its 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.
行: 行によって 2 つのウィンドウ枠を隣同士に並べることができます。 これの日常的な配置のひとつがツールバーです。 ツールバーを最初の行は 0 、 2 番目の行は 1 というように複数行にできます。 行は垂直なドックにも使用できます。
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 row 0, and the second row 1. Rows can also be used on vertically docked panes.
レイヤ: レイヤはたまねぎと同じです。 レイヤ 0 はまさにウィンドウ枠の中心です。 したがって、あるウィンドウ枠がレイヤ 0 の場合、これは (たまに "コンテンツウィンドウ" として知られている) 中央ウィンドウに 1 番近いウィンドウ枠ということになります。 レイヤを増やすと小さい値のレイヤを使い果たしてしまいます。 これは複数の行にとてもよく似ていますが、下位レベルのウィンドウ枠は上位レベルのウィンドウ枠へ 譲る点が異なります。 レイヤについて理解するには wxAUI サンプルを実行するのが一番です。
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.

継承元
Derived from

wxEvtHandler

インクルードファイル
Include files

<wx/aui/aui.h>

参照
See also

wxAuiPaneInfo, wxAuiDockArt

データ構造
Data structures

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_DEFAULT = wxAUI_MGR_ALLOW_FLOATING |
                        wxAUI_MGR_TRANSPARENT_HINT |
                        wxAUI_MGR_HINT_FADE |
                        wxAUI_MGR_NO_VENETIAN_BLINDS_FADE
}

メンバ
Members


wxAuiManager::wxAuiManager

wxAuiManager(wxWindow* managed_wnd = NULL, unsigned int flags = wxAUI_MGR_DEFAULT)
コンストラクタ。 managed_wnd は管理する wxFrame を指定します。 flags はフレーム管理の動作を変更できるようにするオプションを 指定します。
Constructor. managed_wnd specifies the wxFrame which should be managed. flags specifies options which allow the frame management behavior to be modified.

wxAuiManager::~wxAuiManager

~wxAuiManager()

wxAuiManager::AddPane

bool AddPane(wxWindow* window, const wxAuiPaneInfo& pane_info)
bool AddPane(wxWindow* window, int direction = wxLEFT, const wxString& caption = wxEmptyString)
bool AddPane(wxWindow* window, const wxAuiPaneInfo& pane_info, const wxPoint& drop_pos)
AddPane() はフレームマネージャに子ウィンドウの管理を開始させます。 この関数にはいくつかの種類があります。 最初の形式はウィンドウ枠のパラメータをすべて指定できます。 2 番目の形式は多くの設定を必要としない単純なユーザーインターフェースに使用します。 3 番目の形式はウィンドウ枠を追加する位置を決定するためのドロップポジションを指定できます。
AddPane() tells the frame manager to start managing a child window. There are 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.

wxAuiManager::DetachPane

bool DetachPane(wxWindow* window)
wxAuiManager に window で指定したウィンドウ枠の管理をやめさせます。 window がフローティングしているフレームの中にある場合、これは wxAuiManager が 管理しているフレームを表しています。
Tells the wxAuiManager to stop managing the pane specified by window. The window, if in a floated frame, is reparented to the frame managed by wxAuiManager.

wxAuiManager::GetAllPanes

wxAuiPaneInfoArray& GetAllPanes()
フレームマネージャが管理しているすべてのウィンドウ枠の配列を返します。
Returns an array of all panes managed by the frame manager.

wxAuiManager::GetArtProvider

wxAuiDockArt* GetArtProvider() const
現在使用中の art provider を返します。
Returns the current art provider being used.
参照: wxAuiDockArt
See also: wxAuiDockArt.

wxAuiManager::GetDockSizeConstraint

void GetDockSizeConstraint(double* widthpct, double* heightpct)
現在のドックの constraint の値を返します。 より詳しい情報は SetDockSizeConstraint() を 参照してください。
Returns the current dock constraint values. See SetDockSizeConstraint() for more information.

wxAuiManager::GetFlags

unsigned int GetFlags() const
現在のマネージャのフラグを返します。
Returns the current manager's flags.

wxAuiManager::GetManagedWindow

wxWindow* GetManagedWindow() const
wxAuiManager が現在管理中のフレームを返します。
Returns the frame currently being managed by wxAuiManager.

wxAuiManager::GetManager

static wxAuiManager* GetManager(wxWindow* window)
この関数を呼ぶと指定されたウィンドウの wxAuiManager を返します。 window には wxAuiManager の管理するフレームやウィンドウの 子ウィンドウ、もしくは孫ウィンドウを指定する必要があります。 window はマネージャ自身によって管理されている必要はなく、 管理されているウィンドウの子ウィンドウか孫ウィンドウである必要さえありません。 しかし、管理されているウィンドウの階層内のウィンドウでなければなりません。
Calling this method will return the wxAuiManager for a given window. The window parameter should specify any child window or sub-child window of the frame or window managed by wxAuiManager. The window parameter need not be managed by the manager itself, nor does it even need to be a child or sub-child of a managed window. It must however be inside the window hierarchy underneath the managed window.

wxAuiManager::GetPane

wxAuiPaneInfo& GetPane(wxWindow* window)
wxAuiPaneInfo& GetPane(const wxString& name)
GetPane はポインタまたはユニークな名前から wxAuiPaneInfo オブジェクトを検索するのに使用します。 返された wxAuiPaneInfor オブジェクトはウィンドウ枠の見た目、状態、位置を変更するために 修正して構いません。 wxAuiPaneInfo の修正の後、ユーザーインターフェースの変更を確定するには wxAuiManager::Update() を呼ばなければなりません。 検索に失敗した場合 (これはウィンドウ枠がマネージャ内で見つからなかったことを意味します)、 返された wxAuiPaneInfo の IsOk() 関数は false を返します。
GetPane is used to lookup a wxAuiPaneInfo object either by window pointer or by pane name, which acts as a unique id for a window pane. The returned wxAuiPaneInfo object may then be modified to change a pane's look, state or position. After one or more modifications to wxAuiPaneInfo, wxAuiManager::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 wxAuiPaneInfo's IsOk() method will return false.

wxAuiManager::HideHint

void HideHint()
HideHint() はドックのヒントを隠します。
HideHint() hides any docking hint that may be visible.

wxAuiManager::InsertPane

bool InsertPane(wxWindow* window, const wxAuiPaneInfo& insert_location, int insert_level = wxAUI_INSERT_PANE)
この関数は管理されていないウィンドウをフレームマネージャに挿入したり、 現在管理中のウィンドウ枠を他のマネージャに挿入するのに使用します。 InsertPane はすべてのウィンドウ枠、行、ドックをわきへ押しやり、 insert_location で指定した位置へウィンドウを挿入します。 insert_location でウィンドウ枠、ドック、行、ドックのレイヤのいずれも 指定できるため、これを明確にするために insert_level を指定します。 insert_level は wxAUI_INSERT_PANE、 wxAUI_INSERT_ROW、 wxAUI_INSERT_DOCK のいずれかの値を取ることができます。
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. InsertPane will push all panes, rows, or docks aside and insert the window into the position specified by insert_location. Because insert_location can specify either a pane, dock row, or dock layer, the insert_level parameter is used to disambiguate this. The parameter insert_level can take a value of wxAUI_INSERT_PANE, wxAUI_INSERT_ROW or wxAUI_INSERT_DOCK.

wxAuiManager::LoadPaneInfo

void LoadPaneInfo(wxString pane_part, wxAuiPaneInfo& pane)
LoadPaneInfo() はひとつのウィンドウ枠に関する情報を読み込むだけという点を除いて LoadPerspective に似ています。 この関数は SavePaneInfo() と一緒に使用されます。
LoadPaneInfo() is similar to to LoadPerspective, with the exception that it only loads information about a single pane. It is used in combination with SavePaneInfo().

wxAuiManager::LoadPerspective

bool LoadPerspective(const wxString& perspective, bool update = true)
保存されているパースペクティブを読み込みます。 update が true の場合、 wxAuiManager::Update() を自動的に呼び出し、 スクリーン上にそのパースペクティブを反映します。
Loads a saved perspective. If update is true, wxAuiManager::Update() is automatically invoked, thus realizing the saved perspective on screen.

wxAuiManager::ProcessDockResult

bool ProcessDockResult(wxAuiPaneInfo& target, const wxAuiPaneInfo& new_pos)
ProcessDockResult() は wxAUI レイアウトマネージャの protect メンバです。 この関数はドックの計算をカスタマイズするために継承したクラスでオーバーライドすることができます。
ProcessDockResult() is a protected member of the wxAUI layout manager. It can be overridden by derived classes to provide custom docking calculations.

wxAuiManager::SavePaneInfo

wxString SavePaneInfo(wxAuiPaneInfo& pane)
SavePaneInfo() はひとつのウィンドウ枠に関する情報を保存するだけという点を除いて SavePerspective と似ています。 この関数は LoadPaneInfo() と一緒に使用されます。
SavePaneInfo() is similar to SavePerspective, with the exception that it only saves information about a single pane. It is used in combination with LoadPaneInfo().

wxAuiManager::SavePerspective

wxString SavePerspective()
ユーザーインターフェースのレイアウト全体を (wxConfig を使用しているであろう) アプリケーションが 保存できるエンコード済み wxString に保存します。 LoadPerspective() を使用してパースペクティブを復元したときには、 ユーザーインターフェースはすべてパースペクティブが保存されたときの状態に戻ります。
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.

wxAuiManager::SetArtProvider

void SetArtProvider(wxAuiDockArt* art_provider)
wxAuiManager のすべての描画処理に art_provider で指定した art provider を使用させます。 これによって外観を変更できるようになります。 それまで使用していた art provider があれば wxAuiManager によって削除されます。
Instructs wxAuiManager to use art provider specified by parameter art_provider for all drawing calls. This allows plugable look-and-feel features. The previous art provider object, if any, will be deleted by wxAuiManager.
参照: wxAuiDockArt
See also: wxAuiDockArt.

wxAuiManager::SetDockSizeConstraint

void SetDockSizeConstraint(double widthpct, double heightpct)
ユーザがドックの位置へウィンドウをドラッグして新しいドックを作成したとき、 しばしばウィンドウが大きいために不恰好なほど大きいドックが作成されます。 wxAuiManager はデフォルトで新しいドックのサイズをウィンドウのサイズの 1/3 に制限しています。 水平なドックではウィンドウの高さの 1/3 になり、垂直なドックではウィンドウの幅の 1/3 になります。 この関数を呼ぶとこの制限を調整することができます。 値は 0.0 から 1.0 の間でなければなりません。例えば SetDockSizeContraint を 0.5 で呼んだとき、 新しいドックのサイズを管理しているウィンドウすべての大きさの半分に制限します。
When a user creates a new dock by dragging a window into a docked position, often times the large size of the window will create a dock that is unwieldly large. wxAuiManager by default limits the size of any new dock to 1/3 of the window size. For horizontal docks, this would be 1/3 of the window height. For vertical docks, 1/3 of the width. Calling this function will adjust this constraint value. The numbers must be between 0.0 and 1.0. For instance, calling SetDockSizeContraint with 0.5, 0.5 will cause new docks to be limited to half of the size of the entire managed window.

wxAuiManager::SetFlags

void SetFlags(unsigned int flags)
この関数は wxAuiManager の設定フラグを指定するのに使用します。 flags に指定したオプションでフレーム管理の動作を変更できます。
This method is used to specify wxAuiManager's settings flags. flags specifies options which allow the frame management behavior to be modified.

wxAuiManager::SetManagedWindow

void SetManagedWindow(wxWindow* managed_wnd)
この関数は wxAuiManager が管理するフレームやウィンドウを指定するために呼び出します。 フレーム管理はフレームだけに限りません。 子ウィンドウやカスタムコントロールも管理できます。
Called to specify the frame or window which is to be managed by wxAuiManager. Frame management is not restricted to just frames. Child windows or custom controls are also allowed.

wxAuiManager::ShowHint

void ShowHint(const wxRect& rect)
この関数は指定した矩形のヒントウィンドウを明示的に表示するためにコントロールで使用します。 この関数を呼ぶことは滅多になく、主にドラッグアンドドロップのできるカスタムウィンドウ枠を 実装しているコントロールで使用します。 指定する矩形はスクリーン座標でなければなりません。
This function is used by controls to explicitly show a hint window at the 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.

wxAuiManager::UnInit

void UnInit()
フレームワークを初期化前の状態に戻します。 管理しているフレームやウィンドウを破棄する前に呼ばなければなりません。 通常、 管理している wxFrame のデストラクタで UnInit() が呼ばれます。 管理しているフレームやウィンドウを破棄する前にこの関数を呼ぶ必要があります。 さもないとマネージャがウィンドウからカスタムイベントハンドラを取り除くことができません。
Uninitializes the framework and should be called before a managed frame or 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.

wxAuiManager::Update

void Update()
この関数は管理しているウィンドウ枠で多数の変更があった後に呼ばれます。 AddPane() や InsertPane() の後に変更を "反映" したり、 "確定" するために Update() を 呼び出さなければなりません。 さらに、 (wxAuiManager::GetPane で返される) wxAuiPaneInfo 構造体を変更するでしょうが、 この変更を反映するためには Update() を呼ばなければなりません。 これによってすべてのレイアウトの更新を一度に行うことによるウィンドウ枠のちらつきを 避けることができます。
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 wxAuiPaneInfo structures (retrieved with wxAuiManager::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.