スロット/ボックスの用語では、アプリケーション自体がフローです。詳しくはSlotsセクションを 見てください、しかし、これはどんな要素も直接フローのトップレベルに置かれることを単に意味します。
Green Shoesのアプリケーションウィンドウを開始します。これはGreen Shoesプログラムを作るための 出発地点です。ブロックの内部では、ウィンドウを様々なGreen Shoesの要素(ボタン、アートワーク、 その他)で満たし、そしてブロックの外では、ウィンドウがどれぐらい大きいのかを説明するために styles
を利用します。おそらくアプリケーションの名前についてもです。
Shoes.app title: "White Circle",
width: 200, height: 200 do
background black
fill white
oval top: 20, left: 20, radius: 160
end
上記のケースでは、小さなウィンドウを作成します。200×200ピクセルです。 そして、そのウィンドウには黒い背景と白い輪の2つの要素があります。
いったんアプリケーションが作成されれば、それはShoes.APPSの一覧に追加されます。 もしあなたがより多くのウィンドウを生成したいなら、windowメソッドや dialogメソッドを見てください。
現在開いているすべてのGreen Shoesアプリケーションの完全な一覧を作成します。 いったんアプリケーションが閉じられると、その一覧から取り除かれます。 そう、Green Shoesでは一度に多くの実行できます。それはとても元気付けられます。
システムのクリップボードのすべてのテキストを含む文字列を返します。 これはコンピュータ上のどのプログラムからでもカットアンドペーストできるグローバルクリップボードです。
システムクリップボードにa string
のテキストを保存します。
アプリケーションのウィンドウを閉じます。 複数のウィンドウを開いていて、すべてのアプリケーションを閉じたいなら、ビルトインメソッドの exit
を利用してください。
Shoes.app do
para 'hello'
button 'spawn' do
Shoes.app do
para 'hello'
button('close: close this window only'){close}
button('exit: quit Green Shoes'){exit}
end
end
button('close: close this window only'){close}
button('exit: quit Green Shoes'){exit}
end
ダウンロードのスレッド(あなたがJavaScriptに詳しいのなら、およそXMLHttpRequestのようなものです) を開始します。このメソッドは、すぐに戻り値を返してバックグラウンドでダウンロードを開始します。 また、それぞれのダウンロードスレッドがstart
、progress
やfinish
イベントを開始します。 downloadにファイルを送ることや、(finish
イベントの中で)文字列を取り戻すことができます。
downloadにブロックを付けると、それはfinish
イベントとして呼ばれます。
Shoes.app do
stack do
title "Searching Google", size: 16
@status = para "One moment..."
download "http://is.gd/bXTVY7" do |goog|
@status.text = "Headers: #{goog.meta}"
end
end
end
この例は本当にdownload
の最も簡単な形です:いくつかのウェブデータをメモリにダウンロードして、 ダウンロードが完了するとそのデータを操作しています。
download
のもう一つのサンプルはいくつかのウェブデータを、:save
スタイルを利用してファイルに 保存します。
Shoes.app do
stack do
title "Downloading Google image", size: 16
@status = para "One moment..."
download "http://is.gd/GVAGF7",
:save => "nasa50th.gif" do
@status.text = "Okay, is downloaded."
image "nasa50th.gif", top: 100
end
end
end
もしも特定のヘッダかアクションをウェブサーバへ送る必要があるのならば、HTTPリクエストを カスタマイズするために:method
、:headers
や:body
スタイルを利用することができます。 (そして、それら以上のスタイルが必要なら、いつでもRubyのOpenURIクラスを準備することができます。)
# Not yet available
Shoes.app do
stack do
title "GET Google", size: 16
@status = para "One moment..."
download "http://is.gd/bXTVY7",
:method => "GET" do |dump|
@status.text = dump.response.body
end
end
end
上記の例から、Shoesは、Googleのサーチエンジンへ質問するために"GET"メソッドを 利用することが分かります。
注意: Green Shoesは、:method
, :headers
, :body
スタイルをサポートしていません。
include Hpricot
Shoes.app do
status = para "One moment..."
download 'http://is.gd/BatiRt' do |dl|
samples = []
Hpricot(dl).inner_text.each_line do |line|
samples.push($1) if line =~ /(sample.*\.rb)/
end
status.text = samples.join(', ')
flush
end
end
上記の例から、Green ShoesはHTML解析のためにHpricotライブラリを組み込んでいることが わかります。
注意: 今のところWindowsプラットフォームのみです。
現在のアプリケーションのURLを含む文字列を取得します。
どちらのボタンが押されたのかと共に、マウスカーソルの位置を特定します。
Shoes.app do
@p = para
animate do
button, left, top = self.mouse
@p.replace "mouse: #{button}, #{left}, #{top}"
end
end
このアプリケーションを開始したアプリケーションを取得します。多くの場合、これはnil
でしょう。 しかしwindowメソッドを利用してアプリケーションが開始されたなら、 その所有者はwindow
と呼ばれるアプリケーションでしょう。
ウィンドウはすべて構築され、表示されましたか?これは完全に構築される前に、 ウィンドウを利用しようとするスレッド化されたコードのために役に立ちます。 (また、ウィンドウが開くときに実行されるstart
イベントも見てください。)
注意:' 今のところGreen Shoesではstarted?メソッドをサポートしていません。
異なるShoesのURLを見るために、ロケーションを変更します。
(http://google.comのような)絶対パスのURLは悪くないですが、Green ShoesはGreen Shoes アプリケーションがそのアドレスに存在することを期待するでしょう。 (そのため、google.comはHTMLアプリケーションとしては動作しません。)
Next: The Styles Master List