2011年8月8日月曜日

Erlang wxProgressDialog Sample サンプル

進捗バーのあれです。
サンプルできたので、貼っておく。無いよりまし。

今回は進捗バーがすぐに消えてしまうため、キャプチャはない。
じゃあ、キャプチャが取れるようにすればいいのだが、眠いのである。
(「眠い」と書くと、ブログ内の広告が「眠い」関連になる。)

ソース:

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

-export([start/0]).

start()->
    Wx = wx:new(),
    {Frame,PD} = wx:batch(fun() -> create_window(Wx) end),
    wxWindow:show(Frame),
    Count = 1,
    updater(Count,PD),
    loop(Frame),
    wx:destroy(),
    ok.

create_window(Wx)->

    Frame = wxDialog:new(Wx,
   -1,
   "Progress Test",
[{size,{300,200}}]),

    Option = [{maximum,100},{parent,Frame}],
    %%Option = [{maximum,100}],

    %% Create Dialog
    PDialog = wxProgressDialog:new("ProgressDialog Example",
 "Progress Test...",
 Option),
    %% insert sleep
    timer:sleep(300),

    %% Set Connect Close
    wxFrame:connect(Frame, close_window),

    {Frame,PDialog}.

loop(Frame) ->
    receive
% Window Close Event
#wx{event=#wxClose{}} ->
   io:format("~p Closing window ~n",[self()]),
   wxWindow:destroy(Frame),
   ok
    end.

updater(Count,PD) ->
    if Count =< 100 ->
   io:format("Count:~p~n",[Count]),
   wxProgressDialog:update(PD,Count),
   updater(Count + 1,PD);
true ->
   ok
    end.

wx.hrlはErlangインストールディレクトリを漁ってください。

参考:
nori's tech days: ProgressDialog(その2) : http://blog.tonic-water.com/2008/04/progressdialog_30.html