「このクラスは、関連するタブで複数のウィンドウを管理するノートブックのコントロールを表します。」
ソース:
-module(notebookTest).
-include_lib("wx.hrl").
-export([start/0]).
-define(pi, wxAuiPaneInfo).
start()->
Wx = wx:new(),
Frame = wx:batch(fun() -> create_window(Wx) end),
wxWindow:show(Frame),
loop(Frame),
wx:destroy(),
ok.
create_window(Wx)->
%% Create Frame
Frame = wxFrame:new(Wx,
-1,
"NoteBook Example",
%%[{size,{300,200}}]),
[{size,{-1,-1}}]),
%% Create Panel
%%Panel1 = wxPanel:new(Frame),
Panel = wxPanel:new(Frame, []),
%% Create AuiManager
Manager = wxAuiManager:new([{managed_wnd, Panel}
]),
%% Create wxAuiPaneInfo
Pane = ?pi:new(),
?pi:closeButton(Pane),
%?pi:right(Pane),
?pi:dockable(Pane, [{b, true}]),
?pi:floatingSize(Pane, 300,200),
?pi:minSize(Pane, {50,50}),
?pi:paneBorder(Pane),
?pi:floatable(Pane, [{b, true}]),
?pi:centrePane(Pane),
%Pane2 = wxAuiPaneInfo:new(Pane),
%?pi:centrePane(Pane2),
%% Create Pane2 Clone?
create_notebook(Panel, Manager, Pane),
wxAuiManager:connect(Manager, aui_pane_button, [{skip,true}]),
wxAuiManager:connect(Manager, aui_pane_maximize, [{skip,true}]),
wxAuiManager:update(Manager),
%% Set Connect Close
wxFrame:connect(Frame, close_window),
Frame.
loop(Frame) ->
receive
% Window Close Event
#wx{event=#wxClose{}} ->
io:format("~p Closing window ~n",[self()]),
wxWindow:destroy(Frame),
ok
end.
create_notebook(Parent, Manager, Pane) ->
Style = (0
bor ?wxAUI_NB_DEFAULT_STYLE
bor ?wxAUI_NB_TOP
bor ?wxAUI_NB_WINDOWLIST_BUTTON
bor ?wxAUI_NB_CLOSE_ON_ACTIVE_TAB
bor ?wxAUI_NB_TAB_MOVE
bor ?wxAUI_NB_SCROLL_BUTTONS
),
Notebook = wxAuiNotebook:new(Parent, [{style, Style}]),
Tab1 = wxPanel:new(Notebook, []),
wxPanel:setBackgroundColour(Tab1, ?wxBLACK),
wxButton:new(Tab1, ?wxID_ANY, [{label,"New tab"}]),
wxAuiNotebook:addPage(Notebook, Tab1, "You can", []),
Tab2 = wxPanel:new(Notebook, []),
wxPanel:setBackgroundColour(Tab2, ?wxRED),
wxButton:new(Tab2, ?wxID_ANY, [{label,"New tab"}]),
wxAuiNotebook:addPage(Notebook, Tab2, "rearrange", []),
Tab3 = wxPanel:new(Notebook, []),
wxPanel:setBackgroundColour(Tab3, ?wxGREEN),
wxButton:new(Tab3, ?wxID_ANY, [{label,"New tab"}]),
wxAuiNotebook:addPage(Notebook, Tab3, "these tabs", []),
wxAuiManager:addPane(Manager, Notebook, Pane),
wxAuiNotebook:connect(Notebook, command_button_clicked),
wxAuiNotebook:connect(Notebook, command_auinotebook_page_close, [{skip, false}]),
wxAuiNotebook:connect(Notebook, command_auinotebook_page_changed),
Notebook.
wx.hrlはErlangのインストールディレクトリ配下を検索すると、みつかる。
本ソースと同一ディレクトリに配置する。
本サンプルはErlangインストールディレクトリ配下にあるdemoディレクトリのex_aui.erlを参考にしている。いや、ほぼ同じである。
「New Tab」ボタンを押下しても何も起きないので注意。
「New Tab」ボタンを押下しても何も起きないので注意。