wxAuiとwxBoxSizerを混ぜたものである。
ソース:
-module(auiandboxTest).
-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,
"Aui and BoxSizer Example",
%%[{size,{300,200}}]),
[{size,{-1,-1}}]),
%% Create Panel
%%Panel1 = wxPanel:new(Frame),
Panel = wxPanel:new(Frame, []),
%% Setup sizers
MainSizer = wxBoxSizer:new(?wxVERTICAL),
%% 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}]),
%% Create Pane Clone?
create_pane(Panel, Manager, Pane),
create_pane(Panel, Manager,
?pi:caption(?pi:top(?pi:new(Pane)), "One")),
create_pane(Panel, Manager,
?pi:caption(?pi:left(?pi:new(Pane)), "two")),
create_pane(Panel, Manager,
?pi:caption(?pi:bottom(?pi:new(Pane)), "Three")),
create_pane(Panel, Manager,
?pi:caption(?pi:centre(?pi:new(Pane)), "Four")),
wxPanel:setSizer(Panel, MainSizer),
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_pane(Parent, Manager, Pane) ->
TextCtrl = wxTextCtrl:new(Parent, ?wxID_ANY, [{size, {300,200}},
{value, "An empty pane"},
{style, 0
bor ?wxDEFAULT
bor ?wxTE_MULTILINE}]),
wxAuiManager:addPane(Manager, TextCtrl, Pane),
TextCtrl.
wx.hrlはErlangのインストールディレクトリ内にあるものを使用している。検索をかけて見つけて。
それを本ソースと同一ディレクトリに配置する。
サンプルが長くなっていく。
0 件のコメント:
コメントを投稿