2011年6月19日日曜日

wxErlang wxSplitterWindow sample サンプル

昨日のwxBoxSizerに引き続き、wxSplitterWindowのサンプルができた。
参考に載せておきます。


ソース:

-module(splittertest_3).
-include_lib("wx.hrl").

-export([start/0]).

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,
 "SplitterWindow Example",
 %%[{size,{300,200}}]),
 [{size,{-1,-1}}]),

    %% Create Panel
    %%Panel1 = wxPanel:new(Frame),
     Panel = wxPanel:new(Frame, []),

    %% Setup sizers
    MainSizer = wxBoxSizer:new(?wxVERTICAL),
    Sizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel,
[{label, "wxSplitterWindow"}]),

    Splitter = wxSplitterWindow:new(Panel, []),

    Win1 = wxTextCtrl:new(Splitter, 1, [{value, "Splitted Window 1"},
              {style, ?wxDEFAULT bor ?wxTE_MULTILINE}]),
    Win2 = wxTextCtrl:new(Splitter, 1, [{value, "Splitted Window 1"},
{style, ?wxDEFAULT bor ?wxTE_MULTILINE}]),

    wxSplitterWindow:splitVertically(Splitter, Win1, Win2),
    wxSplitterWindow:setSashGravity(Splitter,   0.5),
    %% Set pane-size =/= 0 to not unsplit on doubleclick
    %% on the splitter
    wxSplitterWindow:setMinimumPaneSize(Splitter,50),
   
    %% Add to sizers
    wxSizer:add(Sizer, Splitter, [{flag, ?wxEXPAND},
 {proportion, 1}]),

    wxSizer:add(MainSizer, Sizer, [{flag, ?wxEXPAND}, {proportion, 1}]),

    wxPanel:setSizer(Panel, MainSizer),

    %% 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.

wx.hrlはErlangのインストールディレクトリを検索してください。
それを本ソースと同一ディレクトリに配置してください。
サンプル作るの疲れますね。

以上

0 件のコメント:

コメントを投稿