Erlangで何かツールを作ってみようと思っているので、今度からサンプルも貼りつつ、ツールの作成にも着手していく。
今回のソースはリストボックスとかその周辺のもの。
ソース:
-module(choicesTest).
-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
Parent = wxFrame:new(Wx,
-1,
"ListBox Example",
%%[{size,{300,200}}]),
[{size,{-1,-1}}]),
%% Create Panel
Panel = wxScrolledWindow:new(Parent, []),
%% Setup sizers
MainSizer = wxBoxSizer:new(?wxVERTICAL),
ListBoxSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel,
[{label, "wxListBox"}]),
ChoiceSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel,
[{label, "wxChoice"}]),
SpinSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel,
[{label, "wxSpinCtrl"}]),
ComboSizer = wxStaticBoxSizer:new(?wxVERTICAL, Panel,
[{label, "wxComboBox"}]),
Sizer = wxBoxSizer:new(?wxHORIZONTAL),
Sizer3 = wxBoxSizer:new(?wxHORIZONTAL),
Choices = ["one","two","three",
"four","five","six",
"seven","eight","nine",
"ten", "eleven", "twelve"],
%% Create a wxListBox that uses multiple selection
ListBox = wxListBox:new(Panel, 1, [{size, {-1,100}},
{choices, ["Multiple selection"|Choices]},
{style, ?wxLB_MULTIPLE}]),
wxListBox:setToolTip(ListBox, "A wxListBox with multiple selection"),
%% Create a wxListBox that uses single selection
ListBox2 = wxListBox:new(Panel, 2, [{size, {-1,100}},
{choices, ["Single selection"|Choices]},
{style, ?wxLB_SINGLE}]),
wxListBox:setToolTip(ListBox2, "A wxListBox with single selection"),
%% Create a wxChoice
Choice = wxChoice:new(Panel, 4, [{choices, Choices}]),
wxChoice:setToolTip(Choice, "A wxChoice"),
%% Create a wxSpinCtrl with range between 0 and 100
SpinCtrl = wxSpinCtrl:new(Panel, []),
wxSpinCtrl:setRange(SpinCtrl, 0, 100),
wxSpinCtrl:setToolTip(SpinCtrl, "A wxSpinCtrl with range from 0 to 100"),
%% Create a wxComboBox and set the value to "Default value"
ComboBox = wxComboBox:new(Panel, 5, [{choices, Choices}]),
wxComboBox:setToolTip(ComboBox, "A wxComboBox"),
wxChoice:connect(Choice,command_choice_selected),
wxSpinCtrl:connect(SpinCtrl,command_spinctrl_updated),
wxComboBox:connect(ComboBox, command_combobox_selected),
%% Add to sizers
Options = [{border,4}, {flag, ?wxALL}],
wxSizer:add(Sizer, ListBox, Options),
wxSizer:add(Sizer, ListBox2, Options),
wxSizer:add(ChoiceSizer, Choice, Options),
wxSizer:add(SpinSizer, SpinCtrl, Options),
wxSizer:add(Sizer3, ChoiceSizer, []),
wxSizer:add(Sizer3, SpinSizer, [{border, 4}, {flag, ?wxLEFT}]),
wxSizer:add(ComboSizer, ComboBox, Options),
wxSizer:add(ListBoxSizer, Sizer, Options),
wxSizer:add(MainSizer, ListBoxSizer, Options),
wxSizer:add(MainSizer, Sizer3, Options),
wxSizer:add(MainSizer, ComboSizer, Options),
wxScrolledWindow:setScrollRate(Panel, 5, 5),
wxPanel:setSizer(Panel, MainSizer),
%% Set Connect Close
wxFrame:connect(Parent, close_window),
Parent.
loop(Frame) ->
receive
% Window Close Event
#wx{event=#wxClose{}} ->
io:format("~p Closing window ~n",[self()]),
wxWindow:destroy(Frame),
ok
end.
0 件のコメント:
コメントを投稿