2011年7月3日日曜日

wxErlang wxAui と wxNotebook Sample サンプル

Erlangインストールディレクトリ配下にあるdemoディレクトリのex_aui.erlを参考に作ったものを載せる。
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 件のコメント:

コメントを投稿