green_shoes 1.0.309 → 1.0.320

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.309
1
+ 1.0.320
data/lib/plugins/video.rb CHANGED
@@ -14,6 +14,10 @@ class Shoes
14
14
  @eos = true; pause
15
15
  when Gst::Message::WARNING, Gst::Message::ERROR
16
16
  p message.parse
17
+ when Gst::Message::ELEMENT
18
+ duration = Gst::QueryDuration.new Gst::Format::TIME
19
+ @real.query duration
20
+ @length = duration.parse.last
17
21
  else
18
22
  #p message.type
19
23
  end
@@ -22,7 +26,7 @@ class Shoes
22
26
  @app.win.signal_connect('destroy'){@real.stop}
23
27
  @stime = 0
24
28
  end
25
-
29
+
26
30
  def playing?
27
31
  @eos ? false : @playing
28
32
  end
@@ -35,6 +39,11 @@ class Shoes
35
39
  @ready = @playing = true
36
40
  (self.time, @eos = 0, nil) if @eos
37
41
  end
42
+ unless @whdl
43
+ @whdl = @app.win.window.class.method_defined?(:xid) ? @app.win.window.xid :
44
+ Win32API.new('user32', 'GetForegroundWindow', [], 'N').call
45
+ @real.video_sink.xwindow_id = @whdl
46
+ end
38
47
  @real.play
39
48
  end
40
49
 
@@ -50,6 +59,18 @@ class Shoes
50
59
  @eos = true
51
60
  @real.stop
52
61
  end
62
+
63
+ def length
64
+ @length / 1_000_000 if @length
65
+ end
66
+
67
+ def position
68
+ @length ? time.to_f / length : 0.0
69
+ end
70
+
71
+ def position=(x)
72
+ self.time = length * x if @length
73
+ end
53
74
 
54
75
  def time
55
76
  seek_time / 1_000_000
@@ -81,7 +102,9 @@ class Shoes
81
102
  args = {}
82
103
  uri = File.join('file://', uri.gsub("\\", '/').sub(':', '')) unless uri =~ /^(http|https|file):\/\//
83
104
  require 'gst'
105
+ require 'win32api'
84
106
  v = Gst::ElementFactory.make 'playbin2'
107
+ v.video_sink = Gst::ElementFactory.make('dshowvideosink')
85
108
  v.uri = uri
86
109
  args[:real], args[:app] = v, self
87
110
  Video.new args
data/lib/shoes/app.rb CHANGED
@@ -288,6 +288,8 @@ class Shoes
288
288
  tv.wrap_mode = Gtk::TextTag::WRAP_WORD
289
289
  tv.buffer.text = args[:text].to_s
290
290
  tv.modify_font(Pango::FontDescription.new(args[:font])) if args[:font]
291
+ tv.accepts_tab = args[:accepts_tab]
292
+ args.delete :accepts_tab
291
293
 
292
294
  eb = Gtk::ScrolledWindow.new
293
295
  eb.set_size_request args[:width], args[:height]
data/lib/shoes/basic.rb CHANGED
@@ -270,6 +270,7 @@ class Shoes
270
270
  end
271
271
 
272
272
  def focus
273
+ real.grab_focus
273
274
  @app.focus_ele = self
274
275
  end
275
276
 
@@ -358,6 +359,15 @@ class Shoes
358
359
  def change &blk
359
360
  super @textview.buffer, &blk
360
361
  end
362
+
363
+ def focus
364
+ textview.grab_focus
365
+ @app.focus_ele = self
366
+ end
367
+
368
+ def accepts_tab=(t)
369
+ textview.accepts_tab = t
370
+ end
361
371
  end
362
372
 
363
373
  class ListBox < Native
@@ -90,7 +90,7 @@ class Shoes
90
90
  def make_link_index msg
91
91
  start, links = 0, []
92
92
  msg.each do |e|
93
- len = e.to_s.gsub(/<\/.*?>/, '').gsub(/<.*?>/, '').length
93
+ len = e.to_s.gsub(/<\/.*?>/, '').gsub(/<.*?>/, '').bytesize
94
94
  (links << e; e.index = [start, start + len]) if e.is_a? Link
95
95
  start += len
96
96
  end
@@ -221,7 +221,7 @@ class Shoes
221
221
  repaint_all_by_order app
222
222
  repaint_textcursors app
223
223
  app.canvas.set_size 0, scrollable_height unless(app.prjct or app.trvw)
224
- n = app.focusables.index app.focus_ele
224
+ n = app.focus_ele ? app.focusables.index(app.focus_ele) : 0
225
225
  app.canvas.focus_chain = (app.focusables[n..-1] + app.focusables[0...n]).map(&:real) if n
226
226
  true
227
227
  end
data/lib/shoes/style.rb CHANGED
@@ -2,13 +2,13 @@ class Shoes
2
2
  class App
3
3
  def style klass, args={}
4
4
  if klass == Shoes::Link
5
- @link_style = LINK_DEFAULT
5
+ @link_style = LINK_DEFAULT.dup
6
6
  @link_style.sub!('single', 'none') if args[:underline] == false
7
7
  @link_style.sub!("foreground='#06E'", "foreground='#{args[:stroke]}'") if args[:stroke]
8
8
  @link_style.sub!('>', " background='#{args[:fill]}'>") if args[:fill]
9
9
  @link_style.sub!('normal', "#{args[:weight]}") if args[:weight]
10
10
  elsif klass == Shoes::LinkHover
11
- @linkhover_style = LINKHOVER_DEFAULT
11
+ @linkhover_style = LINKHOVER_DEFAULT.dup
12
12
  @linkhover_style.sub!('single', 'none') if args[:underline] == false
13
13
  @linkhover_style.sub!("foreground='#039'", "foreground='#{args[:stroke]}'") if args[:stroke]
14
14
  @linkhover_style.sub!('>', " background='#{args[:fill]}'>") if args[:fill]
data/lib/shoes/text.rb CHANGED
@@ -16,7 +16,7 @@ class Shoes
16
16
  end
17
17
 
18
18
  def link str, arg = {}, &blk
19
- Link.new "#{LINK_DEFAULT}#{str}</span>", arg, &blk
19
+ Link.new "#{@link_style}#{str}</span>", arg, &blk
20
20
  end
21
21
 
22
22
  def font name
Binary file
data/static/manual-en.txt CHANGED
@@ -670,7 +670,7 @@ When the above script is run, the person at the computer will see a window with
670
670
  a blank box for entering their name. The name will then be saved in the `name`
671
671
  variable.
672
672
 
673
- === ask_color(title: a string) » Shoes::Color ===
673
+ === ask_color(title: a string) » a RGB array ===
674
674
 
675
675
  Pops up a color picker window. The program will wait for a color to be picked,
676
676
  then gives you back a Color object. See the `Color` help for some ways you can
@@ -1561,7 +1561,7 @@ Possible settings are:
1561
1561
 
1562
1562
  '''Note:''' Green Shoes doesn't support `:stretch` style.
1563
1563
 
1564
- === :strikecolor » a Shoes::Color ===
1564
+ === :strikecolor » a RGB array ===
1565
1565
 
1566
1566
  For: ''banner, caption, inscription, para, span, subtitle, tagline, title''.
1567
1567
 
@@ -1607,7 +1607,7 @@ placed 40 pixels beneath the top edge of the top slot (window). If no
1607
1607
  `:top` style is given, the object is automatically placed in the natural flow
1608
1608
  of the slot it contains.
1609
1609
 
1610
- === :undercolor » a Shoes::Color ===
1610
+ === :undercolor » a RGB array ===
1611
1611
 
1612
1612
  For: ''banner, caption, inscription, para, span, subtitle, tagline, title''.
1613
1613
 
@@ -2131,12 +2131,16 @@ window is given a dialog box look.
2131
2131
 
2132
2132
  '''Note:''' Green Shoes doesn't support `dialog` method.
2133
2133
 
2134
- === edit_box(text) » Shoes::EditBox ===
2134
+ === edit_box(text, :accepts_tab => true or false) » Shoes::EditBox ===
2135
2135
 
2136
2136
  Adds a large, multi-line textarea to this slot. The `text` is optional and
2137
2137
  should be a string that will start out the box. An optional block can be
2138
2138
  attached here which is called any type the user changes the text in the box.
2139
2139
 
2140
+ If `accepts_tab` is true a tab character is inserted.
2141
+ If `accepts_tab` is false the keyboard focus is moved to the next element
2142
+ in the focus chain. This accepts_tab defaults to false.
2143
+
2140
2144
  {{{
2141
2145
  #!ruby
2142
2146
  Shoes.app do
@@ -3775,11 +3779,30 @@ already running, it is stopped.
3775
3779
 
3776
3780
  == Video ==
3777
3781
 
3778
- Green Shoes is trying to support embedding of MP4 video format with Ruby/GStreamer.
3779
- But for now, not available any video formats. Just available some audio formats,
3780
- such as MP3 and Ogg Vorbis.
3782
+ Green Shoes supports embedding of MP4, AVI, WMV, QuickTime and various other popular video formats.
3783
+ This is all thanks to Ruby/GStreamer. Use the `video` method to setup a Shoes::Video object. !{:margin_left => 70}man-ele-video.png!
3784
+
3785
+ {{{
3786
+ Shoes.app width: 400, height: 300 do
3787
+ background gold..cyan, angle: 90
3788
+ space = ' ' * 3
3789
+ v = video 'http://is.gd/xZ6Jih'
3790
+ links = para space,
3791
+ link('play'){v.play; links.move(0, 300)},
3792
+ space, link('pause'){v.pause},
3793
+ space, link('-1sec'){v.time -= 1000},
3794
+ space, link('+1sec'){v.time += 1000},
3795
+ top: 250
3796
+ msg = para left: 250, top: 300
3797
+ every do
3798
+ msg.text = fg("#{(v.position*100).to_i}% " +
3799
+ "(#{v.time/1000}/#{v.length.to_i/1000}sec)",
3800
+ darkcyan)
3801
+ end
3802
+ end
3803
+ }}}
3781
3804
 
3782
- '''Note:''' Green Shoes doesn't support any video formats so far. !{:margin_left => 70}man-ele-video.png!
3805
+ In addition to video formats, some audio formats are also supported, such as MP3, WAV and Ogg Vorbis.
3783
3806
 
3784
3807
  === hide() » self ===
3785
3808
 
@@ -3794,8 +3817,6 @@ the video area when it is playing an audio file, such as an MP3.
3794
3817
  The full length of the video in milliseconds. Returns nil if the video is not
3795
3818
  yet loaded.
3796
3819
 
3797
- '''Note:''' Green Shoes doesn't support length method so far.
3798
-
3799
3820
  === move(left, top) » self ===
3800
3821
 
3801
3822
  Moves the video to specific coordinates, the (left, top) being the upper left
@@ -3823,15 +3844,11 @@ The position of the video as a decimanl number (a Float) between the beginning
3823
3844
  (0.0) and the end (1.0). For instance, a Float value of 0.5 indicates the
3824
3845
  halfway point of the video.
3825
3846
 
3826
- '''Note:''' Green Shoes doesn't support position method so far.
3827
-
3828
3847
  === position = a decimal ===
3829
3848
 
3830
3849
  Sets the position of the video using a Float value. To move the video to its
3831
3850
  25% position: `@video.position = 0.25`.
3832
3851
 
3833
- '''Note:''' Green Shoes doesn't support position= method so far.
3834
-
3835
3852
  === remove() » self ===
3836
3853
 
3837
3854
  Removes the video from its slot. This will stop the video as well.
data/static/manual-ja.txt CHANGED
@@ -1,71 +1,96 @@
1
+ # -*- encoding: utf-8 -*-
1
2
  = Hello! =
2
3
 
3
- Shoesは軽量なグラフィックツールキットです。これは単純で分かりやすいです。Shoesは簡単になるように生まれました。本当に、これは全くの初心者のために作られました。本当に簡単です。
4
+ Shoesは軽量なグラフィックツールキットです。これは単純で分かりやすいです。
5
+ Shoesは簡単になるように生まれました。本当に、これは全くの初心者のために作られました。
6
+ 本当に簡単です。
7
+ Green ShoesはカラフルなShoesの一つです。Ruby/GTK2を使ってRubyだけで書かれています。
4
8
 
5
9
  このたった一行の取るに足りないShoesのプログラムを見てください:
6
10
 
7
11
  {{{
8
12
  #!ruby
9
- Shoes.app { button("Click me!") { alert("Good job.") } }
13
+ Shoes.app{button("Click me!"){alert("Good job.")}}
10
14
  }}}
11
15
 
12
- ShoesプログラムはRubyと呼ばれる言語で書かれています。ShoesがこのRubyコードの単純な行を渡されたとき、"Click me!"と中に書かれたボタンを持ったウィンドウを表示します。このボタンをクリックすると、メッセージがポップアップします。
16
+ ShoesプログラムはRubyと呼ばれる言語で書かれています。
17
+ ShoesがこのRubyコードの単純な行を渡されたとき、"Click me!"と中に書かれたボタンを持った
18
+ ウィンドウを表示します。このボタンをクリックすると、メッセージがポップアップします。
13
19
 
14
- Linuxでは、このように見えるでしょう: !{:margin_left => 100}man-shot1.png!
20
+ Windows 7では、このように見えるでしょう: !{margin_left: 100}man-shot1.png!
15
21
 
16
- 多くのShoesのアプリケーションがグラフィカルなゲームやアートのプログラムである一方、テキストを配置したり編集したりすることも簡単にできます。 !{:margin_left => 40}shoes-manual-apps.gif!
22
+ 多くのShoesのアプリケーションがグラフィカルなゲームやアートのプログラムである一方、
23
+ テキストを配置したり編集したりすることも簡単にできます。 !{margin_left: 80}shoes-manual-apps.png!
17
24
 
18
- そして、理想的には、Shoesプログラムは世の中のいくつかの有名なプラットフォームで実行できるでしょう。マイクロソフトWindows、アップルのMac OS X、Linuxや多くの他のプラットフォームで。
25
+ そして、理想的には、Shoesプログラムは世の中のいくつかの有名なプラットフォームで実行できるでしょう。
26
+ マイクロソフトWindows、アップルのMac OS X、Linuxや多くの他のプラットフォームで。
19
27
 
20
- ^そして、Shoesのビルトインマニュアルへようこそ。このマニュアルはShoesのプログラムそのものです。^
28
+ ^Green Shoesのビルトインマニュアルへようこそ。このマニュアルはGreen Shoesのプログラムそのものです。^
21
29
 
22
- == Introducing Shoes ==
30
+ == Introducing Green Shoes ==
23
31
 
24
- OS XやWindowsではShoesはどのように見えるでしょうか?見栄えはいいですか?全体的に見苦しくて不格好ですか?みんなすぐに身悶えしたに違いないです!それは何をしようとしても、とても質が落ちたものに違いありません。
32
+ Green Shoesは、OS XやLinuxではどうですか?Windowsと同様ですか?
33
+ 人々はすぐにもそのように攻め立てます!
34
+ でも大丈夫、全て試していますからね。
25
35
 
26
- それでは、Shoesのインストールや実行について入る前に、何ができるのかの参考に、ちょっといくつかのスクリーンショットを確認します。
36
+ それでは、Green Shoesのインストールや実行について入る前に、何ができるのかの参考に、
37
+ ちょっといくつかのスクリーンショットを確認します。
27
38
 
28
39
  ==== Mac OS X ====
29
40
 
30
- ShoesはアップルのMac OS X Leopardで、同様にTigerでも動作します。ShoesはPowerPCマシンの同様にサポートしますが、そのプラットフォームではビデオ機能はサポートされません。 !man-look-tiger.png!
41
+ Green ShoesはアップルのMac OSX10.5 PPC via X11で動作します。
42
+ !{margin_left: 100}../snapshots/sample3-osx.png!
31
43
 
32
- これはTigerで実行している`simple-sphere.rb`サンプルです。アプリケーションは通常のOS Xウィンドウの枠の中で実行されていることに注意して下さい。
33
-
34
- この球の全体は不鮮明な楕円形と影によって描かれています。Shoesでは、生き生きとした形状を描くことや、それらの形状に効果を適用することができます。
44
+ これはMac OS X上で`sample3.rb`を実行した時のスナップショットです。
45
+ 全ての円がランダムに描かれています。
46
+ Green Shoesではさまざまな図形を描いたり動かしたりすることができます。
35
47
 
36
48
  ==== Windows ====
37
49
 
38
- Shoesはすべてのバージョンの'''Microsoft Windows XP''''''Windows Vista'''、 '''Windows 7'''で実行でき、他にも'''Windows 2000'''で互換性があります。 !man-look-vista.png!
39
-
40
- 上記はWindows Vistaで`simple-clock.rb`サンプルが動作している図です。この例でも時計を作るために楕円と線が描かれており、これは一秒に何回かそれ自信が再描画するのので生き生きと描かれます。
50
+ Green Shoes'''Microsoft Windows XP''''''Windows 7'''で動作を確認しています。
51
+ !{margin_left: 0}../snapshots/sample33.png!
41
52
 
42
- アプリケーション上部のテキストが、現在の時刻を表示していることに注意してください。Shoesは、いくつかの色、太字、斜字、下線、そしてファイルからフォントをロードして語句を配置する機能を持っています。
53
+ 上記はWindows 7で`sample33.rb`サンプルが動作している図です。
54
+ Green Shoesは3つの拡張ライブラリを含んでいます。
55
+ chipmunk physicsとbloopsaphoneと3D texture mappingです。
56
+ 最初の2つはバイナリで提供しているため、今のところWindowsでしか動作しません。
43
57
 
44
58
  ==== Linux ====
45
59
 
46
- これは'''Ubuntu Linux'''上で`simple-downloader.rb`サンプルが動作しているスクリーンショットです。!man-look-ubuntu.png!
60
+ これは'''Ubuntu on VirtualBox for Windows'''上で`sample44.rb`サンプルが動作しているスクリーンショットです。
61
+ !{margin_left: 130}../snapshots/sample44-linux.png!
47
62
 
48
- ボタンとプログレスバーに注意してください。これらの種類のコントロールはOS XとWindowsとは異なるように見えます。しかし、テキストとリンクは同じように見えるでしょう。
63
+ この例では時計を作るために線や円を描いています。
64
+ 時計の針の動作は線の表示/非表示を毎秒数回切り替えることにより実現しています。
49
65
 
50
- 形状、テキスト、画像や動画はすべてのプラットフォームで同じように見えます。しかしながら、ネイティブコントロール(エディットラインやエディットボックスのような)はウィンドウテーマの見た目に一致します。Shoesはネイティブコントロールを、見た目は変化しますが、指定した大きさの範囲内で維持しようとします。
66
+ アプリケーション上部のテキストが、現在の時刻を表示していることに注意してください。
67
+ Green Shoesは、いくつかの色、太字、斜字、下線、そしてファイルからフォントをロードして語句を配置する
68
+ 機能を持っています。
51
69
 
52
- == Installing Shoes ==
70
+ == Installing Green Shoes ==
53
71
 
54
- はい、ではShoesのインストールを行います。あなたは次のような疑問を持っているでしょう:Rubyのインストールは必要ですか?なにも解凍しなくてもいいですか?どんなコマンドをタイプする必要がありますか?
55
-
56
- いや。Rubyを必要としません。WinZipを必要としません。なにもタイプしなくていいです。
72
+ はい、ではGreen Shoesのインストールを行います。あなたは次のような疑問を持っているでしょう:
73
+ Rubyのインストールは必要ですか?なにも解凍しなくてもいいですか?どんなコマンドをタイプする必要がありますか?
74
+
75
+ はい。RubyやGemをインストールする必要はあります。でも心配しないで下さい。
76
+ 以下に必要なステップを全て示しますから。
77
+
78
+ ==== Step 1: Green Shoesのインストール ====
79
+
80
+ まず最初にRubyをインストールします。
81
+ Windowsの場合はこのサイト[[http://rubyinstaller.org/ RubyInstaller for Windows]]
82
+ にアクセスして、最新の'''RubyInstaller 1.9.2'''をインストールして下さい。
57
83
 
58
- Shoesを開始するには、多くのシステムではShoesのアイコンをクリックしてインストーラを実行するだけです。Shoesはすべてを組み込みで備えています。もっとも、まさしくそれに関して明確になるように、私たちはすべてのステップについて話をします。
84
+ そして、以下のコマンドを実行してください。
59
85
 
60
- ==== Step 1: Shoesのインストール ====
86
+ * gem install green_shoes
61
87
 
62
- [[http://shoesrb.com/ the site of Shoes]]へアクセスしてShoesのインストーラをダウンロードします。通常はホームページの上部の角にあるインストーラのひとつを手に入れます。 !man-builds.png!
88
+ これだけです。簡単でしょう?
63
89
 
64
- ここにインストーラの実行方法があります:
90
+ '''注意:''' green_shoes gemはこのサイト[[http://rubygems.org/gems/green_shoes RubyGems.org]]
91
+ にあります。
65
92
 
66
- * '''Mac OS X'''では、'''.dmg'''で終わっているファイルを手に入れます。このファイルをダブルクリックすると、'''Shoes'''アイコンと'''Applications'''フォルダと共にウィンドウが表示されます。矢印に従って'''Applications'''フォルダにShoesアイコンをドラッグします。 !man-intro-dmg.png!
67
- * '''Windows'''では、'''.exe'''ファイルをダウンロードします。このファイルをダブルクリックして次の指示に従ってください。!man-intro-exe.png!
68
- * '''Linux'''では、'''.run'''で終わっているファイルをダウンロードします。このファイルをダブルクリックするとShoesが起動します。(シェルスクリプトのようにプロンプトからこのファイルを実行することもできます。実際には、これは小さなシェルスクリプトです。)
93
+ もしriやrdocの作成でエラーが発生したら、次のオプション`--no-ri --no-rdoc`を試してみて下さい。
69
94
 
70
95
  ==== Step 2: 新しいテキストファイルの作成 ====
71
96
 
@@ -80,8 +105,8 @@ Shoesプログラムは'''.rb'''の拡張子で終わる、ただの単純なテ
80
105
  そして、空のウィンドウに次のようにタイプしてください:
81
106
 
82
107
  {{{
108
+ require 'green_shoes'
83
109
  Shoes.app do
84
- background "#DFA"
85
110
  para "Welcome to Shoes"
86
111
  end
87
112
  }}}
@@ -90,46 +115,59 @@ Shoesプログラムは'''.rb'''の拡張子で終わる、ただの単純なテ
90
115
 
91
116
  ==== Step 3: それを実行してください!Shoesへ行こう! ====
92
117
 
93
- プログラムを実行するためには:
118
+ プログラムを実行するためには、コンソールウィンドウを開いて、以下のコマンドを実行します。
94
119
 
95
- * '''Mac OS X'''では、'''Applications'''へ再度行きます。今度は、そのフォルダの'''Shoes'''アイコンをダブルクリックします。そのドックの中に赤い靴のアイコンが現れます。'welcome.rb'をデスクトップから、そのドックアイコンへドラッグしてください。
96
- * '''Windows'''では、スタートメニューへから'''All Programs'''、'''Shoes'''そして'''Shoes'''へ行きます。ファイルの選択ボックスが表示されます。デスクトップに目を通して'welcome.rb'を選択します。'''OK'''をクリックしたら、後は自分でやってください。!man-run-xp.png! !man-run-vista.png!
97
- * '''Linux'''では、ほとんど一回の手続きでだけでShoesを実行します。あなたはファイル選択ボックスを見るはずです。デスクトップに目を通して、`welcome.rb`を選択して'''OK'''を押してください。
120
+ * ruby welcome.rb !man-editor-osx.png!
98
121
 
99
122
  まだ大したものではないですが、確かにそれはプログラムです!少なくとも、そのコツが分かったでしょう!
100
123
 
101
124
  ==== Shoesで何を作りますか? ====
102
125
 
103
- さて、ウィンドウアプリケーションを作成することができます。しかし、Shoesはウェブから影響を受けているので、アプリケーションは多くのウィジェットよりも、画像を使ったりテキストを配置する傾向があります。例えば、Shoesはタブコントロールやツールバーを備えていません。Shoesは''軽量な''ツールきっとだと言うことを覚えていますか?
126
+ さて、ウィンドウアプリケーションを作成することができます。
127
+ しかし、Shoesはウェブから影響を受けているので、アプリケーションは多くのウィジェットよりも、
128
+ 画像を使ったりテキストを配置する傾向があります。例えば、Shoesはタブコントロールやツールバーを備えていません。
129
+ Shoesは''軽量な''ツールキットだと言うことを覚えていますか?
104
130
 
105
- それでもShoesはボタンやエディットボックスのようなウィジェットを少しだけ持っています。そして、多くの(タブコントロールまたはツールバーのような)不足している要素は、画像でシミュレーションすることができます。
131
+ それでもShoesはボタンやエディットボックスのようなウィジェットを少しだけ持っています。
132
+ そして、多くの(タブコントロールまたはツールバーのような)不足している要素は、画像でシミュレーションすることが
133
+ できます。
106
134
 
107
- ShoesはCairoと呼ばれるとてもよくできた描画エンジンによって一部書かれており、それは形状や色彩を描くのに利用されています。このように、Shoesは、生き生きとしたグラフィックを描画するためにとてもいい言語である、NodeBoxとProcessingから影響を受けています。
135
+ ShoesはCairoと呼ばれるとてもよくできた描画エンジンによって一部書かれており、
136
+ それは形状や色彩を描くのに利用されています。このように、Shoesは、生き生きとしたグラフィックを描画するために
137
+ とてもいい言語である、NodeBoxとProcessingから影響を受けています。
108
138
 
109
- == The Rules of Shoes ==
139
+ == The Rules of Green Shoes ==
110
140
 
111
- Shoesがどのように動作するのか推測するのはやめましょう。トリッキーな動作で悩むと思います。私はShoesの中心的な規則を要約しまいた。これらは、それにすべての働きをさせるためには知らなくてはならないものです。
141
+ Green Shoesがどのように動作するのか推測するのはやめましょう。トリッキーな動作で悩むと思います。
142
+ 私はShoesの中心的な規則を要約しまいた。これらは、それにすべての働きをさせるためには知らなくては
143
+ ならないものです。
112
144
 
113
- これらはShoesの至る所に目にする一般的な規則です。Shoesは単純さと明解さという全体的な理念を持っていますが、いくつか勉強したり覚えたりする必要のあるポイントがあります。
145
+ これらはGreen Shoesの至る所で目にする一般的な規則です。Green Shoesは単純さと明解さという
146
+ 全体的な理念を持っていますが、いくつか勉強したり覚えたりする必要のあるポイントがあります。
114
147
 
115
148
  ==== Shoesのトリッキーなブロック ====
116
149
 
117
- はい、これは極めて重要です。Shoesはブロックによってトリックをします。このトリックはすべてのものを読みやすくします。しかし、これは深い階層でブロックを利用することを難しくもします。
150
+ はい、これは極めて重要です。Green Shoesはブロックによってトリックをします。
151
+ このトリックはすべてのものを読みやすくします。しかし、これは深い階層でブロックを利用することを難しくもします。
118
152
 
119
153
  '''普通のRubyブロックを試しましょう:'''
120
154
 
121
155
  {{{
122
- ary = ['potion', 'swords', 'shields']
123
- ary.each do |item|
124
- puts item
156
+ Shoes.app do
157
+ ary = ['potion', 'swords', 'shields']
158
+ ary.each do |item|
159
+ puts item
160
+ end
125
161
  end
126
162
  }}}
127
163
 
128
- Shoesでは、これらの種類のブロックは同じ働きをします。この上記のブロックは配列をループして各オブジェクトを`item`変数に格納します。この`item`変数はブロックが終わると消滅(スコープから出る)します。
164
+ Green Shoesでは、これらの種類のブロックは同じ働きをします。この上記のブロックは配列をループして
165
+ 各オブジェクトを`item`変数に格納します。この`item`変数はブロックが終わると消滅(スコープから出る)します。
129
166
 
130
- 考え方を守っているもう一つのことは、普通のRubyブロックの内部と`self`を同じままにしています。`each`の前に呼ばれるどんな`self`でも、それは`each`ブロック内部と同じです。
167
+ 考え方を守っているもう一つのことは、普通のRubyブロックの内部と`self`を同じままにしています。
168
+ `each`の前に呼ばれるどんな`self`でも、それは`each`ブロック内部と同じです。
131
169
 
132
- '''これらはどちらも大部分のShoesのブロックで正しいです。'''
170
+ '''これらはどちらも大部分のGreen Shoesのブロックで正しいです。'''
133
171
 
134
172
  {{{
135
173
  Shoes.app do
@@ -145,7 +183,8 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
145
183
 
146
184
  もう一方のブロックは`stack`ブロックです。このブロックはselfを変更しません。
147
185
 
148
- '''どんな理由があって`app`ブロックはselfを変更するのでしょうか?''' 最後の例を徹底的に詳しく説明することから始めましょう。
186
+ '''どんな理由があって`app`ブロックはselfを変更するのでしょうか?''' 最後の例を徹底的に詳しく説明することから
187
+ 始めましょう。
149
188
 
150
189
  {{{
151
190
  Shoes.app do
@@ -157,7 +196,9 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
157
196
  end
158
197
  }}}
159
198
 
160
- 上記の例におけるすべての`self`はアプリケーションオブジェクトです。Shoesは`app`ブロック内部でselfを変更するために、Rubyの`instance_eval`を利用します。そして、そのメソッドは`stack`を呼び出して`para`をアプリケーションへ送ります。
199
+ 上記の例におけるすべての`self`はアプリケーションオブジェクトです。Shoesは`app`ブロック内部でself
200
+ 変更するために、Rubyの`instance_eval`を利用します。そして、そのメソッドは`stack`を呼び出して
201
+ `para`をアプリケーションへ送ります。
161
202
 
162
203
  '''これはShoesアプリケーション全体でインスタンス変数が利用できる理由でもあります:'''
163
204
 
@@ -173,13 +214,13 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
173
214
 
174
215
  これらのインスタンス変数は、すべてアプリケーションオブジェクト内部で終了します。
175
216
 
176
- '''新しいウィンドウを作成するときはいつでも、`self`も変更されます。'''そして、Shoes.appに加えて、これは[[Element.window]]と[[Element.dialog]]メソッドを意味します。
217
+ '''新しいウィンドウを作成するときはいつでも、`self`も変更されます。'''
177
218
 
178
219
  {{{
179
- Shoes.app :title => "MAIN" do
220
+ Shoes.app title: "MAIN" do
180
221
  para self
181
222
  button "Spawn" do
182
- window :title => "CHILD" do
223
+ Shoes.app title: "CHILD" do
183
224
  para self
184
225
  end
185
226
  end
@@ -190,9 +231,12 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
190
231
 
191
232
  もっとも、`stack`ブロックは別の話です。これは`self`を変えませんし、基本的に標準のブロックです。
192
233
 
193
- '''しかしトリックがあります:'''`stack`を配置してブロックを与えたとき、アプリケーションオブジェクトはstackをメモリへ配置します。ブロックが終了するときstackは立ち去ります。そのため、アプリケーションのトップスロットから新しいstackまで、ブロック内部のすべての描画は'''リダイレクト'''されます。
234
+ '''しかしトリックがあります:'''`stack`を配置してブロックを与えたとき、アプリケーションオブジェクトはstack
235
+ メモリへ配置します。ブロックが終了するときstackは立ち去ります。
236
+ そのため、アプリケーションのトップスロットから新しいstackまで、ブロック内部のすべての描画は'''リダイレクト'''されます。
194
237
 
195
- そのため、まず、たとえ彼らが確かにアプリケーションオブジェクトへ渡したとしても、それらの3つの`para`は`stack`上に描画されます。
238
+ そのため、まず、たとえ彼らが確かにアプリケーションオブジェクトへ渡したとしても、それらの3つの`para`は
239
+ `stack`上に描画されます。
196
240
 
197
241
  {{{
198
242
  Shoes.app do
@@ -206,49 +250,65 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
206
250
 
207
251
  少しトリッキーですよね?これについて知っていても噛みつかれるかもしれません。
208
252
 
209
- それがあなたをつかまえる一つの方法は、`app`ブロック外のプログラム内のどこか他で、stackを編集しようとすることです。
253
+ それがあなたをつかまえる一つの方法は、`app`ブロック外のプログラム内のどこか他で、stackを編集しようと
254
+ することです。
210
255
 
211
256
  例えばstackオブジェクトを使いまわすとしましょう。そして、そのオブジェクトを編集するクラスを持ちます。
212
257
 
213
258
  {{{
214
259
  class Messenger
215
- def initialize(stack)
216
- @stack = stack
260
+ def initialize slot
261
+ @slot = slot
217
262
  end
218
- def add(msg)
219
- @stack.append do
220
- para msg
221
- end
263
+ def add msg
264
+ para msg rescue puts $!
222
265
  end
223
266
  end
267
+
268
+ Shoes.app do
269
+ slot = stack
270
+ m = Messenger.new slot
271
+ m.add 'hello'
272
+ end
224
273
  }}}
225
274
 
226
- アプリケーションが始まるときに、stackオブジェクトをMessengerクラスへ渡すと仮定します。そして、後で、メッセージが来るとき、`add`メソッドはそのstackにパラグラフを追加するのに用いられます。正しく動作するでしょうか?
275
+ アプリケーションが始まるときに、stackオブジェクトをMessengerクラスへ渡すと仮定します。
276
+ そして、後で、メッセージが来るとき、`add`メソッドはそのstackにパラグラフを追加するのに用いられます。
277
+ 正しく動作するでしょうか?
227
278
 
228
- いや、それは動作しません。`para`メソッドが見つかりません。すでにアプリケーションオブジェクトはまわりにありません。そして、それは`para`メソッドによるものです。
279
+ いや、それは動作しません。`para`メソッドが見つかりません。すでにアプリケーションオブジェクトは
280
+ まわりにありません。そして、それは`para`メソッドによるものです。
229
281
 
230
- 幸いにも、それぞれのShoesオブジェクトはアプリケーションオブジェクトを再び開かせる`app`メソッドを持っているため、さらなる編集ができます。
282
+ 幸いにも、それぞれのShoesオブジェクトはアプリケーションオブジェクトを再び開かせる`app`メソッドを
283
+ 持っているため、さらなる編集ができます。
231
284
 
232
285
  {{{
233
286
  class Messenger
234
- def initialize(stack)
235
- @stack = stack
287
+ def initialize slot
288
+ @slot = slot
236
289
  end
237
- def add(msg)
238
- @stack.app do
239
- @stack.append do
240
- para msg
241
- end
290
+ def add msg
291
+ @slot.app do
292
+ para msg rescue puts $!
242
293
  end
243
294
  end
244
295
  end
296
+
297
+ Shoes.app do
298
+ slot = stack
299
+ m = Messenger.new slot
300
+ m.add 'hello'
301
+ end
245
302
  }}}
246
303
 
247
304
  ご想像のとおり、その`app`オブジェクトは`self`をアプリケーションオブジェクトに変更します。
248
305
 
249
306
  ルールは次のようになります:
250
307
 
251
- 1. '''"app"という名前か新しいウィンドウを作成するメソッドはアプリケーションオブジェクトの`self`を変更します。'''[[BR]](これは、[[Element.window]] と[[Element.dialog]]同様に、Shoes.appとSlot.appの両方にとって正しいです。)[[BR]]2. '''stackへ加えられるブロックは、フローや(追加などの)どんな操作メソッドでもselfを変更しません。その代わりに、彼らはスロットをアプリケーションの編集stackにポップします。'''
308
+ 1. '''"app"という名前か新しいウィンドウを作成するメソッドはアプリケーションオブジェクトの`self`を変更します。
309
+ '''[[BR]](これは、[[Element.window]] と[[Element.dialog]]同様に、Shoes.appとSlot.appの両方にとって正しいです。)
310
+ [[BR]]2. '''stackへ加えられるブロックは、フローや(追加などの)どんな操作メソッドでもselfを
311
+ 変更しません。その代わりに、彼らはスロットをアプリケーションの編集stackにポップします。'''
252
312
 
253
313
  ==== 固定された高さに注意 ====
254
314
 
@@ -258,10 +318,12 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
258
318
  Shoes.app do
259
319
  flow do
260
320
  stack :width => 200 do
321
+ background lavender
261
322
  caption "Column one"
262
323
  para "is 200 pixels wide"
263
324
  end
264
325
  stack :width => -200 do
326
+ background bisque
265
327
  caption "Column two"
266
328
  para "is 100% minus 200 pixels wide"
267
329
  end
@@ -269,15 +331,18 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
269
331
  end
270
332
  }}}
271
333
 
272
- スロットの固定された高さは、より一般的ではありません。通常は、テキストや画像がウィンドウの下へできるだけ流れることを望みます。高さは通常は自然に決定します。
334
+ スロットの固定された高さは、より一般的ではありません。通常は、テキストや画像がウィンドウの下へ
335
+ できるだけ流れることを望みます。高さは通常は自然に決定します。
273
336
 
274
- ここで重要なことは、固定された高さが実際はスロットに違うように振る舞わせることです。確かに最後にはスロットは完全に切り離なされて、'''入れ子のウィンドウ'''になります。新しいレイヤーはオペレーティングシステムによってスロットを一定の正方形に保つために作成されます。
337
+ ここで重要なことは、固定された高さが実際はスロットに違うように振る舞わせることです。
338
+ 確かに最後にはスロットは完全に切り離なされて、'''入れ子のウィンドウ'''になります。
339
+ 新しいレイヤーはオペレーティングシステムによってスロットを一定の正方形に保つために作成されます。
275
340
 
276
341
  通常のスロットと入れ子ウィンドウのスロットとの違いは、後者はスクロールバーを持てることです。
277
342
 
278
343
  {{{
279
344
  Shoes.app do
280
- stack :width => 200, :height => 200, :scroll => true do
345
+ stack width: 200, height: 200, scroll: true do
281
346
  background "#DFA"
282
347
  100.times do |i|
283
348
  para "Paragraph No. #{i}"
@@ -286,43 +351,63 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
286
351
  end
287
352
  }}}
288
353
 
289
- これらの入れ子ウィンドウはより多くのメモリを必要とします。彼らはアプリケーションにもう少し負担をかけます。もしあなたが、固定された高さのたくさんのスロットで遅さを経験しているなら、違うアプローチを試してください。
354
+ これらの入れ子ウィンドウはより多くのメモリを必要とします。彼らはアプリケーションにもう少し負担をかけます。
355
+ もしあなたが、固定された高さのたくさんのスロットで遅さを経験しているなら、違うアプローチを試してください。
356
+
357
+ '''注意:''' 固定された高さのマジック(スロットを入れ子のウィンドウにする)は今のところGreen Shoesでは
358
+ サポートしていません。スクロールバーは自動的に現れますがメインウィンドウに対してのみです。
359
+
360
+ {{{
361
+ Shoes.app do
362
+ stack :width => 200 do
363
+ background "#DFA"
364
+ 100.times do |i|
365
+ para "Paragraph No. #{i}"
366
+ end
367
+ end
368
+ end
369
+ }}}
290
370
 
291
371
  ==== 画像と形状のブロック ====
292
372
 
293
- 多くの初心者が形状でウィンドウを散らかし始めます。すべての長方形や楕円形をスロットへ投げ入れるのは確かに簡単です。
373
+ 多くの初心者が形状でウィンドウを散らかし始めます。すべての長方形や楕円形をスロットへ投げ入れるのは
374
+ 確かに簡単です。
294
375
 
295
376
  '''しかしながら、Shoesはそれらすべての形状のためにオブジェクトを生成することを覚えておいて下さい!。'''
296
377
 
297
378
  {{{
298
379
  Shoes.app do
299
- fill black(0.1)
380
+ fill black.push(0.1)
300
381
  100.times do |i|
301
- oval i, i, i * 2
382
+ oval i, i, i * 2 if i > 0
302
383
  end
303
384
  end
304
385
  }}}
305
386
 
306
- この例では、100個の楕円形オブジェクトが生成されます。これは悪すぎるわけではありません。しかし、一つの形状の中にこれらを作成するのなら、これはより軽量になるでしょう。
387
+ この例では、100個の楕円形オブジェクトが生成されます。これは悪すぎるわけではありません。
388
+ しかし、一つの形状の中にこれらを作成するのなら、これはより軽量になるでしょう。
307
389
 
308
390
  {{{
391
+ # Not yet available
309
392
  Shoes.app do
310
393
  fill black(0.1)
311
394
  shape do
312
395
  100.times do |i|
313
- oval i, i, i * 2
396
+ oval i, i, i * 2 if i > 0
314
397
  end
315
398
  end
316
399
  end
317
400
  }}}
318
401
 
319
- ああ、待ってください。この楕円形は今回は満たされません。なぜなら、この形状たちは一つの大きな形状に結合されたからです。そして、このケースではShoesはどこを満たすべきか、分かりません。
402
+ ああ、待ってください。この楕円形は今回は満たされません。なぜなら、この形状たちは一つの大きな形状に
403
+ 結合されたからです。そして、このケースではShoesはどこを満たすべきか、分かりません。
320
404
 
321
405
  そして、アウトラインを厳密に扱うとき、通常は一つの形状に結合することを望みます。
322
406
 
323
407
  別のオプションでは、これらすべての楕円形を一つの画像に結合します。
324
408
 
325
409
  {{{
410
+ # Not yet available
326
411
  Shoes.app do
327
412
  fill black(0.1)
328
413
  image 300, 300 do
@@ -333,24 +418,34 @@ Shoesでは、これらの種類のブロックは同じ働きをします。こ
333
418
  end
334
419
  }}}
335
420
 
336
- そうしよう!その楕円形はすべて一つの300 x 300の画像に結合されます。この場合では、その画像をメモリに保管するのは、おそらく100個の楕円形を持つよりはるかに大きくなるかもしれません。しかし、何千もの形状を扱う場合には、イメージブロックはより安っぽくなる可能性があります。
421
+ そうしよう!その楕円形はすべて一つの300 x 300の画像に結合されます。この場合では、その画像を
422
+ メモリに保管するのは、おそらく100個の楕円形を持つよりはるかに大きくなるかもしれません。
423
+ しかし、何千もの形状を扱う場合には、イメージブロックはより安っぽくなる可能性があります。
337
424
 
338
- ポイントは以下の通りです:画像やブロックへ形状をグループ化することは簡単ですので、もし速度を得ようとするのなら、それを試してください。形状ブロックは特にメモリと速度を節約させるでしょう。
425
+ ポイントは以下の通りです:画像やブロックへ形状をグループ化することは簡単ですので、もし速度を
426
+ 得ようとするのなら、それを試してください。形状ブロックは特にメモリと速度を節約させるでしょう。
427
+
428
+ ''注意:'' 今のところGreen Shoesではこのマジック(複数の形状をグループにして一つの画像や形状にする)
429
+ はサポートしていません。
339
430
 
340
431
  ==== どこでもUTF-8 ====
341
432
 
342
- Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicodeです。(UTF-8の完全な説明は[[http://en.wikipedia.org/wiki/UTF-8 Wikipedia]]を見てください。)
433
+ Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicodeです。
434
+ (UTF-8の完全な説明は[[http://en.wikipedia.org/wiki/UTF-8 Wikipedia]]を見てください。)
343
435
 
344
- しかしながら、UTF-8はWEBで一般的です。そして、多くの異なったプラットホームがそれをサポートします。そこで、Shoesがしなくてはならない変換の量を減らすために、Shoesはすべての文字列がUTF-8フォーマットであることを期待します。
436
+ しかしながら、UTF-8はWEBで一般的です。そして、多くの異なったプラットホームがそれをサポートします。
437
+ そこで、Green Shoesがしなくてはならない変換の量を減らすために、Green Shoesはすべての文字列が
438
+ UTF-8フォーマットであることを期待します。
345
439
 
346
- すばらしいことに、ShoesでUTF-8を使えば無数の言語(ロシア語、日本語、スペイン語、英語)を表示ことができます。テキストエディタでUTF-8を使用することだけを確認してください!
440
+ すばらしいことに、Green ShoesでUTF-8を使えば無数の言語(ロシア語、日本語、スペイン語、英語)を
441
+ 表示ことができます。テキストエディタでUTF-8を使用することだけを確認してください!
347
442
 
348
443
  実例を示します:
349
444
 
350
445
  {{{
351
446
  Shoes.app do
352
447
  stack :margin => 10 do
353
- @edit = edit_box :width => 1.0 do
448
+ @edit = edit_box do
354
449
  @para.text = @edit.text
355
450
  end
356
451
  @para = para ""
@@ -358,32 +453,42 @@ Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicode
358
453
  end
359
454
  }}}
360
455
 
361
- このアプリケーションは何でもコピーして編集ボックスに貼り付けて、Shoesパラグラフで表示することができます。外国語(ギリシャ語か日本語のような)のテキストをこのボックスにコピーして、どのように表示されるかを見ることができます。
456
+ このアプリケーションは何でもコピーして編集ボックスに貼り付けて、Green Shoesパラグラフで表示することが
457
+ できます。外国語(ギリシャ語か日本語のような)のテキストをこのボックスにコピーして、どのように表示されるかを
458
+ 見ることができます。
362
459
 
363
- これは、その編集ボックスがUTF-8の文字を返すことを確かめるのにいいテストです。そして、そのパラグラフはどんなUTF-8の文字でも設定することができます。
460
+ これは、その編集ボックスがUTF-8の文字を返すことを確かめるのにいいテストです。
461
+ そして、そのパラグラフはどんなUTF-8の文字でも設定することができます。
364
462
 
365
- '''重要事項:'''もしいくつかのUTF-8の文字が表示されないなら、パラグラフのフォントを変更する必要があります。これは特にOS Xで一般的です。
463
+ '''重要事項:'''もしいくつかのUTF-8の文字が表示されないなら、パラグラフのフォントを変更する必要があります。
464
+ これは特にOS Xで一般的です。
366
465
 
367
466
  そして、OS Xでのおすすめの日本語フォントは'''AppleGothic'''です。Windowsでは'''MS UI Gothic'''です。
368
467
 
369
468
  {{{
370
469
  Shoes.app do
371
- para "てすと (te-su-to)", :font => case RUBY_PLATFORM
372
- when /mingw/; "MS UI Gothic"
373
- when /darwin/; "AppleGothic, Arial"
374
- else "Arial"
375
- end
470
+ para "てすと (te-su-to)",
471
+ font: case RUBY_PLATFORM
472
+ when /mingw/; "MS UI Gothic"
473
+ when /darwin/; "AppleGothic, Arial"
474
+ else "Arial"
475
+ end
376
476
  end
377
477
  }}}
378
478
 
379
- さらに、Shoesで文字列を扱う場合もUTF-8の文字列を必要とします。編集ボックス、編集ライン、リストボックス、ウィンドウタイトルやテキストブロックはすべてUTF-8をとります。間違った文字の入った文字列をあたえた場合は、コンソールにエラーが表示されます。
479
+ さらに、Green Shoesで文字列を扱う場合もUTF-8の文字列を必要とします。
480
+ 編集ボックス、編集ライン、リストボックス、ウィンドウタイトルやテキストブロックはすべてUTF-8をとります。
481
+ 間違った文字の入った文字列をあたえた場合は、コンソールにエラーが表示されます。
380
482
 
381
483
  ==== メインアプリケーションとRequire ====
382
484
 
383
- '''注意:''' このルールはRaisinsのためのものです。PolicemanではTOPLEVEL_BINDINGを使っているので、最初の例では `main` (Rubyトップレベルオブジェクト)が表示されます。`Shoes.app`ブロックの外側では、`Para`ではなく`Shoes::Para`と記述する必要がありますが。
384
-
485
+ '''注意:''' このルールはRaisinsのためのものです。PolicemanとGreen ShoesではTOPLEVEL_BINDING
486
+ 使っているので、最初の例では `main` (Rubyトップレベルオブジェクト)が表示されます。
487
+ `Shoes.app`ブロックの外側では、`Para`ではなく`Shoes::Para`と記述する必要がありますが。
385
488
 
386
- それぞれのShoesアプリケーションは、それ自体を作ることができる小さな部屋を与えられます。クラスを作成したり変数を設定できますが、それらは他のShoesプログラムから見ることはできません。それぞれのプログラムはそれ自身の匿名クラス内で実行されます。
489
+ それぞれのShoesアプリケーションは、それ自体を作ることができる小さな部屋を与えられます。
490
+ クラスを作成したり変数を設定できますが、それらは他のShoesプログラムから見ることはできません。
491
+ それぞれのプログラムはそれ自身の匿名クラス内で実行されます。
387
492
 
388
493
  {{{
389
494
  main = self
@@ -392,7 +497,9 @@ Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicode
392
497
  end
393
498
  }}}
394
499
 
395
- この匿名クラスは`(shoes)`と呼ばれ、それは空の無名クラスです。`Shoes`モジュールは(`include Shoes`を利用して)このクラスにミックスインされているため、パラグラフクラスを参照しているときに`Para`や`Shoes::Para`を利用することができます。
500
+ この匿名クラスは`(shoes)`と呼ばれ、それは空の無名クラスです。`Shoes`モジュールは
501
+ (`include Shoes`を利用して)このクラスにミックスインされているため、パラグラフクラスを参照しているときに
502
+ `Para`や`Shoes::Para`を利用することができます。
396
503
 
397
504
  このアプローチの長所は:
398
505
 
@@ -405,95 +512,125 @@ Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicode
405
512
 
406
513
  {{{
407
514
  class Storage; end
408
-
515
+
409
516
  Shoes.app do
410
517
  para Storage.new
411
518
  end
412
519
  }}}
413
520
 
414
- アプリケーションが完了すれば`Storage`クラスは消えます。ほかのアプリケーションはStorageクラスを利用できません。そして、それは`require`を利用してロードされるファイルから手に入れることはできません。
521
+ アプリケーションが完了すれば`Storage`クラスは消えます。ほかのアプリケーションはStorageクラスを
522
+ 利用できません。そして、それは`require`を利用してロードされるファイルから手に入れることはできません。
415
523
 
416
524
  もっとも、`require`するときそのコードは近くにいます。それはRubyのトップレベル環境に保持されます。
417
525
 
418
- そして、この規則は:'''アプリケーションのコードに一時的なクラスを保持し、requireに永続的なクラスを保持しなさい'''です。
526
+ そして、この規則は:'''アプリケーションのコードに一時的なクラスを保持し、requireに永続的なクラスを
527
+ 保持しなさい'''です。
419
528
 
420
529
  = Shoes =
421
530
 
422
- Shoesはウィンドウや、それらウィンドウ内部の要素を描くことがすべてです。今はウィンドウ自体に焦点を当てましょう。他のセクションの[[Slots]]や[[Elements]]がウィンドウ内部に関してのすべてを対象としています。
531
+ Green Shoesはウィンドウや、それらウィンドウ内部の要素を描くことがすべてです。
532
+ 今はウィンドウ自体に焦点を当てましょう。
533
+ 他のセクションの[[Slots]]や[[Elements]]がウィンドウ内部に関してのすべてを対象としています。
423
534
 
424
- ここでは、このマニュアルはより辞書のように読んでください。それぞれのページのほとんどは、利用可能なメソッドの一覧であり、各トピックを対象としています。この考えは、すべてに関してとても詳細かつ明確であることです。
535
+ ここでは、このマニュアルはより辞書のように読んでください。それぞれのページのほとんどは、利用可能なメソッドの
536
+ 一覧であり、各トピックを対象としています。この考えは、すべてに関してとても詳細かつ明確であることです。
425
537
 
426
- そして、このマニュアルの難しさにぶつかって、始めることについてまだ分からないなら、おそらくこのマニュアルの[[Hello! beginning]]に戻るべきです。
427
- または、ウェブ上の初心者のリーフレットである[[https://github.com/downloads/shoes/shoes/nks.pdf Nobody Knows Shoes]]を試してください。
538
+ そして、このマニュアルの難しさにぶつかって、始めることについてまだ分からないなら、おそらくこのマニュアルの
539
+ [[Hello! beginning]]に戻るべきです。
540
+ または、ウェブ上の初心者のリーフレットである
541
+ [[https://github.com/downloads/shoes/shoes/nks.pdf Nobody Knows Shoes]]を試してください。
428
542
 
429
543
  ==== 方法の見つけ方 ====
430
544
 
431
545
  このセクションは以下を対象とします:
432
546
 
433
- * [[Built-in Built-in methods]] - Shoesプログラムのどこでも利用できる一般的なメソッド。
434
- * [[App The App window]] - Shoesのすべてのメインウィンドウに添付されたメソッド。
435
- * [[Styles The Styles Master List]] - Shoesのすべてのスタイルの完全な一覧。
436
- * [[Classes The Classes list]] - Shoesのクラスやサブクラスについて表示している表。
547
+ * [[Built-in Built-in methods]] - Green Shoesプログラムのどこでも利用できる一般的なメソッド。
548
+ * [[App The App window]] - Green Shoesのすべてのメインウィンドウに添付されたメソッド。
549
+ * [[Styles The Styles Master List]] - Green Shoesのすべてのスタイルの完全な一覧。
550
+ * [[Classes The Classes list]] - Green Shoesのクラスやサブクラスについて表示している表。
437
551
  * [[Colors The Colors list]] - すべてのビルトインカラーと[[Built-in.rgb]]におけるそれぞれの数の表。
438
552
 
439
- ページをよく見ても見つからないものがあれば、[[Search]]ページを試してください。それは問題をさける手っ取り早い方法です。
553
+ ページをよく見ても見つからないものがあれば、[[Search]]ページを試してください。
554
+ それは問題をさける手っ取り早い方法です。
440
555
 
441
556
  この一般的なリファレンスのあとに、他の2つの特別なセクションがあります:
442
557
 
443
558
  * [[Slots]] - [[Element.stack]]と[[Element.flow]]を対象とする、2つの種類のスロット。
444
559
  * [[Elements]] - すべてのボタン、形状、画像などのためのドキュメント。
445
560
 
446
- ここに[[Element Element Creation]]ページ(追加できるすべてのエレメントの一覧)と[[Common Common Methods]] ページ(すべてのスロットやエレメントにあるメソッドの一覧)の2つのとても大切なページがあります。
561
+ ここに[[Element Element Creation]]ページ(追加できるすべてのエレメントの一覧)と
562
+ [[Common Common Methods]] ページ(すべてのスロットやエレメントにあるメソッドの一覧)の
563
+ 2つのとても大切なページがあります。
447
564
 
448
565
  == Built-in Methods ==
449
566
 
450
- これらのメソッドはShoesのプログラムを通してどこでも利用できます。
567
+ これらのメソッドはGreen Shoesのプログラムを通してどこでも利用できます。
451
568
 
452
- これらすべてのコマンドは、あなたがドットを彼らに付与しない点が珍しいです。
569
+ これらすべてのコマンドは、あなたがドットをそれらに付与しない点が珍しいです。
453
570
  '''このマニュアルのほかのすべてのメソッドはオブジェクトにドットを付与すべきです。'''
454
571
  しかし、これらのビルトインメソッド(カーネルメソッドとも呼ばれている)はドットがないことを意味します。
455
572
 
456
573
  一般的なものとして`alert`があります:
457
574
 
458
575
  {{{
459
- #!ruby
460
- alert "No dots in sight"
576
+ alert "No dots in sight"
461
577
  }}}
462
578
 
463
- これと、カーネルメソッドはなくArrayとStringに対してだけ利用可能な`reverse`メソッドを比較してください:
579
+ これと、ArrayとStringに対してだけ利用可能な、カーネルメソッドではない、
580
+ `reverse`メソッドを比較してください:
464
581
 
465
582
  {{{
466
583
  #!ruby
467
- "Plaster of Paris".reverse
468
- #=> "siraP fo retsalP"
469
- [:dogs, :cows, :snakes].reverse
470
- #=> [:snakes, :cows, :dogs]
584
+ Shoes.app do
585
+ para "Plaster of Paris".reverse
586
+ #=> "siraP fo retsalP"
587
+ para [:dogs, :cows, :snakes].reverse
588
+ #=> [:snakes, :cows, :dogs]
589
+ end
471
590
  }}}
472
591
 
473
- 描画やボタンを作成したりするための多くのShoesメソッドはスロットへ付与されます。より詳しい情報については[[Slots]]のセクションを見てください。
592
+ 描画やボタンを作成したりするための多くのGreen Shoesメソッドはスロットへ付与されます。
593
+ より詳しい情報については[[Slots]]のセクションを見てください。
474
594
 
475
595
  ==== ビルトイン定数 ====
476
596
 
477
- Shoesにはいくつかのビルトイン定数があり、それはどんなバージョンのShoesが実行されているかを判別することを証明するのに利用できるかもしれません
597
+ Green Shoesにはいくつかのビルトイン定数があり、それはどんなバージョンのGreen Shoes
598
+ 実行されているかを判別することを証明するのに利用できるかもしれません
478
599
 
479
- '''Shoes::RELEASE_NAME''' Shoesリリース名の文字列定数です。Curiousから始まって、すべてのShoesリリースは名付けられます。
600
+ '''DIR''' は、`green_shoes/lib`のフルパスです。
480
601
 
481
- '''Shoes::RELEASE_ID''' Shoesリリース表す数字を含みます。そして、例えばCuriousはナンバー1であり、それは初めての公式リリースです。
602
+ '''COLORS''' は、アプリケーションで利用できる色の完全な一覧です。
482
603
 
483
- '''Shoes::REVISION''' は、そのビルドのSubversionのリビジョン番号です。
604
+ '''FONTS''' は、アプリケーションで利用できるフォントの完全な一覧です。
484
605
 
485
- '''Shoes::FONTS''' は、アプリケーションで利用できるフォントの完全な一覧です。この一覧は[[Built-in.font]]メソッドによってロードされたすべてのフォントを含みます。
606
+ '''VERSION''' は、Green Shoesのバージョンです。
486
607
 
487
- === alert(message: a string) » nil ===
608
+ {{{
609
+ Shoes.app do
610
+ para VERSION
611
+ para fg(DIR, red)
612
+ image File.join(DIR, '../static/gshoes-icon.png')
613
+ para fg(FONTS.join(', '), green)
614
+ para COLORS.map{|k, v| [k, v]}
615
+ end
616
+ }}}
617
+
618
+ === alert(message: a string, :block => true or false, title: a string) » nil ===
488
619
 
489
620
  短いメッセージを含むウィンドウをポップアップします。
490
621
 
491
622
  {{{
492
623
  #!ruby
493
- alert("I'm afraid I must interject!")
624
+ alert "I'm afraid I must interject!"
494
625
  }}}
495
626
 
496
- alertは信じられないほど煩わしいので控えめに利用してください!プログラムをデバッグする手助けのメッセージを表示するためにalertを利用するなら、[[Built-in.debug]]または[[Built-in.info]]メソッドを調べてみてください。
627
+ alertは信じられないほど煩わしいので控えめに利用してください!
628
+ プログラムをデバッグする手助けのメッセージを表示するためにalertを利用するなら、
629
+ Rubyの標準メソッド`puts`や`p`を試してみて下さい。
630
+
631
+ もしalert()メソッドをスレッドセーフにしたい場合、すなわちメインスレッドをブロックしたくない場合は、
632
+ `:block => false`オプションを使ってください。またウィンドウのタイトルを変更したい場合は、
633
+ `:title => a string`オプションを使ってください。
497
634
 
498
635
  === ask(message: a string) » a string ===
499
636
 
@@ -501,26 +638,31 @@ alertは信じられないほど煩わしいので控えめに利用してくだ
501
638
 
502
639
  {{{
503
640
  #!ruby
504
- name = ask("Please, enter your name:")
641
+ if name = ask("Please, enter your name:")
642
+ Shoes.app{para "Welcome, #{name}!"}
643
+ end
505
644
  }}}
506
645
 
507
- 上記のスクリプトを実行するとき、コンピュータを利用している人は、名前を入力するための空のボックスを持つウィンドウを見るでしょう。そして、その名前は`name`変数に保存されます。
646
+ 上記のスクリプトを実行するとき、コンピュータを利用している人は、名前を入力するための空のボックスを
647
+ 持つウィンドウを見るでしょう。そして、その名前は`name`変数に保存されます。
508
648
 
509
- === ask_color(title: a string) » Shoes::Color ===
649
+ === ask_color(title: a string) » RGB array ===
510
650
 
511
- カラーピッカーウィンドウをポップアップします。このプログラムは色が選ばれるのを待ち、そしてあなたに色オブジェクトを与えます。いくつかの方法でこの色を利用するために`Color`ヘルプを見てください。
651
+ カラーピッカーウィンドウをポップアップします。このプログラムは色が選ばれるのを待ち、そしてあなたに
652
+ 色オブジェクトを与えます。いくつかの方法でこの色を利用するために`Color`ヘルプを見てください。
512
653
 
513
654
  {{{
514
655
  #!ruby
515
- backcolor = ask_color("Pick a background")
656
+ backcolor = ask_color "Pick a background"
516
657
  Shoes.app do
517
- background backcolor
658
+ background backcolor
518
659
  end
519
660
  }}}
520
661
 
521
662
  === ask_open_file() » a string ===
522
663
 
523
- "ファイルを開く。。。"ウィンドウをポップアップします。これは標準のウィンドウであり、すべてのフォルダを表示して開くファイルを選択させます。そしてファイルの名前を返します。
664
+ "ファイルを開く。。。"ウィンドウをポップアップします。これは標準のウィンドウであり、すべてのフォルダを表示して
665
+ 開くファイルを選択させます。そしてファイルの名前を返します。
524
666
 
525
667
  {{{
526
668
  #!ruby
@@ -537,11 +679,15 @@ alertは信じられないほど煩わしいので控えめに利用してくだ
537
679
  {{{
538
680
  #!ruby
539
681
  save_as = ask_save_file
682
+ Shoes.app do
683
+ para save_as
684
+ end
540
685
  }}}
541
686
 
542
687
  === ask_open_folder() » a string ===
543
688
 
544
- "フォルダを開く。。。"ウィンドウをポップアップします。これは、すべてのフォルダを表示し、開くフォルダを選択させる標準のウィンドウです。これはあなたにフォルダの名前を渡します。
689
+ "フォルダを開く。。。"ウィンドウをポップアップします。これは、すべてのフォルダを表示し、開くフォルダを
690
+ 選択させる標準のウィンドウです。これはあなたにフォルダの名前を渡します。
545
691
 
546
692
  {{{
547
693
  #!ruby
@@ -553,50 +699,42 @@ alertは信じられないほど煩わしいので控えめに利用してくだ
553
699
 
554
700
  === ask_save_folder() » a string ===
555
701
 
556
- これは先ほど述べた`ask_open_folder`と似ており、"フォルダを保存する。。。"ウィンドウをポップアップします。OS X上では、現在このメソッドは`ask_open_folder`のエイリアスのようになっています。
702
+ これは先ほど述べた`ask_open_folder`と似ており、"フォルダを保存する。。。"ウィンドウをポップアップします。
557
703
 
558
704
  {{{
559
705
  #!ruby
560
706
  save_to = ask_save_folder
707
+ Shoes.app do
708
+ para save_to
709
+ end
561
710
  }}}
562
711
 
563
-
564
712
  === confirm(question: a string) » true or false ===
565
713
 
566
- yes-または-noの質問をポップアップします。コンピュータの前の人が'''yes'''をクリックするなら、返される`true`を受け取ります。そうでは無いなら、返される`false`を受け取ります。
714
+ yes-または-noの質問をポップアップします。コンピュータの前の人が'''yes'''をクリックするなら、
715
+ 返される`true`を受け取ります。そうでは無いなら、返される`false`を受け取ります。
567
716
 
568
717
  {{{
569
718
  #!ruby
570
719
  if confirm("Draw a circle?")
571
- Shoes.app{ oval :top => 0, :left => 0, :radius => 50 }
720
+ Shoes.app{ oval top: 0, left: 0, radius: 50 }
572
721
  end
573
722
  }}}
574
723
 
575
- === debug(message: a string) » nil ===
576
-
577
- Shoesコンソールへデバッグメッセージを送ります。
578
- どんなShoesウィンドウ上でも、`Alt-/`(または、OS X上では`⌘-/`)を押すことによって、Shoesコンソールを立ち上げることができます。
579
-
580
- {{{
581
- #!ruby
582
- debug("Running Shoes on " + RUBY_PLATFORM)
583
- }}}
584
-
585
- [[Built-in.error]]、[[Built-in.warn]]と[[Built-in.info]]メソッドも確認してください。
586
-
587
- === error(message: a string) » nil ===
588
-
589
- Shoesコンソールへエラーメッセージ送ります。このメソッドはエラーをログするためだけに利用すべきです。自分ためのメッセージをログするには[[Built-in.debug]]メソッドを試してください。
590
-
591
- おお、そして、文字列よりも、直接このメソッドに例外を手渡すべきです。そしてそれは適切にフォーマットされるでしょう。
592
-
593
724
  === exit() ===
594
725
 
595
726
  プログラムを止めます。突然に終了したいときはいつでも、これを呼んでください。
596
727
 
728
+ '''注意:''' Ruby自身の標準`exit`メソッドを使う必要がある場合は (フォークされたRubyプロセス内で等)
729
+ `Kernel.exit`を呼び出して下さい。
730
+
597
731
  === font(message: a string) » an array of font family names ===
598
732
 
599
- ファイルからTrueType(または他の種類のフォント)をロードします。TrueTypeはすべてのプラットフォームでサポートされるとはいえ、あなたのプラットフォームは他の種類のフォントをサポートするかもしれません。Shoesはこの動作に、それぞれのオペレーティングシステムのビルトインフォントシステムを利用します。
733
+ ファイルからTrueType(または他の種類のフォント)をロードします。TrueTypeはすべてのプラットフォームで
734
+ サポートされるとはいえ、あなたのプラットフォームは他の種類のフォントをサポートするかもしれません。
735
+ Shoesはこの動作に、それぞれのオペレーティングシステムのビルトインフォントシステムを利用します。
736
+
737
+ '''注意:''' 今のところGreen Shoesでは、fontメソッドをサポートしていません。
600
738
 
601
739
  ここにどのプラットフォームで何のフォントが動作するかの目安があります。
602
740
 
@@ -610,104 +748,123 @@ Shoesコンソールへエラーメッセージ送ります。このメソッド
610
748
  * TrueType font (.ttf) - Mac OS X, Linux, Windows
611
749
  * TrueType collection (.ttc) - Mac OS X, Linux, Windows
612
750
 
613
- フォントが適切にロードされたなら、ファイルに見つかったフォントの名前の配列を取り戻すでしょう。そうではなく、ファイルにはフォントが見つからないなら`nil`が返されます。
751
+ フォントが適切にロードされたなら、ファイルに見つかったフォントの名前の配列を取り戻すでしょう。
752
+ そうではなく、ファイルにはフォントが見つからないなら`nil`が返されます。
614
753
 
615
- また興味深いことに:`Shoes::FONTS`定数はこのプラットフォームで利用可能なフォントの完全な一覧です。`include?`を利用していくつかのフォントをチェックできます。
754
+ また興味深いことに:`Shoes::FONTS`定数はこのプラットフォームで利用可能なフォントの完全な一覧です。
755
+ `include?`を利用していくつかのフォントをチェックできます。
616
756
 
617
757
  {{{
618
- if Shoes::FONTS.include? "Helvetica"
619
- alert "Helvetica is available on this system."
620
- else
621
- alert "You do not have the Helvetica font."
622
- end
758
+ if Shoes::FONTS.include? "Coolvetica"
759
+ alert "Coolvetica is available on this system."
760
+ else
761
+ alert "You do not have the Coolvetica font."
762
+ end
623
763
  }}}
624
764
 
625
- もしフォントを表示することに問題があるなら、それを利用する前に、アプリケーションがフォントをロードすることを確認してください。特にOS Xでは、もしフォントがロードされる前に利用されたなら、フォントキャッシュはロードされたフォントを無視する傾向があります。
626
-
627
- === gradient(color1, color2) » Shoes::Pattern ===
765
+ もしフォントを表示することに問題があるなら、それを利用する前に、アプリケーションがフォントを
766
+ ロードすることを確認してください。特にOS Xでは、もしフォントがロードされる前に利用されたなら、
767
+ フォントキャッシュはロードされたフォントを無視する傾向があります。
628
768
 
629
- 二つの色から直線勾配を作ります。それぞれの色に、色を描画するためにShoes::Colorオブジェクトか文字列を渡します。
769
+ === gradient(color1, color2) » a range of RGB array ===
630
770
 
631
- === gray(the numbers: darkness, alpha) » Shoes::Color ===
632
-
633
- 暗さのレベルや、任意的にはアルファレベルからグレースケールカラーを作成します。
771
+ 二つの色から直線勾配を作ります。それぞれの色に、色を描画するためにRGB arrayか文字列を渡します。
772
+ 例えば、`gradient(green, red)`は、`green..red`と同じです。
773
+ また`gradient(green, '#FA3')`のように記述することもできます。
634
774
 
635
775
  {{{
636
- black = gray(0.0)
637
- white = gray(1.0)
776
+ Shoes.app do
777
+ oval 100, 100, 100,
778
+ fill: gradient(green, '#FA3'), angle: 45
779
+ end
638
780
  }}}
639
781
 
640
- === info(message: a string) » nil ===
782
+ === gray(the numbers: darkness, alpha) » RGB array ===
641
783
 
642
- Shoesコンソールでユーザへの情報を含むメッセージを記録します。そして、そのデバッグメッセージはプログラムで何が発生したのか見つけることを助けるようにデザインされており、`info`メッセージはプログラムについてユーザに追加の情報を教えます。
784
+ 暗さのレベルや、任意的にはアルファレベルからグレースケールカラーを作成します。
643
785
 
644
786
  {{{
645
- #!ruby
646
-
647
- info("You just ran the info example on Shoes #{Shoes::RELEASE_NAME}.")
787
+ Shoes.app do
788
+ nostroke
789
+ 11.times do |i|
790
+ y = x = 50 + 10 * i
791
+ r = 200 - 10 * i
792
+ oval x, y, r, fill: gray(1-i*0.1)
793
+ end
794
+ end
648
795
  }}}
649
796
 
650
- 例えば、Shyファイルをロードすればいつでも、ShoesはコンソールにShyの著者とバージョンの情報を含むメッセージを印字します。
651
-
652
- === rgb(a series of numbers: red, green, blue, alpha) » Shoes::Color ===
797
+ === rgb(red, green, blue, alpha) » an array of decimal numbers ===
653
798
 
654
799
  赤、緑、青の構成要素から色を作成します。アルファレベル(透明度を示す)は任意に加えることができます。
655
800
 
656
801
  整数を渡すときは、0から255までの値を利用してください。
657
802
 
658
803
  {{{
659
- blueviolet = rgb(138, 43, 226)
660
- darkgreen = rgb(0, 100, 0)
804
+ Shoes.app do
805
+ blueviolet = rgb(138, 43, 226, 0.5)
806
+ darkgreen = rgb(0, 100, 0, 0.5)
807
+ oval 100, 100, 100,
808
+ fill: [blueviolet, darkgreen].sample(1)
809
+ end
661
810
  }}}
662
811
 
663
812
  または、0.0から1.0までの10進数を利用してください。
664
813
 
665
814
  {{{
666
- blueviolet = rgb(0.54, 0.17, 0.89)
667
- darkgreen = rgb(0, 0.4, 0)
815
+ Shoes.app do
816
+ blueviolet = rgb(0.54, 0.17, 0.89)
817
+ darkgreen = rgb(0, 0.4, 0)
818
+ oval 100, 100, 100,
819
+ fill: [blueviolet, darkgreen].sample(1)
820
+ end
668
821
  }}}
669
822
 
670
- このメソッドは`Shoes.rgb`と呼ばれるかもしれません。
671
-
672
- === warn(message: a string) » nil ===
673
-
674
- ユーザのために警告を記録します。警告は壊滅的なエラー(それは[[Built-in.error]]を見てください。)ではありません。これは、プログラムが将来変化したり、プログラムの一部が信頼できなくなるなどの通知です。
675
-
676
- 警告やエラーを見るためには、`Alt-/`(OS Xの場合は`⌘-/`)によりShoesコンソールを開いてください。
677
-
678
823
  == The App Object ==
679
824
 
680
- アプリケーションはURLでコードを実行する一つのウィンドウです。URLを切り替えるとき、新しいアプリケーションオブジェクトが作成され、スタック、フローや他の要素で満たされます。
825
+ アプリケーションはURLでコードを実行する一つのウィンドウです。URLを切り替えるとき、新しい
826
+ アプリケーションオブジェクトが作成され、スタック、フローや他の要素で満たされます。
681
827
 
682
- アプリケーションはウィンドウ自体です。それは閉じられるか、クリアされるか、新しい要素で満たされるかもしれません。!{:margin_left => 100}man-app.png!
828
+ アプリケーションはウィンドウ自体です。それは閉じられるか、クリアされるか、新しい要素で満たされる
829
+ かもしれません。!{:margin_left => 100}../snapshots/sample46.png!
683
830
 
684
- スロット/ボックスの用語では、アプリケーション自体がフローです。詳しくは''Slots''セクションを見てください、しかし、これはどんな要素も直接フローのトップレベルに置かれることを単に意味します。
831
+ スロット/ボックスの用語では、アプリケーション自体がフローです。詳しくは''Slots''セクションを
832
+ 見てください、しかし、これはどんな要素も直接フローのトップレベルに置かれることを単に意味します。
685
833
 
686
834
  === Shoes.app(styles) { ... } » Shoes::App ===
687
835
 
688
- Shoesのアプリケーションウィンドウを開始します。これはShoesプログラムを作るための出発地点です。ブロックの内部では、ウィンドウを様々なShoesの要素(ボタン、アートワーク、その他)で満たし、そしてブロックの外では、ウィンドウがどれぐらい大きいのかを説明するために`styles`を利用します。おそらくアプリケーションの名前や、それがリサイズ可能かどうかについてもです。
836
+ Green Shoesのアプリケーションウィンドウを開始します。これはGreen Shoesプログラムを作るための
837
+ 出発地点です。ブロックの内部では、ウィンドウを様々なGreen Shoesの要素(ボタン、アートワーク、
838
+ その他)で満たし、そしてブロックの外では、ウィンドウがどれぐらい大きいのかを説明するために
839
+ `styles`を利用します。おそらくアプリケーションの名前についてもです。
689
840
 
690
841
  {{{
691
842
  #!ruby
692
- Shoes.app(:title => "White Circle",
693
- :width => 200, :height => 200, :resizable => false) {
694
- background black
695
- fill white
696
- oval :top => 20, :left => 20, :radius => 160
697
- }
843
+ Shoes.app title: "White Circle",
844
+ width: 200, height: 200 do
845
+ background black
846
+ fill white
847
+ oval top: 20, left: 20, radius: 160
848
+ end
698
849
  }}}
699
850
 
700
- 上記のケースでは、小さなウィンドウを作成します。200×200ピクセルです。それはリサイズ不可能です。そして、そのウィンドウには黒い背景と白い輪の2つの要素があります。
851
+ 上記のケースでは、小さなウィンドウを作成します。200×200ピクセルです。
852
+ そして、そのウィンドウには黒い背景と白い輪の2つの要素があります。
701
853
 
702
- いったんアプリケーションが作成されれば、それは[[App.Shoes.APPS]]の一覧に追加されます。もしあなたがより多くのウィンドウを生成したいなら、[[Element.window]]メソッドや[[Element.dialog]]メソッドを見てください。
854
+ いったんアプリケーションが作成されれば、それは[[App.Shoes.APPS]]の一覧に追加されます。
855
+ もしあなたがより多くのウィンドウを生成したいなら、[[Element.window]]メソッドや
856
+ [[Element.dialog]]メソッドを見てください。
703
857
 
704
858
  === Shoes.APPS() » An array of Shoes::App objects ===
705
859
 
706
- 現在開いているすべてのShoesアプリケーションの完全な一覧を作成します。いったんアプリケーションが閉じられると、その一覧から取り除かれます。そう、Shoesでは一度に多くの実行できます。それはとても元気付けられます。
860
+ 現在開いているすべてのGreen Shoesアプリケーションの完全な一覧を作成します。
861
+ いったんアプリケーションが閉じられると、その一覧から取り除かれます。
862
+ そう、Green Shoesでは一度に多くの実行できます。それはとても元気付けられます。
707
863
 
708
864
  === clipboard() » a string ===
709
865
 
710
- システムのクリップボードのすべてのテキストを含む文字列を返します。これはコンピュータ上のどのプログラムからでもカットアンドペーストできるグローバルクリップボードです。
866
+ システムのクリップボードのすべてのテキストを含む文字列を返します。
867
+ これはコンピュータ上のどのプログラムからでもカットアンドペーストできるグローバルクリップボードです。
711
868
 
712
869
  === clipboard = a string ===
713
870
 
@@ -715,72 +872,112 @@ Shoesのアプリケーションウィンドウを開始します。これはSho
715
872
 
716
873
  === close() ===
717
874
 
718
- アプリケーションのウィンドウを閉じます。複数のウィンドウを開いていて、すべてのアプリケーションを閉じたいなら、ビルトインメソッドの`exit`を利用してください。
875
+ アプリケーションのウィンドウを閉じます。
876
+ 複数のウィンドウを開いていて、すべてのアプリケーションを閉じたいなら、ビルトインメソッドの
877
+ `exit`を利用してください。
878
+
879
+ {{{
880
+ Shoes.app do
881
+ para 'hello'
882
+ button 'spawn' do
883
+ Shoes.app do
884
+ para 'hello'
885
+ button('close: close this window only'){close}
886
+ button('exit: quit Green Shoes'){exit}
887
+ end
888
+ end
889
+ button('close: close this window only'){close}
890
+ button('exit: quit Green Shoes'){exit}
891
+ end
892
+ }}}
719
893
 
720
894
  === download(url: a string, styles) ===
721
895
 
722
- ダウンロードのスレッド(あなたがJavaScriptに詳しいのなら、およそXMLHttpRequestのようなものです)を開始します。このメソッドは、すぐに戻り値を返してバックグラウンドでダウンロードを開始します。また、それぞれのダウンロードスレッドが`start`、`progress`や`finish`イベントを開始します。
896
+ ダウンロードのスレッド(あなたがJavaScriptに詳しいのなら、およそXMLHttpRequestのようなものです)
897
+ を開始します。このメソッドは、すぐに戻り値を返してバックグラウンドでダウンロードを開始します。
898
+ また、それぞれのダウンロードスレッドが`start`、`progress`や`finish`イベントを開始します。
723
899
  downloadにファイルを送ることや、(`finish`イベントの中で)文字列を取り戻すことができます。
724
900
 
725
901
  downloadにブロックを付けると、それは`finish`イベントとして呼ばれます。
726
902
 
727
- download
728
-
729
903
  {{{
730
- #!ruby
731
904
  Shoes.app do
732
905
  stack do
733
- title "Searching Google", :size => 16
906
+ title "Searching Google", size: 16
734
907
  @status = para "One moment..."
735
-
736
- # Search Google for 'shoes' and print the HTTP headers
737
- download "http://www.google.com/search?q=shoes" do |goog|
738
- @status.text = "Headers: " + goog.response.headers.inspect
908
+
909
+ download "http://is.gd/bXTVY7" do |goog|
910
+ @status.text = "Headers: #{goog.meta}"
739
911
  end
740
912
  end
741
913
  end
742
914
  }}}
743
915
 
744
- そして、ダウンロードしたデータを利用したいなら`goog.response.body`を利用することにより行います。この例は本当に`download`の最も簡単な形です:いくつかのウェブデータをメモリに取ってきて、それを一度ハンドリングしています。
916
+ この例は本当に`download`の最も簡単な形です:いくつかのウェブデータをメモリにダウンロードして、
917
+ ダウンロードが完了するとそのデータを操作しています。
745
918
 
746
- `download`のもう一つのサンプルはいくつかのウェブデータを、`:save`スタイルを利用してファイルに保存します。
919
+ `download`のもう一つのサンプルはいくつかのウェブデータを、`:save`スタイルを利用してファイルに
920
+ 保存します。
747
921
 
748
922
  {{{
749
- #!ruby
750
923
  Shoes.app do
751
924
  stack do
752
- title "Downloading Google image", :size => 16
925
+ title "Downloading Google image", size: 16
753
926
  @status = para "One moment..."
754
-
755
- download "http://www.google.com/logos/nasa50th.gif",
927
+
928
+ download "http://is.gd/GVAGF7",
756
929
  :save => "nasa50th.gif" do
757
- @status.text = "Okay, is downloaded."
930
+ @status.text = "Okay, is downloaded."
931
+ image "nasa50th.gif", top: 100
758
932
  end
759
933
  end
760
934
  end
761
935
  }}}
762
936
 
763
- このケースでも、ダウンロードファイルのヘッダを取得することができますが、メモリにそのデータが保存されていないため`response.body`は`nil`になります。ダウンロードしたものを得るためにはそのファイルを開く必要があります。
764
-
765
- 特定のヘッダかアクションをウェブサーバへ送る必要があるのならば、HTTPリクエストをカスタマイズするために`:method`、`:headers`や`:body`スタイルを利用することができます。(そして、それら以上の変更の必要があるのなら、いつでもRubyのOpenURIクラスを破壊することができます。)
937
+ もしも特定のヘッダかアクションをウェブサーバへ送る必要があるのならば、HTTPリクエストを
938
+ カスタマイズするために`:method`、`:headers`や`:body`スタイルを利用することができます。
939
+ (そして、それら以上のスタイルが必要なら、いつでもRubyのOpenURIクラスを準備することができます。)
766
940
 
767
941
  {{{
768
942
  #!ruby
943
+ # Not yet available
769
944
  Shoes.app do
770
945
  stack do
771
- title "POSTing to Google", :size => 16
946
+ title "GET Google", size: 16
772
947
  @status = para "One moment..."
948
+
949
+ download "http://is.gd/bXTVY7",
950
+ :method => "GET" do |dump|
951
+ @status.text = dump.response.body
952
+ end
953
+ end
954
+ end
955
+ }}}
956
+
957
+ 上記の例から、Shoesは、Googleのサーチエンジンへ質問するために"GET"メソッドを
958
+ 利用することが分かります。
959
+
960
+ '''注意:''' Green Shoesは、`:method`, `:headers`, `:body`スタイルをサポートしていません。
773
961
 
774
- download "http://www.stevex.net/dump.php",
775
- :method => "POST", :body => "v=1.0&q=shoes" do |dump|
776
- require 'hpricot'
777
- @status.text = Hpricot(dump.response.body).inner_text
962
+ {{{
963
+ include Hpricot
964
+ Shoes.app do
965
+ status = para "One moment..."
966
+ download 'http://is.gd/BatiRt' do |dl|
967
+ samples = []
968
+ Hpricot(dl).inner_text.each_line do |line|
969
+ samples.push($1) if line =~ /(sample.*\.rb)/
778
970
  end
971
+ status.text = samples.join(', ')
972
+ flush
779
973
  end
780
974
  end
781
975
  }}}
782
976
 
783
- 上記の例から、ShoesはHTMLを解析するHpricotなライブラリを含んでいることが分かります。
977
+ 上記の例から、Green ShoesはHTML解析のためにHpricotライブラリを組み込んでいることが
978
+ わかります。
979
+
980
+ '''注意:''' 今のところWindowsプラットフォームのみです。
784
981
 
785
982
  === location() » a string ===
786
983
 
@@ -803,57 +1000,82 @@ download
803
1000
 
804
1001
  === owner() » Shoes::App ===
805
1002
 
806
- このアプリケーションを開始したアプリケーションを取得します。多くの場合、これは`nil`でしょう。しかし[[Element.window]]メソッドを利用してアプリケーションが開始されたなら、その所有者は`window`と呼ばれるアプリケーションでしょう。
1003
+ このアプリケーションを開始したアプリケーションを取得します。多くの場合、これは`nil`でしょう。
1004
+ しかし[[Element.window]]メソッドを利用してアプリケーションが開始されたなら、
1005
+ その所有者は`window`と呼ばれるアプリケーションでしょう。
807
1006
 
808
1007
  === started?() » true or false ===
809
1008
 
810
- ウィンドウはすべて構築され、表示されましたか?これは完全に構築される前に、ウィンドウを利用しようとするスレッド化されたコードのために役に立ちます。
1009
+ ウィンドウはすべて構築され、表示されましたか?これは完全に構築される前に、
1010
+ ウィンドウを利用しようとするスレッド化されたコードのために役に立ちます。
811
1011
  (また、ウィンドウが開くときに実行される`start`イベントも見てください。)
812
1012
 
1013
+ ''注意:''' 今のところGreen Shoesではstarted?メソッドをサポートしていません。
1014
+
813
1015
  === visit(url: a string) ===
814
1016
 
815
1017
  異なるShoesのURLを見るために、ロケーションを変更します。
816
1018
 
817
- (http://google.comのような)絶対パスのURLは悪くないですが、ShoesはShoesアプリケーションがそのアドレスに存在することを期待するでしょう。(そのため、google.comはHTMLアプリケーションとしては動作しません。)
1019
+ (http://google.comのような)絶対パスのURLは悪くないですが、Green ShoesはGreen Shoes
1020
+ アプリケーションがそのアドレスに存在することを期待するでしょう。
1021
+ (そのため、google.comはHTMLアプリケーションとしては動作しません。)
818
1022
 
819
1023
  == The Styles Master List ==
820
1024
 
821
- 外観を変更したいですか?Shoesにおいてはスタイルが要素の表示方法を変更するために利用されます。場合によっては、要素のすべてのクラスのスタイルでさえ設定できます。(すべての段落に特定のフォントを与えるように)
1025
+ 外観を変更したいですか?
1026
+ Green Shoesにおいてはスタイルが要素の表示方法を変更するために利用されます。
1027
+ 場合によっては、要素のすべてのクラスのスタイルでさえ設定できます。
1028
+ (すべての段落に特定のフォントを与えるように)
822
1029
 
823
1030
  スタイルは簡単にspotできます。通常は要素が生成されるときに現れます。
824
1031
 
825
1032
  {{{
826
- Shoes.app :title => "A Styling Sample" do
827
- para "Red with an underline", :stroke => red, :underline => "single"
1033
+ Shoes.app title: "A Styling Sample" do
1034
+ para 'Green Shoes', align: 'center', size: 50
828
1035
  end
829
1036
  }}}
830
1037
 
831
- このappには`:title`スタイルが設定されています。そしてこのappの内部の段落には、赤い`:stroke`スタイルと`:underline`スタイルが設定されます。
1038
+ このappには`:title`スタイルが設定されています。そしてこのappの内部の段落には、
1039
+ 中央揃えの`:align`スタイルとフォントサイズ50の`:size`スタイルが設定されます。
832
1040
 
833
1041
  このスタイルのハッシュは、どんな要素やスロットも利用できる[[Common.style]]メソッドを利用して変更できます。
834
1042
 
1043
+ '''注意:''' 今のところGreen Shoesでは、styleメソッドで変更できる要素は形状のみです。
1044
+
835
1045
  {{{
836
- Shoes.app :title => "A Styling Sample" do
837
- @text = para "Red with an underline"
838
- @text.style(:stroke => red, :underline => "single")
1046
+ Shoes.app title: "A Styling Sample" do
1047
+ choose =
1048
+ lambda{[red, blue, green, yellow].sample}
1049
+ s = star 100, 50, 30, 200, 180, strokewidth: 5
1050
+ button 'change colors' do
1051
+ s.style stroke: choose.call, fill: choose.call
1052
+ end
839
1053
  end
840
1054
  }}}
841
1055
 
842
- 多くのスタイルもメソッドとして呼び出すことで設定することができます。(メソッドを見つけるために手動での検索を行うでしょう。)
1056
+ 多くのスタイルもメソッドとして呼び出すことで設定することができます。
1057
+ (メソッドを見つけるために手動での検索を行うでしょう。)
1058
+
1059
+ '''注意:''' Green Shoesではメソッドとしてはそれらをサポートしていません。
843
1060
 
844
1061
  {{{
845
- Shoes.app :title => "A Styling Sample" do
846
- @text = para "Red with an underline"
847
- @text.stroke = red
848
- @text.underline = "single"
1062
+ # Not yet available
1063
+ Shoes.app title: "A Styling Sample" do
1064
+ choose =
1065
+ lambda{[red, blue, green, yellow].sample}
1066
+ s = star 100, 50, 30, 200, 180, strokewidth: 5
1067
+ button 'change colors' do
1068
+ s.stroke = choose.call; s.fill = choose.call
1069
+ end
849
1070
  end
850
1071
  }}}
851
1072
 
852
- どんなスタイルでも分かるようにすべてのマニュアルを苦労して読ませるよりも、この役に立つページはShoesのあらゆるスタイルを急いで駆け抜けて、どこでスタイルが利用されるかについて示唆します。
1073
+ どんなスタイルでも分かるようにすべてのマニュアルを苦労して読ませるよりも、この役に立つページは
1074
+ Green Shoesのあらゆるスタイルを急いで駆け抜けて、どこでスタイルが利用されるかについて示唆します。
853
1075
 
854
1076
  === :align » a string ===
855
1077
 
856
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1078
+ ''banner, caption, inscription, para, subtitle, tagline, title''で利用できます。
857
1079
 
858
1080
  テキストの整列です。これは次のどれかです:
859
1081
 
@@ -863,54 +1085,88 @@ download
863
1085
 
864
1086
  === :angle » a number ===
865
1087
 
866
- ''background, border, gradient''で利用できます。
1088
+ ''background, border, line, oval, rect, shape, star''で利用できます。
867
1089
 
868
- グラデーションに摘要する角度です。通常はグラデーションの色の効果は上から下です。`:angle`を90に設定するなら反時計回りに90度回転し、グラデーションは左から右になるでしょう。
1090
+ グラデーションに適用する角度です。通常はグラデーションの色の効果は上から下です。
1091
+ `:angle`を90に設定するなら反時計回りに90度回転し、グラデーションは左から右になるでしょう。
869
1092
 
870
1093
  === :attach » a slot or element ===
871
1094
 
872
1095
  ''flow, stack''で利用できます。
873
1096
 
874
- 他のスロットや要素と比較してスロットをピンで止めます。ウィンドウの左上の角からスロットを配置するために`:attach => Window`と書く人もいるかもしれません。
875
- これについてもう少し取り上げると、`:top => 10, :left => 10, :attach => Window`のスタイルはスロットをウインドウの座標の(10, 10)に配置します。
1097
+ 他のスロットや要素と比較してスロットをピンで止めます。ウィンドウの左上の角からスロットを配置する
1098
+ ために`:attach => Window`と書く人もいるかもしれません。
1099
+ これについてもう少し取り上げると、`:top => 10, :left => 10, :attach => Window`のスタイルは
1100
+ スロットをウインドウの座標の(10, 10)に配置します。
1101
+
1102
+ 動く要素にスロットがアタッチされた場合は、そのスロットはそれとともに動きます。
1103
+ アタッチメントが`nil`にリセットされるなら、通常はそのスロットはそれを取り囲む他のオブジェクトとともに流れます。
876
1104
 
877
- 動く要素にスロットがアタッチされた場合は、そのスロットはそれとともに動きます。アタッチメントが`nil`にリセットされるなら、通常はそのスロットはそれを取り囲む他のオブジェクトとともに流れます。
1105
+ '''注意:''' Green Shoesは`:attach`スタイルをサポートしていません。
878
1106
 
879
1107
  === :autoplay » true or false ===
880
1108
 
881
1109
  ''video''で利用できます。
882
1110
 
883
- ビデオは現れた後で再生を開始すべきですか?`true`を設定すると、ビデオはユーザに尋ねること無く開始するでしょう。
1111
+ ビデオは現れた後で再生を開始すべきですか?`true`を設定すると、ビデオはユーザに尋ねること無く
1112
+ 開始するでしょう。
1113
+
1114
+ '''注意:''' Green Shoesは`:autoplay`スタイルをサポートしていません。
1115
+
1116
+ === :back » true or false ===
1117
+
1118
+ ''shapes, image, textblocks''で利用できます。
1119
+
1120
+ 他の要素の後ろに配置されます。
1121
+
1122
+ {{{
1123
+ Shoes.app do
1124
+ rect 100, 100, 100, 100, fill: green
1125
+ rect 120, 120, 100, 100, fill: yellow
1126
+ para 'hello', left: 150, top: 150, front: true
1127
+ oval 150, 150, 100, 100, fill: red
1128
+ oval 180, 180, 100, 100, fill: gray, back: true
1129
+ end
1130
+ }}}
884
1131
 
885
1132
  === :bottom » a number ===
886
1133
 
887
1134
  ''すべてのスロットと要素''で利用できます。
888
1135
 
889
- 要素の下の端の座標にピクセルを設定します。その端はコンテナの下の端に対して配置されます。そのため、`:bottom => 0`は、スロットの下の端とその下の端が接するように要素を配置するでしょう。
1136
+ 要素の下の端の座標にピクセルを設定します。その端はコンテナの下の端に対して配置されます。
1137
+ そのため、`:bottom => 0`は、スロットの下の端とその下の端が接するように要素を配置するでしょう。
1138
+
1139
+ '''注意:''' Green Shoesは`:bottom`スタイルをサポートしていません。
890
1140
 
891
1141
  === :cap » :curve or :rect or :project ===
892
1142
 
893
- ''arc, arrow, border, flow, image, mask, rect, star, shape, stack''で利用できます。
1143
+ ''arc, line, shape''で利用できます。
894
1144
 
895
- 線の終点の形状を曲がったもの(curved)か角張ったもの(square)に設定します。追加の説明は[[Art.cap]]メソッドを見てください。
1145
+ 線の終点の形状を曲がったもの(curved)か角張ったもの(square)に設定します。
1146
+ 追加の説明は[[Art.cap]]メソッドを見てください。
896
1147
 
897
1148
  === :center » true or false ===
898
1149
 
899
1150
  ''arc, image, oval, rect, shape''で利用できます。
900
1151
 
901
- `:top`と`:left`の座標が形状の中心を意味するかどうか示します。`true`を設定すると、[[Art.transform]]メソッドに`:center`を設定したのと似ています。
1152
+ `:top`と`:left`の座標が形状の中心を意味するかどうか示します。
1153
+ `true`を設定すると、[[Art.transform]]メソッドに`:center`を設定したのと似ています。
1154
+
1155
+ '''注意:''' Green Shoesは`:center`スタイルをサポートしていません。
902
1156
 
903
1157
  === :change » a proc ===
904
1158
 
905
1159
  ''edit_box, edit_line, list_box''で利用できます。
906
1160
 
907
- `change`イベントハンドラはスタイルに保存されます。例として、edit_boxの[[EditBox.change]]メソッドを見てください。
1161
+ `change`イベントハンドラはスタイルに保存されます。例として、edit_boxの
1162
+ [[EditBox.change]]メソッドを見てください。
908
1163
 
909
1164
  === :checked » true or false ===
910
1165
 
911
1166
  ''check, radio''で利用できます。
912
1167
 
913
- チェックボックスまたはラジオボタンがクリックされましたか?`true`が設定されるなら、そのボックスはチェックされます。[[Check.checked=]]メソッドも見てください。
1168
+ チェックボックスまたはラジオボタンがクリックされましたか?
1169
+ `true`が設定されるなら、そのボックスはチェックされます。[[Check.checked=]]メソッドも見てください。
914
1170
 
915
1171
  === :choose » a string ===
916
1172
 
@@ -920,7 +1176,7 @@ download
920
1176
 
921
1177
  === :click » a proc ===
922
1178
 
923
- ''arc, arrow, banner, button, caption, check, flow, image, inscription, line, link, mask, oval, para, radio, rect, shape, stack, star, subtitle, tagline, title''で利用できます。
1179
+ ''arc, arrow, button, check, flow, image, line, link, oval, radio, rect, shape, stack, star''で利用できます。
924
1180
 
925
1181
  `click`イベントハンドラはスタイルに保存されます。解説は[[Events.click]]メソッドを見てください。
926
1182
 
@@ -928,23 +1184,35 @@ download
928
1184
 
929
1185
  ''background, border, rect''で利用できます。
930
1186
 
931
- 長方形の要素のそれぞれの曲がった角の半径です。例として、6を設定した場合、長方形の角は6ピクセルの半径のカーブを与えられます。
1187
+ 長方形の要素のそれぞれの曲がった角の半径です。例として、6を設定した場合、長方形の角は
1188
+ 6ピクセルの半径のカーブを与えられます。
932
1189
 
933
1190
  === :displace_left » a number ===
934
1191
 
935
1192
  ''すべてのスロットと要素''で利用できます。
936
1193
 
937
- 形状、テキストブロックまたはその他のどんな種類のオブジェクトでも左か右に置き換えます。正数は与えられた数のピクセルによって右へ置き換え、負数は左へ置き換えます。オブジェクトを置き換えることはページの実際のレイアウトに影響を与えません。この振る舞いに少し驚くかもしれないので、このスタイルを利用する前に、[[Position.displace]]のドキュメントを読むようにしてください。
1194
+ 形状、テキストブロックまたはその他のどんな種類のオブジェクトでも左か右に置き換えます。
1195
+ 正数は与えられた数のピクセルによって右へ置き換え、負数は左へ置き換えます。
1196
+ オブジェクトを置き換えることはページの実際のレイアウトに影響を与えません。
1197
+ この振る舞いに少し驚くかもしれないので、このスタイルを利用する前に、[[Position.displace]]の
1198
+ ドキュメントを読むようにしてください。
1199
+
1200
+ '''注意:''' Green Shoesは`:displace_left`スタイルをサポートしていません。
938
1201
 
939
1202
  === :displace_top » a number ===
940
1203
 
941
1204
  ''すべてのスロットと要素''で利用できます。
942
1205
 
943
- 形状、テキストブロックまたはその他のどんな種類のオブジェクトでも上か下に置き換えます。正数は与えられた数のピクセルによって下へ置き換え、負数は上へ置き換えます。オブジェクトを置き換えることはページの実際のレイアウトやオブジェクトの本当の座標に影響を与えません。この振る舞いに少し驚くかもしれないので、[[Position.displace]]のドキュメントを読んでください。
1206
+ 形状、テキストブロックまたはその他のどんな種類のオブジェクトでも上か下に置き換えます。
1207
+ 正数は与えられた数のピクセルによって下へ置き換え、負数は上へ置き換えます。
1208
+ オブジェクトを置き換えることはページの実際のレイアウトやオブジェクトの本当の座標に影響を与えません。
1209
+ この振る舞いに少し驚くかもしれないので、[[Position.displace]]のドキュメントを読んでください。
1210
+
1211
+ '''注意:''' Green Shoesは`:displace_top`スタイルをサポートしていません。
944
1212
 
945
1213
  === :emphasis » a string ===
946
1214
 
947
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1215
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
948
1216
 
949
1217
  強調によってテキストを整えます。(一般的にはイタリック体にされます。)
950
1218
 
@@ -956,27 +1224,45 @@ download
956
1224
 
957
1225
  === :family » a string ===
958
1226
 
959
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1227
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
960
1228
 
961
- 与えられたフォントファミリーでテキストを整えます。文字列はフォントファミリー名かカンマで区切られたフォントファミリーの一覧を含むべきです。
1229
+ 与えられたフォントファミリーでテキストを整えます。文字列はフォントファミリー名かカンマで区切られた
1230
+ フォントファミリーの一覧を含むべきです。
962
1231
 
963
- === :fill » a hex code, a Shoes::Color or a range of either ===
1232
+ === :fill » a hex code, a RGB array or a range of either ===
964
1233
 
965
- ''arc, arrow, background, banner, caption, code, del, em, flow, image, ins, inscription, line, link, mask, oval, para, rect, shape, span, stack, star, strong, sub, sup, subtitle, tagline, title''で利用できます。
1234
+ ''background, banner, border, caption, inscription, para, line, oval,
1235
+ rect, shape, star, subtitle, tagline, title''で利用できます。
966
1236
 
967
- 背景のペンの色です。形状では、これは形状の内側を塗りつぶすペンキの色です。テキストなどでは、この色で背景が塗られます。(まるで蛍光ペンでマークされたように)
1237
+ 背景のペンの色です。形状では、これは形状の内側を塗りつぶすペンキの色です。
1238
+ テキストなどでは、この色で背景が塗られます。(まるで蛍光ペンでマークされたように)
968
1239
 
969
1240
  === :font » a string ===
970
1241
 
971
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1242
+ ''banner, caption, inscription, para, subtitle, tagline, title''で利用できます。
1243
+
1244
+ フォントの種類でテキストを整えます。この文字列は非常に柔軟ですが、
1245
+ "[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]"の形である必要があり、
1246
+ FAMILY-LISTの部分は任意にカンマで終わりカンマで区切られたフォントファミリーの一覧、
1247
+ STYLE_OPTIONSはvariant、weight、stretch、またはgravityなどの空白で区切られた
1248
+ スタイルを表現する単語の一覧、そしてSIZEは(ポイントのサイズの)10進数または絶対的な
1249
+ サイズのために単位修飾子"px"を任意に続けます。オプションのどれかは設定されないかもしれません。
1250
+ FAMILY-LISTが設定されない場合は、デフォルトフォントファミリー(Arial)が利用されます。
1251
+
1252
+ === :front » true or false ===
972
1253
 
973
- フォントの種類でテキストを整えます。この文字列は非常に柔軟ですが、"[FAMILY-LIST] [STYLE-OPTIONS] [SIZE]"の形である必要があり、FAMILY-LISTの部分は任意にカンマで終わりカンマで区切られたフォントファミリーの一覧、STYLE_OPTIONSはvariant、weight、stretch、またはgravityなどの空白で区切られたスタイルを表現する単語の一覧、そしてSIZEは(ポイントのサイズの)10進数または絶対的なサイズのために単位修飾子"px"を任意に続けます。オプションのどれかは設定されないかもしれません。FAMILY-LISTが設定されない場合は、デフォルトフォントファミリー(Arial)が利用されます。
1254
+ ''shapes, image, textblocks''で利用できます。
1255
+
1256
+ 他の要素の前に配置されます。
974
1257
 
975
1258
  === :group » a string ===
976
1259
 
977
1260
  ''radio''で利用できます。
978
1261
 
979
- どのグループにラジオボタンが所属するかを示します。この設定がない場合は、ラジオボタンは周辺のスロットのラジオボタンとグループ化されます。ラジオボタンを"グループ化"することはスクリーン上でお互いに隣接してグループ化されることを意味するのではありません。それは、一度にグループから一つだけのラジオボタンだけを選択できることを意味します。
1262
+ どのグループにラジオボタンが所属するかを示します。この設定がない場合は、ラジオボタンは
1263
+ 周辺のスロットのラジオボタンとグループ化されます。ラジオボタンを"グループ化"することはスクリーン上で
1264
+ お互いに隣接してグループ化されることを意味するのではありません。
1265
+ それは、一度にグループから一つだけのラジオボタンだけを選択できることを意味します。
980
1266
 
981
1267
  文字列にスタイルを与えることによって、ラジオボタンは同じグループ名を持つ他のラジオボタンとグループ化されます。
982
1268
 
@@ -984,19 +1270,38 @@ download
984
1270
 
985
1271
  ''すべてのスロットと要素''で利用できます。
986
1272
 
987
- オブジェクトの高さをピクセルで設定します。数値が10進数なら、その高さは親の高さのパーセンテージになります。(0.0は0%に、1.0は100%になります。)
1273
+ オブジェクトの高さをピクセルで設定します。数値が10進数なら、その高さは親の高さの
1274
+ パーセンテージになります。(0.0は0%に、1.0は100%になります。)
988
1275
 
989
1276
  === :hidden » true or false ===
990
1277
 
991
1278
  ''すべてのスロットと要素''で利用できます。
992
1279
 
993
- オブジェクトの表示または非表示です。すべてのオブジェクトにとって`:hidden => true`は画面上での非表示になります。その子供のスロットと要素でも同様です。
1280
+ オブジェクトの表示または非表示です。すべてのオブジェクトにとって`:hidden => true`は
1281
+ 画面上での非表示になります。その子供のスロットと要素でも同様です。
1282
+
1283
+ {{{
1284
+ Shoes.app do
1285
+ slot = stack hidden: true do
1286
+ title 'hello'
1287
+ flow do
1288
+ image File.join DIR, '../samples/loogink.png'
1289
+ end
1290
+ para link('Go go!'){alert 'hi'}
1291
+ end
1292
+ timer(2){slot.show}
1293
+ timer(5){slot.hide}
1294
+ end
1295
+ }}}
1296
+
1297
+ '''注意:''' 今のところGreen Shoesで`:hidden`スタイルをサポートしている要素は、
1298
+ slots, shapes, textblocks, imagesのみです。
994
1299
 
995
1300
  === :inner » a number ===
996
1301
 
997
1302
  ''star''で利用できます。
998
1303
 
999
- 内側の半径のサイズ(ピクセル)です。その内側の半径は点が別れ始める星の中に中空でない円を描きます
1304
+ 内側の半径のサイズ(ピクセル)です。その内側の半径は点が別れ始める星の中に中空でない円を描きます。
1000
1305
 
1001
1306
  === :items » an array ===
1002
1307
 
@@ -1006,16 +1311,19 @@ download
1006
1311
 
1007
1312
  === :justify » true or false ===
1008
1313
 
1009
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1314
+ ''banner, caption, inscription, para, subtitle, tagline, title''で利用できます。
1010
1315
 
1011
1316
  均一に水平にテキストの間隔を開けます。
1012
1317
 
1013
1318
  === :kerning » a number ===
1014
1319
 
1015
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1320
+ ''banner, caption, code, del, em, ins, inscription, link, para, span,
1321
+ strong, sub, sup, subtitle, tagline, title''で利用できます。
1016
1322
 
1017
1323
  文字の間に自然な空白をピクセルで追加します。
1018
1324
 
1325
+ '''注意:''' Green Shoesは`:kerning`スタイルをサポートしていません。
1326
+
1019
1327
  === :leading » a number ===
1020
1328
 
1021
1329
  ''banner, caption, inscription, para, subtitle, tagline, title''で利用できます。
@@ -1026,13 +1334,20 @@ download
1026
1334
 
1027
1335
  ''すべてのスロットと要素''で利用できます。
1028
1336
 
1029
- オブジェクトの左の座標を特定のピクセルに設定します。`:left => 10`の設定はそのオブジェクトを含むスロットの左の端からオブジェクトの左の端が10ピクセル離れた位置に配置します。このleftのスタイルが設定されていない(または`nil`が設定される)なら、そのオブジェクトはそれを囲んでいる他のオブジェクトとともに動くでしょう。
1337
+ オブジェクトの左の座標を特定のピクセルに設定します。
1338
+ `:left => 10`の設定はそのオブジェクトを含むスロットの左の端からオブジェクトの左の端が10ピクセル
1339
+ 離れた位置に配置します。このleftのスタイルが設定されていない(または`nil`が設定される)なら、
1340
+ そのオブジェクトはそれを囲んでいる他のオブジェクトとともに動くでしょう。
1030
1341
 
1031
1342
  === :margin » a number or an array of four numbers ===
1032
1343
 
1033
1344
  ''すべてのスロットと要素''で利用できます。
1034
1345
 
1035
- マージンは要素の周囲に間隔をあけます。それぞれの要素はleft、top、right、そしてbottomのマージンを持っています。`:margin`スタイルに一つの数が設定されると、要素の周囲の間隔は均一にその数にとなります。言い換えると、`:margin => 8`を設定すると、その要素の周囲のすべてのマージンは8ピクセルの長さに設定されます。
1346
+ マージンは要素の周囲に間隔をあけます。
1347
+ それぞれの要素はleft、top、right、そしてbottomのマージンを持っています。
1348
+ `:margin`スタイルに一つの数が設定されると、要素の周囲の間隔は均一にその数にとなります。
1349
+ 言い換えると、`:margin => 8`を設定すると、その要素の周囲のすべてのマージンは8ピクセルの
1350
+ 長さに設定されます。
1036
1351
 
1037
1352
  このスタイルは4つの数を`[left, top, right, bottom]`の形の配列で与えることもできます。
1038
1353
 
@@ -1074,39 +1389,69 @@ download
1074
1389
 
1075
1390
  === :radius » a number ===
1076
1391
 
1077
- ''arc, arrow, background, border, gradient, oval, rect, shape''で利用できます。
1392
+ ''oval''で利用できます。
1078
1393
 
1079
- それらの要素に半径(直径または全幅の半分)を設定します。これを設定することは、この数値の2倍の`:width`と`:height`を設定することと同等です。
1394
+ それらの要素に半径(直径または全幅の半分)を設定します。
1395
+ これを設定することは、この数値の2倍の`:width`と`:height`を設定することと同等です。
1080
1396
 
1081
1397
  === :right » a number ===
1082
1398
 
1083
1399
  ''すべてのスロットと要素''で利用できます。
1084
1400
 
1085
- 要素の右端の座標をピクセルで設定します。その端はコンテナの右端に対して配置されます。そのため、`:right => 0`は、スロットの右端とその右端が接するように要素を配置するでしょう。一方`:right => 20`は要素の右端をそのスロットの右端から左側に向けて20ピクセル離れたところに配置します。
1401
+ 要素の右端の座標をピクセルで設定します。その端はコンテナの右端に対して配置されます。
1402
+ そのため、`:right => 0`は、スロットの右端とその右端が接するように要素を配置するでしょう。
1403
+ 一方`:right => 20`は要素の右端をそのスロットの右端から左側に向けて20ピクセル
1404
+ 離れたところに配置します。
1405
+
1406
+ '''注意:''' Green Shoesは`:right`スタイルをサポートしていません。
1086
1407
 
1087
1408
  === :rise » a number ===
1088
1409
 
1089
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1410
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1090
1411
 
1091
- テキストのフォントを基準から上げたり下げたりします。例えば、[[Element.sup]]は10ピクセルの`:rise`を行います。逆に、[[Element.sub]]の要素は-10ピクセルの`:rise`となります。
1412
+ テキストのフォントを基準から上げたり下げたりします。
1413
+ 例えば、[[Element.sup]]は10ピクセルの`:rise`を行います。
1414
+ 逆に、[[Element.sub]]の要素は-10ピクセルの`:rise`となります。
1092
1415
 
1093
1416
  === :scroll » true or false ===
1094
1417
 
1095
1418
  ''flow, stack''で利用できます。
1096
1419
 
1097
- スロットをスクロールするスロットとします。`:scroll => true`が設定され、そのコンテンツがスロットの高さ以上の場合はスクロールバーがスロットに表示されます。スクロールバーは必要に応じて表示したり非表示になります。それはスロットの幅の内側で表示されるので、スクロールバーのあるなしに関わらず、スロットの幅は決して変わらないことを意味します。
1420
+ スロットをスクロールするスロットとします。
1421
+ `:scroll => true`が設定され、そのコンテンツがスロットの高さ以上の場合はスクロールバーが
1422
+ スロットに表示されます。スクロールバーは必要に応じて表示したり非表示になります。
1423
+ それはスロットの幅の内側で表示されるので、スクロールバーのあるなしに関わらず、スロットの幅は
1424
+ 決して変わらないことを意味します。
1425
+
1426
+ '''注意:''' Green Shoesでは制約があります。今のところ`:scroll`スタイルはお試し版です。
1427
+
1428
+ * スロットのインスタンスメソッド(clear, hide, etc.)が期待通り動きません。
1429
+ * マウスイベントをハンドリングできません。
1430
+ * `flush`メソッドを明示的に記述する必要があります。
1431
+
1432
+ {{{
1433
+ Shoes.app do
1434
+ s = stack left: 100, top: 50, width: 300,
1435
+ height: 100, scroll: true do
1436
+ background gold
1437
+ image './loogink.png'
1438
+ 10.times{para 'hello'}
1439
+ flush
1440
+ end
1441
+ end
1442
+ }}}
1098
1443
 
1099
1444
  === :secret » true or false ===
1100
1445
 
1101
1446
  ''ask, edit_line''で利用できます。
1102
1447
 
1103
- Used for password fields, this setting keeps any characters typed in from becoming visible on the screen. Instead, a replacement character (such as an asterisk) is show for each letter typed.
1104
-
1105
- パスワードフィールドのために利用され、この設定は入力された文字を画面上で表示されないようにします。そのかわり、置き換えられた文字(たとえばアスタリスク)をそれぞれの文字が入力されるごとに表示します。
1448
+ パスワードフィールドのために利用され、この設定は入力された文字を画面上で表示されない
1449
+ ようにします。そのかわり、置き換えられた文字(たとえばアスタリスク)をそれぞれの文字が
1450
+ 入力されるごとに表示します。
1106
1451
 
1107
1452
  === :size » a number ===
1108
1453
 
1109
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1454
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1110
1455
 
1111
1456
  このテキストブロックまたはテキストの一部の内部で利用されたフォントのサイズをピクセルで設定します。
1112
1457
 
@@ -1134,7 +1479,8 @@ Used for password fields, this setting keeps any characters typed in from becomi
1134
1479
 
1135
1480
  === :stretch » a string ===
1136
1481
 
1137
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1482
+ ''banner, caption, code, del, em, ins, inscription, link, para, span,
1483
+ strong, sub, sup, subtitle, tagline, title''で利用できます。
1138
1484
 
1139
1485
  テキストオブジェクトに伸縮したフォントを設定します。
1140
1486
 
@@ -1143,55 +1489,63 @@ Used for password fields, this setting keeps any characters typed in from becomi
1143
1489
  * "condensed" - 狭い幅の文字
1144
1490
  * "normal" - 標準の幅の文字
1145
1491
  * "expanded" - 広い幅の文字
1492
+
1493
+ '''注意:''' Green Shoesは`:stretch`スタイルをサポートしていません。
1146
1494
 
1147
- === :strikecolor » a Shoes::Color ===
1495
+ === :strikecolor » a RGB array ===
1148
1496
 
1149
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1497
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1150
1498
 
1151
1499
  テキストに棒線を引いて削除するときの線の色です。
1152
1500
 
1153
1501
  === :strikethrough » a string ===
1154
1502
 
1155
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1503
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1156
1504
 
1157
1505
  このテキストに棒線を引いて削除しますか?2つのオプションがあります:
1158
1506
 
1159
1507
  * "none" - 棒線を引いて削除しません。
1160
1508
  * "single" - 1本の棒線を引いて削除します。
1161
1509
 
1162
- === :stroke » a hex code, a Shoes::Color or a range of either ===
1510
+ === :stroke » a hex code, a rgb array or a range of either ===
1163
1511
 
1164
- ''arc, arrow, banner, border, caption, code, del, em, flow, image, ins, inscription, line, link, mask, oval, para, rect, shape, span, stack, star, strong, sub, sup, subtitle, tagline, title''で利用できます。
1512
+ ''background, banner, border, caption, inscription, para, line, oval,
1513
+ rect, shape, star, subtitle, tagline, title''で利用できます。
1165
1514
 
1166
- フォアグラウンドのペンの色です。形状の場合は描かれる線の色です。段落や他のテキストでは、この色で文字が表示されます。
1515
+ フォアグラウンドのペンの色です。形状の場合は描かれる線の色です。
1516
+ 段落や他のテキストでは、この色で文字が表示されます。
1167
1517
 
1168
1518
  === :strokewidth » a number ===
1169
1519
 
1170
- ''arc, arrow, border, flow, image, line, mask, oval, rect, shape, star, stack''で利用できます。
1520
+ ''background, border, line, oval, rect, shape, star''で利用できます。
1171
1521
 
1172
- 描かれる線のピクセルでの太さで、形状の線を特徴付けます。例えば、数値の2が設定されればstrokewidthは2ピクセルになります。
1522
+ 描かれる線のピクセルでの太さで、形状の線を特徴付けます。
1523
+ 例えば、数値の2が設定されればstrokewidthは2ピクセルになります。
1173
1524
 
1174
1525
  === :text » a string ===
1175
1526
 
1176
- ''button, edit_box, edit_line''で利用できます。
1527
+ ''edit_box, edit_line''で利用できます。
1177
1528
 
1178
- edit_boxやedit_lineのコンテンツ、またはボタンコントロールに表示されるメッセージを設定します。
1529
+ edit_boxやedit_lineのコンテンツに表示されるメッセージを設定します。
1179
1530
 
1180
1531
  === :top » a number ===
1181
1532
 
1182
1533
  ''すべてのスロットと要素''で利用できます。
1183
1534
 
1184
- オブジェクトの上側の座標を、その親のスロットに対して設定します。オブジェクトに`:top => 40`が設定されたなら、オブジェクトの上端はそのオブジェクトを含むスロットの上端から40ピクセル下に配置されることを意味します。`:top`スタイルが与えられないなら、そのスロットの自然な流れでオブジェクトは自動的に配置されます。
1535
+ オブジェクトの上側の座標を、その親のスロットに対して設定します。
1536
+ オブジェクトに`:top => 40`が設定されたなら、オブジェクトの上端はそのオブジェクトを含む
1537
+ スロットの上端から40ピクセル下に配置されることを意味します。`:top`スタイルが与えられないなら、
1538
+ そのスロットの自然な流れでオブジェクトは自動的に配置されます。
1185
1539
 
1186
- === :undercolor » a Shoes::Color ===
1540
+ === :undercolor » a RGB array ===
1187
1541
 
1188
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1542
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1189
1543
 
1190
1544
  テキストの下線に利用される色です。
1191
1545
 
1192
1546
  === :underline » a string ===
1193
1547
 
1194
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1548
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1195
1549
 
1196
1550
  テキストに下線のスタイルを指示します。
1197
1551
 
@@ -1205,18 +1559,20 @@ edit_boxやedit_lineのコンテンツ、またはボタンコントロールに
1205
1559
 
1206
1560
  === :variant » a string ===
1207
1561
 
1208
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1562
+ ''banner, caption, code, del, em, ins, inscription, link, para, span,
1563
+ strong, sub, sup, subtitle, tagline, title''で利用できます。
1209
1564
 
1210
1565
  テキストのグループのためにフォントを変化させます。2つの選択肢:
1211
1566
 
1212
1567
  * "normal" - 通常のフォント。
1213
1568
  * "smallcaps" - 大文字が小さく変化することによって置き換えられた小文字のフォント。
1214
1569
 
1570
+ '''注意:''' Green Shoesは`:variant`スタイルをサポートしていません。
1571
+
1215
1572
  === :weight » a string ===
1216
1573
 
1217
- ''banner, caption, code, del, em, ins, inscription, link, para, span, strong, sub, sup, subtitle, tagline, title''で利用できます。
1574
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1218
1575
 
1219
- Set the boldness of the text. Commonly, this style is set to one of the following strings:
1220
1576
  テキストを太文字に設定します。一般的には、このスタイルは次の文字列の内の1つを設定します:
1221
1577
 
1222
1578
  * "ultralight" - 超軽量の太さ (= 200)
@@ -1233,123 +1589,222 @@ Set the boldness of the text. Commonly, this style is set to one of the followi
1233
1589
 
1234
1590
  ''すべてのスロットと要素''で利用できます。
1235
1591
 
1236
- 要素の幅をピクセルで設定します。数値が10進数なら、その幅はパーセンテージに変換されます。(0.0は0%に、1.0は100%になります。)100%の幅は親のスロットを埋め尽くすことを意味します。
1592
+ 要素の幅をピクセルで設定します。数値が10進数なら、その幅はパーセンテージに変換されます。
1593
+ (0.0は0%に、1.0は100%になります。)100%の幅は親のスロットを埋め尽くすことを意味します。
1594
+
1595
+ === :wrap » a number ===
1596
+
1597
+ ''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
1598
+
1599
+ どこで改行するか? 選択可能のオプションは以下の通りです。
1600
+
1601
+ * "word" - 単語の区切りで改行します。
1602
+ * "char" - 文字の区切りで改行します。そのため単語が分割される場合があります。
1603
+ * "trim" - はみ出した部分は省略します。
1237
1604
 
1238
1605
  == Classes List ==
1239
1606
 
1240
- Shoesで紹介するすべてのクラスの完全な一覧です。この表はどのようにしてクラスがお互いに継承しているかに従ってレイアウトされています。サブクラスは親クラスの下に、1レベル右にインデントされています。
1607
+ Green Shoesで紹介するすべてのクラスの完全な一覧です。
1241
1608
 
1242
- {INDEX}
1609
+ こちら([[http://rdoc.info/github/ashbb/green_shoes/master/frames/file/README.md Green Shoes RDoc]])
1610
+ を参照下さい。
1243
1611
 
1244
1612
  == Colors List ==
1245
1613
 
1246
- 以下はShoes全体で利用可能な色の一覧です。背景色または枠線の色として。描かれる線や塗りつぶされる色として。これらの色の大部分はX11やHTMLのパレットから来ています。
1614
+ 以下はGreen Shoes全体で利用可能な色の一覧です。背景色または枠線の色として。
1615
+ 描かれる線や塗りつぶされる色として。これらの色の大部分はX11やHTMLのパレットから来ています。
1247
1616
 
1248
- これらの色はすべて名前によって利用できます。(そのため、どんなスロットの内部からでも`tomato`メソッドを呼ぶことで、すてきな赤みがかった色が手に入るでしょう。)それぞれの色の下には、[[Built-in.rgb]]メソッドで利用できる正確な数値を見つけることもできます。
1617
+ これらの色はすべて名前によって利用できます。(そのため、どんなスロットの内部からでも
1618
+ `tomato`メソッドを呼ぶことで、すてきな赤みがかった色が手に入るでしょう。)
1619
+ それぞれの色の下には、[[Built-in.rgb]]メソッドで利用できる正確な数値を見つけることもできます。
1249
1620
 
1250
1621
  {COLORS}
1251
1622
 
1252
1623
  = Slots =
1253
1624
 
1254
- スロットは画像やテキストなどのレイアウトに使われる箱です。2つの最も一般的なスロットは`スタック(stack)`と`フロー(flow)`です。スロットはShoesの専門用語で"箱"または"キャンバス"とも言えます
1625
+ スロットは画像やテキストなどのレイアウトに使われる箱です。2つの最も一般的なスロットは
1626
+ `スタック(stack)`と`フロー(flow)`です。スロットはGreen Shoesの専門用語で"箱"または
1627
+ "キャンバス"とも言えます
1255
1628
 
1256
- マウスホイールやページアップやページダウンはあらゆるプラットフォームで普及しているため、縦のスクロールだけが溢れて問題になりました。そのためShoesでは、まさにWEBのように通常は幅が固定です。一方で高さは際限なく続いて行きます。
1629
+ マウスホイールやページアップやページダウンはあらゆるプラットフォームで普及しているため、
1630
+ 縦のスクロールだけが溢れて問題になりました。そのためGreen Shoesでは、まさにWEBのように
1631
+ 通常は幅が固定です。一方で高さは際限なく続いて行きます。
1257
1632
 
1258
- さて、そうしたいなら、どんなものでも幅や高さを指定することもできます。それはいくらかの数学を用いるでしょうが、完璧かもしれません。
1633
+ さて、そうしたいなら、どんなものでも幅や高さを指定することもできます。それはいくらかの数学を
1634
+ 用いるでしょうが、完璧かもしれません。
1259
1635
 
1260
- 一般的には、スタックとフローを使うことを提案するでしょう。ここでの目的は、あなたがいくらかの幅を何かで満たして、幅を満たしながら、ページの下に進みたいということです。これらを、HTMLの"ブロック"と"インライン"のスタイルと類似しているのように考えることができます。
1636
+ 一般的には、スタックとフローを使うことを提案するでしょう。ここでの目的は、あなたがいくらかの
1637
+ 幅を何かで満たして、幅を満たしながら、ページの下に進みたいということです。
1638
+ これらを、HTMLの"ブロック"と"インライン"のスタイルと類似しているのように考えることができます。
1261
1639
 
1262
1640
  ==== Stacks ====
1263
1641
 
1264
- スタックは単純に要素の垂直なスタックです。スタック内のそれぞれの要素は、その上位の要素の直下に配置されます。
1642
+ スタックは単純に要素の垂直なスタックです。スタック内のそれぞれの要素は、その上位の要素の
1643
+ 直下に配置されます。
1265
1644
 
1266
- また、スタックは箱のように形作られます。そのため、スタックが250の幅を与えられたら、そのスタックはそれ自身が250ピクセルの幅の要素となります。
1645
+ また、スタックは箱のように形作られます。そのため、スタックが250の幅を与えられたら、
1646
+ そのスタックはそれ自身が250ピクセルの幅の要素となります。
1267
1647
 
1268
- 新しいスタックを作成するには[[Element.stack]]メソッドを利用し、それはすべてのスロットの内部で利用できます。そのためスタックは他のスタックやフローを含むことができます。
1648
+ 新しいスタックを作成するには[[Element.stack]]メソッドを利用し、それはすべてのスロットの
1649
+ 内部で利用できます。そのためスタックは他のスタックやフローを含むことができます。
1269
1650
 
1270
1651
  ==== Flows ====
1271
1652
 
1272
- フローは要素をできるだけしっかりと詰め込みます。幅は満たされ、それらの下の要素を包みます。互いに隣接して配置されたテキストの要素は一つのパラグラフとして表示されます。画像とウィジェットは同じシリーズとして実行されます。
1653
+ フローは要素をできるだけしっかりと詰め込みます。幅は満たされ、それらの下の要素を包みます。
1654
+ 互いに隣接して配置されたテキストの要素は一つのパラグラフとして表示されます。
1655
+ 画像とウィジェットは同じシリーズとして実行されます。
1273
1656
 
1274
- スタックのように、フローは箱です。そのためスタックとフローは安全に埋め込むことができ、それらのコンテンツに気を使うことなく、同質です。スタックとフローはそれらのコンテンツだけを異なって扱います。
1657
+ スタックのように、フローは箱です。そのためスタックとフローは安全に埋め込むことができ、
1658
+ それらのコンテンツに気を使うことなく、同質です。スタックとフローはそれらのコンテンツだけを
1659
+ 異なって扱います。
1275
1660
 
1276
- フローを作成するには[[Element.flow]]を呼びます。フローは他のフローやスタックを含むかもしれません。
1661
+ フローを作成するには[[Element.flow]]を呼びます。
1662
+ フローは他のフローやスタックを含むかもしれません。
1277
1663
 
1278
- 最後に:Shoesのウィンドウはそれ自身がフローです。
1664
+ 最後に:Green Shoesのウィンドウはそれ自身がフローです。
1279
1665
 
1280
1666
  == Art for Slots ==
1281
1667
 
1282
- それぞれのスロットは、色のついた形状やグラデーションなどでおおうことにできる白紙の表面のキャンバスのようなものです。
1668
+ それぞれのスロットは、色のついた形状やグラデーションなどでおおうことにできる白紙の表面の
1669
+ キャンバスのようなものです。
1283
1670
 
1284
- 多くの一般的な形状は`oval`と`rect`メソッドで描かれます。まず、絵筆の色を準備する必要があります。
1671
+ 多くの一般的な形状は`oval`と`rect`メソッドで描かれます。
1672
+ まず、絵筆の色を準備する必要があります。
1285
1673
 
1286
- `stroke`コマンドは線の色を設定します。`fill`コマンドは線の内部を塗りつぶすために利用する色を設定します。 
1674
+ `stroke`コマンドは線の色を設定します。
1675
+ `fill`コマンドは線の内部を塗りつぶすために利用する色を設定します。 
1287
1676
 
1288
1677
  {{{
1289
1678
  #!ruby
1290
1679
  Shoes.app do
1291
1680
  stroke red
1292
1681
  fill blue
1293
- oval :top => 10, :left => 10,
1294
- :radius => 100
1682
+ oval top: 10, left: 10, radius: 100
1295
1683
  end
1296
1684
  }}}
1297
1685
 
1298
- このコードはまわりに赤い線のある青いパイを与えます。100ピクセルの幅で、ウィンドウの左上から南東に少しのピクセルを配置します。
1686
+ このコードはまわりに赤い線のある青いパイを与えます。
1687
+ 100ピクセルの幅で、ウィンドウの左上から南東に少しのピクセルを配置します。
1299
1688
 
1300
- 上記の`blue`と`red`メソッドはカラーオブジェクトです。どうやって色を混ぜるかはColorsセクションを見てください。
1689
+ 上記の`blue`と`red`メソッドはRGB配列です。
1690
+ どうやって色を混ぜるかはColorsセクションを見てください。
1301
1691
 
1302
1692
  ==== Processing と NodeBox からのインスピレーション ====
1303
1693
 
1304
- この技巧的なメソッドの大抵は文字通りPythonのドローイングキットのNodeBoxから来ています。次に、NodeBoxは多くのアイデアを、グラフィックとアニメーションのためのJavaのような言語であるProcessingから得ています。私はそれらのすばらしいプログラムの作者から大きな恩を受けています。
1694
+ この技巧的なメソッドの大抵は文字通りPythonのドローイングキットのNodeBoxから来ています。
1695
+ 次に、NodeBoxは多くのアイデアを、グラフィックとアニメーションのためのJavaのような言語である
1696
+ Processingから得ています。私はそれらのすばらしいプログラムの作者から大きな恩を受けています。
1305
1697
 
1306
- ShoesはNodeBoxとProcessingから少しの点が違います。例えば、Shoesはそれ自身のカラーオブジェクトを持っていることを含めて、異なるカラーメソッドを持っていますが、それらはとてもProcessingのカラーメソッドに似ています。そしてShoesは線を描くことや形状内を塗りつぶすために画像やグラデーションを利用することも許しています。
1698
+ Green ShoesはNodeBoxとProcessingから少しの点が違います。
1699
+ 例えば、Green Shoesはそれ自身のRGB配列を持っていることを含めて、異なるカラーメソッドを
1700
+ 持っていますが、それらはとてもProcessingのカラーメソッドに似ています。
1701
+ そしてGreen Shoesは線を描くことや形状内を塗りつぶすために画像やグラデーションを
1702
+ 利用することも許しています。
1307
1703
 
1308
- ShoesはいくつかのアニメーションのアイデアをProcessingから取り入れており、Processingのメソッドをしっかりと参考にしようとしながらそれを拡張しています。
1704
+ ShoesはいくつかのアニメーションのアイデアをProcessingから取り入れており、
1705
+ Processingのメソッドをしっかりと参考にしようとしながらそれを拡張しています。
1309
1706
 
1310
- === arc(left, top, width, height, angle1, angle2) » Shoes::Shape ===
1707
+ === arc(left, top, width, height, angle1, angle2) » Shoes::Oval ===
1311
1708
 
1312
- 弧の形状(楕円形の一部)を座標(left, top)に描きます。このメソッドは`:angle1`と`:angle2`のスタイルを提供することにより [[oval]]より少し多くの制御をが行えます。(実際には、`:angle1`に0と`:angle2`に`Shoes::TWO_PI`を設定することにより、`oval`メソッドをまねることができます。)
1709
+ 弧の形状(楕円形の一部)を座標(left, top)に描きます。
1710
+ このメソッドは`:angle1`と`:angle2`のスタイルを提供することにより [[oval]]より
1711
+ 少し多くの制御をが行えます。(実際には、`:angle1`に0と`:angle2`に`2*Math::PI`を
1712
+ 設定することにより、`oval`メソッドをまねることができます。)
1713
+
1714
+ {{{
1715
+ Shoes.app do
1716
+ fill yellow..green
1717
+ stroke red..blue
1718
+ strokewidth 10
1719
+ cap :curve
1720
+
1721
+ a = animate 12 do |i|
1722
+ @e.remove if @e
1723
+ r = i * (Math::PI * 0.01)
1724
+ @e = arc 100, 50, 180, 360, 0, r
1725
+ a.stop if r >= 2*Math::PI
1726
+ end
1727
+ end
1728
+ }}}
1313
1729
 
1314
1730
  === arrow(left, top, width) » Shoes::Shape ===
1315
1731
 
1316
1732
  座標(left, top)に`width`ピクセルの矢を描きます。
1317
1733
 
1734
+ {{{
1735
+ Shoes.app do
1736
+ para 'An arrow shape:', left: 20, top: 10
1737
+ arrow 30, 40, 70
1738
+ end
1739
+ }}}
1740
+
1318
1741
  === cap(:curve or :rect or :project) » self ===
1319
1742
 
1320
- 描くすべての線の終点の形状である線の頂点を設定します。`:curve`が設定されるなら、終点はまるくなります。デフォルトは`:rect`で、線の終点は突然に平らになります。`:project`の頂点も平らですが、棒の外側は少し長くなります。
1743
+ 描くすべての線の終点の形状である線の頂点を設定します。
1744
+ `:curve`が設定されるなら、終点はまるくなります。
1745
+ デフォルトは`:rect`で、線の終点は突然に平らになります。
1746
+ `:project`の頂点も平らですが、棒の外側は少し長くなります。
1747
+
1748
+ {{{
1749
+ Shoes.app do
1750
+ nofill
1751
+ strokewidth 20
1752
+ stroke green
1753
+ cap :curve
1754
+ line 100, 100, 300, 100
1755
+ line 100, 250, 300, 300
1756
+ cap :rect
1757
+ line 100, 150, 300, 150
1758
+ stroke blue
1759
+ cap :project
1760
+ line 100, 200, 300, 200
1761
+ line 200, 100, 200, 300
1762
+ strokewidth 1
1763
+ stroke red
1764
+ rect 100, 100, 200, 200
1765
+ end
1766
+ }}}
1321
1767
 
1322
1768
  === fill(pattern) » pattern ===
1323
1769
 
1324
- 塗りつぶすバケツの色の指定(またはパターン)を設定します。パターンは色やグラデーションまたは画像が設定できます。そして、一度塗りつぶすバケツが設定されたら、選択されたパターンで色づけられた形状を描くことができます。
1770
+ 塗りつぶすバケツの色の指定(またはパターン)を設定します。
1771
+ パターンは色やグラデーションまたは画像が設定できます。
1772
+ そして、一度塗りつぶすバケツが設定されたら、選択されたパターンで色づけられた形状を
1773
+ 描くことができます。
1325
1774
 
1326
1775
  画像のパターンで星を描くためには:
1327
1776
 
1328
1777
  {{{
1329
1778
  #!ruby
1330
1779
  Shoes.app do
1331
- fill "static/avatar.png"
1332
- star 200, 200, 5
1780
+ fill File.join(DIR, "../static/gshoes-icon.png")
1781
+ star 200, 200, 5, 100, 50
1333
1782
  end
1334
1783
  }}}
1335
1784
 
1336
- 塗りつぶすバケツをクリアするには`nofill`を使ってください。そして`stroke`メソッドを利用して線(星の枠線)の色を設定してください。
1785
+ 塗りつぶすバケツをクリアするには`nofill`を使ってください。
1786
+ そして`stroke`メソッドを利用して線(星の枠線)の色を設定してください。
1337
1787
 
1338
1788
  === nofill() » self ===
1339
1789
 
1340
- 塗りつぶす色を削除するため、形状は塗りつぶされずに描かれます。その代わりに、形状は線だけを持ち、中央を透明のままにします。
1790
+ 塗りつぶす色を削除するため、形状は塗りつぶされずに描かれます。
1791
+ その代わりに、形状は線だけを持ち、中央を透明のままにします。
1341
1792
 
1342
1793
  === nostroke() » self ===
1343
1794
 
1344
- 線の色を空にします。形状は外側の線が描かれなくなります。`nofill`も設定された場合は、形状は表示されずに描かれます。
1795
+ 線の色を空にします。形状は外側の線が描かれなくなります。
1796
+ `nofill`も設定された場合は、形状は表示されずに描かれます。
1345
1797
 
1346
- === line(left, top, x2, y2) » Shoes::Shape ===
1798
+ === line(left, top, x2, y2) » Shoes::Line ===
1347
1799
 
1348
1800
  現在の線の色(別名"stroke")を使って座標(left, top)から(x2, y2)まで線を描きます。
1349
1801
 
1350
- === oval(left, top, radius) » Shoes::Shape ===
1802
+ === oval(left, top, radius) » Shoes::Oval ===
1351
1803
 
1352
- 座標(left, top)ピクセルに`radius`ピクセルの幅と高さの円を描きます。線の色や塗りつぶす色が形状を描くために利用されます。デフォルトでは、座標は楕円形の最も左上の角ですが、これは[[Art.transform]]メソッドを呼ぶことや、次のメソッドの下の`:center`スタイルを使用することによって変更することができます。
1804
+ 座標(left, top)ピクセルに`radius`ピクセルの幅と高さの円を描きます。
1805
+ 線の色や塗りつぶす色が形状を描くために利用されます。
1806
+ デフォルトでは、座標は楕円形の最も左上の角ですが、これは[[Art.transform]]メソッドを
1807
+ 呼ぶことや、次のメソッドの下の`:center`スタイルを使用することによって変更することができます。
1353
1808
 
1354
1809
  {{{
1355
1810
  #!ruby
@@ -1357,14 +1812,14 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1357
1812
  stroke blue
1358
1813
  strokewidth 4
1359
1814
  fill black
1360
-
1361
1815
  oval 10, 10, 50
1362
1816
  end
1363
1817
  }}}
1364
1818
 
1365
- 様々な比率の楕円形を描くためには、`oval(left, top, width, height)`のシンタックスを利用してもいいです。
1819
+ 様々な比率の楕円形を描くためには、`oval(left, top, width, height)`のシンタックスを
1820
+ 利用してもいいです。
1366
1821
 
1367
- === oval(styles) » Shoes::Shape ===
1822
+ === oval(styles) » Shoes::Oval ===
1368
1823
 
1369
1824
  スタイルのハッシュを利用して円を描きます。次のスタイルがサポートされています:
1370
1825
 
@@ -1375,11 +1830,15 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1375
1830
  * `height`: 楕円形の高さのピクセルでの指定。
1376
1831
  * `center`: 座標を楕円形の中央に指定しますか?(trueまたはfalse)
1377
1832
 
1378
- これらのスタイルはShoesオブジェクトの`style`メソッドを利用して変更されます。
1833
+ これらのスタイルは形状オブジェクトの`style`メソッドを利用して変更されます。
1834
+
1835
+ '''注意:''' Green Shoesは`:center`スタイルをサポートしていません。
1379
1836
 
1380
- === rect(top, left, width, height, corners = 0) » Shoes::Shape ===
1837
+ === rect(top, left, width, height, corners = 0) » Shoes::Rect ===
1381
1838
 
1382
- 座標(left, top)からwidth x heightの寸法の長方形を描きます。オプションとして、5番目の引数(ピクセルでの角の半径)により長方形の角を丸くすることもできます。他の形状と同様に、長方形は描く線の色や塗りつぶす色を利用して描かれます。
1839
+ 座標(left, top)からwidth x heightの寸法の長方形を描きます。
1840
+ オプションとして、5番目の引数(ピクセルでの角の半径)により長方形の角を丸くすることもできます。
1841
+ 他の形状と同様に、長方形は描く線の色や塗りつぶす色を利用して描かれます。
1383
1842
 
1384
1843
  {{{
1385
1844
  #!ruby
@@ -1390,9 +1849,11 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1390
1849
  end
1391
1850
  }}}
1392
1851
 
1393
- 上記のサンプルは角の周囲に10ピクセルのマージンを残して、その親の箱の範囲を塗りつぶす長方形を描きます。デフォルトで親の箱を塗りつぶした長方形のためには`background`も見てください。
1852
+ 上記のサンプルは角の周囲に10ピクセルのマージンを残して、その親の箱の範囲を塗りつぶす
1853
+ 長方形を描きます。デフォルトで親の箱を塗りつぶした長方形のためには`background`も
1854
+ 見てください。
1394
1855
 
1395
- === rect(styles) » Shoes::Shape ===
1856
+ === rect(styles) » Shoes::Rect ===
1396
1857
 
1397
1858
  スタイルのハッシュを利用して長方形を描きます。次のスタイルがサポートされています:
1398
1859
 
@@ -1403,11 +1864,14 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1403
1864
  * `height`:長方形のピクセルによる高さ。
1404
1865
  * `center`: 座標を長方形の中央に指定しますか?(trueまたはfalse)
1405
1866
 
1406
- これらのスタイルはShoesオブジェクトの`style`メソッドを利用して変更されます。
1867
+ これらのスタイルは形状オブジェクトの`style`メソッドを利用して変更されます。
1868
+
1869
+ '''注意:''' Green Shoesは`:center`スタイルをサポートしていません。
1407
1870
 
1408
1871
  === rotate(degrees: a number) » self ===
1409
1872
 
1410
- 形状をその角度で描画するために、`度(degrees)`数により描画のために利用される範囲を回転させます。
1873
+ 形状をその角度で描画するために、`度(degrees)`数により描画のために利用される
1874
+ 範囲を回転させます。
1411
1875
 
1412
1876
  下の例では、長方形は(30, 30)に45度回転されて描かれます。
1413
1877
 
@@ -1422,34 +1886,44 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1422
1886
 
1423
1887
  === shape(left, top) { ... } » Shoes::Shape ===
1424
1888
 
1425
- (left, top)から開始してブロックの内部で`line_to`、`move_to`、`curve_to`そして`arc_to`を呼ぶことにより
1426
- 続く、描かれる任意の形状を表現(記述)します
1427
-
1428
- 曲がったり弧を描いたりする長い線の形状をスケッチとして見ることができます。
1889
+ (left, top)から開始して、続いてブロックの内部で`line_to`、`move_to`、`curve_to`
1890
+ そして`arc_to`を呼ぶことにより、任意の形状を表現(記述)します。
1891
+ 曲がったり弧を描いたりする長い線の形状をスケッチして見ることができます。
1429
1892
 
1430
1893
  {{{
1431
- #!ruby
1432
1894
  Shoes.app do
1433
- fill red(0.2)
1895
+ fill yellow
1434
1896
  shape do
1435
- move_to(90, 55)
1436
- arc_to(50, 55, 50, 50, 0, PI/2)
1437
- arc_to(50, 55, 60, 60, PI/2, PI)
1438
- arc_to(50, 55, 70, 70, PI, TWO_PI-PI/2)
1439
- arc_to(50, 55, 80, 80, TWO_PI-PI/2, TWO_PI)
1897
+ move_to 50, 30
1898
+ curve_to 100, 100, 10, 20, 100, 50
1899
+ line_to 20, 100
1900
+ line_to 30, 30
1440
1901
  end
1441
1902
  end
1442
1903
  }}}
1443
1904
 
1444
- 形状は他の形状を含むこともできます。そして、形状の内部に[[Art.oval]]、[[Art.rect]]、[[Art.line]]、[[Art.star]]または[[Art.arrow]](さらに、[[Art]]セクションの他のメソッドすべて)を配置することができますが、それらは線の一部ではないでしょう。形状のグループのようなそれらは、すべて1つとして描かれます。
1905
+ 形状は他の形状を含むこともできます。
1906
+ そして、形状の内部に[[Art.oval]]、[[Art.rect]]、[[Art.line]]、[[Art.star]]または
1907
+ [[Art.arrow]](さらに、[[Art]]セクションの他のメソッドすべて)を配置することができますが、
1908
+ それらは線の一部ではないでしょう。形状のグループのようなそれらは、すべて1つとして描かれます。
1909
+
1910
+ '''注意:''' Green Shoesでは、上記の`line_to`、`move_to`、`curve_to`は
1911
+ Cairo::Contextのメソッドです。ブロックの中で直接それらを呼び出しています。
1912
+ そのため、Green Shoesでは`arc_to`はサポートしていません。また他の形状もShapeブロック
1913
+ 内に含めることができません。
1445
1914
 
1446
- === star(left, top, points = 10, outer = 100.0, inner = 50.0) » Shoes::Shape ===
1915
+ === star(left, top, points = 10, outer = 100.0, inner = 50.0) » Shoes::Star ===
1447
1916
 
1448
- 描く線の色や塗りつぶす色を利用して星を描きます。星は(left, top)の座標を中心点として`頂点(points)`の数とともに配置されます。`outer`の幅は星の全半径をを定義します;`inner`の幅は頂点の始まる星の中央の半径を指定します。
1917
+ 描く線の色や塗りつぶす色を利用して星を描きます。
1918
+ 星は(left, top)の座標を中心点として`頂点(points)`の数とともに配置されます。
1919
+ `outer`の幅は星の全半径をを定義します;`inner`の幅は頂点の始まる星の中央の半径を
1920
+ 指定します。
1449
1921
 
1450
1922
  === stroke(pattern) » pattern ===
1451
1923
 
1452
- スロットのアクティブな線の色を設定します。`pattern`は色、グラデーションまたは画像で、それらはすべて"patterns"に分類されます。その線の色はそれに続く形状すべての枠線を描くときに利用されます。
1924
+ スロットのアクティブな線の色を設定します。`pattern`は色、グラデーションまたは画像で、
1925
+ それらはすべて"patterns"に分類されます。その線の色はそれに続く形状すべての枠線を
1926
+ 描くときに利用されます。
1453
1927
 
1454
1928
  つまり、まわりに赤い線を持つ矢印を描くには:
1455
1929
 
@@ -1457,7 +1931,8 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1457
1931
  #!ruby
1458
1932
  Shoes.app do
1459
1933
  stroke red
1460
- arrow 0, 100, 10
1934
+ nofill
1935
+ star 100, 100
1461
1936
  end
1462
1937
  }}}
1463
1938
 
@@ -1465,63 +1940,95 @@ ShoesはいくつかのアニメーションのアイデアをProcessingから
1465
1940
 
1466
1941
  === strokewidth(a number) » self ===
1467
1942
 
1468
- スロットの内部で描かれるすべての線のサイズを設定します。`stroke`メソッドが線の色を変更する一方、`strokewidth`メソッドは線のサイズをピクセルで変更します。`strokewidth(4)`を呼ぶことにより4ピクセルの太さで線を描きます。
1943
+ スロットの内部で描かれるすべての線のサイズを設定します。
1944
+ `stroke`メソッドが線の色を変更する一方、`strokewidth`メソッドは線のサイズを
1945
+ ピクセルで変更します。`strokewidth(4)`を呼ぶことにより4ピクセルの太さで線を描きます。
1469
1946
 
1470
1947
  === transform(:center or :corner) » self ===
1471
1948
 
1472
- (`skew`や`rotate`のような)変化は形状の中心あたりで実行されるべきですか?またはその形状の角ですか?Shoesの初期値は`:corner`です。
1949
+ (`skew`や`rotate`のような)変化は形状の中心あたりで実行されるべきですか?
1950
+ またはその形状の角ですか?Shoesの初期値は`:corner`です。
1951
+
1952
+ '''注意:''' Green Shoesは`:transform`メソッドをサポートしていません。
1473
1953
 
1474
1954
  === translate(left, top) » self ===
1475
1955
 
1476
- スロットの描画の範囲を開始する位置を移動します。通常は、すべての形状がこの位置から描くことができるように、その範囲は左上の角の(0, 0)から開始します。`translate`により開始位置が(10, 20)に移動されて、(50, 60)に形状が描かれるなら、その形状は実際にはスロットの(60, 80)に描かれます。
1956
+ スロットの描画の範囲を開始する位置を移動します。
1957
+ 通常は、すべての形状がこの位置から描くことができるように、その範囲は左上の角の
1958
+ (0, 0)から開始します。`translate`により開始位置が(10, 20)に移動されて、
1959
+ (50, 60)に形状が描かれるなら、その形状は実際にはスロットの(60, 80)に描かれます。
1960
+
1961
+ '''注意:''' Green Shoesは`:translate`メソッドをサポートしていません。
1477
1962
 
1478
1963
  == Element Creation ==
1479
1964
 
1480
- Shoesは幅広い種類の要素を持っており、その多くをHTMLからよいところを選んで採用しています。このページはどのようにしてスロットにそれらの要素を作成するかを記述しています。それらの要素を配置した後でさらにどのようにして変更したり利用するのかについては、このマニュアルの要素(Elements)のセクションを見てください。
1965
+ Green Shoesは幅広い種類の要素を持っており、その多くをHTMLからよいところを選んで
1966
+ 採用しています。このページはどのようにしてスロットにそれらの要素を作成するかを記述して
1967
+ います。それらの要素を配置した後でさらにどのようにして変更したり利用するのかについては、
1968
+ このマニュアルの要素(Elements)のセクションを見てください。
1481
1969
 
1482
- === animate(fps) { |frame| ... } » Shoes::Animation ===
1970
+ === animate(fps) { |frame| ... } » Shoes::Anim ===
1483
1971
 
1484
- アプリケーションをそのままにして並列で実行するアニメーションタイマーを開始します。`fps`は秒ごとのフレームの数です。この数は付属するブロックが1秒に何回呼ばれるのかを決定します。
1972
+ アプリケーションをそのままにして並列で実行するアニメーションタイマーを開始します。
1973
+ `fps`は秒ごとのフレームの数です。
1974
+ この数は付属するブロックが1秒に何回呼ばれるのかを決定します。
1485
1975
 
1486
- このブロックは`frame`の数が与えられます。`frame`の数はゼロから始まり、そのブロックが何フレームのアニメーションを表示したのかを教えます
1976
+ このブロックは`frame`の数が与えられます。
1977
+ `frame`の数はゼロから始まり、そのブロックが何フレームのアニメーションを表示したのかを
1978
+ 教えます。
1487
1979
 
1488
1980
  {{{
1489
1981
  #!ruby
1490
1982
  Shoes.app do
1491
- @counter = para "STARTING"
1492
- animate(24) do |frame|
1493
- @counter.replace "FRAME #{frame}"
1983
+ counter = para "STARTING"
1984
+ animate 24 do |frame|
1985
+ counter.replace "FRAME #{frame}"
1494
1986
  end
1495
1987
  end
1496
1988
  }}}
1497
1989
 
1498
- 上記のアニメーションは1秒間に24回表示されます。数が与えられないなら、`fps`のデフォルトは10です。
1990
+ 上記のアニメーションは1秒間に24回表示されます。
1991
+ 数が与えられないなら、`fps`のデフォルトは10です。
1499
1992
 
1500
1993
  === background(pattern) » Shoes::Background ===
1501
1994
 
1502
- 色(またはパターン)を指定して背景(Background)要素を描きます。パターンは色、グラデーションまたは画像です。色と画像は背景全体に敷き詰めます。グラデーションは背景を塗りつぶすように伸びます。
1995
+ 色(またはパターン)を指定して背景(Background)要素を描きます。
1996
+ パターンは色、グラデーションまたは画像です。色と画像は背景全体に敷き詰めます。
1997
+ グラデーションは背景を塗りつぶすように伸びます。
1503
1998
 
1504
- '''注意してください:''' 背景は実際には要素であり、スタイルではありません。HTMLは背景をスタイルのようにあつかいます。それはすべての箱は一つの背景だけを持てることを意味します。Shoesは背景の要素を重ねることができます。
1999
+ '''注意してください:''' 背景は実際には要素であり、スタイルではありません。
2000
+ HTMLは背景をスタイルのようにあつかいます。
2001
+ それはすべての箱は一つの背景だけを持てることを意味します。
2002
+ Green Shoesは背景の要素を重ねることができます。
1505
2003
 
1506
2004
  {{{
1507
2005
  #!ruby
1508
2006
  Shoes.app do
1509
2007
  background black
1510
- background white, :width => 50
2008
+ background white, width: 50
1511
2009
  end
1512
2010
  }}}
1513
2011
 
1514
- 上記の例は二つの背景を塗ります。まず、黒い背景がアプリケーションの表面のエリア全体に塗られます。そして、50ピクセルの白い縞が左側にそって塗られます。
2012
+ 上記の例は二つの背景を塗ります。
2013
+ まず、黒い背景がアプリケーションの表面のエリア全体に塗られます。
2014
+ そして、50ピクセルの白い縞が左側にそって塗られます。
1515
2015
 
1516
2016
  === banner(text) » Shoes::Banner ===
1517
2017
 
1518
- バナー(Banner)のテキストブロックを作成します。Shoesは自動的に48ピクセルの大きさにテキストを整形します。
2018
+ バナー(Banner)のテキストブロックを作成します。
2019
+ Green Shoesは自動的に48ピクセルの大きさにテキストを整形します。
1519
2020
 
1520
2021
  === border(text, :strokewidth => a number) » Shoes::Border ===
1521
2022
 
1522
- 色(またはパターン)を指定して枠線(Border)の要素を描きます。パターンは色、グラデーションまたは画像です。色と画像は枠線全体に敷き詰めます。グラデーションは背景を塗りつぶすように伸びます。
2023
+ 色(またはパターン)を指定して枠線(Border)の要素を描きます。
2024
+ パターンは色、グラデーションまたは画像です。色と画像は枠線全体に敷き詰めます。
2025
+ グラデーションは背景を塗りつぶすように伸びます。
1523
2026
 
1524
- '''注意してください:''' 背景のように、枠線は実際には要素であり、スタイルではありません。HTMLは背景や枠線をスタイルのようにあつかいます。それはすべての箱は一つの枠線だけを持てることを意味します。Shoesはテキストブロック、画像、他のすべてのものにそって、枠線や背景の要素を重ねることができます。
2027
+ '''注意してください:''' 背景のように、枠線は実際には要素であり、スタイルではありません。
2028
+ HTMLは背景や枠線をスタイルのようにあつかいます。
2029
+ それはすべての箱は一つの枠線だけを持てることを意味します。
2030
+ Green Shoesはテキストブロック、画像、他のすべてのものにそって、枠線や背景の要素を
2031
+ 重ねることができます。
1525
2032
 
1526
2033
  === button(text) { ... } » Shoes::Button ===
1527
2034
 
@@ -1530,36 +2037,48 @@ Shoesは幅広い種類の要素を持っており、その多くをHTMLから
1530
2037
 
1531
2038
  === caption(text) » Shoes::Caption ===
1532
2039
 
1533
- キャプション(Caption)テキストブロックを作成します。Shoesは14ピクセルの大きさにこのテキストを整形します。
2040
+ キャプション(Caption)テキストブロックを作成します。
2041
+ Green Shoesは14ピクセルの大きさにこのテキストを整形します。
1534
2042
 
1535
2043
  === check() » Shoes::Check ===
1536
2044
 
1537
2045
  チェックボックスを追加します。
1538
2046
 
1539
- === code(text) » Shoes::Code ===
2047
+ === code(text) » String ===
1540
2048
 
1541
- コード(Code)のテキストの一部を作成します。このテキストはデフォルトで等幅フォントになります。
2049
+ コード(Code)のテキストの一部を作成します。
2050
+ このテキストはデフォルトで等幅フォントになります。
1542
2051
 
1543
- === del(text) » Shoes::Del ===
2052
+ === del(text) » String ===
1544
2053
 
1545
- デフォルトで中央に1本の棒線を引いてテキストを削除した、削除された(Del)("deleted"の省略形)テキストの一部を作成します。
2054
+ デフォルトで中央に1本の棒線を引いてテキストを削除した、
2055
+ 削除された(Del)("deleted"の省略形)テキストの一部を作成します。
1546
2056
 
1547
2057
  === dialog(styles) { ... } » Shoes::App ===
1548
2058
 
1549
- (まさに [[Element.window]]メソッドを実効したように)新しいアプリケーションのウィンドウを開きますが、そのウィンドウはダイアログボックスの外観を与えられます。
2059
+ (まさに [[Element.window]]メソッドを実効したように)新しいアプリケーションのウィンドウを
2060
+ 開きますが、そのウィンドウはダイアログボックスの外観を与えられます。
2061
+
2062
+ '''注意:''' Green Shoesは`dialog`メソッドをサポートしていません。
1550
2063
 
1551
- === edit_box(text) » Shoes::EditBox ===
2064
+ === edit_box(text, :accepts_tab => true or false) » Shoes::EditBox ===
1552
2065
 
1553
2066
  スロットに大きなマルチラインのテキストエリアを追加します。
1554
2067
  この`text`はオプションでこの箱の開始時に与えられる文字列です。
1555
- オプションのブロックをここに取り付けることができ、これはボックスのテキストに対するどんな種類のユーザの変更でも呼び出されます。
2068
+ オプションのブロックをここに取り付けることができ、これはボックスのテキストに対するどんな種類の
2069
+ ユーザの変更でも呼び出されます。
2070
+
2071
+ `accepts_tab`にtrueを設定するとタブが挿入できます。
2072
+ `accepts_tab`にfalseを設定するとタブによるフォーカス移動ができます。
2073
+ デフォルトはfalseです。
1556
2074
 
1557
2075
  {{{
1558
2076
  #!ruby
1559
2077
  Shoes.app do
1560
2078
  edit_box
1561
- edit_box "HORRAY EDIT ME"
1562
- edit_box "small one", :width => 100, :height => 160
2079
+ edit_box text: "HORRAY EDIT ME"
2080
+ edit_box text: "small one",
2081
+ width: 100, height: 160
1563
2082
  end
1564
2083
  }}}
1565
2084
 
@@ -1567,63 +2086,92 @@ Shoesは幅広い種類の要素を持っており、その多くをHTMLから
1567
2086
 
1568
2087
  スロットに一行のテキストボックスを追加します。
1569
2088
  この`text`はオプションでこの箱の開始時に与えられる文字列です。
1570
- オプションのブロックをここに取り付けることができ、これはボックスのテキストに対するどんな種類のユーザの変更でも呼び出されます。
2089
+ オプションのブロックをここに取り付けることができ、これはボックスのテキストに対するどんな種類の
2090
+ ユーザの変更でも呼び出されます。
1571
2091
 
1572
- === em(text) » Shoes::Em ===
2092
+ === em(text) » String ===
1573
2093
 
1574
- Em("emphasized"の省略形)テキストの一部を作成し、これはデフォルトでイタリック体で整形されます。
2094
+ Em("emphasized"の省略形)テキストの一部を作成し、これはデフォルトでイタリック体で
2095
+ 整形されます。
1575
2096
 
1576
- === every(seconds) { |count| ... } » Shoes::Every ===
2097
+ === every(seconds) { |count| ... } » Shoes::Anim ===
1577
2098
 
1578
- `animation`メソッドとよく似たタイマーですが、より非常に遅いです。このタイマーは与えられた数の秒(seconds)で、取り付けられたブロックを実行します。そのため、例えば5秒毎にwebサイトを確認する必要があるなら、実際にwebサイトにpingを打つコードを含むブロックと共に`every(300)`を呼び出します。
2099
+ `animate`メソッドとよく似たタイマーですが、より非常に遅いです。
2100
+ このタイマーは与えられた数の秒(seconds)で、取り付けられたブロックを実行します。
2101
+ そのため、例えば5秒毎にwebサイトを確認する必要があるなら、実際にwebサイトにpingを
2102
+ 打つコードを含むブロックと共に`every(300)`を呼び出します。
1579
2103
 
1580
2104
  === flow(styles) { ... } » Shoes::Flow ===
1581
2105
 
1582
- フロー(flow)はShoesの要素を配置できる目に見えない箱(または"スロット")です。フローとスタックのどちらもメインの[[Slots]]のページでとても詳細に説明されます。
2106
+ フロー(flow)はGreen Shoesの要素を配置できる目に見えない箱(または"スロット")です。
2107
+ フローとスタックのどちらもメインの[[Slots]]のページでとても詳細に説明されます。
1583
2108
 
1584
- フローは要素を水平にまとめます。ものを垂直に積み重ねたままにするために[[Element.stack]]を利用するところで、フローはそのコンテンツをページの端から端にわたって配置します。いったんページの最後に到達したら、フローは要素の新しい行を開始します。
2109
+ フローは要素を水平にまとめます。ものを垂直に積み重ねたままにするために
2110
+ [[Element.stack]]を利用するところで、フローはそのコンテンツをページの端から端にわたって
2111
+ 配置します。いったんページの最後に到達したら、フローは要素の新しい行を開始します。
1585
2112
 
1586
2113
  === image(path) » Shoes::Image ===
1587
2114
 
1588
2115
  写真を表示するために[[Image]]の要素を作成します。
1589
2116
  PNG、JPEGそしてGIFのフォーマットが許されます。
1590
2117
 
1591
- `path`はファイルのパスまたはURLです。すべての画像はメモリに一時的にキャッシュされ、リモートの画像はローカルのユーザの個人的なShoesディレクトリにもキャッシュされます。リモートの画像はバックグラウンドでロードされます;ブラウザと同様に、画像はすぐには表示されませんが、それらがロードされたときに表示されます。
2118
+ `path`はファイルのパスまたはURLです。すべての画像はメモリに一時的にキャッシュされ、
2119
+ リモートの画像はローカルのユーザの個人的なShoesディレクトリにもキャッシュされます。
2120
+ リモートの画像はバックグラウンドでロードされます;ブラウザと同様に、画像はすぐには
2121
+ 表示されませんが、それらがロードされたときに表示されます。
2122
+
2123
+ '''注意:''' Green Shoesは上述のローカルのユーザの個人的なShoesディレクトリへの
2124
+ キャッシュをサポートしていません。
1592
2125
 
1593
2126
  === imagesize(path) » [width, height] ===
1594
2127
 
1595
2128
  画像の幅と高さを素早く手に入れます。
1596
2129
  画像はキャッシュにロードされず表示もされません。
1597
2130
 
1598
- 緊急の注意:このメソッドはリモートの画像(ハードディスクドライブからではなくHTTPによりロードされた)には利用できません。
2131
+ 緊急の注意:このメソッドはリモートの画像(ハードディスクドライブからではなくHTTPにより
2132
+ ロードされた)には利用できません。
1599
2133
 
1600
- === ins(text) » Shoes::Ins ===
2134
+ === ins(text) » String ===
1601
2135
 
1602
- 一本の下線のShoesスタイルである、Ins("inserted"の省略形)テキストの一部を作成します。
2136
+ 一本の下線のGreen Shoesスタイルである、Ins("inserted"の省略形)テキストの一部を
2137
+ 作成します。
1603
2138
 
1604
2139
  === inscription(text) » Shoes::Inscription ===
1605
2140
 
1606
- 題名(Inscription)のテキストブロックを作成します。Shoesは10ピクセルの大きさにこのテキストを整形します。
2141
+ 題名(Inscription)のテキストブロックを作成します。
2142
+ Green Shoesは10ピクセルの大きさにこのテキストを整形します。
1607
2143
 
1608
2144
  === link(text, :click => proc or string) » Shoes::Link ===
1609
2145
 
1610
- 一本の下線を持ち線の色を#06E(青色)にShoesが整形した、リンクテキストブロックを作成します。デフォルトのリンクホバースタイルも一本の下線を持ち線の色を#039(ダークブルー)に整形します。
2146
+ 一本の下線を持ち線の色を#06E(青色)に整形したリンクテキストブロックを作成します。
2147
+ デフォルトのリンクホバースタイルは一本の下線を持ち線の色を#039(ダークブルー)に整形します。
2148
+
2149
+ === link(text){ ... } » Shoes::Link ===
2150
+
2151
+ この形式でもリンクテキストブロックを作成できます。
2152
+ この場合、ユーザがリンクテキストをクリックするとブロック内のコードが実行されます。
1611
2153
 
1612
2154
  === list_box(:items => [strings, ...]) » Shoes::ListBox ===
1613
2155
 
1614
- `items`の配列のすべてのエントリを含むドロップダウンリストボックスを追加します。オプションでブロックが取り付けることができ、これはユーザがボックスの項目を選択したら呼び出されます。
2156
+ `items`の配列のすべてのエントリを含むドロップダウンリストボックスを追加します。
2157
+ オプションでブロックを取り付けることができ、これはユーザがボックスの項目を選択したら
2158
+ 呼び出されます。
1615
2159
 
1616
2160
  {{{
1617
2161
  #!ruby
1618
2162
  Shoes.app do
1619
- stack :margin => 10 do
1620
- para "Pick a card:"
1621
- list_box :items => ["Jack", "Ace", "Joker"]
2163
+ stack margin: 10 do
2164
+ para "Pick a card:"
2165
+ list_box items: ["Jac", "Ace", "Jok"] do |item|
2166
+ @p.text = "#{item} was picked!"
1622
2167
  end
2168
+ @p = para
2169
+ end
1623
2170
  end
1624
2171
  }}}
1625
2172
 
1626
- 選択された文字列をを得るために`ListBox#text`を呼び出します。より多くのヘルプは`リストボックス(ListBox)`のセクションの`ネイティブ`コントロールを見てください。
2173
+ 選択された文字列をを得るために`ListBox#text`を呼び出します。
2174
+ より多くのヘルプは`リストボックス(ListBox)`のセクションの`ネイティブ`コントロールを見てください。
1627
2175
 
1628
2176
  === progress() » Shoes::Progress ===
1629
2177
 
@@ -1631,114 +2179,148 @@ PNG、JPEGそしてGIFのフォーマットが許されます。
1631
2179
 
1632
2180
  === para(text) » Shoes::Para ===
1633
2181
 
1634
- Shoesが12ピクセルの大きさに整形する、Para("paragraph"の省略形)テキストブロックを作成します。
2182
+ 12ピクセルの大きさに整形する、Para("paragraph"の省略形)テキストブロックを作成します。
1635
2183
 
1636
2184
  === radio(group name: a string or symbol) » Shoes::Radio ===
1637
2185
 
1638
- ラジオボタンを追加します。`グループ名(group name)`が与えられたら、ラジオボタンはグループの一部だとみなされます。同じグループのラジオボタンのうちで、1つだけをクリックすることができます。(もしグループ名が与えられなければ、そのラジオボタンは同じスロットの他のすべてのラジオボタンとグループ化されます)
2186
+ ラジオボタンを追加します。`グループ名(group name)`が与えられたら、ラジオボタンは
2187
+ グループの一部だとみなされます。同じグループのラジオボタンのうちで、
2188
+ 1つだけをクリックすることができます。(もしグループ名が与えられなければ、そのラジオボタンは
2189
+ 同じスロットの他のすべてのラジオボタンとグループ化されます)
2190
+
2191
+ === span(text) » String ===
1639
2192
 
1640
- === span(text) » Shoes::Span ===
2193
+ デフォルトでスタイル付けされていない、Spanテキストの一部を作成します。
1641
2194
 
1642
- デフォルトでされない、Spanテキストの一部を作成します。
2195
+ {{{
2196
+ Shoes.app do
2197
+ tagline "\n", 'hello ' * 5,
2198
+ span(em('Green Shoes'), size: 8, rise: 15)
2199
+ end
2200
+ }}}
1643
2201
 
1644
2202
  === stack(styles) { ... } » Shoes::Stack ===
1645
2203
 
1646
- 新しいスタックを作成します。スタックはスロットの一種です。(スタックとフローの完全な説明はメインの[[Slots]]のページを見てください。)
2204
+ 新しいスタックを作成します。スタックはスロットの一種です。
2205
+ (スタックとフローの完全な説明はメインの[[Slots]]のページを見てください。)
1647
2206
 
1648
- 要するに、スタックは要素を配置するための目に見えない箱("スロット")です。スタックにボタンや画像などを追加して、それらは垂直に積み上げられます。そう、それらは重なります。
2207
+ 要するに、スタックは要素を配置するための目に見えない箱("スロット")です。
2208
+ スタックにボタンや画像などを追加して、それらは垂直に積み上げられます。
2209
+ そう、それらは重なります。
1649
2210
 
1650
- === strong(text) » Shoes::Strong ===
2211
+ === strong(text) » String ===
1651
2212
 
1652
2213
  デフォルトで太字に整形された、Strongテキストの一部を作成します。
1653
2214
 
1654
- === sub(text) » Shoes::Sub ===
2215
+ === sub(text) » String ===
1655
2216
 
1656
- デフォルトでテキストは10ピクセル(位置を)下げられx-smallフォントに整形された、Sub("subscript"の省略形)テキストの一部を作成します。
2217
+ デフォルトでテキストは10ピクセル(位置を)下げられx-smallフォントに整形された、
2218
+ Sub("subscript"の省略形)テキストの一部を作成します。
1657
2219
 
1658
2220
  === subtitle(text) » Shoes::Subtitle ===
1659
2221
 
1660
- サブタイトル(Subtitle)テキストブロックを作成します。Shoesは26ピクセルの大きさにこのテキストを整形します。
2222
+ サブタイトル(Subtitle)テキストブロックを作成します。
2223
+ 26ピクセルの大きさにこのテキストを整形します。
1661
2224
 
1662
- === sup(text) » Shoes::Sup ===
2225
+ === sup(text) » String ===
1663
2226
 
1664
- デフォルトでテキストは10ピクセル(位置を)上げられx-smallフォントに整形された、Sup("superscript"の省略形)テキストの一部を作成します。
2227
+ デフォルトでテキストは10ピクセル(位置を)上げられx-smallフォントに整形された、
2228
+ Sup("superscript"の省略形)テキストの一部を作成します。
1665
2229
 
1666
2230
  === tagline(text) » Shoes::Tagline ===
1667
2231
 
1668
- タグライン(Tagline)テキストブロックを作成します。Shoesはこのテキストを18ピクセルの大きさに整形します。
2232
+ タグライン(Tagline)テキストブロックを作成します。このテキストを18ピクセルの大きさに整形します。
1669
2233
 
1670
- === timer(seconds) { ... } » Shoes::Timer ===
2234
+ === timer(seconds) { ... } » Fixnum ===
1671
2235
 
1672
- 1回だけのタイマーです。少しの秒(または分、時)後にいくらかのコードの実行をスケジュールしたいなら、ここにブロックとしてコードを取り付けることができます。
2236
+ 1回だけのタイマーです。少しの秒(または分、時)後にいくらかのコードの実行をスケジュールしたい
2237
+ なら、ここにブロックとしてコードを取り付けることができます。
1673
2238
 
1674
2239
  今から5秒後にアラートボックスを表示するためには:
1675
2240
 
1676
2241
  {{{
1677
2242
  #!ruby
1678
2243
  Shoes.app do
1679
- timer(5) do
1680
- alert("Your five seconds are up.")
2244
+ timer 5 do
2245
+ alert "Your five seconds are up."
1681
2246
  end
1682
2247
  end
1683
2248
  }}}
1684
2249
 
1685
2250
  === title(text) » Shoes::Title ===
1686
2251
 
1687
- タイトル(Title)テキストブロックを作成します。Shoesはこれらの要素を34ピクセルの大きさに整形します。
2252
+ タイトル(Title)テキストブロックを作成します。これらの要素を34ピクセルの大きさに整形します。
1688
2253
 
1689
2254
  === video(path or url) » Shoes::Video ===
1690
2255
 
1691
- スロットに動画を埋め込みます。
2256
+ 動画を埋め込みます。
1692
2257
 
1693
2258
  === window(styles) { ... } » Shoes::App ===
1694
2259
 
1695
- 新しいアプリケーションウィンドウを開きます。このメソッドは初めにアプリケーションを開始するために使われる[[App.Shoes.app]]メソッドとほとんど同一です。違いは`window`メソッドは新しいウィンドウの[[App.owner]]プロパティを設定することです。(普通のShoes.appはその`owner`を`nil`に設定します。)
2260
+ 新しいアプリケーションウィンドウを開きます。
2261
+ このメソッドは初めにアプリケーションを開始するために使われる[[App.Shoes.app]]メソッドと
2262
+ ほとんど同一です。違いは`window`メソッドは新しいウィンドウの[[App.owner]]プロパティを
2263
+ 設定することです。(普通のShoes.appはその`owner`を`nil`に設定します。)
1696
2264
 
1697
- そのため、新しいウィンドウの`owner`はウィンドウを開始したShoes::Appに設定されるでしょう。この方法により子のウィンドウが親を呼べます。
2265
+ そのため、新しいウィンドウの`owner`はウィンドウを開始したShoes::Appに設定されるでしょう。
2266
+ この方法により子のウィンドウが親を呼べます。
1698
2267
 
1699
2268
  {{{
1700
2269
  #!ruby
1701
- Shoes.app :title => "The Owner" do
1702
- button "Pop up?" do
1703
- window do
1704
- para "Okay, popped up from #{owner}"
1705
- end
2270
+ Shoes.app title: "The Owner" do
2271
+ button "Pop up?" do
2272
+ window do
2273
+ para "Okay, popped up from [#{owner.inspect}]."
1706
2274
  end
2275
+ end
1707
2276
  end
1708
2277
  }}}
1709
2278
 
1710
2279
  == Events ==
1711
2280
 
1712
- どのようにしてマウスのクリックを離したことやキーボードをタイプしたことが分かるか不思議に思いませんか?スロットの内部でマウスが動いたときはいつでもイベントがスロットに送られます。また、キーが押されたときはいつでも。スロットが作成されたり破壊されたときでさえ。それぞれのそれらのイベントをブロックを取り付けることができます。
2281
+ どのようにしてマウスのクリックを離したことやキーボードをタイプしたことが分かるか
2282
+ 不思議に思いませんか?スロットの内部でマウスが動いたときはいつでもイベントが
2283
+ スロットに送られます。また、キーが押されたときはいつでも。
2284
+ スロットが作成されたり破壊されたときでさえ。それぞれのそれらのイベントをブロックを
2285
+ 取り付けることができます。
1713
2286
 
1714
- マウスイベントは`motion`、`click`、`hover`そして`leave`を含みます。キーボードのタイピングは`keypress`イベントによって表されます。そして`start`や`finish`イベントはキャンバスを開始するときや破棄されたときを指し示します。
2287
+ マウスイベントは`motion`、`click`、`hover`そして`leave`を含みます。
2288
+ キーボードのタイピングは`keypress`イベントによって表されます。
2289
+ そして`start`や`finish`イベントはキャンバスを開始するときや破棄されたときを指し示します。
1715
2290
 
1716
- では、マウスでスロットの上をフロートするときに背景を変更したいとしましょう。スロットの内部にマウスがくるときに背景を変更するためには`hover`イベントを使います。そして、マウスがフロートして離れるときに戻すには`leave`を使います。
2291
+ では、マウスでスロットの上をフロートするときに背景を変更したいとしましょう。
2292
+ スロットの内部にマウスがくるときに背景を変更するためには`hover`イベントを使います。
2293
+ そして、マウスがフロートして離れるときに戻すには`leave`を使います。
1717
2294
 
1718
2295
  {{{
1719
2296
  #!ruby
1720
2297
  Shoes.app do
1721
- s = stack :width => 200, :height => 200 do
2298
+ s = stack width: 200, height: 200 do
1722
2299
  background red
1723
- hover do
1724
- s.clear { background blue }
1725
- end
1726
- leave do
1727
- s.clear { background red }
1728
- end
2300
+ end
2301
+ s.hover do
2302
+ s.clear { background blue }
2303
+ end
2304
+ s.leave do
2305
+ s.clear { background red }
1729
2306
  end
1730
2307
  end
1731
2308
  }}}
1732
2309
 
1733
2310
  === click { |button, left, top| ... } » self ===
1734
2311
 
1735
- マウスボタンがクリックされたときにはclickブロックが呼ばれます。`button`はマウスボタンのどれが押されたかの数です。`left`や`top`はどこがクリックされたかのマウスの座標です。
2312
+ マウスボタンがクリックされたときにはclickブロックが呼ばれます。
2313
+ `button`はマウスボタンのどれが押されたかの数です。
2314
+ `left`や`top`はどこがクリックされたかのマウスの座標です。
1736
2315
 
1737
2316
  マウスのクリックを離した瞬間をとらえるには、[[Events.release]]イベントを見てください。
1738
2317
 
1739
2318
  === finish { |self| ... } » self ===
1740
2319
 
1741
- スロットが取り除かれたときは、finishイベントが発生します。finishブロックはすぐに`self`を手渡し、スロットオブジェクトは取り除かれます。
2320
+ スロットが取り除かれたときは、finishイベントが発生します。
2321
+ finishブロックはすぐに`self`を手渡し、スロットオブジェクトは取り除かれます。
2322
+
2323
+ '''注意:''' Green Shoesは`finish`メソッドをサポートしていません。
1742
2324
 
1743
2325
  === hover { |self| ... } » self ===
1744
2326
 
@@ -1749,71 +2331,77 @@ hoverイベントはスロットにマウスが入ったときに発生します
1749
2331
 
1750
2332
  === keypress { |key| ... } » self ===
1751
2333
 
1752
- キー(またはキーの組み合わせ)がいつ押されても、そのブロックは呼ばれます。そのブロックはキーの性質を表す文字列である`key`を送ります。特別なキーやキーの組み合わせの場合は、文字列ではなくRubyのシンボルが送られます。
2334
+ キー(またはキーの組み合わせ)がいつ押されても、そのブロックは呼ばれます。
2335
+ そのブロックにはキーの性質を表す文字列である`key`を送られます。
1753
2336
 
1754
2337
  そして、例えば、`Shift-a`が押されたなら、そのブロックは`"A"`の文字列を得ます。
2338
+ また、F1が押されたなら、 `F1`の文字列を受けとります。
1755
2339
 
1756
- しかしながら、F1が押されたなら、 `:f1`のシンボルを受けとります。`Shift-F1`なら、そのシンボルは`:shift_f1`です。
1757
-
1758
- `control`、`shift`そして`alt`は修飾キーです。それらは以下の順番で現れます。`Shift-Control-Alt-PgUp`が押されたなら、そのシンボルは`:control_shift_alt_page_up`になります。
2340
+ `"Control_L"`, `"Shift_L"`, `"Alt_L"`は左サイドに位置する修飾キーです。
2341
+ もし`Shift-Control-Alt-PgUp`が押されたなら、得られる文字列は、以下の順番で現れます:
2342
+ `"Shift_L"`, `"Control_L"`, `"Alt_L"`, `"Page_Up"`
1759
2343
 
1760
- シフトキーについて1つ。多くのキーでシフトキーを見ないでしょう。USキーボードでは、`Shift-7`はアンパサンド(&)です。そのため、`:shift_5`ではなく`"&"`を得ます。そして、そのようなキーボードで`Shift-Alt-7`を押したら、`:alt_&`のシンボルを得ます。いくつか下のパラグラフで特別なキーのシフト修飾子の一覧が見えます。
2344
+ シフトキーについて1つ。USキーボードでは、`Shift-7`はアンパサンド(&)です。
2345
+ そのため、`"Shift_L"`と`"7"`ではなく、`"Shift_L"`と`"ampersand"`を得ます。
2346
+ そして、そのようなキーボードで`Shift-Alt-7`を押したら、`"Shift_L"`と`"Alt_L"`と
2347
+ `"ampersand"`という文字列を得るでしょう。
1761
2348
 
1762
2349
  {{{
1763
2350
  #!ruby
1764
2351
  Shoes.app do
1765
- @info = para "NO KEY is PRESSED."
2352
+ info = para "NO KEY is PRESSED."
1766
2353
  keypress do |k|
1767
- @info.replace "#{k.inspect} was PRESSED."
2354
+ info.replace "#{k.inspect} was PRESSED."
1768
2355
  end
1769
2356
  end
1770
2357
  }}}
1771
2358
 
1772
- Shoesがそれ自身のいくつかのホットキーを利用することを覚えておいてください。Alt-ピリオド(`:alt_.`)、Alt-クエッション(`:alt_?`)そしてAlt-スラッシュ(`:alt_/`)はShoesの予約語です。
1773
-
1774
- 以下はスペシャルキーの一覧です: `:escape`、`:delete`、 
1775
- `:backspace`、`:tab`、`:page_up`、`:page_down`、`:home`、`:end`、`:left`、`:up`、 
1776
- `:right`、`:down`、`:f1`、`:f2`、`:f3`、`:f4`、`:f5`、`:f6`、`:f7`、`:f8`、`:f9`、 
1777
- `:f10`、`:f11`そして`:f12`。
1778
-
1779
- それらすべてのルールに関する一つの警告:通常はリターンキーは`"\n"`を与えます。しかしながら、修飾キーが押されたときには、最後には`:control_enter`、`:control_alt_enter`、`:shift_alt_enter`になります。
1780
-
1781
2359
  === leave { |self| ... } » self ===
1782
2360
 
1783
- スロットからマウスカーソルが出て行くときleaveイベントが発生します。その瞬間すでにマウスカーソルはスロットの端の中にはありません。leaveイベントが発生するとき、`self`とともにブロックが呼ばれ、そのスロットオブジェクトは取り残されます。
2361
+ スロットからマウスカーソルが出て行くときleaveイベントが発生します。
2362
+ その瞬間すでにマウスカーソルはスロットの端の中にはありません。
2363
+ leaveイベントが発生するとき、`self`とともにブロックが呼ばれ、そのスロットオブジェクトは
2364
+ 取り残されます。
1784
2365
 
1785
2366
  スロットにマウスが入ることを見つけたいなら[[Events.hover]]も見てください。
1786
2367
 
1787
2368
  === motion { |left, top| ... } » self ===
1788
2369
 
1789
- マウスがスロットの内部を移動するたびにモーションのブロックは呼ばれます。ブロックはカーソルの`left`や`top`の座標を渡します。
2370
+ マウスがスロットの内部を移動するたびにモーションのブロックは呼ばれます。
2371
+ ブロックはカーソルの`left`や`top`の座標を渡します。
1790
2372
 
1791
2373
  {{{
1792
2374
  #!ruby
1793
- Shoes.app :width => 200, :height => 200 do
2375
+ Shoes.app width: 200, height: 200 do
1794
2376
  background black
1795
2377
  fill white
1796
- @circ = oval 0, 0, 100, 100
1797
-
2378
+ circ = oval 0, 0, 100, 100
2379
+
1798
2380
  motion do |top, left|
1799
- @circ.move top - 50, left - 50
2381
+ circ.move top - 50, left - 50
1800
2382
  end
1801
2383
  end
1802
2384
  }}}
1803
2385
 
1804
2386
  === release { |button, left, top| ... } » self ===
1805
2387
 
1806
- マウスがアンクリック(マウスアップ)のときにreleaseのブロックは実行されます。それは指が持ち上げられたときです。`button`は押し下げられたボタンに対応する数です。`left`や`top`はボタンが離されたときのマウスのの座標です。
2388
+ マウスがアンクリック(マウスアップ)のときにreleaseのブロックは実行されます。
2389
+ それは指が持ち上げられたときです。`button`は押し下げられたボタンに対応する数です。
2390
+ `left`や`top`はボタンが離されたときのマウスのの座標です。
1807
2391
 
1808
2392
  実際のマウスクリックを捕まえるには、[[Events.click]]イベントを利用してください。
1809
2393
 
1810
2394
  === start { |self| ... } » self ===
1811
2395
 
1812
- 初めてスロットが描かれるとき、スタート(start)イベントが実行されます。まさに今描かれたスロットオブジェクトが`self`としてブロックに渡されます。
2396
+ 初めてスロットが描かれるとき、スタート(start)イベントが実行されます。
2397
+ まさに今描かれたスロットオブジェクトが`self`としてブロックに渡されます。
2398
+
2399
+ '''注意:''' Green Shoesは`start`メソッドをサポートしていません。
1813
2400
 
1814
2401
  == Manipulation Blocks ==
1815
2402
 
1816
- 以下のmanipulationメソッドはスロットの周囲を変更したり新しい要素を挿入することを手早く片付けます。
2403
+ 以下のmanipulationメソッドはスロットの周囲を変更したり新しい要素を挿入することを
2404
+ 手早く片付けます。
1817
2405
 
1818
2406
  === append() { ... } » self ===
1819
2407
 
@@ -1826,12 +2414,14 @@ Shoesがそれ自身のいくつかのホットキーを利用することを覚
1826
2414
  timer 3 do
1827
2415
  @slot.append do
1828
2416
  title "Breaking News"
1829
- tagline "Astronauts arrested for space shuttle DUI."
2417
+ tagline "Astronauts ",
2418
+ "arrested for space shuttle DUI."
1830
2419
  end
1831
2420
  end
1832
2421
  end
1833
2422
  }}}
1834
2423
 
2424
+
1835
2425
  `title`や`tagline`の要素を`@slot`の最後に追加します。
1836
2426
 
1837
2427
  === after(element) { ... } » self ===
@@ -1844,15 +2434,18 @@ Shoesがそれ自身のいくつかのホットキーを利用することを覚
1844
2434
 
1845
2435
  === clear() » self ===
1846
2436
 
1847
- タイマーやネストしたスロットなど、スロットのすべての要素を空にします。スロットのコンテンツを最初から最後までループしてそれぞれの要素の`remove`メソッドを呼ぶことと効果としては同一です。
2437
+ タイマーやネストしたスロットなど、スロットのすべての要素を空にします。
2438
+ スロットのコンテンツを最初から最後までループしてそれぞれの要素の`remove`メソッドを
2439
+ 呼ぶことと効果としては同一です。
1848
2440
 
1849
2441
  === clear() { ... } » self ===
1850
2442
 
1851
- clearメソッドはオプションでブロックも取ります。このブロックはスロットのコンテンツを置き換えるために利用されます。
2443
+ clearメソッドはオプションでブロックも取ります。
2444
+ このブロックはスロットのコンテンツを置き換えるために利用されます。
1852
2445
 
1853
2446
  {{{
1854
2447
  #!ruby
1855
- Shoes.app do
2448
+ Shoes.app do
1856
2449
  @slot = stack { para "Old text" }
1857
2450
  timer 3 do
1858
2451
  @slot.clear { para "Brand new text" }
@@ -1868,7 +2461,7 @@ clearメソッドはオプションでブロックも取ります。このブロ
1868
2461
 
1869
2462
  {{{
1870
2463
  #!ruby
1871
- Shoes.app do
2464
+ Shoes.app do
1872
2465
  @slot = stack { para 'Good Morning' }
1873
2466
  timer 3 do
1874
2467
  @slot.prepend { para "Your car is ready." }
@@ -1880,43 +2473,62 @@ clearメソッドはオプションでブロックも取ります。このブロ
1880
2473
 
1881
2474
  == Position of a Slot ==
1882
2475
 
1883
- 他のすべての要素と同様に、スロットは作成されたときに整形することやカスタマイズすることができます。
2476
+ 他のすべての要素と同様に、スロットは作成されたときに整形することやカスタマイズすることが
2477
+ できます。
1884
2478
 
1885
2479
  スタックの幅を150ピクセルに設定するためには:
1886
2480
 
1887
2481
  {{{
1888
2482
  #!ruby
1889
2483
  Shoes.app do
1890
- stack(:width => 150) { para "Now that's precision." }
2484
+ stack width: 150 do
2485
+ background yellow
2486
+ para "Now that's precision."
2487
+ end
1891
2488
  end
1892
2489
  }}}
1893
2490
 
1894
- それぞれのスタイルの設定は、詳細な設定を手に入れるために利用することのできるメソッドも持っています。(そのため、例えば、`width`メソッドはスロットの幅をピクセルで返します。)
2491
+ それぞれのスタイルの設定は、詳細な設定を手に入れるために利用することのできるメソッドも
2492
+ 持っています。(例えば、`width`メソッドはスロットの幅をピクセルで返します。)
1895
2493
 
1896
2494
  === displace(left: a number, top: a number) » self ===
1897
2495
 
1898
- :displace_leftと:displace_topスタイルの設定のためのショートカットメソッドです。置き換えはレイアウトを変更しないでスロットを移動する便利な方法です。実際には、`top`と`left`メソッドは置き換えを全く報告しません。そのため、通常、置き換えは一時的なアニメーションのためにあります。例えば、適当な位置にボタンを少し移動するなど。
2496
+ :displace_leftと:displace_topスタイルの設定のためのショートカットメソッドです。
2497
+ 置き換えはレイアウトを変更しないでスロットを移動する便利な方法です。
2498
+ 実際には、`top`と`left`メソッドは置き換えを全く報告しません。
2499
+ そのため、通常、置き換えは一時的なアニメーションのためにあります。
2500
+ 例えば、適当な位置にボタンを少し移動するなど。
1899
2501
 
1900
- `left`と`top`の数は`displace`に送られ、スロット自身のtopとleftの座標に追加されます。topとleftの座標から差し引くには、負数を利用してください。
2502
+ `left`と`top`の数は`displace`に送られ、スロット自身のtopとleftの座標に追加されます。
2503
+ topとleftの座標から差し引くには、負数を利用してください。
2504
+
2505
+ '''注意:''' Green Shoesは`displace`メソッドをサポートしていません。
1901
2506
 
1902
2507
  === gutter() » a number ===
1903
2508
 
1904
- スクロールバーエリアの大きさです。Shoesがスクロールバーを表示する必要があるとき、スクロールバーがウィンドウの端にふれているいくつかの要素を隠してしまうかもしれません。`gutter`はどのくらいのピクセルをスクロールバーが隠すことを期待するかを教えます。
2509
+ スクロールバーエリアの大きさです。Shoesがスクロールバーを表示する必要があるとき、
2510
+ スクロールバーがウィンドウの端にふれているいくつかの要素を隠してしまうかもしれません。
2511
+ `gutter`はどのくらいのピクセルをスクロールバーが隠すことを期待するかを教えます。
1905
2512
 
1906
2513
  これは一般的には、次のように右側に詰め物の要素として利用します:
1907
2514
 
1908
2515
  {{{
1909
2516
  #!ruby
2517
+ # Not yet available
1910
2518
  Shoes.app do
1911
2519
  stack :margin_right => 20 + gutter do
1912
- para "Insert fat and ratified declaration of independence here..."
2520
+ para "Insert fat and ratified ",
2521
+ "declaration of independence here..."
1913
2522
  end
1914
2523
  end
1915
2524
  }}}
1916
2525
 
2526
+ '''注意:''' Green Shoesは`gutter`メソッドをサポートしていません。
2527
+
1917
2528
  === height() » a number ===
1918
2529
 
1919
- スロットの目に見えるピクセルでの垂直の大きさです。そして、スクロールするスロットの場合は、スロットの全体の大きさを得るために`scroll_height()`の利用を必要とするでしょう。
2530
+ スロットの目に見えるピクセルでの垂直の大きさです。そして、スクロールするスロットの場合は、
2531
+ スロットの全体の大きさを得るために`scroll_height()`の利用を必要とするでしょう。
1920
2532
 
1921
2533
  === hide() » self ===
1922
2534
 
@@ -1924,28 +2536,41 @@ clearメソッドはオプションでブロックも取ります。このブロ
1924
2536
 
1925
2537
  === left() » a number ===
1926
2538
 
1927
- The left pixel location of the slot. Also known as the x-axis coordinate.
1928
2539
  スロットの位置の左のピクセルです。x-axis座標でも知ることができます。
1929
2540
 
1930
2541
  === move(left, top) » self ===
1931
2542
 
1932
2543
  スロットの左上の角である(left、top)の座標を指定してスロットを移動します。
1933
2544
 
2545
+ '''注意:''' Green Shoesは`move`メソッドをサポートしていません。
2546
+
1934
2547
  === remove() » self ===
1935
2548
 
1936
- スロットを削除します。それは表示されなくなり親のコンテンツに記載されなくなります。それは消え去ります。
2549
+ スロットを削除します。それは表示されなくなり親のコンテンツに記載されなくなります。
2550
+ それは消え去ります。
2551
+
2552
+ '''注意:''' Green Shoesは`remove`メソッドをサポートしていません。`clear`メソッドを
2553
+ 使用して下さい。
1937
2554
 
1938
2555
  === scroll() » true or false ===
1939
2556
 
1940
- スロットにスクロールバーを表示することを許しますか?trueかfalseです。スロットの高さも固定されているときだけスクロールバーが表示されます。
2557
+ スロットにスクロールバーを表示することを許しますか?trueかfalseです。
2558
+ スロットの高さも固定されているときだけスクロールバーが表示されます。
2559
+
2560
+ '''注意:''' Green Shoesは`scroll`メソッドをサポートしていません。
1941
2561
 
1942
2562
  === scroll_height() » a number ===
1943
2563
 
1944
2564
  スクロールによって隠されているすべてを含む、スロット全体の垂直の大きさです。
1945
2565
 
2566
+ '''注意:''' Green Shoesは`scroll_height`メソッドをサポートしていません。
2567
+
1946
2568
  === scroll_max() » a number ===
1947
2569
 
1948
- このスロットでスクロールダウンできる上側(top)の座標です。スクロールバーの上側(top)の座標はいつもゼロです。下側(bottom)の座標はスロット全体の高さから1ページのスクロール分を引いたものです。この下側(bottom)の座標は`scroll_max`が返す値です。
2570
+ このスロットでスクロールダウンできる上側(top)の座標です。
2571
+ スクロールバーの上側(top)の座標はいつもゼロです。
2572
+ 下側(bottom)の座標はスロット全体の高さから1ページのスクロール分を引いたものです。
2573
+ この下側(bottom)の座標は`scroll_max`が返す値です。
1949
2574
 
1950
2575
  これは基本的に`slot.scroll_height - slot.height`と書くためのショートカットです。
1951
2576
 
@@ -1953,12 +2578,17 @@ The left pixel location of the slot. Also known as the x-axis coordinate.
1953
2578
 
1954
2579
  === scroll_top() » a number ===
1955
2580
 
1956
- スロットがスクロールダウンする上側(top)の座標です。そのため、スロットが20ピクセルスクロールダウンされたら、このメソッドは`20`を返します。
2581
+ スロットがスクロールダウンする上側(top)の座標です。
2582
+ そのため、スロットが20ピクセルスクロールダウンされたら、このメソッドは`20`を返します。
2583
+
2584
+ '''注意:''' Green Shoesは`scroll_top`メソッドをサポートしていません。
1957
2585
 
1958
2586
  === scroll_top = a number ===
1959
2587
 
1960
2588
  任意の座標にスロットをスクロールします。ゼロから`scroll_max`までの間である必要があります。
1961
2589
 
2590
+ '''注意:''' Green Shoesは`scroll_top=`メソッドをサポートしていません。
2591
+
1962
2592
  === show() » self ===
1963
2593
 
1964
2594
  スロットが隠されていた場合、表示します。[[Position.hide]]と[[Position.toggle]]も見てください。
@@ -1967,27 +2597,33 @@ The left pixel location of the slot. Also known as the x-axis coordinate.
1967
2597
 
1968
2598
  引数なしで`style`メソッドを呼ぶことでスロットに現在適用されているスタイルのハッシュを返します。
1969
2599
 
1970
- `height`と`width`などのメソッドはスロットの本当のサイズをピクセルで返しますが、`style[:height]`または`style[:width]`を利用することで初めに要求されたサイズを得ることができます。
2600
+ `height`と`width`などのメソッドはスロットの本当のサイズをピクセルで返しますが、
2601
+ `style[:height]`または`style[:width]`を利用することで初めに要求されたサイズを
2602
+ 得ることができます。
1971
2603
 
1972
2604
  {{{
1973
2605
  #!ruby
1974
2606
  Shoes.app do
1975
- @s = stack :width => "100%"
1976
- para @s.style[:width]
2607
+ s = stack width: 1.0
2608
+ para s.style[:width]
2609
+ button('Then..'){s.append{para s.style[:width]}}
1977
2610
  end
1978
2611
  }}}
1979
2612
 
1980
- この例では、このスタックの下のパラグラフは"100%"の文字列を表示します。
2613
+ この例では、このスタックの下のパラグラフは最初に"1.0"の文字列を表示しますが、ボタンを
2614
+ クリックした後は"600"の文字列を表示するでしょう。
1981
2615
 
1982
2616
  === style(styles) » styles ===
1983
2617
 
1984
- ハッシュのスタイル設定を使ってスロットを修正してください。このページのどんなメソッドでも(もちろん、このメソッドは除いて)スタイルの設定に利用できます。そして、例えば、`width`メソッドがあり、このように`width`スタイルもあります。
2618
+ ハッシュのスタイル設定を使ってスロットを修正してください。
2619
+ このページのどんなメソッドでも(もちろん、このメソッドは除いて)スタイルの設定に利用できます。
2620
+ そして、例えば、`width`メソッドがあり、このように`width`スタイルもあります。
1985
2621
 
1986
2622
  {{{
1987
2623
  #!ruby
1988
2624
  Shoes.app do
1989
- @s = stack { background green }
1990
- @s.style(:width => 400, :height => 200)
2625
+ s = stack { background green }
2626
+ s.style width: 400, height: 200
1991
2627
  end
1992
2628
  }}}
1993
2629
 
@@ -2005,9 +2641,13 @@ The left pixel location of the slot. Also known as the x-axis coordinate.
2005
2641
 
2006
2642
  == Traversing the Page ==
2007
2643
 
2008
- スロット内部の要素を最初から最後までループする必要性に気づくかもしれません。または、ページを登って要素の親のスタックを探す必要があるかもしれません。
2644
+ スロット内部の要素を最初から最後までループする必要性に気づくかもしれません。
2645
+ または、ページを登って要素の親のスタックを探す必要があるかもしれません。
2009
2646
 
2010
- すべての要素で、上位のスロット直接得るために`parent`メソッドを呼ぶことができます。そしてスロットでは、すべての子を得るために`contents`メソッドを呼ぶことができます。(テキストブロックなどのいくつかの要素は、それらの子を得るための`contents`メソッドも持っています。)
2647
+ すべての要素で、上位のスロット直接得るために`parent`メソッドを呼ぶことができます。
2648
+ そしてスロットでは、すべての子を得るために`contents`メソッドを呼ぶことができます。
2649
+ (テキストブロックなどのいくつかの要素は、それらの子を得るための`contents`メソッドも
2650
+ 持っています。)
2011
2651
 
2012
2652
  === contents() » an array of elements ===
2013
2653
 
@@ -2017,58 +2657,98 @@ The left pixel location of the slot. Also known as the x-axis coordinate.
2017
2657
 
2018
2658
  要素のコンテナのオブジェクトを得ます。
2019
2659
 
2660
+ {{{
2661
+ Shoes.app do
2662
+ s = stack do
2663
+ para 'Green'
2664
+ @p = para 'Shoes'
2665
+ end
2666
+ para s
2667
+ para s.contents
2668
+ para @p.parent
2669
+ end
2670
+ }}}
2671
+
2020
2672
  = Elements =
2021
2673
 
2022
- これはShoesの要素です。要素は楕円の形状と同じくらい単純です。またはビデオストリームと同じくらい複雑です。あなたは以前このマニュアルのスロットのセクションでこれらすべての要素に出会ったことがあります。
2674
+ これはGreen Shoesの要素です。要素は楕円の形状と同じくらい単純です。
2675
+ またはparaのテキスト文字列と同じくらい複雑です。
2676
+ あなたは以前このマニュアルのスロットのセクションでこれらすべての要素に出会ったことがあります。
2023
2677
 
2024
- Shoesは7つのネイティブコントロールを持ちます:ボタン(Button)、エディットライン(EditLine)、エディットボックス(EditBox)、リストボックス(ListBox)、プログレスメータ(Progress meter)、チェックボックス(Check box)、ラジオ(Radio)。私たちの言う"native"コントロールとは、それらの7つの要素がオペレーティングシステムによって描画されることを意味します。そのため、プログレスバーのWindowsでの見え方とOS Xでの見え方は違います。
2678
+ Green Shoesは7つのネイティブコントロールを持ちます:
2679
+ ボタン(Button)、エディットライン(EditLine)、エディットボックス(EditBox)、
2680
+ リストボックス(ListBox)、プログレスメータ(Progress meter)、チェックボックス(Check box)、
2681
+ ラジオ(Radio)。私たちの言う"native"コントロールとは、それらの7つの要素が
2682
+ Ruby/GTK2のAPIを使って直接描画されることを意味します。そのため、プログレスバーでは
2683
+ PNG画像データに変換されることなく描画されます。
2025
2684
 
2026
- またShoesは7つの他の種類の要素を持っています:背景(Background)、ボーダー(Border)、画像(Image)、形状(Shape)、テキストブロック(TextBlock)、タイマー(Timer)、そしてビデオ(Video)。それらすべてはどんなオペレーティングシステムでも同じような見え方と動きになるべきです。
2685
+ またShoesは7つの他の種類の要素を持っています:背景(Background)、ボーダー(Border)、
2686
+ 画像(Image)、形状(Shape)、テキストブロック(TextBlock)、タイマー(Animate)、
2687
+ そしてビデオ(Video)。それらすべてはどんなオペレーティングシステムでも同じような見え方と
2688
+ 動きになるべきです。
2027
2689
 
2028
- いったん要素を生成した後でも、それを変更したくなるでしょう。それを動かしたり隠したりまたはそれを取り除くために。それらの種類のことを行うために、このセクションのコマンド利用するでしょう。(特にどんな要素上でも利用できるコマンドの[[Common Common Methods]]セクションを確認してください。)
2690
+ いったん要素を生成した後でも、それを変更したくなるでしょう。それを動かしたり隠したり
2691
+ またはそれを取り除くために。それらの種類のことを行うために、このセクションのコマンドを
2692
+ 利用するでしょう。
2693
+ (特にどんな要素上でも利用できるコマンドの[[Common Common Methods]]セクションを
2694
+ 確認してください。)
2029
2695
 
2030
- そして、例として、PNGをスクリーンを配置するためにスロットの`image`メソッドを使ってください。この`image`メソッドはイメージオブジェクトを返します。これらをすっかり変更するためにイメージオブジェクトのこのメソッドを使ってみてください。
2696
+ そして、例として、PNGをスクリーンを配置するためにスロットの`image`メソッドを使ってください。
2697
+ この`image`メソッドはイメージオブジェクトを返します。
2698
+ これらをすっかり変更するためにイメージオブジェクトのこのメソッドを使ってみてください。
2031
2699
 
2032
2700
  == Common Methods ==
2033
2701
 
2034
- Shoesでは少しのメソッドがすべての小さな要素によって共有されてます。移動、表示、非表示。要素の削除。基本的でとても一般的なことです。この一覧はそれらの一般的なコマンドを含んでいます。
2702
+ Green Shoesでは少しのメソッドがすべての小さな要素によって共有されてます。
2703
+ 移動、表示、非表示。要素の削除。基本的でとても一般的なことです。
2704
+ この一覧はそれらの一般的なコマンドを含んでいます。
2035
2705
 
2036
- すべてのメソッドの中でもっとも一般的なメソッドの一つは`style`です。(これはスロットの[[Position.style]]メソッドとしてもカバーされます。)
2706
+ すべてのメソッドの中でもっとも一般的なメソッドの一つは`style`です。
2707
+ (これはスロットの[[Position.style]]メソッドとしてもカバーされます。)
2037
2708
 
2038
2709
  {{{
2039
2710
  #!ruby
2040
2711
  Shoes.app do
2041
2712
  stack do
2042
- # Background, text and a button: both are elements!
2713
+ # Background, text and a button:
2714
+ # both are elements!
2043
2715
  @back = background green
2044
2716
  @text = banner "A Message for You, Rudy"
2045
2717
  @press = button "Stop your messin about!"
2046
-
2718
+
2047
2719
  # And so, both can be styled.
2048
- @text.style :size => 12, :stroke => red, :margin => 10
2049
- @press.style :width => 400
2050
- @back.style :height => 10
2720
+ @text.style size: 12,
2721
+ markup: fg(@text.text, red), margin: 10
2722
+ @press.style width: 400
2723
+ @back.style height: 10
2051
2724
  end
2052
2725
  end
2053
2726
  }}}
2054
2727
 
2055
- 個別のコマンドについては、左にあるElementsセクションの他のリンクを見てください。ビデオファイルの中断または再生がしたいなら、ビデオの中断や再生は特異なので、[[Video]]セクションを確認してください。中断するボタンという感じではありません。
2728
+ 個別のコマンドについては、左にあるElementsセクションの他のリンクを見てください。
2729
+ ビデオファイルの中断または再生がしたいなら、ビデオの中断や再生は特異なので、
2730
+ [[Video]]セクションを確認してください。中断するボタンという感じではありません。
2056
2731
 
2057
2732
  === displace(left: a number, top: a number) » self ===
2058
2733
 
2059
- 要素を移動して置き換えます。しかし周囲のレイアウトは変更しません。特にアニメーションしている間でも要素の位置を保持したいなら、これは微妙なアニメーションに重要です。おそらく素早く震えるボタンや視界にスロットを滑り込ませるような。
2734
+ 要素を移動して置き換えます。しかし周囲のレイアウトは変更しません。
2735
+ 特にアニメーションしている間でも要素の位置を保持したいなら、これは微妙なアニメーションに
2736
+ 重要です。おそらく素早く震えるボタンや視界にスロットを滑り込ませるような。
2060
2737
 
2061
- 要素を置き換えるとき、それが配置されている左上の角から相対的に移動します。そのため、要素が(20, 40)の座標にあり、2ピクセル左と6ピクセル上に置き換えるなら、結果的に(22, 46)の座標となります。
2738
+ 要素を置き換えるとき、それが配置されている左上の角から相対的に移動します。
2739
+ そのため、要素が(20, 40)の座標にあり、2ピクセル左と6ピクセル上に置き換えるなら、
2740
+ 結果的に(22, 46)の座標となります。
2062
2741
 
2063
2742
  {{{
2064
2743
  #!ruby
2744
+ # Not yet available
2065
2745
  Shoes.app do
2066
2746
  flow :margin => 12 do
2067
2747
  # Set up three buttons
2068
2748
  button "One"
2069
2749
  @two = button "Two"
2070
2750
  button "Three"
2071
-
2751
+
2072
2752
  # Bounce the second button
2073
2753
  animate do |i|
2074
2754
  @two.displace(0, (Math.sin(i) * 6).to_i)
@@ -2077,21 +2757,31 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2077
2757
  end
2078
2758
  }}}
2079
2759
 
2080
- 他の2つのボタンは動かずにじっとしていますが、2番目のボタンが飛び跳ねることに注目してください。この状況で普通の`move`を使うなら、2番目のボタンはレイアウトから取り除かれて、2番目のボタンが全くそこにないかのように振る舞うでしょう。([[Common.move]]の例を見てください。)
2760
+ 他の2つのボタンは動かずにじっとしていますが、2番目のボタンが飛び跳ねることに
2761
+ 注目してください。この状況で普通の`move`を使うなら、2番目のボタンはレイアウトから
2762
+ 取り除かれて、2番目のボタンが全くそこにないかのように振る舞うでしょう。
2763
+ ([[Common.move]]の例を見てください。)
2764
+
2765
+ '''特に注意してください:'''表示される要素の座標を得るために`left`と`top`メソッドを
2766
+ 利用するなら、通常の座標を得るだけです。それは置き換えが行われていないかのようです。
2767
+ 置き換えは即座のアニメーションだけを目的とします。
2081
2768
 
2082
- '''特に注意してください:'''表示される要素の座標を得るために`left`と`top`メソッドを利用するなら、通常の座標を得るだけです。それは置き換えが行われていないかのようです。置き換えは即座のアニメーションだけを目的とします。
2769
+ '''注意:''' Green Shoesは`displace`メソッドをサポートしていません。
2083
2770
 
2084
2771
  === height() » a number ===
2085
2772
 
2086
- エレメントの垂直のピクセルによるスクリーンサイズです。画像の場合には、これは画像全体のサイズではありません。これは要素の現在表示されている高さです。
2773
+ エレメントの垂直のピクセルによるスクリーンサイズです。画像の場合には、これは画像全体の
2774
+ サイズではありません。これは要素の現在表示されている高さです。
2087
2775
 
2088
- 150x150ピクセルの画像を持っていて50ピクセルに幅を設定するなら、このメソッドは50を返します。
2776
+ 150x150ピクセルの画像を持っていて50ピクセルに幅を設定するなら、このメソッドは50
2777
+ 返します。
2089
2778
 
2090
2779
  例や他の解説のために[[Common.width]]メソッドも見てください。
2091
2780
 
2092
2781
  === hide() » self ===
2093
2782
 
2094
- 要素が見えないように、非表示にします。[[Common.show]]や[[Common.toggle]]も見てください。
2783
+ 要素が見えないように、非表示にします。[[Common.show]]や[[Common.toggle]]
2784
+ 見てください。
2095
2785
 
2096
2786
  === left() » a number ===
2097
2787
 
@@ -2099,34 +2789,39 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2099
2789
 
2100
2790
  === move(left: a number, top: a number) » self ===
2101
2791
 
2102
- スロットの範囲内でピクセルによって指定した位置に要素を移動します。その要素はスロットの内部にあります。しかし、もはやスロットの他の要素と一緒に積み上げられたりフローされたりしません。その要素は絶対的な位置指定ではなく、自由に浮かんでいます。
2792
+ スロットの範囲内でピクセルによって指定した位置に要素を移動します。
2793
+ その要素はスロットの内部にあります。しかし、もはやスロットの他の要素と一緒に
2794
+ 積み上げられたりフローされたりしません。その要素は絶対的な位置指定ではなく、
2795
+ 自由に浮かんでいます。
2103
2796
 
2104
2797
  {{{
2105
2798
  #!ruby
2106
2799
  Shoes.app do
2107
- flow :margin => 12 do
2108
- # Set up three buttons
2109
- button "One"
2110
- @two = button "Two"
2111
- button "Three"
2112
-
2113
- # Bounce the second button
2114
- animate do |i|
2115
- @two.move(40, 40 + (Math.sin(i) * 6).to_i)
2116
- end
2800
+ # Set up three buttons
2801
+ b = button "One"
2802
+ @two = button "Two"
2803
+ button "Three"
2804
+
2805
+ # Bounce the second button
2806
+ animate do |i|
2807
+ @two.move(33, 33 + (Math.sin(i) * 6).to_i)
2117
2808
  end
2118
2809
  end
2119
2810
  }}}
2120
2811
 
2121
- 3番目のボタンがその位置にスライドすることを許しており、2番目のボタンは特定の場所に動かされてします。要素を別の場所に変更しないで移動したいなら、[[Common.displace]]メソッドを見てください。
2812
+ 3番目のボタンがその位置にスライドすることを許しており、2番目のボタンは特定の場所に
2813
+ 動かされてします。要素を別の場所に変更しないで移動したいなら、
2814
+ [[Common.displace]]メソッドを見てください。
2122
2815
 
2123
2816
  === parent() » a Shoes::Stack or Shoes::Flow ===
2124
2817
 
2125
- その要素のコンテナのオブジェクトを得ます。反対のことを行うためにはスロットの[[Traversing.contents]]も見てください:コンテナの要素を得ます。
2818
+ その要素のコンテナのオブジェクトを得ます。反対のことを行うためにはスロットの
2819
+ [[Traversing.contents]]も見てください:コンテナの要素を得ます。
2126
2820
 
2127
2821
  === remove() » self ===
2128
2822
 
2129
- スロットから要素を削除します。(他の言葉で言い換えると:ガベージに投げます。)その要素はもう表示されません。
2823
+ スロットから要素を削除します。(他の言葉で言い換えると:ガベージに投げます。)
2824
+ その要素はもう表示されません。
2130
2825
 
2131
2826
  === show() » self ===
2132
2827
 
@@ -2134,14 +2829,18 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2134
2829
 
2135
2830
  === style() » styles ===
2136
2831
 
2137
- ハッシュの形で、要素に適用するフルセットのスタイルを得ます。`width`や`height`や`top`のようなメソッドは特定のピクセルでのサイズを返しますが、`style[:width]`または`style[:top]`を利用すると、初めの設定を得ることができます。("100%"の幅または"10px"のトップのような)
2832
+ ハッシュの形で、要素に適用するフルセットのスタイルを得ます。`width`や`height`や
2833
+ `top`のようなメソッドは特定のピクセルでのサイズを返しますが、`style[:width]`または
2834
+ `style[:top]`を利用すると、初めの設定を得ることができます。
2835
+ ("100%"の幅または"10px"のトップのような)
2138
2836
 
2139
2837
  {{{
2140
2838
  #!ruby
2141
2839
  Shoes.app do
2142
2840
  # A button which take up the whole page
2143
- @b = button "All of it", :width => 1.0, :height => 1.0
2144
-
2841
+ @b = button "All of it",
2842
+ width: width, height: height
2843
+
2145
2844
  # When clicked, show the styles
2146
2845
  @b.click { alert(@b.style.inspect) }
2147
2846
  end
@@ -2149,7 +2848,8 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2149
2848
 
2150
2849
  === style(styles) » styles ===
2151
2850
 
2152
- 要素のスタイルを変更します。これは要素の`:width`と`:height`、テキストのフォントの`:size`、形状の`:stroke`や`:fill`を含みます。または他の多くのスタイルの設定もです。
2851
+ 要素のスタイルを変更します。これは要素の`:width`と`:height`、テキストのフォントの
2852
+ `:size`、形状の`:stroke`や`:fill`を含みます。または他の多くのスタイルの設定もです。
2153
2853
 
2154
2854
  === toggle() » self ===
2155
2855
 
@@ -2161,33 +2861,41 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2161
2861
 
2162
2862
  === width() » a number ===
2163
2863
 
2164
- 要素の全体の大きさの幅をピクセルで得ます。このメソッドはいつも正確なピクセルサイズを返します。画像の場合は、画像の全幅ではなく、表示されているサイズだけです。詳しくは[[Common.height]]メソッドも見てください。
2864
+ 要素の全体の大きさの幅をピクセルで得ます。
2865
+ このメソッドはいつも正確なピクセルサイズを返します。
2866
+ 画像の場合は、画像の全幅ではなく、表示されているサイズだけです。
2867
+ 詳しくは[[Common.height]]メソッドも見てください。
2165
2868
 
2166
- また、120ピクセルの幅のスタック内に100%の幅の要素を作成したなら、`120`が返されます。しかしながら、`style[:width]`を呼んだなら、`"100%"`を得ます。
2869
+ また、120ピクセルの幅のスタック内に1.0の幅の要素を作成したなら、`120`が返されます。
2870
+ `style[:width]`を呼んだなら、`120`を得ます。
2167
2871
 
2168
2872
  {{{
2169
2873
  #!ruby
2170
2874
  Shoes.app do
2171
- stack :width => 120 do
2172
- @b = button "Click me", :width => "100%" do
2875
+ stack width: 120 do
2876
+ @b = button "Click me", width: 1.0 do
2173
2877
  alert "button.width = #{@b.width}\n" +
2174
- "button.style[:width] = #{@b.style[:width]}"
2878
+ "button.style[:width] = " +
2879
+ "#{@b.style[:width]}"
2175
2880
  end
2176
2881
  end
2177
2882
  end
2178
2883
  }}}
2179
2884
 
2180
- 幅を設定するためには、[[Common.style]]メソッドをもう一度調べる必要があります。そして、150ピクセルの幅にボタンを設定するには:`@b.style(:width => 150)`。
2181
-
2182
- 要素の幅を取るには、設定を空にするために`@b.style(:width => nil)`とします
2885
+ 幅を設定するためには、[[Common.style]]メソッドをもう一度調べる必要があります。
2886
+ そして、150ピクセルの幅にボタンを設定するには:`@b.style(width: 150)`。
2183
2887
 
2184
2888
  == Background ==
2185
2889
 
2186
- 背景はスロット全体に渡って塗られた、グラデーションまたは画像の色です。背景と枠線はShoes::Patternの種類の一つです。!{:margin_left => 100}man-ele-background.png!
2890
+ 背景はスロット全体に渡って塗られた、グラデーションまたは画像の色です。
2891
+ 背景と枠線はShoes::Patternの種類の一つです。!{:margin_left => 100}man-ele-background.png!
2187
2892
 
2188
- ''背景(background)''と呼ばれているにも関わらず、この要素は他の要素よりも前面に表示されます。背景がスロットで塗られた何か他のもの(`rect`または`oval`のような)の後にきた場合、背景はその要素の上に塗られます。
2893
+ ''背景(background)''と呼ばれているにも関わらず、この要素は他の要素よりも前面に
2894
+ 表示されます。背景がスロットで塗られた何か他のもの(`rect`または`oval`のような)の
2895
+ 後にきた場合、背景はその要素の上に塗られます。
2189
2896
 
2190
- もっとも単純な背景は、黒の背景のような[[Element.background]]メソッドによって作成された、単色の背景です。
2897
+ もっとも単純な背景は、黒の背景のような[[Element.background]]メソッドによって作成された、
2898
+ 単色の背景です。
2191
2899
 
2192
2900
  {{{
2193
2901
  #!ruby
@@ -2196,7 +2904,8 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2196
2904
  end
2197
2905
  }}}
2198
2906
 
2199
- このような単純な背景はスロットが含むもの全体を塗りつぶします(この場合は、ウィンドウ全体が黒で塗られます。)
2907
+ このような単純な背景はスロットが含むもの全体を塗りつぶします
2908
+ (この場合は、ウィンドウ全体が黒で塗られます。)
2200
2909
 
2201
2910
  好きなように背景のサイズを切り詰めたりあちこち移動したりするためのスタイルを利用できます。
2202
2911
 
@@ -2205,7 +2914,7 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2205
2914
  {{{
2206
2915
  #!ruby
2207
2916
  Shoes.app do
2208
- background black, :height => 50
2917
+ background black, height: 50
2209
2918
  end
2210
2919
  }}}
2211
2920
 
@@ -2214,61 +2923,79 @@ Shoesでは少しのメソッドがすべての小さな要素によって共有
2214
2923
  {{{
2215
2924
  #!ruby
2216
2925
  Shoes.app do
2217
- background black, :width => 50, :right => 50
2926
+ background black, width: 50
2218
2927
  end
2219
2928
  }}}
2220
2929
 
2221
- 背景は普通の要素と同様なので、その他のすべてのメソッドについては[[Elements]]セクションの始めの部分も見てください。
2930
+ 背景は普通の要素と同様なので、その他のすべてのメソッドについては[[Elements]]セクションの
2931
+ 始めの部分も見てください。
2222
2932
 
2223
2933
  === to_pattern() » a Shoes::Pattern ===
2224
2934
 
2225
- 背景を塗りつぶすために利用されたグラデーションや画像を通常のShoes::Patternオブジェクトに配置し、色をヤンクします。そして、他のオブジェクトに背景や枠線に渡すことができます。好きなように再利用してください。
2935
+ 背景を塗りつぶすために利用されたグラデーションや画像を通常のShoes::Patternオブジェクトに
2936
+ 配置し、色をヤンクします。そして、他のオブジェクトに背景や枠線に渡すことができます。
2937
+ 好きなように再利用してください。
2938
+
2939
+ '''注意:''' Green Shoesは`to_pattern`メソッドをサポートしていません。
2226
2940
 
2227
2941
  == Border ==
2228
2942
 
2229
- 枠線はスロットの周囲の線に塗られた、色やグラデーションや画像です。次のセクションの背景の要素では、枠線(Border)はShoes::Patternの一種です。!{:margin_left => 100}man-ele-border.png!
2943
+ 枠線はスロットの周囲の線に塗られた、色やグラデーションや画像です。
2944
+ 前のセクションの背景(background)と同様に、枠線(Border)はShoes::Patternの一種です。
2945
+ !{:margin_left => 100}man-ele-border.png!
2230
2946
 
2231
- はじめに、すべての枠線はスロットの周囲の外側ではなく、'''内側'''を塗ることについて知ることは重要です。そのため、50ピクセルの幅のスロットに5ピクセルの枠線を塗るなら、それは枠線で囲まれたスロットが内部に40ピクセルの幅のエリアを持つことを意味します。
2947
+ はじめに、すべての枠線はスロットの周囲の外側ではなく、'''内側'''を塗ることについて知ることは
2948
+ 重要です。そのため、50ピクセルの幅のスロットに5ピクセルの枠線を塗るなら、それは枠線で
2949
+ 囲まれたスロットが内部に40ピクセルの幅のエリアを持つことを意味します。
2232
2950
 
2233
- これは枠線(Border)を[[Background]]の上に塗るなら、その背景の端の上を枠線によって塗られることも意味します。
2951
+ これは枠線(Border)を[[Background]]の上に塗るなら、その背景の端の上を枠線によって
2952
+ 塗られることも意味します。
2234
2953
 
2235
2954
  正にそのようなスロットがここにあります:
2236
2955
 
2237
2956
  {{{
2238
2957
  #!ruby
2239
2958
  Shoes.app do
2240
- stack :width => 50 do
2241
- border black, :strokewidth => 5
2242
- para "=^.^=", :stroke => green
2959
+ stack width: 50 do
2960
+ border black, strokewidth: 5
2961
+ para fg "=^.^=", green
2243
2962
  end
2244
2963
  end
2245
2964
  }}}
2246
2965
 
2247
- スロットの外側の修正に枠線を塗りたいなら、もう一つのスロットでそのスロットをラップする必要があります。その結果、スロットの外側に枠線が配置されます。
2966
+ スロットの外側の修正に枠線を塗りたいなら、もう一つのスロットでそのスロットをラップする
2967
+ 必要があります。その結果、スロットの外側に枠線が配置されます。
2248
2968
 
2249
2969
  {{{
2250
2970
  #!ruby
2251
2971
  Shoes.app do
2252
- stack :width => 60 do
2253
- border black, :strokewidth => 5
2254
- stack :width => 50 do
2255
- para "=^.^=", :stroke => green
2972
+ stack width: 60 do
2973
+ border black, strokewidth: 5
2974
+ stack width: 50 do
2975
+ para fg "=^.^=", green
2256
2976
  end
2257
2977
  end
2258
2978
  end
2259
2979
  }}}
2260
2980
 
2261
- HTMLや他の多くの言語では、枠線は箱の外側に塗られるため、ボックス全体の幅が増加します。Shoesは一貫性を考慮してデザインされているため、枠線やマージンや他のどんなものも気にしないでそれは50ピクセルの幅のままです。
2981
+ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため、ボックス全体の幅が
2982
+ 増加します。Green Shoesは一貫性を考慮してデザインされているため、枠線や
2983
+ マージンや他のどんなものも気にしないでそれは50ピクセルの幅のままです。
2262
2984
 
2263
2985
  枠線に利用する他のメソッドについては[[Elements]]セクションも確認してください。
2264
2986
 
2265
2987
  === to_pattern() » a Shoes::Pattern ===
2266
2988
 
2267
- 枠線を塗るための色、グラデーションまたは画像を元にした基本のパターンオブジェクトを作成します。
2989
+ 枠線を塗るための色、グラデーションまたは画像を元にした基本のパターンオブジェクトを
2990
+ 作成します。
2991
+
2992
+ '''注意:''' Green Shoesは`to_pattern`メソッドをサポートしていません。
2268
2993
 
2269
2994
  == Button ==
2270
2995
 
2271
- ボタン(Button)は、ご存知のとおり、押しボタンです。それらをクリックしたら何かを行います。ボタンは"OK"または"Are you sure?"などを表示します。そして、よければボタンをクリックします。
2996
+ ボタン(Button)は、ご存知のとおり、押しボタンです。それらをクリックしたら何かを行います。
2997
+ ボタンは"OK"または"Are you sure?"などを表示します。そして、よければボタンをクリックします。
2998
+ !{:margin_left => 100}man-ele-button.png!
2272
2999
 
2273
3000
  {{{
2274
3001
  #!ruby
@@ -2278,7 +3005,8 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2278
3005
  end
2279
3006
  }}}
2280
3007
 
2281
- 上記の例のボタンはそれらがクリックされたときに何も行いません。働きを行わせるためには、それぞれのボタンにブロックを取り付けます。
3008
+ 上記の例のボタンはそれらがクリックされたときに何も行いません。
3009
+ 働きを行わせるためには、それぞれのボタンにブロックを取り付けます。
2282
3010
 
2283
3011
  {{{
2284
3012
  #!ruby
@@ -2292,7 +3020,9 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2292
3020
  end
2293
3021
  }}}
2294
3022
 
2295
- このようにボタンにブロックを取り付けました。それぞれのブロックはページに新しいパラグラフを取り付けます。クリックする度に、パラグラフが追加されます。
3023
+ このようにボタンにブロックを取り付けました。
3024
+ それぞれのブロックはページに新しいパラグラフを取り付けます。
3025
+ クリックする度に、パラグラフが追加されます。
2296
3026
 
2297
3027
  これはこれ以上深くはしません。ボタンはクリック可能な句でしかありません。
2298
3028
 
@@ -2302,29 +3032,39 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2302
3032
  #!ruby
2303
3033
  Shoes.app do
2304
3034
  @b1 = button "OK!"
2305
- @b1.click { para "Well okay then." }
3035
+ @b1.click{para "Well okay then."}
2306
3036
  @b2 = button "Are you sure?"
2307
- @b2.click { para "Your confidence is inspiring." }
3037
+ @b2.click{para "Your confidence is inspiring."}
2308
3038
  end
2309
3039
  }}}
2310
3040
 
2311
- 見た目は劇的に違いますが、これは同じ動きです。1つ目の違い:直接ブロックをボタンに取り付けるのではなく、`click`メソッドを通して、ブロックを後で取り付けています。
3041
+ 見た目は劇的に違いますが、これは同じ動きです。
3042
+ 1つ目の違い:直接ブロックをボタンに取り付けるのではなく、`click`メソッドを通して、
3043
+ ブロックを後で取り付けています。
2312
3044
 
2313
- 2つ目の違いはボタンには全く関係がありません。Shoesがスロットに要素を直接追加することを許しているので、`append`ブロックが取り除かれています。そのため直接`para`を呼ぶことができます。(`prepend`、`before`または`after`メソッドの場合にはできません。)
3045
+ 2つ目の違いはボタンには全く関係がありません。Green Shoesがスロットに要素を直接
3046
+ 追加することを許しているので、`append`ブロックが取り除かれています。
3047
+ そのため直接`para`を呼ぶことができます。(`prepend`、`before`または
3048
+ `after`メソッドの場合にはできません。)
2314
3049
 
2315
3050
  以下のメソッドに加えて、ボタンは[[Common]]のすべてのメソッドも継承します。
2316
3051
 
2317
3052
  === click() { |self| ... } » self ===
2318
3053
 
2319
- ボタンがクリックされたときには、`click`ブロックが呼ばれます。このブロックは`self`を渡します。意味すること:どちらのボタンでクリックされたか。
3054
+ ボタンがクリックされたときには、`click`ブロックが呼ばれます。
3055
+ このブロックは`self`を渡します。意味すること:どちらのボタンでクリックされたか。
2320
3056
 
2321
3057
  === focus() » self ===
2322
3058
 
2323
- ボタンのフォーカスを移動します。そのボタンはハイライトされ、ユーザがエンターキーを打てば、クリックされます。
3059
+ ボタンのフォーカスを移動します。
3060
+ そのボタンはハイライトされ、ユーザがエンターキーを打てば、クリックされます。
2324
3061
 
2325
3062
  == Check ==
2326
3063
 
2327
- チェックボックスはチェックされた状態またはチェックされていない状態になるクリック可能な四角い箱です。1つのチェックボックスでは通常は"はい(yes)"または"いいえ(no)"の質問をたずねます。複数のチェックボックスのセットではto-doリストでも見られます。
3064
+ チェックボックスはチェックされた状態またはチェックされていない状態になるクリック可能な
3065
+ 四角い箱です。1つのチェックボックスでは通常は"はい(yes)"または"いいえ(no)"の
3066
+ 質問をたずねます。複数のチェックボックスのセットではto-doリストでも見られます。
3067
+ !{:margin_left => 100}man-ele-check.png!
2328
3068
 
2329
3069
  ここにチェックリストのサンプルがあります。
2330
3070
 
@@ -2332,14 +3072,24 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2332
3072
  #!ruby
2333
3073
  Shoes.app do
2334
3074
  stack do
2335
- flow { check; para "Frances Johnson" }
2336
- flow { check; para "Ignatius J. Reilly" }
2337
- flow { check; para "Winston Niles Rumfoord" }
3075
+ flow do
3076
+ check; para "Frances Johnson", width: 200
3077
+ end
3078
+ flow do
3079
+ check; para "Ignatius J. Reilly", width: 200
3080
+ end
3081
+ flow do
3082
+ check
3083
+ para "Winston Niles Rumfoord", width: 200
3084
+ end
2338
3085
  end
2339
3086
  end
2340
3087
  }}}
2341
3088
 
2342
- 基本的にはチェック(check)を利用するための2つの方法があります。チェックにチェックがクリックされたときに呼ばれるブロックを取り付けます。そして/または、ボックスがチェックされているかどうか確認する`checked?`メソッドを利用できます。
3089
+ 基本的にはチェック(check)を利用するための2つの方法があります。
3090
+ チェックにチェックがクリックされたときに呼ばれるブロックを取り付けます。
3091
+ そして/または、ボックスがチェックされているかどうか確認する`checked?`メソッドを
3092
+ 利用できます。
2343
3093
 
2344
3094
  では、上記の例に追加しましょう。
2345
3095
 
@@ -2348,81 +3098,100 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2348
3098
  Shoes.app do
2349
3099
  @list = ['Frances Johnson', 'Ignatius J. Reilly',
2350
3100
  'Winston Niles Rumfoord']
2351
-
3101
+
2352
3102
  stack do
2353
3103
  @list.map! do |name|
2354
- flow { @c = check; para name }
3104
+ flow { @c = check; para name, width: 200 }
2355
3105
  [@c, name]
2356
3106
  end
2357
-
3107
+
2358
3108
  button "What's been checked?" do
2359
- selected = @list.map { |c, name| name if c.checked? }.compact
3109
+ selected =
3110
+ @list.map{|c, n| n if c.checked?}.compact
2360
3111
  alert("You selected: " + selected.join(', '))
2361
3112
  end
2362
3113
  end
2363
3114
  end
2364
3115
  }}}
2365
3116
 
2366
- そして、ボタンが押されたときに、`checked?`メソッドを利用して、それぞれのチェックはその状態を尋ねます。
3117
+ そして、ボタンが押されたときに、`checked?`メソッドを利用して、それぞれのチェックは
3118
+ その状態を尋ねます。
2367
3119
 
2368
- 下のボタンメソッドの一覧だけでなく、すべての要素が応答できる、[[Common]]メソッドの一覧も見てください。
3120
+ 下のボタンメソッドの一覧だけでなく、すべての要素が応答できる、[[Common]]メソッドの
3121
+ 一覧も見てください。
2369
3122
 
2370
3123
  === checked?() » true or false ===
2371
3124
 
2372
- その箱がチェックされているかどうかを返します。そして、`true`の意味は"はい、この箱はチェックされています!"です。
3125
+ その箱がチェックされているかどうかを返します。
3126
+ そして、`true`の意味は"はい、この箱はチェックされています!"です。
2373
3127
 
2374
3128
  === checked = true or false ===
2375
3129
 
2376
- チェックボックスをマークしたりマークを外したりします。例えば、`checked = false`を利用して、箱のチェックを外します。
3130
+ チェックボックスをマークしたりマークを外したりします。
3131
+ 例えば、`checked = false`を利用して、箱のチェックを外します。
2377
3132
 
2378
3133
  === click() { |self| ... } » self ===
2379
3134
 
2380
- チェックボックスがクリックされたときに、その`click`ブロックが呼ばれます。このブロックは、クリックされたチェックボックスオブジェクトの`self`を渡します。
3135
+ チェックボックスがクリックされたときに、その`click`ブロックが呼ばれます。
3136
+ このブロックは、クリックされたチェックボックスオブジェクトの`self`を渡します。
2381
3137
 
2382
3138
  箱がチェックされるときとチェックを外すときのどちらもクリックが渡されます。
2383
3139
 
2384
3140
  === focus() » self ===
2385
3141
 
2386
- チェックボックスにフォーカスを移動します。そのチェックボックスはハイライトされ、ユーザがエンターキーを打てば、そのチェックボックスはチェックされた状態とチェックされていない状態の間をトグルします。
3142
+ チェックボックスにフォーカスを移動します。そのチェックボックスはハイライトされ、
3143
+ ユーザがエンターキーを打てば、そのチェックボックスはチェックされた状態とチェックされていない
3144
+ 状態の間をトグルします。
2387
3145
 
2388
3146
  == EditBox ==
2389
3147
 
2390
- エディットボックス(Edit box)は、テキストを入力するための幅広い長方形の箱です。webでは、それらはテキストエリアと呼ばれます。それらは長い記述を入力するためのマルチラインエディットボックスです。エッセイでさえ書けます! !{:margin_left => 100}man-ele-editbox.png!
3148
+ エディットボックス(Edit box)は、テキストを入力するための幅広い長方形の箱です。
3149
+ webでは、それらはテキストエリアと呼ばれます。それらは長い記述を入力するための
3150
+ マルチラインエディットボックスです。エッセイでさえ書けます!
3151
+ !{:margin_left => 100}man-ele-editbox.png!
2391
3152
 
2392
- スタイルを何も設定しなければ、エディットボックスは200ピクセルx108ピクセルのサイズです。特定のサイズに設定するために`:width`と`:height`のスタイルを利用することもできます。
3153
+ スタイルを何も設定しなければ、エディットボックスは200ピクセルx108ピクセルのサイズです。
3154
+ 特定のサイズに設定するために`:width`と`:height`のスタイルを利用することもできます。
2393
3155
 
2394
3156
  {{{
2395
3157
  #!ruby
2396
3158
  Shoes.app do
2397
3159
  edit_box
2398
- edit_box :width => 100, :height => 100
3160
+ edit_box width: 100, height: 100
2399
3161
  end
2400
3162
  }}}
2401
3163
 
2402
- ([[Button]]や[[Check]]などの)他のコントロールはクリックイベントだけを持っていますが、[[EditLine]]やエディットボックス(EditBox)は`change`イベントも持っています。誰かがタイプしたり箱から削除したら`change`のブロックはいつでも呼ばれます。
3164
+ ([[Button]]や[[Check]]などの)他のコントロールはクリックイベントだけを持っていますが、
3165
+ [[EditLine]]やエディットボックス(EditBox)は`change`イベントも持っています。
3166
+ 誰かがタイプしたり箱から削除したら`change`のブロックはいつでも呼ばれます。
2403
3167
 
2404
3168
  {{{
2405
3169
  #!ruby
2406
3170
  Shoes.app do
2407
3171
  edit_box do |e|
2408
- @counter.text = e.text.size
3172
+ @counter.text =
3173
+ strong("#{e.text.size}") + " characters"
2409
3174
  end
2410
- @counter = strong("0")
2411
- para @counter, " characters"
3175
+ @counter = para strong("0"), " characters"
2412
3176
  end
2413
3177
  }}}
2414
3178
 
2415
- この例ではブロック内部で[[EditBox.text]]メソッドを利用していることにも注意してください。このメソッドは箱に対してタイプしたすべての文字の文字列をあなたに与えます。
3179
+ この例ではブロック内部で[[EditBox.text]]メソッドを利用していることにも注意してください。
3180
+ このメソッドは箱に対してタイプしたすべての文字の文字列をあなたに与えます。
2416
3181
 
2417
- エディットボックスの更なるメソッドは以下に一覧にしますが、すべての要素が応答できる、[[Common]]メソッドの一覧も見てください。
3182
+ エディットボックスの更なるメソッドは以下に一覧にしますが、すべての要素が応答できる、
3183
+ [[Common]]メソッドの一覧も見てください。
2418
3184
 
2419
3185
  === change() { |self| ... } » self ===
2420
3186
 
2421
- エディットボックスに文字が追加されたり取り除かれるたびに、`chenage`ブロックが呼ばれます。ブロックには変更されたエディットボックスのオブジェクトである`self`が与えられます。
3187
+ エディットボックスに文字が追加されたり取り除かれるたびに、`chenage`ブロックが
3188
+ 呼ばれます。ブロックには変更されたエディットボックスのオブジェクトである`self`が
3189
+ 与えられます。
2422
3190
 
2423
3191
  === focus() » self ===
2424
3192
 
2425
- エディットボックスにフォーカスを移動します。そのエディットボックスはハイライトされ、ユーザはエディットボックスにタイプできます。
3193
+ エディットボックスにフォーカスを移動します。そのエディットボックスはハイライトされ、
3194
+ ユーザはエディットボックスにタイプできます。
2426
3195
 
2427
3196
  === text() » self ===
2428
3197
 
@@ -2434,31 +3203,43 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2434
3203
 
2435
3204
  == EditLine ==
2436
3205
 
2437
- エディットライン(Edit line)は細長い、小さなテキストを入力する箱です。エディットボックスはマルチラインですが、エディットラインは1行です。これはエディットラインです。ちなみに水平です。
3206
+ エディットライン(Edit line)は細長い、小さなテキストを入力する箱です。
3207
+ エディットボックスはマルチラインですが、エディットラインは1行です。
3208
+ これはエディットラインです。ちなみに水平です。
3209
+ !{:margin_left => 100}man-ele-editline.png!
2438
3210
 
2439
- スタイルが設定されていないエディットラインは200ピクセルの幅と28ピクセルの高さです。これはおおよそです。プラットフォームによって高さは様々です。
3211
+ スタイルが設定されていないエディットラインは200ピクセルの幅と28ピクセルの高さです。
3212
+ これはおおよそです。プラットフォームによって高さは様々です。
2440
3213
 
2441
3214
  {{{
2442
3215
  #!ruby
2443
3216
  Shoes.app do
2444
3217
  stack do
2445
3218
  edit_line
2446
- edit_line :width => 400
3219
+ edit_line width: 400
2447
3220
  end
2448
3221
  end
2449
3222
  }}}
2450
3223
 
2451
- `:width`と`:height`の両方のスタイルを設定することによりサイズを変更することができます。しかしながら、高さはフォントに合わせて調整されるため、一般的には`:width`だけのスタイルを設定します。(そして、現在のバージョンのShoesでは、エディットラインとエディットボックスフォントはどうやっても変更できません。)
3224
+ `:width`と`:height`の両方のスタイルを設定することによりサイズを変更することができます。
3225
+ しかしながら、高さはフォントに合わせて調整されるため、一般的には`:width`だけの
3226
+ スタイルを設定します。(そして、現在のバージョンのGreen Shoesでは、エディットラインと
3227
+ エディットボックスフォントはどうやっても変更できません。)
2452
3228
 
2453
- エディットラインにブロックが与えられたら、`change`イベントを受けとります。changeブロックを利用した例については[[EditBox]]のページを確認してください。実際には、そのエディットボックスはエディットラインとすべて同じメソッドを持ちます。すべての要素が応答できる、[[Common]]メソッドの一覧も見てください。
3229
+ エディットラインにブロックが与えられたら、`change`イベントを受けとります。
3230
+ changeブロックを利用した例については[[EditBox]]のページを確認してください。
3231
+ 実際には、そのエディットボックスはエディットラインとすべて同じメソッドを持ちます。
3232
+ すべての要素が応答できる、[[Common]]メソッドの一覧も見てください。
2454
3233
 
2455
3234
  === change() { |self| ... } » self ===
2456
3235
 
2457
- エディットラインに文字が追加されたり取り除かれるたびに、`chenage`ブロックが呼ばれます。ブロックには変更されたエディットラインのオブジェクトである`self`が与えられます。
3236
+ エディットラインに文字が追加されたり取り除かれるたびに、`chenage`ブロックが呼ばれます。
3237
+ ブロックには変更されたエディットラインのオブジェクトである`self`が与えられます。
2458
3238
 
2459
3239
  === focus() » self ===
2460
3240
 
2461
- エディットラインにフォーカスを移動します。そのエディットラインはハイライトされ、ユーザはエディットラインにタイプできます。
3241
+ エディットラインにフォーカスを移動します。そのエディットラインはハイライトされ、
3242
+ ユーザはエディットラインにタイプできます。
2462
3243
 
2463
3244
  === text() » self ===
2464
3245
 
@@ -2470,7 +3251,9 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2470
3251
 
2471
3252
  == Image ==
2472
3253
 
2473
- 画像(image)はPNG、JPEGまたはGIFフォーマットの画像ファイルです。Shoesは画像をリサイズまたはテキストとともにそれらをフローすることができます。!{:margin_left => 100}man-ele-image.png!
3254
+ 画像(image)はPNG、JPEGまたはGIFフォーマットの画像ファイルです。
3255
+ Green Shoesは画像をリサイズまたはテキストとともにそれらをフローすることができます。
3256
+ !{:margin_left => 100}man-ele-image.png!
2474
3257
 
2475
3258
  画像を作成するために、スロット内部で`image`メソッドを利用します:
2476
3259
 
@@ -2478,34 +3261,49 @@ HTMLや他の多くの言語では、枠線は箱の外側に塗られるため
2478
3261
  #!ruby
2479
3262
  Shoes.app do
2480
3263
  para "Nice, nice, very nice. Busy, busy, busy."
2481
- image "static/shoes-manual-apps.gif"
3264
+ image File.join DIR,
3265
+ "../static/shoes-manual-apps.png"
2482
3266
  end
2483
3267
  }}}
2484
3268
 
2485
- Shoesに何らかの画像をロードしたとき、それはメモリにキャッシュされます。それは、同じファイルの画像の要素をたくさんロードした場合でも、それは実際には1回だけファイルをロードすることを意味します。
3269
+ Green Shoesに何らかの画像をロードしたとき、それはメモリにキャッシュされます。
3270
+ それは、同じファイルの画像の要素をたくさんロードした場合でも、それは実際には
3271
+ 1回だけファイルをロードすることを意味します。
2486
3272
 
2487
3273
  webのURLを直接利用することもできます。
2488
3274
 
2489
3275
  {{{
2490
3276
  #!ruby
2491
3277
  Shoes.app do
2492
- image "http://hacketyhack.heroku.com/images/logo.png"
3278
+ image "http://is.gd/c0mBtb"
2493
3279
  end
2494
3280
  }}}
2495
3281
 
2496
- webから画像がロードされたとき、それはハードディスクドライブとメモリの両方にキャッシュされます。これは画像が変更されなければ再度ダウンロードをすることを防止します。(不思議に思う場合:正にブラウザが行うetagのようにShoesは変更時間の軌跡を保持します。)
3282
+ webから画像がロードされたとき、それはハードディスクドライブとメモリの両方にキャッシュ
3283
+ されます。これは画像が変更されなければ再度ダウンロードをすることを防止します。
3284
+ (不思議に思う場合:正にブラウザが行うetagのようにShoesは変更時間の軌跡を
3285
+ 保持します。)
3286
+
3287
+ '''注意:''' Green Shoesは、Red Shoesのようなハードドライブキャッシュ管理機能を
3288
+ サポートしていません。
2497
3289
 
2498
- Shoesはバックグラウンドでシステムのスレッドを使ってリモートの画像もロードします。そのため、リモートの画像を利用することはRubyを妨げることはなく、またどんな強烈なグラフィカルな表示でも進み続けるでしょう。
3290
+ Green Shoesはバックグラウンドでシステムのスレッドを使ってリモートの画像もロードします。
3291
+ そのため、リモートの画像を利用することはRubyを妨げることはなく、またどんな強烈な
3292
+ グラフィカルな表示でも進み続けるでしょう。
2499
3293
 
2500
3294
  === full_height() » a number ===
2501
3295
 
2502
- 画像全体のピクセルでの高さです。通常は、ピクセルでの画像の高さを知るために[[Common.height]]メソッドを利用できます。しかし画像がリサイズされていたりより大きいサイズなどにスタイルが設定されていた場合は、`height`は変更されたサイズを返します。
3296
+ 画像全体のピクセルでの高さです。通常は、ピクセルでの画像の高さを知るために
3297
+ [[Common.height]]メソッドを利用できます。しかし画像がリサイズされていたり
3298
+ より大きいサイズなどにスタイルが設定されていた場合は、`height`は変更された
3299
+ サイズを返します。
2503
3300
 
2504
3301
  `full_height`メソッドは保存されたオリジナルファイルの画像の(ピクセルでの)高さを与えます。
2505
3302
 
2506
3303
  === full_width() » a number ===
2507
3304
 
2508
- 画像全体のピクセルでの幅です。[[Common.width]]ではなくこのメソッドを使う理由の説明については[[Image.full_height]]メソッドを見てください。
3305
+ 画像全体のピクセルでの幅です。[[Common.width]]ではなくこのメソッドを使う理由の
3306
+ 説明については[[Image.full_height]]メソッドを見てください。
2509
3307
 
2510
3308
  === path() » a string ===
2511
3309
 
@@ -2517,50 +3315,63 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2517
3315
 
2518
3316
  == ListBox ==
2519
3317
 
2520
- リストボックス(List box)(環境によって"コンボボックス(combo box)"または"ドロップダウンボックス(drop-down box)"または"セレクトボックス(select box)"とも呼ばれています。)は箱をクリックしたときドロップダウンしてオプションが一覧として表示されます。!{:margin_left => 100}man-ele-listbox.png!
3318
+ リストボックス(List box)(環境によって"コンボボックス(combo box)"または
3319
+ "ドロップダウンボックス(drop-down box)"または"セレクトボックス(select box)"とも
3320
+ 呼ばれています。)は箱をクリックしたときドロップダウンしてオプションが一覧として表示されます。
3321
+ !{:margin_left => 100}man-ele-listbox.png!
2521
3322
 
2522
- リストボックスは配列からオプションを取得します。配列(リスト)の文字列は、`:items`スタイルに渡されます。
3323
+ リストボックスは配列からオプションを取得します。
3324
+ 配列(リスト)の文字列は、`:items`スタイルに渡されます。
2523
3325
 
2524
3326
  {{{
2525
3327
  #!ruby
2526
3328
  Shoes.app do
2527
3329
  para "Choose a fruit:"
2528
- list_box :items => ["Grapes", "Pears", "Apricots"]
3330
+ list_box items: ["Grapes", "Pears", "Apricots"]
2529
3331
  end
2530
3332
  }}}
2531
3333
 
2532
- そして、リストボックスの基本のサイズは200ピクセルの幅と28ピクセルの高さです。この長さは`width`スタイルを利用して調整することができます。
3334
+ そして、リストボックスの基本のサイズは200ピクセルの幅と28ピクセルの高さです。
3335
+ この長さは`width`スタイルを利用して調整することができます。
2533
3336
 
2534
3337
  {{{
2535
3338
  #!ruby
2536
3339
  Shoes.app do
2537
3340
  para "Choose a fruit:"
2538
- list_box :items => ["Grapes", "Pears", "Apricots"],
2539
- :width => 120, :choose => "Apricots" do |list|
3341
+ list_box items: ["Grapes", "Pears", "Apricots"],
3342
+ width: 120, choose: "Apricots" do |list|
2540
3343
  @fruit.text = list.text
2541
3344
  end
2542
-
3345
+
2543
3346
  @fruit = para "No fruit selected"
2544
3347
  end
2545
3348
  }}}
2546
3349
 
2547
- `:width`スタイルに続いて、この例ではもう1つの便利なオプションを利用します。`:choose`オプションは始めからハイライトされるべきアイテムをリストボックスに教えます。(箱が作成された後でアイテムをハイライトするには[[ListBox.choose]]メソッドもあります。)
3350
+ `:width`スタイルに続いて、この例ではもう1つの便利なオプションを利用します。
3351
+ `:choose`オプションは始めからハイライトされるべきアイテムをリストボックスに教えます。
3352
+ (箱が作成された後でアイテムをハイライトするには[[ListBox.choose]]メソッドもあります。)
2548
3353
 
2549
- リストボックスは[[ListBox.change]]イベントも持っています。次の例では、リストボックスにブロックを取り付けました。いいですか、この`change`ブロックを見てください。このブロックは誰かが選択されたアイテムを変更するたびに呼ばれます。
3354
+ リストボックスは[[ListBox.change]]イベントも持っています。次の例では、リストボックスに
3355
+ ブロックを取り付けました。いいですか、この`change`ブロックを見てください。
3356
+ このブロックは誰かが選択されたアイテムを変更するたびに呼ばれます。
2550
3357
 
2551
- これらは基本的なことです。すべての要素が持っているメソッドの完全な一覧である、[[Common]]メソッドのページを見てください。
3358
+ これらは基本的なことです。すべての要素が持っているメソッドの完全な一覧である、
3359
+ [[Common]]メソッドのページを見てください。
2552
3360
 
2553
3361
  === change() { |self| ... } » self ===
2554
3362
 
2555
- 誰かがリストボックスの新しいオプションをハイライトするたびに(例えば、アイテムをクリックすることによって)`change`ブロックは呼ばれます。ブロックには変更されたリストボックスのオブジェクトである`self`が与えられます。
3363
+ 誰かがリストボックスの新しいオプションをハイライトするたびに(例えば、アイテムをクリックする
3364
+ ことによって)`change`ブロックは呼ばれます。ブロックには変更されたリストボックスの
3365
+ オブジェクトである`self`が与えられます。
2556
3366
 
2557
3367
  === choose(item: a string) » self ===
2558
3368
 
2559
- `item`として与えられた文字列と一致するリストボックス内のオプションを選択します
3369
+ `item`として与えられた文字列と一致するリストボックス内のオプションを選択します。
2560
3370
 
2561
3371
  === focus() » self ===
2562
3372
 
2563
- リストボックスにフォーカスを移動します。そのリストはハイライトされ、ユーザが上や下の矢印キーを押した場合、リスト内の別のオプションが選択されます。
3373
+ リストボックスにフォーカスを移動します。そのリストはハイライトされ、ユーザが上や下の
3374
+ 矢印キーを押した場合、リスト内の別のオプションが選択されます。
2564
3375
 
2565
3376
  === items() » an array of strings ===
2566
3377
 
@@ -2572,28 +3383,34 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2572
3383
 
2573
3384
  === text() » a string ===
2574
3385
 
2575
- 現在リストボックス内でハイライトされて表示されているテキストを含む文字列です。何も選択されていないなら、`nil`が応答されます。
3386
+ 現在リストボックス内でハイライトされて表示されているテキストを含む文字列です。
3387
+ 何も選択されていないなら、`nil`が応答されます。
2576
3388
 
2577
3389
  == Progress ==
2578
3390
 
2579
- プログレスバー(Progress bar)は活動がどこまで進んでいるかを表示します。一般的には、プログレスバーはパーセンテージで示されます。(0%から100%まで)Shoesは0.0から1.0の10進数を使って進行を考えます。!{:margin_left => 100}man-ele-progress.png!
3391
+ プログレスバー(Progress bar)は活動がどこまで進んでいるかを表示します。
3392
+ 一般的には、プログレスバーはパーセンテージで示されます。
3393
+ (0%から100%まで)Shoesは0.0から1.0の10進数を使って進行を考えます。
3394
+ !{:margin_left => 100}man-ele-progress.png!
3395
+
3396
+ シンプルなプログレスバーは200ピクセルの幅ですが、長くするために
3397
+ (すべてのGreen Shoesの要素のように)`:width`スタイルは利用できません。
2580
3398
 
2581
- シンプルなプログレスバーは200ピクセルの幅ですが、長くするために(すべてのShoesの要素のように)`:width`スタイルは利用できません。
3399
+ '''注意:''' Green Shoesでは、最小サイズが幅150ピクセルです。
2582
3400
 
2583
3401
  {{{
2584
3402
  Shoes.app do
2585
- stack :margin => 0.1 do
2586
- title "Progress example"
2587
- @p = progress :width => 1.0
2588
-
2589
- animate do |i|
2590
- @p.fraction = (i % 100) / 100.0
2591
- end
3403
+ title "Progress example"
3404
+ @p = progress left: 10, top: 100, width: width-20
3405
+
3406
+ animate do |i|
3407
+ @p.fraction = (i % 100) / 100.0
2592
3408
  end
2593
3409
  end
2594
3410
  }}}
2595
3411
 
2596
- プログレスバーを含む、すべての要素に備え付けられたメソッドの一覧については[[Common]]メソッドのページを見てください。
3412
+ プログレスバーを含む、すべての要素に備え付けられたメソッドの一覧については
3413
+ [[Common]]メソッドのページを見てください。
2597
3414
 
2598
3415
  === fraction() » a decimal number ===
2599
3416
 
@@ -2605,21 +3422,34 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2605
3422
 
2606
3423
  == Radio ==
2607
3424
 
2608
- ラジオボタン(Radio button)はクリック可能な円のグループです。それをマークするには円をクリックしてください。ラジオボタンは1度に1つだけマークできます。(1度に1つのオプションだけしか選択できないところは、リストボックスに似ています。)!{:margin_left => 100}man-ele-radio.png!
3425
+ ラジオボタン(Radio button)はクリック可能な円のグループです。
3426
+ それをマークするには円をクリックしてください。ラジオボタンは1度に1つだけマークできます。
3427
+ (1度に1つのオプションだけしか選択できないところは、リストボックスに似ています。)
3428
+ !{:margin_left => 100}man-ele-radio.png!
2609
3429
 
2610
- それでは、リストボックスを利用すべきときと、ラジオボタンを利用すべきときをどのようにして決定しますか?そうですね、リストボックスはボックスをクリックしてドロップダウンを表示することなく1つのハイライトされたアイテムを表示します。しかし、ラジオボタンはどれがマークされているか気にすることなく、すべて表示されます。
3430
+ それでは、リストボックスを利用すべきときと、ラジオボタンを利用すべきときをどのようにして
3431
+ 決定しますか?そうですね、リストボックスはボックスをクリックしてドロップダウンを表示すること
3432
+ なく1つのハイライトされたアイテムを表示します。
3433
+ しかし、ラジオボタンはどれがマークされているか気にすることなく、すべて表示されます。
2611
3434
 
2612
3435
  {{{
2613
3436
  #!ruby
2614
3437
  Shoes.app do
2615
3438
  para "Among these films, which do you prefer?\n"
2616
- radio; para strong("The Taste of Tea"), " by Katsuhito Ishii\n"
2617
- radio; para strong("Kin-Dza-Dza"), " by Georgi Danelia\n"
2618
- radio; para strong("Children of Heaven"), " by Majid Majidi\n"
3439
+ radio
3440
+ para strong("The Taste of Tea"),
3441
+ " by Katsuhito Ishii\n", width: 570
3442
+ radio
3443
+ para strong("Kin-Dza-Dza"),
3444
+ " by Georgi Danelia\n", width: 570
3445
+ radio
3446
+ para strong("Children of Heaven"),
3447
+ " by Majid Majidi\n", width: 570
2619
3448
  end
2620
3449
  }}}
2621
3450
 
2622
- それらは(たくさんの`para`とともに)同じスロット内で一緒にグループ化されているため、3つのラジオボタンから1度に1つだけが選択できます。
3451
+ それらは(たくさんの`para`とともに)同じスロット内で一緒にグループ化されているため、
3452
+ 3つのラジオボタンから1度に1つだけが選択できます。
2623
3453
 
2624
3454
  これらをそれら自身のスロットに移動したら、この例は壊れます。
2625
3455
 
@@ -2628,15 +3458,28 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2628
3458
  Shoes.app do
2629
3459
  stack do
2630
3460
  para "Among these films, which do you prefer?"
2631
- flow { radio; para "The Taste of Tea by Katsuhito Ishii" }
2632
- flow { radio; para "Kin-Dza-Dza by Georgi Danelia" }
2633
- flow { radio; para "Children of Heaven by Majid Majidi" }
3461
+ flow do
3462
+ radio
3463
+ para "The Taste of Tea by Katsuhito Ishii",
3464
+ width: 300
3465
+ end
3466
+ flow do
3467
+ radio
3468
+ para "Kin-Dza-Dza by Georgi Danelia",
3469
+ width: 300
3470
+ end
3471
+ flow do
3472
+ radio
3473
+ para "Children of Heaven by Majid Majidi",
3474
+ width: 300
3475
+ end
2634
3476
  end
2635
3477
  end
2636
3478
  }}}
2637
3479
 
2638
3480
  しかし、これは修正できます。
2639
- 違うスロットのラジオボタンを一緒にグループ化することができ、それらにすべて同じグループ名を与える必要があります。
3481
+ 違うスロットのラジオボタンを一緒にグループ化することができ、それらにすべて同じグループ名を
3482
+ 与える必要があります。
2640
3483
 
2641
3484
  ここでは`:films`グループにそれらすべてのラジオボタンをグループ化しました。
2642
3485
 
@@ -2647,21 +3490,25 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2647
3490
  para "Among these films, which do you prefer?"
2648
3491
  flow do
2649
3492
  radio :films
2650
- para "The Taste of Tea by Katsuhito Ishii"
3493
+ para "The Taste of Tea by Katsuhito Ishii",
3494
+ width: 300
2651
3495
  end
2652
3496
  flow do
2653
3497
  radio :films
2654
- para "Kin-Dza-Dza by Georgi Danelia"
3498
+ para "Kin-Dza-Dza by Georgi Danelia",
3499
+ width: 300
2655
3500
  end
2656
3501
  flow do
2657
3502
  radio :films
2658
- para "Children of Heaven by Majid Majidi"
3503
+ para "Children of Heaven by Majid Majidi",
3504
+ width: 300
2659
3505
  end
2660
3506
  end
2661
3507
  end
2662
3508
  }}}
2663
3509
 
2664
- 下にあるそれらの一覧を越える更なるメソッドについては、[[Common]]メソッドのページを詳しく調べてください。それらのメソッドをすべてのラジオボタンで同様に利用できるからです。
3510
+ 下にあるそれらの一覧を越える更なるメソッドについては、[[Common]]メソッドのページを
3511
+ 詳しく調べてください。それらのメソッドをすべてのラジオボタンで同様に利用できるからです。
2665
3512
 
2666
3513
  === checked?() » true or false ===
2667
3514
 
@@ -2670,7 +3517,8 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2670
3517
 
2671
3518
  === checked = true or false ===
2672
3519
 
2673
- ラジオボタンをマークしたりマークを外したりします。例えば、`checked = false`を利用して、ラジオボタンをクリアします。
3520
+ ラジオボタンをマークしたりマークを外したりします。
3521
+ 例えば、`checked = false`を利用して、ラジオボタンをクリアします。
2674
3522
 
2675
3523
  === click() { |self| ... } » self ===
2676
3524
 
@@ -2681,19 +3529,25 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2681
3529
 
2682
3530
  === focus() » self ===
2683
3531
 
2684
- ラジオボタンのフォーカスを移動します。そのラジオボタンはハイライトされ、ユーザがエンターキーを打てば、そのラジオボタンはマークされた状態とマークされていない状態の間をトグルします。
3532
+ ラジオボタンのフォーカスを移動します。そのラジオボタンはハイライトされます。
2685
3533
 
2686
3534
  == Shape ==
2687
3535
 
2688
- 形状(shape)は通常は`oval`と`rect`のようにドローイングメソッドによって作成されるアウトラインパスです。!{:margin_left => 100}man-ele-shape.png!
3536
+ 形状(shape)は通常は`oval`と`rect`のようにドローイングメソッドによって作成される
3537
+ アウトラインパスです。!{:margin_left => 100}man-ele-shape.png!
2689
3538
 
2690
3539
  [[Common]]メソッドのページを見てください。形状はそれらすべてのメソッドに応答できます。
2691
3540
 
2692
3541
  == TextBlock ==
2693
3542
 
2694
- テキストブロック(TextBlock)オブジェクトは単独の要素にとして形成されるテキストのグループを示します。例えば、太字のテキストを含むパラグラフです。リンクと太字のテキストを含むキャプションです。(そして、`caption`はテキストブロックのタイプです。しかしながら、`link`と`strong`はテキストクラスのタイプです。)!{:margin_left => 100}man-ele-textblock.png!
3543
+ テキストブロック(TextBlock)オブジェクトは単独の要素にとして形成されるテキストの
3544
+ グループを示します。例えば、太字のテキストを含むパラグラフです。
3545
+ リンクと太字のテキストを含むキャプションです。(そして、`caption`はテキストブロックの
3546
+ タイプです。しかしながら、`link`と`strong`はテキストクラスのタイプです。)
3547
+ !{:margin_left => 100}man-ele-textblock.png!
2695
3548
 
2696
- テキストブロックのすべての種類はタイプは[[Element Element Creation]]ページで確認できます。
3549
+ テキストブロックのすべての種類はタイプは[[Element Element Creation]]ページで
3550
+ 確認できます。
2697
3551
 
2698
3552
  * [[Element.banner]], 48ピクセルのフォント。
2699
3553
  * [[Element.title]], 34ピクセルのフォント。
@@ -2707,13 +3561,95 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2707
3561
 
2708
3562
  ブロック内部の整形された文字列すべてのリストです。
2709
3563
 
3564
+ '''注意:''' Green Shoesは`contents`メソッドをサポートしていません。
3565
+
3566
+ === cursor() » an index ===
3567
+
3568
+ テキストカーソルの位置を返します。このテキストボックス内の文字のインデックスです。
3569
+
3570
+ === cursor = an index or nil ===
3571
+
3572
+ テキストカーソルを表示/非表示します。
3573
+ 例えば、`cursor = 3`は文の先頭から3文字目の位置にテキストカーソルを表示します。
3574
+ `cursor = -1`は文の末尾にテキストカーソルを表示します。
3575
+ `cursor = nil`はテキストカーソルを非表示にします。
3576
+
3577
+ {{{
3578
+ Shoes.app do
3579
+ msg = para 'hello ' * 20
3580
+ msg.cursor = -1
3581
+ keypress do |k|
3582
+ n = case k
3583
+ when 'Left'; -1
3584
+ when 'Right'; 1
3585
+ else
3586
+ next
3587
+ end
3588
+ n += msg.cursor
3589
+ len = msg.text.length
3590
+ n = len unless n > -1
3591
+ msg.cursor = n % (len+1)
3592
+ flush
3593
+ end
3594
+ end
3595
+ }}}
3596
+
3597
+ === highlight() » an array ===
3598
+
3599
+ テキストマーカーの開始位置とハイライトする長さを配列形式で返します。
3600
+
3601
+ === hit(left, top) » an index or nil ===
3602
+
3603
+ マウスカーソルが指し示すテキストのインデックスを返します。
3604
+ `left`と`top` は、マウスの位置です。
3605
+
3606
+ {{{
3607
+ Shoes.app do
3608
+ para 'index: ', width: 50
3609
+ index = para '', width: 20
3610
+ msg = title 'hello ' * 5
3611
+ click do |b, x, y|
3612
+ index.text = msg.hit x, y
3613
+ end
3614
+ end
3615
+ }}}
3616
+
3617
+ === marker() » an index ===
3618
+
3619
+ テキストマーカーの開始位置を返します。
3620
+
3621
+ === marker = an index ===
3622
+
3623
+ テキストマーカーの開始位置からカーソル位置までの文字列をハイライトします。
3624
+
3625
+ {{{
3626
+ Shoes.app do
3627
+ background gainsboro
3628
+ extend HH::Markup
3629
+ code = 'alert "Hello Green Shoes! " * 5'
3630
+ msg = para highlight code, nil
3631
+ button 'marker' do
3632
+ msg.cursor = 17
3633
+ msg.marker = 14
3634
+ msg.text = highlight msg.markup, nil
3635
+ para msg.highlight
3636
+ flush
3637
+ end
3638
+ end
3639
+ }}}
3640
+
3641
+ === markup() » a text ===
3642
+
3643
+ Pangoのマークアップテキストを返します。
3644
+
2710
3645
  === replace(a string) ===
2711
3646
 
2712
3647
  ブロック全体のテキストを`a string`の文字で置き換えます。
2713
3648
 
2714
3649
  === text() » a string ===
2715
3650
 
2716
- テキストボックスのすべての文字の文字列を返します。画面に表示されるかのように、すべてのスタイルまたはテキストクラスが取り除かれて実際の文字だけを返します。
3651
+ テキストボックスのすべての文字の文字列を返します。画面に表示されるかのように、
3652
+ すべてのスタイルまたはテキストクラスが取り除かれて実際の文字だけを返します。
2717
3653
 
2718
3654
  === text = a string ===
2719
3655
 
@@ -2721,37 +3657,76 @@ Shoesはバックグラウンドでシステムのスレッドを使ってリモ
2721
3657
 
2722
3658
  === to_s() » a string ===
2723
3659
 
2724
- [[TextBlock.text]]のエイリアスです。テキストブロックのすべてのコンテンツをフラットにした文字列を返します。
3660
+ [[TextBlock.text]]のエイリアスです。
3661
+ テキストブロックのすべてのコンテンツをフラットにした文字列を返します。
2725
3662
 
2726
3663
  == Timers ==
2727
3664
 
2728
- Shoesは3つのタイマー(timer)クラスを持っています:アニメーション(Animation)クラス、Everyクラスそしてタイマー(Timer)クラスです。アニメーションとEveryの両方は開始してから何度も何度も繰り替えします。タイマーは1度だけ実行されます。1回限りのタイマーです。
3665
+ Green Shoesは3つのタイマーを持っています:Animate、EveryそしてTimerです。
3666
+ AnimateとEveryの両方は開始してから何度も何度も繰り替えします。
3667
+ タイマーは1度だけ実行されます。1回限りのタイマーです。
3668
+
3669
+ animateとeveryは基本的には同じものです。
3670
+ 違いはanimateは普通は1秒間にとてもたくさん実行されます。
3671
+ そしてeveryは数秒間ごとに実行されるか、まれにしか実行されません。
2729
3672
 
2730
- アニメーションとEveryは基本的には同じものです。違いはアニメーションは普通は1秒間にとてもたくさん実行されます。そしてEveryは数秒間ごとに実行されるか、まれにしか実行されません。
3673
+ animateとeveryは自動的に開始されます。
2731
3674
 
2732
3675
  === start() » self ===
2733
3676
 
2734
- どちらのタイプのタイマーもそれ自身で自動的に開始されるため、通常はこれは利用する必要がありません。しかし、[[Timers.stop]]でタイマーを止めて再開したい場合は、もちろん:これを利用してください!
3677
+ どちらのタイプのタイマーもそれ自身で自動的に開始されるため、通常はこれは利用する
3678
+ 必要がありません。しかし、[[Timers.stop]]でタイマーを止めて再開したい場合は、
3679
+ もちろん:これを利用してください!
3680
+
3681
+ '''注意:''' Green Shoesは`start`メソッドをサポートしていません。
2735
3682
 
2736
3683
  === stop() » self ===
2737
3684
 
2738
- アニメーションまたはタイマーを中断します。1回限りのタイマーの場合はこれは既に実行されており、既に停止しているのでこのメソッドの効果はありません。
3685
+ animateまたはeveryのループを中断します。
2739
3686
 
2740
- === toggle() » self ===
3687
+ === pause() » self ===
2741
3688
 
2742
- アニメーションまたはタイマーが停止されていれば、開始します。既に実行されていれば、停止します。
3689
+ animateまたはeveryのループを一時停止します。
3690
+ アニメーションまたはタイマーが停止されていれば、開始します。
3691
+ 既に実行されていれば、停止します。
2743
3692
 
2744
3693
  == Video ==
2745
3694
 
2746
- Shoesは埋め込みのQuickTime、Flashビデオ(FLV)、DivX、Xvidそして様々な他の人気のあるビデオフォーマットをサポートしています。これはすべて2つの驚くべきオープンソースライブラリである、VideoLANとffmpegのおかげです。Shoes::Videoオブジェクトをセットアップするためにスロット上で`video`メソッドを利用してください。!{:margin_left => 100}man-ele-video.png!
2747
-
2748
- ビデオフォーマットに加えて、MP3、WAVとOgg Vorbisのような、いくつかのオーディオフォーマットもサポートされています。
3695
+ Green Shoesは埋め込みのMP4, AVI, WMV, QuickTimeや他の様々な人気のある
3696
+ ビデオフォーマットをサポートしています。これはすべてRuby/GStreamerのおかげです。
3697
+ Shoes::Videoオブジェクトをセットアップするために`video`メソッドを利用してください。
3698
+ !{:margin_left => 100}man-ele-video.png!
3699
+
3700
+ {{{
3701
+ Shoes.app width: 400, height: 300 do
3702
+ background gold..cyan, angle: 90
3703
+ space = ' ' * 3
3704
+ v = video 'http://is.gd/xZ6Jih'
3705
+ links = para space,
3706
+ link('play'){v.play; links.move(0, 300)},
3707
+ space, link('pause'){v.pause},
3708
+ space, link('-1sec'){v.time -= 1000},
3709
+ space, link('+1sec'){v.time += 1000},
3710
+ top: 250
3711
+ msg = para left: 250, top: 300
3712
+ every do
3713
+ msg.text = fg("#{(v.position*100).to_i}% " +
3714
+ "(#{v.time/1000}/#{v.length.to_i/1000}sec)",
3715
+ darkcyan)
3716
+ end
3717
+ end
3718
+ }}}
2749
3719
 
2750
- ビデオサポートはShoesではオプションであり、いくつかのビルドではビデオをサポートしていません。例えば、PowerPCではビデオサポートは利用できません。Shoesをダウンロードしたときに、ビデオサポートが利用できないならプラットフォーム用のビルドのファイル名に`novideo`と記されています
3720
+ ビデオフォーマットに加えて、MP3、WAVとOgg Vorbisのような、いくつかの
3721
+ オーディオフォーマットもサポートされています。
2751
3722
 
2752
3723
  === hide() » self ===
2753
3724
 
2754
- ビデオを非表示します。既に再生しているなら、ビデオは再生を続けます。これはビデオの表示をオフにするだけです。このメソッドの有力な使い方の1つは、MP3のようなオーディオファイルを再生するときに、ビデオの範囲を破壊することです。
3725
+ ビデオを非表示します。既に再生しているなら、ビデオは再生を続けます。
3726
+ これはビデオの表示をオフにするだけです。このメソッドの有力な使い方の1つは、
3727
+ MP3のようなオーディオファイルを再生するときに、ビデオの範囲を破壊することです。
3728
+
3729
+ '''注意:''' 今のところGreen Shoesでは`hide`メソッドをサポートしていません。
2755
3730
 
2756
3731
  === length() » a number ===
2757
3732
 
@@ -2761,41 +3736,52 @@ Shoesは埋め込みのQuickTime、Flashビデオ(FLV)、DivX、Xvidそし
2761
3736
 
2762
3737
  (left, top)はビデオの左上の角であり、特定の座標にビデオを移動します。
2763
3738
 
3739
+ '''注意:''' 今のところGreen Shoesでは`move`メソッドをサポートしていません。
3740
+
2764
3741
  === pause() » self ===
2765
3742
 
2766
3743
  ビデオが再生されていれば、一時停止します。
2767
3744
 
2768
3745
  === playing?() » true of false ===
2769
3746
 
2770
- ビデオを現在再生していれば、trueを返します。または、ビデオが一時停止されていたり停止されている場合はfalseです。
3747
+ ビデオを現在再生していれば、trueを返します。または、ビデオが一時停止されていたり
3748
+ 停止されている場合はfalseです。
2771
3749
 
2772
3750
  === play() » self ===
2773
3751
 
2774
- 既に再生いなければ、ビデオの再生を開始します。既に再生いるのなら、ビデオは始めから再度開始します。
3752
+ 既に再生いなければ、ビデオの再生を開始します。既に再生いるのなら、ビデオは
3753
+ 始めから再度開始します。
2775
3754
 
2776
3755
  === position() » a decimal ===
2777
3756
 
2778
- (0.0)から(1.0)の間の10進数の(Floatの)数によるビデオの位置です。例えば、0.5のFloatの値はビデオの中間の位置を示します。
3757
+ (0.0)から(1.0)の間の10進数の(Floatの)数によるビデオの位置です。
3758
+ 例えば、0.5のFloatの値はビデオの中間の位置を示します。
2779
3759
 
2780
3760
  === position = a decimal ===
2781
3761
 
2782
- Floatの値を利用してビデオの位置を設定します。25%の位置にビデオを移動するなら:`@video.position = 0.25`。
3762
+ Floatの値を利用してビデオの位置を設定します。
3763
+ 25%の位置にビデオを移動するなら:`@video.position = 0.25`。
2783
3764
 
2784
3765
  === remove() » self ===
2785
3766
 
2786
3767
  ビデオをスロットから取り除きます。なおビデオを停止します。
2787
3768
 
3769
+ '''注意:''' 今のところGreen Shoesでは`remove`メソッドをサポートしていません。
3770
+
2788
3771
  === show() » self ===
2789
3772
 
2790
3773
  `hide()`メソッドによって非表示にされていたなら、ビデオを表示します。
2791
3774
 
3775
+ '''注意:''' 今のところGreen Shoesでは`show`メソッドをサポートしていません。
3776
+
2792
3777
  === stop() » self ===
2793
3778
 
2794
3779
  ビデオが再生されていれば、停止します。
2795
3780
 
2796
3781
  === time() » a number ===
2797
3782
 
2798
- ビデオのミリ秒での時間の位置です。そのため、そのビデオが10秒の再生時間なら、このメソッドは10000の数を返します
3783
+ ビデオのミリ秒での時間の位置です。そのため、そのビデオが10秒の再生時間なら、
3784
+ このメソッドは10000の数を返します
2799
3785
 
2800
3786
  === time = a number ===
2801
3787
 
@@ -2803,7 +3789,10 @@ Floatの値を利用してビデオの位置を設定します。25%の位置に
2803
3789
 
2804
3790
  === toggle() » self ===
2805
3791
 
2806
- ビデオの可視性をトグルします。ビデオが表示されていれば、`hide`が呼ばれます。そうでなければ、`show`が呼ばれます。
3792
+ ビデオの可視性をトグルします。ビデオが表示されていれば、`hide`が呼ばれます。
3793
+ そうでなければ、`show`が呼ばれます。
3794
+
3795
+ '''注意:''' 今のところGreen Shoesでは`toggle`メソッドをサポートしていません。
2807
3796
 
2808
3797
  = AndSoForth =
2809
3798
 
@@ -2820,6 +3809,39 @@ Floatの値を利用してビデオの位置を設定します。25%の位置に
2820
3809
  お役立ち情報:
2821
3810
 
2822
3811
  * [[http://librelist.com/browser/shoes/ Shoes ML]] 気軽にメーリングリストへ参加下さい。
2823
- * [[http://github.com/shoes/shoes/ 最新のソースコード]] は GitHubにあります。
2824
- * [[http://github.com/shoes/shoes/downloads 最新のビルド]] あなたのプラットフォームに合わせて選んで下さい。
3812
+ * [[https://github.com/ashbb/green_shoes/ 最新のソースコード]] は GitHubにあります。
3813
+ * Green Shoes Gemは、[[http://rubygems.org/gems/green_shoes RubyGems.org]] にあります。
3814
+
3815
+
3816
+ == vs.RedShoes ==
3817
+
3818
+ Green ShoesはRed Shoesに従っていますが、完全互換ではありません。
3819
+
3820
+ ==== TextBlock ====
3821
+
3822
+ 以下の2つのコードはRed Shoesでは同じ動作をします。
3823
+
3824
+ {{{
3825
+ Shoes.app do
3826
+ para 'hello ' * 20
3827
+ end
3828
+ }}}
3829
+
3830
+ {{{
3831
+ Shoes.app do
3832
+ 20.times{para 'hello '}
3833
+ end
3834
+ }}}
3835
+
3836
+ でもGreen Shoesでは、`:width`オプションを明示的に付ける必要があります。
3837
+
3838
+ {{{
3839
+ Shoes.app do
3840
+ 20.times{para 'hello ', width: 40}
3841
+ end
3842
+ }}}
3843
+
3844
+ もし`:width`オプションを付けないと、Green Shoesは`parent.width`でそのテキストブロックを生成します。
2825
3845
 
3846
+ 詳細は、[[http://ashbb.github.com/green_shoes/Red_Shoes_and_Green_Shoes.html Red Shoes and Green Shoes]]を
3847
+ 参照下さい。