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 +1 -1
- data/lib/plugins/video.rb +24 -1
- data/lib/shoes/app.rb +2 -0
- data/lib/shoes/basic.rb +10 -0
- data/lib/shoes/helper_methods.rb +2 -2
- data/lib/shoes/style.rb +2 -2
- data/lib/shoes/text.rb +1 -1
- data/static/man-ele-video.png +0 -0
- data/static/manual-en.txt +31 -14
- data/static/manual-ja.txt +1723 -701
- metadata +4 -15
- data/static/man-app.png +0 -0
- data/static/man-builds.png +0 -0
- data/static/man-builds1.png +0 -0
- data/static/man-intro-dmg.png +0 -0
- data/static/man-intro-exe.png +0 -0
- data/static/man-look-tiger.png +0 -0
- data/static/man-look-ubuntu.png +0 -0
- data/static/man-look-vista.png +0 -0
- data/static/man-run-osx.png +0 -0
- data/static/man-run-vista.png +0 -0
- data/static/man-run-xp.png +0 -0
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
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
|
data/lib/shoes/helper_methods.rb
CHANGED
@@ -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(/<.*?>/, '').
|
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
|
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
data/static/man-ele-video.png
CHANGED
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) »
|
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
|
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
|
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
|
3779
|
-
|
3780
|
-
|
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
|
-
|
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は軽量なグラフィックツールキットです。これは単純で分かりやすいです。
|
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
|
13
|
+
Shoes.app{button("Click me!"){alert("Good job.")}}
|
10
14
|
}}}
|
11
15
|
|
12
|
-
ShoesプログラムはRubyと呼ばれる言語で書かれています。
|
16
|
+
ShoesプログラムはRubyと呼ばれる言語で書かれています。
|
17
|
+
ShoesがこのRubyコードの単純な行を渡されたとき、"Click me!"と中に書かれたボタンを持った
|
18
|
+
ウィンドウを表示します。このボタンをクリックすると、メッセージがポップアップします。
|
13
19
|
|
14
|
-
|
20
|
+
Windows 7では、このように見えるでしょう: !{margin_left: 100}man-shot1.png!
|
15
21
|
|
16
|
-
多くのShoes
|
22
|
+
多くのShoesのアプリケーションがグラフィカルなゲームやアートのプログラムである一方、
|
23
|
+
テキストを配置したり編集したりすることも簡単にできます。 !{margin_left: 80}shoes-manual-apps.png!
|
17
24
|
|
18
|
-
そして、理想的には、Shoes
|
25
|
+
そして、理想的には、Shoesプログラムは世の中のいくつかの有名なプラットフォームで実行できるでしょう。
|
26
|
+
マイクロソフトWindows、アップルのMac OS X、Linuxや多くの他のプラットフォームで。
|
19
27
|
|
20
|
-
|
28
|
+
^Green Shoesのビルトインマニュアルへようこそ。このマニュアルはGreen Shoesのプログラムそのものです。^
|
21
29
|
|
22
|
-
== Introducing Shoes ==
|
30
|
+
== Introducing Green Shoes ==
|
23
31
|
|
24
|
-
OS XやWindows
|
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
|
41
|
+
Green ShoesはアップルのMac OSX10.5 PPC via X11で動作します。
|
42
|
+
!{margin_left: 100}../snapshots/sample3-osx.png!
|
31
43
|
|
32
|
-
これは
|
33
|
-
|
34
|
-
|
44
|
+
これはMac OS X上で`sample3.rb`を実行した時のスナップショットです。
|
45
|
+
全ての円がランダムに描かれています。
|
46
|
+
Green Shoesではさまざまな図形を描いたり動かしたりすることができます。
|
35
47
|
|
36
48
|
==== Windows ====
|
37
49
|
|
38
|
-
Shoes
|
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
|
-
|
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
|
60
|
+
これは'''Ubuntu on VirtualBox for Windows'''上で`sample44.rb`サンプルが動作しているスクリーンショットです。
|
61
|
+
!{margin_left: 130}../snapshots/sample44-linux.png!
|
47
62
|
|
48
|
-
|
63
|
+
この例では時計を作るために線や円を描いています。
|
64
|
+
時計の針の動作は線の表示/非表示を毎秒数回切り替えることにより実現しています。
|
49
65
|
|
50
|
-
|
66
|
+
アプリケーション上部のテキストが、現在の時刻を表示していることに注意してください。
|
67
|
+
Green Shoesは、いくつかの色、太字、斜字、下線、そしてファイルからフォントをロードして語句を配置する
|
68
|
+
機能を持っています。
|
51
69
|
|
52
|
-
== Installing Shoes ==
|
70
|
+
== Installing Green Shoes ==
|
53
71
|
|
54
|
-
はい、ではShoesのインストールを行います。あなたは次のような疑問を持っているでしょう:
|
55
|
-
|
56
|
-
|
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
|
-
|
84
|
+
そして、以下のコマンドを実行してください。
|
59
85
|
|
60
|
-
|
86
|
+
* gem install green_shoes
|
61
87
|
|
62
|
-
|
88
|
+
これだけです。簡単でしょう?
|
63
89
|
|
64
|
-
|
90
|
+
'''注意:''' green_shoes gemはこのサイト[[http://rubygems.org/gems/green_shoes RubyGems.org]]
|
91
|
+
にあります。
|
65
92
|
|
66
|
-
|
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
|
-
*
|
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
|
-
|
126
|
+
さて、ウィンドウアプリケーションを作成することができます。
|
127
|
+
しかし、Shoesはウェブから影響を受けているので、アプリケーションは多くのウィジェットよりも、
|
128
|
+
画像を使ったりテキストを配置する傾向があります。例えば、Shoesはタブコントロールやツールバーを備えていません。
|
129
|
+
Shoesは''軽量な''ツールキットだと言うことを覚えていますか?
|
104
130
|
|
105
|
-
それでもShoes
|
131
|
+
それでもShoesはボタンやエディットボックスのようなウィジェットを少しだけ持っています。
|
132
|
+
そして、多くの(タブコントロールまたはツールバーのような)不足している要素は、画像でシミュレーションすることが
|
133
|
+
できます。
|
106
134
|
|
107
|
-
ShoesはCairo
|
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
|
141
|
+
Green Shoesがどのように動作するのか推測するのはやめましょう。トリッキーな動作で悩むと思います。
|
142
|
+
私はShoesの中心的な規則を要約しまいた。これらは、それにすべての働きをさせるためには知らなくては
|
143
|
+
ならないものです。
|
112
144
|
|
113
|
-
これらは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
|
-
|
123
|
-
|
124
|
-
|
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
|
164
|
+
Green Shoesでは、これらの種類のブロックは同じ働きをします。この上記のブロックは配列をループして
|
165
|
+
各オブジェクトを`item`変数に格納します。この`item`変数はブロックが終わると消滅(スコープから出る)します。
|
129
166
|
|
130
|
-
考え方を守っているもう一つのことは、普通のRubyブロックの内部と`self
|
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
|
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`も変更されます。'''
|
217
|
+
'''新しいウィンドウを作成するときはいつでも、`self`も変更されます。'''
|
177
218
|
|
178
219
|
{{{
|
179
|
-
Shoes.app :
|
220
|
+
Shoes.app title: "MAIN" do
|
180
221
|
para self
|
181
222
|
button "Spawn" do
|
182
|
-
|
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
|
234
|
+
'''しかしトリックがあります:'''`stack`を配置してブロックを与えたとき、アプリケーションオブジェクトはstackを
|
235
|
+
メモリへ配置します。ブロックが終了するときstackは立ち去ります。
|
236
|
+
そのため、アプリケーションのトップスロットから新しいstackまで、ブロック内部のすべての描画は'''リダイレクト'''されます。
|
194
237
|
|
195
|
-
そのため、まず、たとえ彼らが確かにアプリケーションオブジェクトへ渡したとしても、それらの3つの`para
|
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
|
216
|
-
@
|
260
|
+
def initialize slot
|
261
|
+
@slot = slot
|
217
262
|
end
|
218
|
-
def add
|
219
|
-
|
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
|
275
|
+
アプリケーションが始まるときに、stackオブジェクトをMessengerクラスへ渡すと仮定します。
|
276
|
+
そして、後で、メッセージが来るとき、`add`メソッドはそのstackにパラグラフを追加するのに用いられます。
|
277
|
+
正しく動作するでしょうか?
|
227
278
|
|
228
|
-
いや、それは動作しません。`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
|
235
|
-
@
|
287
|
+
def initialize slot
|
288
|
+
@slot = slot
|
236
289
|
end
|
237
|
-
def add
|
238
|
-
@
|
239
|
-
|
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`を変更します。
|
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 :
|
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
|
-
|
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
|
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です。
|
433
|
+
Ruby自体はUnicodeを意識しません。そして、UTF-8は一種のUnicodeです。
|
434
|
+
(UTF-8の完全な説明は[[http://en.wikipedia.org/wiki/UTF-8 Wikipedia]]を見てください。)
|
343
435
|
|
344
|
-
しかしながら、UTF-8はWEB
|
436
|
+
しかしながら、UTF-8はWEBで一般的です。そして、多くの異なったプラットホームがそれをサポートします。
|
437
|
+
そこで、Green Shoesがしなくてはならない変換の量を減らすために、Green Shoesはすべての文字列が
|
438
|
+
UTF-8フォーマットであることを期待します。
|
345
439
|
|
346
|
-
すばらしいことに、Shoesで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
|
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
|
460
|
+
これは、その編集ボックスがUTF-8の文字を返すことを確かめるのにいいテストです。
|
461
|
+
そして、そのパラグラフはどんなUTF-8の文字でも設定することができます。
|
364
462
|
|
365
|
-
'''重要事項:'''もしいくつかのUTF-8
|
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)",
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
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
|
479
|
+
さらに、Green Shoesで文字列を扱う場合もUTF-8の文字列を必要とします。
|
480
|
+
編集ボックス、編集ライン、リストボックス、ウィンドウタイトルやテキストブロックはすべてUTF-8をとります。
|
481
|
+
間違った文字の入った文字列をあたえた場合は、コンソールにエラーが表示されます。
|
380
482
|
|
381
483
|
==== メインアプリケーションとRequire ====
|
382
484
|
|
383
|
-
'''注意:''' このルールはRaisinsのためのものです。PolicemanではTOPLEVEL_BINDING
|
384
|
-
|
485
|
+
'''注意:''' このルールはRaisinsのためのものです。PolicemanとGreen ShoesではTOPLEVEL_BINDINGを
|
486
|
+
使っているので、最初の例では `main` (Rubyトップレベルオブジェクト)が表示されます。
|
487
|
+
`Shoes.app`ブロックの外側では、`Para`ではなく`Shoes::Para`と記述する必要がありますが。
|
385
488
|
|
386
|
-
それぞれの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
|
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
|
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
|
531
|
+
Green Shoesはウィンドウや、それらウィンドウ内部の要素を描くことがすべてです。
|
532
|
+
今はウィンドウ自体に焦点を当てましょう。
|
533
|
+
他のセクションの[[Slots]]や[[Elements]]がウィンドウ内部に関してのすべてを対象としています。
|
423
534
|
|
424
|
-
|
535
|
+
ここでは、このマニュアルはより辞書のように読んでください。それぞれのページのほとんどは、利用可能なメソッドの
|
536
|
+
一覧であり、各トピックを対象としています。この考えは、すべてに関してとても詳細かつ明確であることです。
|
425
537
|
|
426
|
-
そして、このマニュアルの難しさにぶつかって、始めることについてまだ分からないなら、おそらくこのマニュアルの
|
427
|
-
|
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]]ページ(追加できるすべてのエレメントの一覧)と
|
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
|
-
|
460
|
-
alert "No dots in sight"
|
576
|
+
alert "No dots in sight"
|
461
577
|
}}}
|
462
578
|
|
463
|
-
|
579
|
+
これと、ArrayとStringに対してだけ利用可能な、カーネルメソッドではない、
|
580
|
+
`reverse`メソッドを比較してください:
|
464
581
|
|
465
582
|
{{{
|
466
583
|
#!ruby
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
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
|
592
|
+
描画やボタンを作成したりするための多くのGreen Shoesメソッドはスロットへ付与されます。
|
593
|
+
より詳しい情報については[[Slots]]のセクションを見てください。
|
474
594
|
|
475
595
|
==== ビルトイン定数 ====
|
476
596
|
|
477
|
-
Shoesにはいくつかのビルトイン定数があり、それはどんなバージョンのShoes
|
597
|
+
Green Shoesにはいくつかのビルトイン定数があり、それはどんなバージョンのGreen Shoesが
|
598
|
+
実行されているかを判別することを証明するのに利用できるかもしれません
|
478
599
|
|
479
|
-
'''
|
600
|
+
'''DIR''' は、`green_shoes/lib`のフルパスです。
|
480
601
|
|
481
|
-
'''
|
602
|
+
'''COLORS''' は、アプリケーションで利用できる色の完全な一覧です。
|
482
603
|
|
483
|
-
'''
|
604
|
+
'''FONTS''' は、アプリケーションで利用できるフォントの完全な一覧です。
|
484
605
|
|
485
|
-
'''
|
606
|
+
'''VERSION''' は、Green Shoesのバージョンです。
|
486
607
|
|
487
|
-
|
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
|
624
|
+
alert "I'm afraid I must interject!"
|
494
625
|
}}}
|
495
626
|
|
496
|
-
alert
|
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
|
-
|
646
|
+
上記のスクリプトを実行するとき、コンピュータを利用している人は、名前を入力するための空のボックスを
|
647
|
+
持つウィンドウを見るでしょう。そして、その名前は`name`変数に保存されます。
|
508
648
|
|
509
|
-
=== ask_color(title: a string) »
|
649
|
+
=== ask_color(title: a string) » RGB array ===
|
510
650
|
|
511
|
-
|
651
|
+
カラーピッカーウィンドウをポップアップします。このプログラムは色が選ばれるのを待ち、そしてあなたに
|
652
|
+
色オブジェクトを与えます。いくつかの方法でこの色を利用するために`Color`ヘルプを見てください。
|
512
653
|
|
513
654
|
{{{
|
514
655
|
#!ruby
|
515
|
-
backcolor = ask_color
|
656
|
+
backcolor = ask_color "Pick a background"
|
516
657
|
Shoes.app do
|
517
|
-
|
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`と似ており、"フォルダを保存する。。。"ウィンドウをポップアップします。
|
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'''
|
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 :
|
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
|
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
|
-
|
751
|
+
フォントが適切にロードされたなら、ファイルに見つかったフォントの名前の配列を取り戻すでしょう。
|
752
|
+
そうではなく、ファイルにはフォントが見つからないなら`nil`が返されます。
|
614
753
|
|
615
|
-
また興味深いことに:`Shoes::FONTS
|
754
|
+
また興味深いことに:`Shoes::FONTS`定数はこのプラットフォームで利用可能なフォントの完全な一覧です。
|
755
|
+
`include?`を利用していくつかのフォントをチェックできます。
|
616
756
|
|
617
757
|
{{{
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
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
|
-
|
626
|
-
|
627
|
-
|
765
|
+
もしフォントを表示することに問題があるなら、それを利用する前に、アプリケーションがフォントを
|
766
|
+
ロードすることを確認してください。特にOS Xでは、もしフォントがロードされる前に利用されたなら、
|
767
|
+
フォントキャッシュはロードされたフォントを無視する傾向があります。
|
628
768
|
|
629
|
-
|
769
|
+
=== gradient(color1, color2) » a range of RGB array ===
|
630
770
|
|
631
|
-
|
632
|
-
|
633
|
-
|
771
|
+
二つの色から直線勾配を作ります。それぞれの色に、色を描画するためにRGB arrayか文字列を渡します。
|
772
|
+
例えば、`gradient(green, red)`は、`green..red`と同じです。
|
773
|
+
また`gradient(green, '#FA3')`のように記述することもできます。
|
634
774
|
|
635
775
|
{{{
|
636
|
-
|
637
|
-
|
776
|
+
Shoes.app do
|
777
|
+
oval 100, 100, 100,
|
778
|
+
fill: gradient(green, '#FA3'), angle: 45
|
779
|
+
end
|
638
780
|
}}}
|
639
781
|
|
640
|
-
===
|
782
|
+
=== gray(the numbers: darkness, alpha) » RGB array ===
|
641
783
|
|
642
|
-
|
784
|
+
暗さのレベルや、任意的にはアルファレベルからグレースケールカラーを作成します。
|
643
785
|
|
644
786
|
{{{
|
645
|
-
|
646
|
-
|
647
|
-
|
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
|
-
|
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
|
-
|
660
|
-
|
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
|
-
|
667
|
-
|
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
|
-
|
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
|
836
|
+
Green Shoesのアプリケーションウィンドウを開始します。これはGreen Shoesプログラムを作るための
|
837
|
+
出発地点です。ブロックの内部では、ウィンドウを様々なGreen Shoesの要素(ボタン、アートワーク、
|
838
|
+
その他)で満たし、そしてブロックの外では、ウィンドウがどれぐらい大きいのかを説明するために
|
839
|
+
`styles`を利用します。おそらくアプリケーションの名前についてもです。
|
689
840
|
|
690
841
|
{{{
|
691
842
|
#!ruby
|
692
|
-
Shoes.app
|
693
|
-
:
|
694
|
-
|
695
|
-
|
696
|
-
|
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
|
851
|
+
上記のケースでは、小さなウィンドウを作成します。200×200ピクセルです。
|
852
|
+
そして、そのウィンドウには黒い背景と白い輪の2つの要素があります。
|
701
853
|
|
702
|
-
いったんアプリケーションが作成されれば、それは[[App.Shoes.APPS]]
|
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
|
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
|
-
|
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
|
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", :
|
906
|
+
title "Searching Google", size: 16
|
734
907
|
@status = para "One moment..."
|
735
|
-
|
736
|
-
|
737
|
-
|
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
|
-
|
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", :
|
925
|
+
title "Downloading Google image", size: 16
|
753
926
|
@status = para "One moment..."
|
754
|
-
|
755
|
-
download "http://
|
927
|
+
|
928
|
+
download "http://is.gd/GVAGF7",
|
756
929
|
:save => "nasa50th.gif" do
|
757
|
-
|
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
|
-
|
764
|
-
|
765
|
-
|
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 "
|
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
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
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
|
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
|
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
|
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
|
-
外観を変更したいですか?
|
1025
|
+
外観を変更したいですか?
|
1026
|
+
Green Shoesにおいてはスタイルが要素の表示方法を変更するために利用されます。
|
1027
|
+
場合によっては、要素のすべてのクラスのスタイルでさえ設定できます。
|
1028
|
+
(すべての段落に特定のフォントを与えるように)
|
822
1029
|
|
823
1030
|
スタイルは簡単にspotできます。通常は要素が生成されるときに現れます。
|
824
1031
|
|
825
1032
|
{{{
|
826
|
-
Shoes.app :
|
827
|
-
para
|
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
|
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 :
|
837
|
-
|
838
|
-
|
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
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
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
|
-
どんなスタイルでも分かるようにすべてのマニュアルを苦労して読ませるよりも、この役に立つページは
|
1073
|
+
どんなスタイルでも分かるようにすべてのマニュアルを苦労して読ませるよりも、この役に立つページは
|
1074
|
+
Green Shoesのあらゆるスタイルを急いで駆け抜けて、どこでスタイルが利用されるかについて示唆します。
|
853
1075
|
|
854
1076
|
=== :align » a string ===
|
855
1077
|
|
856
|
-
''banner, caption,
|
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,
|
1088
|
+
''background, border, line, oval, rect, shape, star''で利用できます。
|
867
1089
|
|
868
|
-
|
1090
|
+
グラデーションに適用する角度です。通常はグラデーションの色の効果は上から下です。
|
1091
|
+
`:angle`を90に設定するなら反時計回りに90度回転し、グラデーションは左から右になるでしょう。
|
869
1092
|
|
870
1093
|
=== :attach » a slot or element ===
|
871
1094
|
|
872
1095
|
''flow, stack''で利用できます。
|
873
1096
|
|
874
|
-
|
875
|
-
|
1097
|
+
他のスロットや要素と比較してスロットをピンで止めます。ウィンドウの左上の角からスロットを配置する
|
1098
|
+
ために`:attach => Window`と書く人もいるかもしれません。
|
1099
|
+
これについてもう少し取り上げると、`:top => 10, :left => 10, :attach => Window`のスタイルは
|
1100
|
+
スロットをウインドウの座標の(10, 10)に配置します。
|
1101
|
+
|
1102
|
+
動く要素にスロットがアタッチされた場合は、そのスロットはそれとともに動きます。
|
1103
|
+
アタッチメントが`nil`にリセットされるなら、通常はそのスロットはそれを取り囲む他のオブジェクトとともに流れます。
|
876
1104
|
|
877
|
-
|
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
|
-
|
1136
|
+
要素の下の端の座標にピクセルを設定します。その端はコンテナの下の端に対して配置されます。
|
1137
|
+
そのため、`:bottom => 0`は、スロットの下の端とその下の端が接するように要素を配置するでしょう。
|
1138
|
+
|
1139
|
+
'''注意:''' Green Shoesは`:bottom`スタイルをサポートしていません。
|
890
1140
|
|
891
1141
|
=== :cap » :curve or :rect or :project ===
|
892
1142
|
|
893
|
-
''arc,
|
1143
|
+
''arc, line, shape''で利用できます。
|
894
1144
|
|
895
|
-
線の終点の形状を曲がったもの(curved)か角張ったもの(square
|
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
|
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の
|
1161
|
+
`change`イベントハンドラはスタイルに保存されます。例として、edit_boxの
|
1162
|
+
[[EditBox.change]]メソッドを見てください。
|
908
1163
|
|
909
1164
|
=== :checked » true or false ===
|
910
1165
|
|
911
1166
|
''check, radio''で利用できます。
|
912
1167
|
|
913
|
-
|
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,
|
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を設定した場合、長方形の角は
|
1187
|
+
長方形の要素のそれぞれの曲がった角の半径です。例として、6を設定した場合、長方形の角は
|
1188
|
+
6ピクセルの半径のカーブを与えられます。
|
932
1189
|
|
933
1190
|
=== :displace_left » a number ===
|
934
1191
|
|
935
1192
|
''すべてのスロットと要素''で利用できます。
|
936
1193
|
|
937
|
-
|
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
|
-
|
1206
|
+
形状、テキストブロックまたはその他のどんな種類のオブジェクトでも上か下に置き換えます。
|
1207
|
+
正数は与えられた数のピクセルによって下へ置き換え、負数は上へ置き換えます。
|
1208
|
+
オブジェクトを置き換えることはページの実際のレイアウトやオブジェクトの本当の座標に影響を与えません。
|
1209
|
+
この振る舞いに少し驚くかもしれないので、[[Position.displace]]のドキュメントを読んでください。
|
1210
|
+
|
1211
|
+
'''注意:''' Green Shoesは`:displace_top`スタイルをサポートしていません。
|
944
1212
|
|
945
1213
|
=== :emphasis » a string ===
|
946
1214
|
|
947
|
-
''banner, caption,
|
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,
|
1227
|
+
''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
|
960
1228
|
|
961
|
-
|
1229
|
+
与えられたフォントファミリーでテキストを整えます。文字列はフォントファミリー名かカンマで区切られた
|
1230
|
+
フォントファミリーの一覧を含むべきです。
|
962
1231
|
|
963
|
-
=== :fill » a hex code, a
|
1232
|
+
=== :fill » a hex code, a RGB array or a range of either ===
|
964
1233
|
|
965
|
-
''
|
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,
|
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
|
-
|
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
|
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,
|
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,
|
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
|
-
|
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
|
-
|
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
|
-
''
|
1392
|
+
''oval''で利用できます。
|
1078
1393
|
|
1079
|
-
|
1394
|
+
それらの要素に半径(直径または全幅の半分)を設定します。
|
1395
|
+
これを設定することは、この数値の2倍の`:width`と`:height`を設定することと同等です。
|
1080
1396
|
|
1081
1397
|
=== :right » a number ===
|
1082
1398
|
|
1083
1399
|
''すべてのスロットと要素''で利用できます。
|
1084
1400
|
|
1085
|
-
|
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,
|
1410
|
+
''banner, caption, inscription, para, span, subtitle, tagline, title''で利用できます。
|
1090
1411
|
|
1091
|
-
|
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
|
-
|
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
|
-
|
1104
|
-
|
1105
|
-
|
1448
|
+
パスワードフィールドのために利用され、この設定は入力された文字を画面上で表示されない
|
1449
|
+
ようにします。そのかわり、置き換えられた文字(たとえばアスタリスク)をそれぞれの文字が
|
1450
|
+
入力されるごとに表示します。
|
1106
1451
|
|
1107
1452
|
=== :size » a number ===
|
1108
1453
|
|
1109
|
-
''banner, caption,
|
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,
|
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
|
1495
|
+
=== :strikecolor » a RGB array ===
|
1148
1496
|
|
1149
|
-
''banner, caption,
|
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,
|
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
|
1510
|
+
=== :stroke » a hex code, a rgb array or a range of either ===
|
1163
1511
|
|
1164
|
-
''
|
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
|
-
''
|
1520
|
+
''background, border, line, oval, rect, shape, star''で利用できます。
|
1171
1521
|
|
1172
|
-
|
1522
|
+
描かれる線のピクセルでの太さで、形状の線を特徴付けます。
|
1523
|
+
例えば、数値の2が設定されればstrokewidthは2ピクセルになります。
|
1173
1524
|
|
1174
1525
|
=== :text » a string ===
|
1175
1526
|
|
1176
|
-
''
|
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
|
-
|
1535
|
+
オブジェクトの上側の座標を、その親のスロットに対して設定します。
|
1536
|
+
オブジェクトに`:top => 40`が設定されたなら、オブジェクトの上端はそのオブジェクトを含む
|
1537
|
+
スロットの上端から40ピクセル下に配置されることを意味します。`:top`スタイルが与えられないなら、
|
1538
|
+
そのスロットの自然な流れでオブジェクトは自動的に配置されます。
|
1185
1539
|
|
1186
|
-
=== :undercolor » a
|
1540
|
+
=== :undercolor » a RGB array ===
|
1187
1541
|
|
1188
|
-
''banner, caption,
|
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,
|
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,
|
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,
|
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
|
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
|
1607
|
+
Green Shoesで紹介するすべてのクラスの完全な一覧です。
|
1241
1608
|
|
1242
|
-
|
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
|
1614
|
+
以下はGreen Shoes全体で利用可能な色の一覧です。背景色または枠線の色として。
|
1615
|
+
描かれる線や塗りつぶされる色として。これらの色の大部分はX11やHTMLのパレットから来ています。
|
1247
1616
|
|
1248
|
-
|
1617
|
+
これらの色はすべて名前によって利用できます。(そのため、どんなスロットの内部からでも
|
1618
|
+
`tomato`メソッドを呼ぶことで、すてきな赤みがかった色が手に入るでしょう。)
|
1619
|
+
それぞれの色の下には、[[Built-in.rgb]]メソッドで利用できる正確な数値を見つけることもできます。
|
1249
1620
|
|
1250
1621
|
{COLORS}
|
1251
1622
|
|
1252
1623
|
= Slots =
|
1253
1624
|
|
1254
|
-
スロットは画像やテキストなどのレイアウトに使われる箱です。2
|
1625
|
+
スロットは画像やテキストなどのレイアウトに使われる箱です。2つの最も一般的なスロットは
|
1626
|
+
`スタック(stack)`と`フロー(flow)`です。スロットはGreen Shoesの専門用語で"箱"または
|
1627
|
+
"キャンバス"とも言えます
|
1255
1628
|
|
1256
|
-
|
1629
|
+
マウスホイールやページアップやページダウンはあらゆるプラットフォームで普及しているため、
|
1630
|
+
縦のスクロールだけが溢れて問題になりました。そのためGreen Shoesでは、まさにWEBのように
|
1631
|
+
通常は幅が固定です。一方で高さは際限なく続いて行きます。
|
1257
1632
|
|
1258
|
-
|
1633
|
+
さて、そうしたいなら、どんなものでも幅や高さを指定することもできます。それはいくらかの数学を
|
1634
|
+
用いるでしょうが、完璧かもしれません。
|
1259
1635
|
|
1260
|
-
|
1636
|
+
一般的には、スタックとフローを使うことを提案するでしょう。ここでの目的は、あなたがいくらかの
|
1637
|
+
幅を何かで満たして、幅を満たしながら、ページの下に進みたいということです。
|
1638
|
+
これらを、HTMLの"ブロック"と"インライン"のスタイルと類似しているのように考えることができます。
|
1261
1639
|
|
1262
1640
|
==== Stacks ====
|
1263
1641
|
|
1264
|
-
|
1642
|
+
スタックは単純に要素の垂直なスタックです。スタック内のそれぞれの要素は、その上位の要素の
|
1643
|
+
直下に配置されます。
|
1265
1644
|
|
1266
|
-
また、スタックは箱のように形作られます。そのため、スタックが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
|
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 :
|
1294
|
-
:radius => 100
|
1682
|
+
oval top: 10, left: 10, radius: 100
|
1295
1683
|
end
|
1296
1684
|
}}}
|
1297
1685
|
|
1298
|
-
このコードはまわりに赤い線のある青いパイを与えます。
|
1686
|
+
このコードはまわりに赤い線のある青いパイを与えます。
|
1687
|
+
100ピクセルの幅で、ウィンドウの左上から南東に少しのピクセルを配置します。
|
1299
1688
|
|
1300
|
-
上記の`blue`と`red
|
1689
|
+
上記の`blue`と`red`メソッドはRGB配列です。
|
1690
|
+
どうやって色を混ぜるかはColorsセクションを見てください。
|
1301
1691
|
|
1302
1692
|
==== Processing と NodeBox からのインスピレーション ====
|
1303
1693
|
|
1304
|
-
この技巧的なメソッドの大抵は文字通りPythonのドローイングキットのNodeBox
|
1694
|
+
この技巧的なメソッドの大抵は文字通りPythonのドローイングキットのNodeBoxから来ています。
|
1695
|
+
次に、NodeBoxは多くのアイデアを、グラフィックとアニメーションのためのJavaのような言語である
|
1696
|
+
Processingから得ています。私はそれらのすばらしいプログラムの作者から大きな恩を受けています。
|
1305
1697
|
|
1306
|
-
ShoesはNodeBoxとProcessing
|
1698
|
+
Green ShoesはNodeBoxとProcessingから少しの点が違います。
|
1699
|
+
例えば、Green Shoesはそれ自身のRGB配列を持っていることを含めて、異なるカラーメソッドを
|
1700
|
+
持っていますが、それらはとてもProcessingのカラーメソッドに似ています。
|
1701
|
+
そしてGreen Shoesは線を描くことや形状内を塗りつぶすために画像やグラデーションを
|
1702
|
+
利用することも許しています。
|
1307
1703
|
|
1308
|
-
ShoesはいくつかのアニメーションのアイデアをProcessingから取り入れており、
|
1704
|
+
ShoesはいくつかのアニメーションのアイデアをProcessingから取り入れており、
|
1705
|
+
Processingのメソッドをしっかりと参考にしようとしながらそれを拡張しています。
|
1309
1706
|
|
1310
|
-
=== arc(left, top, width, height, angle1, angle2) » Shoes::
|
1707
|
+
=== arc(left, top, width, height, angle1, angle2) » Shoes::Oval ===
|
1311
1708
|
|
1312
|
-
弧の形状(楕円形の一部)を座標(left, top
|
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
|
-
|
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/
|
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
|
1785
|
+
塗りつぶすバケツをクリアするには`nofill`を使ってください。
|
1786
|
+
そして`stroke`メソッドを利用して線(星の枠線)の色を設定してください。
|
1337
1787
|
|
1338
1788
|
=== nofill() » self ===
|
1339
1789
|
|
1340
|
-
|
1790
|
+
塗りつぶす色を削除するため、形状は塗りつぶされずに描かれます。
|
1791
|
+
その代わりに、形状は線だけを持ち、中央を透明のままにします。
|
1341
1792
|
|
1342
1793
|
=== nostroke() » self ===
|
1343
1794
|
|
1344
|
-
|
1795
|
+
線の色を空にします。形状は外側の線が描かれなくなります。
|
1796
|
+
`nofill`も設定された場合は、形状は表示されずに描かれます。
|
1345
1797
|
|
1346
|
-
=== line(left, top, x2, y2) » Shoes::
|
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::
|
1802
|
+
=== oval(left, top, radius) » Shoes::Oval ===
|
1351
1803
|
|
1352
|
-
座標(left, top)ピクセルに`radius
|
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::
|
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
|
-
|
1833
|
+
これらのスタイルは形状オブジェクトの`style`メソッドを利用して変更されます。
|
1834
|
+
|
1835
|
+
'''注意:''' Green Shoesは`:center`スタイルをサポートしていません。
|
1379
1836
|
|
1380
|
-
=== rect(top, left, width, height, corners = 0) » Shoes::
|
1837
|
+
=== rect(top, left, width, height, corners = 0) » Shoes::Rect ===
|
1381
1838
|
|
1382
|
-
座標(left, top)からwidth x height
|
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
|
1852
|
+
上記のサンプルは角の周囲に10ピクセルのマージンを残して、その親の箱の範囲を塗りつぶす
|
1853
|
+
長方形を描きます。デフォルトで親の箱を塗りつぶした長方形のためには`background`も
|
1854
|
+
見てください。
|
1394
1855
|
|
1395
|
-
=== rect(styles) » Shoes::
|
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
|
-
|
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)
|
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
|
1895
|
+
fill yellow
|
1434
1896
|
shape do
|
1435
|
-
move_to
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
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
|
-
|
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::
|
1915
|
+
=== star(left, top, points = 10, outer = 100.0, inner = 50.0) » Shoes::Star ===
|
1447
1916
|
|
1448
|
-
|
1917
|
+
描く線の色や塗りつぶす色を利用して星を描きます。
|
1918
|
+
星は(left, top)の座標を中心点として`頂点(points)`の数とともに配置されます。
|
1919
|
+
`outer`の幅は星の全半径をを定義します;`inner`の幅は頂点の始まる星の中央の半径を
|
1920
|
+
指定します。
|
1449
1921
|
|
1450
1922
|
=== stroke(pattern) » pattern ===
|
1451
1923
|
|
1452
|
-
スロットのアクティブな線の色を設定します。`pattern
|
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
|
-
|
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
|
-
|
1943
|
+
スロットの内部で描かれるすべての線のサイズを設定します。
|
1944
|
+
`stroke`メソッドが線の色を変更する一方、`strokewidth`メソッドは線のサイズを
|
1945
|
+
ピクセルで変更します。`strokewidth(4)`を呼ぶことにより4ピクセルの太さで線を描きます。
|
1469
1946
|
|
1470
1947
|
=== transform(:center or :corner) » self ===
|
1471
1948
|
|
1472
|
-
(`skew`や`rotate
|
1949
|
+
(`skew`や`rotate`のような)変化は形状の中心あたりで実行されるべきですか?
|
1950
|
+
またはその形状の角ですか?Shoesの初期値は`:corner`です。
|
1951
|
+
|
1952
|
+
'''注意:''' Green Shoesは`:transform`メソッドをサポートしていません。
|
1473
1953
|
|
1474
1954
|
=== translate(left, top) » self ===
|
1475
1955
|
|
1476
|
-
|
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
|
1965
|
+
Green Shoesは幅広い種類の要素を持っており、その多くをHTMLからよいところを選んで
|
1966
|
+
採用しています。このページはどのようにしてスロットにそれらの要素を作成するかを記述して
|
1967
|
+
います。それらの要素を配置した後でさらにどのようにして変更したり利用するのかについては、
|
1968
|
+
このマニュアルの要素(Elements)のセクションを見てください。
|
1481
1969
|
|
1482
|
-
=== animate(fps) { |frame| ... } » Shoes::
|
1970
|
+
=== animate(fps) { |frame| ... } » Shoes::Anim ===
|
1483
1971
|
|
1484
|
-
|
1972
|
+
アプリケーションをそのままにして並列で実行するアニメーションタイマーを開始します。
|
1973
|
+
`fps`は秒ごとのフレームの数です。
|
1974
|
+
この数は付属するブロックが1秒に何回呼ばれるのかを決定します。
|
1485
1975
|
|
1486
|
-
このブロックは`frame
|
1976
|
+
このブロックは`frame`の数が与えられます。
|
1977
|
+
`frame`の数はゼロから始まり、そのブロックが何フレームのアニメーションを表示したのかを
|
1978
|
+
教えます。
|
1487
1979
|
|
1488
1980
|
{{{
|
1489
1981
|
#!ruby
|
1490
1982
|
Shoes.app do
|
1491
|
-
|
1492
|
-
animate
|
1493
|
-
|
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
|
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
|
-
'''注意してください:''' 背景は実際には要素であり、スタイルではありません。
|
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, :
|
2008
|
+
background white, width: 50
|
1511
2009
|
end
|
1512
2010
|
}}}
|
1513
2011
|
|
1514
|
-
|
2012
|
+
上記の例は二つの背景を塗ります。
|
2013
|
+
まず、黒い背景がアプリケーションの表面のエリア全体に塗られます。
|
2014
|
+
そして、50ピクセルの白い縞が左側にそって塗られます。
|
1515
2015
|
|
1516
2016
|
=== banner(text) » Shoes::Banner ===
|
1517
2017
|
|
1518
|
-
バナー(Banner)のテキストブロックを作成します。
|
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
|
-
'''注意してください:''' 背景のように、枠線は実際には要素であり、スタイルではありません。
|
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)テキストブロックを作成します。
|
2040
|
+
キャプション(Caption)テキストブロックを作成します。
|
2041
|
+
Green Shoesは14ピクセルの大きさにこのテキストを整形します。
|
1534
2042
|
|
1535
2043
|
=== check() » Shoes::Check ===
|
1536
2044
|
|
1537
2045
|
チェックボックスを追加します。
|
1538
2046
|
|
1539
|
-
=== code(text) »
|
2047
|
+
=== code(text) » String ===
|
1540
2048
|
|
1541
|
-
コード(Code
|
2049
|
+
コード(Code)のテキストの一部を作成します。
|
2050
|
+
このテキストはデフォルトで等幅フォントになります。
|
1542
2051
|
|
1543
|
-
=== del(text) »
|
2052
|
+
=== del(text) » String ===
|
1544
2053
|
|
1545
|
-
デフォルトで中央に1
|
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",
|
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) »
|
2092
|
+
=== em(text) » String ===
|
1573
2093
|
|
1574
|
-
Em("emphasized"
|
2094
|
+
Em("emphasized"の省略形)テキストの一部を作成し、これはデフォルトでイタリック体で
|
2095
|
+
整形されます。
|
1575
2096
|
|
1576
|
-
=== every(seconds) { |count| ... } » Shoes::
|
2097
|
+
=== every(seconds) { |count| ... } » Shoes::Anim ===
|
1577
2098
|
|
1578
|
-
`
|
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の要素を配置できる目に見えない箱(または"スロット"
|
2106
|
+
フロー(flow)はGreen Shoesの要素を配置できる目に見えない箱(または"スロット")です。
|
2107
|
+
フローとスタックのどちらもメインの[[Slots]]のページでとても詳細に説明されます。
|
1583
2108
|
|
1584
|
-
フローは要素を水平にまとめます。ものを垂直に積み重ねたままにするために
|
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
|
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) »
|
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)のテキストブロックを作成します。
|
2141
|
+
題名(Inscription)のテキストブロックを作成します。
|
2142
|
+
Green Shoesは10ピクセルの大きさにこのテキストを整形します。
|
1607
2143
|
|
1608
2144
|
=== link(text, :click => proc or string) » Shoes::Link ===
|
1609
2145
|
|
1610
|
-
一本の下線を持ち線の色を#06E
|
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
|
-
|
1620
|
-
|
1621
|
-
|
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
|
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
|
-
|
2182
|
+
12ピクセルの大きさに整形する、Para("paragraph"の省略形)テキストブロックを作成します。
|
1635
2183
|
|
1636
2184
|
=== radio(group name: a string or symbol) » Shoes::Radio ===
|
1637
2185
|
|
1638
|
-
ラジオボタンを追加します。`グループ名(group name
|
2186
|
+
ラジオボタンを追加します。`グループ名(group name)`が与えられたら、ラジオボタンは
|
2187
|
+
グループの一部だとみなされます。同じグループのラジオボタンのうちで、
|
2188
|
+
1つだけをクリックすることができます。(もしグループ名が与えられなければ、そのラジオボタンは
|
2189
|
+
同じスロットの他のすべてのラジオボタンとグループ化されます)
|
2190
|
+
|
2191
|
+
=== span(text) » String ===
|
1639
2192
|
|
1640
|
-
|
2193
|
+
デフォルトでスタイル付けされていない、Spanテキストの一部を作成します。
|
1641
2194
|
|
1642
|
-
|
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
|
-
|
2204
|
+
新しいスタックを作成します。スタックはスロットの一種です。
|
2205
|
+
(スタックとフローの完全な説明はメインの[[Slots]]のページを見てください。)
|
1647
2206
|
|
1648
|
-
要するに、スタックは要素を配置するための目に見えない箱("スロット"
|
2207
|
+
要するに、スタックは要素を配置するための目に見えない箱("スロット")です。
|
2208
|
+
スタックにボタンや画像などを追加して、それらは垂直に積み上げられます。
|
2209
|
+
そう、それらは重なります。
|
1649
2210
|
|
1650
|
-
=== strong(text) »
|
2211
|
+
=== strong(text) » String ===
|
1651
2212
|
|
1652
2213
|
デフォルトで太字に整形された、Strongテキストの一部を作成します。
|
1653
2214
|
|
1654
|
-
=== sub(text) »
|
2215
|
+
=== sub(text) » String ===
|
1655
2216
|
|
1656
|
-
デフォルトでテキストは10ピクセル(位置を)下げられx-smallフォントに整形された、
|
2217
|
+
デフォルトでテキストは10ピクセル(位置を)下げられx-smallフォントに整形された、
|
2218
|
+
Sub("subscript"の省略形)テキストの一部を作成します。
|
1657
2219
|
|
1658
2220
|
=== subtitle(text) » Shoes::Subtitle ===
|
1659
2221
|
|
1660
|
-
サブタイトル(Subtitle)テキストブロックを作成します。
|
2222
|
+
サブタイトル(Subtitle)テキストブロックを作成します。
|
2223
|
+
26ピクセルの大きさにこのテキストを整形します。
|
1661
2224
|
|
1662
|
-
=== sup(text) »
|
2225
|
+
=== sup(text) » String ===
|
1663
2226
|
|
1664
|
-
デフォルトでテキストは10ピクセル(位置を)上げられx-smallフォントに整形された、
|
2227
|
+
デフォルトでテキストは10ピクセル(位置を)上げられx-smallフォントに整形された、
|
2228
|
+
Sup("superscript"の省略形)テキストの一部を作成します。
|
1665
2229
|
|
1666
2230
|
=== tagline(text) » Shoes::Tagline ===
|
1667
2231
|
|
1668
|
-
タグライン(Tagline
|
2232
|
+
タグライン(Tagline)テキストブロックを作成します。このテキストを18ピクセルの大きさに整形します。
|
1669
2233
|
|
1670
|
-
=== timer(seconds) { ... } »
|
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
|
1680
|
-
alert
|
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
|
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
|
-
|
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 :
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
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
|
2287
|
+
マウスイベントは`motion`、`click`、`hover`そして`leave`を含みます。
|
2288
|
+
キーボードのタイピングは`keypress`イベントによって表されます。
|
2289
|
+
そして`start`や`finish`イベントはキャンバスを開始するときや破棄されたときを指し示します。
|
1715
2290
|
|
1716
|
-
|
2291
|
+
では、マウスでスロットの上をフロートするときに背景を変更したいとしましょう。
|
2292
|
+
スロットの内部にマウスがくるときに背景を変更するためには`hover`イベントを使います。
|
2293
|
+
そして、マウスがフロートして離れるときに戻すには`leave`を使います。
|
1717
2294
|
|
1718
2295
|
{{{
|
1719
2296
|
#!ruby
|
1720
2297
|
Shoes.app do
|
1721
|
-
s = stack :
|
2298
|
+
s = stack width: 200, height: 200 do
|
1722
2299
|
background red
|
1723
|
-
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
|
1728
|
-
|
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
|
2312
|
+
マウスボタンがクリックされたときにはclickブロックが呼ばれます。
|
2313
|
+
`button`はマウスボタンのどれが押されたかの数です。
|
2314
|
+
`left`や`top`はどこがクリックされたかのマウスの座標です。
|
1736
2315
|
|
1737
2316
|
マウスのクリックを離した瞬間をとらえるには、[[Events.release]]イベントを見てください。
|
1738
2317
|
|
1739
2318
|
=== finish { |self| ... } » self ===
|
1740
2319
|
|
1741
|
-
スロットが取り除かれたときは、finishイベントが発生します。
|
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
|
-
|
2334
|
+
キー(またはキーの組み合わせ)がいつ押されても、そのブロックは呼ばれます。
|
2335
|
+
そのブロックにはキーの性質を表す文字列である`key`を送られます。
|
1753
2336
|
|
1754
2337
|
そして、例えば、`Shift-a`が押されたなら、そのブロックは`"A"`の文字列を得ます。
|
2338
|
+
また、F1が押されたなら、 `F1`の文字列を受けとります。
|
1755
2339
|
|
1756
|
-
|
1757
|
-
|
1758
|
-
`
|
2340
|
+
`"Control_L"`, `"Shift_L"`, `"Alt_L"`は左サイドに位置する修飾キーです。
|
2341
|
+
もし`Shift-Control-Alt-PgUp`が押されたなら、得られる文字列は、以下の順番で現れます:
|
2342
|
+
`"Shift_L"`, `"Control_L"`, `"Alt_L"`, `"Page_Up"`
|
1759
2343
|
|
1760
|
-
|
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
|
-
|
2352
|
+
info = para "NO KEY is PRESSED."
|
1766
2353
|
keypress do |k|
|
1767
|
-
|
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
|
2361
|
+
スロットからマウスカーソルが出て行くときleaveイベントが発生します。
|
2362
|
+
その瞬間すでにマウスカーソルはスロットの端の中にはありません。
|
2363
|
+
leaveイベントが発生するとき、`self`とともにブロックが呼ばれ、そのスロットオブジェクトは
|
2364
|
+
取り残されます。
|
1784
2365
|
|
1785
2366
|
スロットにマウスが入ることを見つけたいなら[[Events.hover]]も見てください。
|
1786
2367
|
|
1787
2368
|
=== motion { |left, top| ... } » self ===
|
1788
2369
|
|
1789
|
-
|
2370
|
+
マウスがスロットの内部を移動するたびにモーションのブロックは呼ばれます。
|
2371
|
+
ブロックはカーソルの`left`や`top`の座標を渡します。
|
1790
2372
|
|
1791
2373
|
{{{
|
1792
2374
|
#!ruby
|
1793
|
-
Shoes.app :
|
2375
|
+
Shoes.app width: 200, height: 200 do
|
1794
2376
|
background black
|
1795
2377
|
fill white
|
1796
|
-
|
1797
|
-
|
2378
|
+
circ = oval 0, 0, 100, 100
|
2379
|
+
|
1798
2380
|
motion do |top, left|
|
1799
|
-
|
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
|
2388
|
+
マウスがアンクリック(マウスアップ)のときにreleaseのブロックは実行されます。
|
2389
|
+
それは指が持ち上げられたときです。`button`は押し下げられたボタンに対応する数です。
|
2390
|
+
`left`や`top`はボタンが離されたときのマウスのの座標です。
|
1807
2391
|
|
1808
2392
|
実際のマウスクリックを捕まえるには、[[Events.click]]イベントを利用してください。
|
1809
2393
|
|
1810
2394
|
=== start { |self| ... } » self ===
|
1811
2395
|
|
1812
|
-
初めてスロットが描かれるとき、スタート(start
|
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
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
2484
|
+
stack width: 150 do
|
2485
|
+
background yellow
|
2486
|
+
para "Now that's precision."
|
2487
|
+
end
|
1891
2488
|
end
|
1892
2489
|
}}}
|
1893
2490
|
|
1894
|
-
|
2491
|
+
それぞれのスタイルの設定は、詳細な設定を手に入れるために利用することのできるメソッドも
|
2492
|
+
持っています。(例えば、`width`メソッドはスロットの幅をピクセルで返します。)
|
1895
2493
|
|
1896
2494
|
=== displace(left: a number, top: a number) » self ===
|
1897
2495
|
|
1898
|
-
:displace_leftと:displace_top
|
2496
|
+
:displace_leftと:displace_topスタイルの設定のためのショートカットメソッドです。
|
2497
|
+
置き換えはレイアウトを変更しないでスロットを移動する便利な方法です。
|
2498
|
+
実際には、`top`と`left`メソッドは置き換えを全く報告しません。
|
2499
|
+
そのため、通常、置き換えは一時的なアニメーションのためにあります。
|
2500
|
+
例えば、適当な位置にボタンを少し移動するなど。
|
1899
2501
|
|
1900
|
-
`left`と`top`の数は`displace`に送られ、スロット自身の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
|
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
|
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
|
-
|
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
|
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
|
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
|
2600
|
+
`height`と`width`などのメソッドはスロットの本当のサイズをピクセルで返しますが、
|
2601
|
+
`style[:height]`または`style[:width]`を利用することで初めに要求されたサイズを
|
2602
|
+
得ることができます。
|
1971
2603
|
|
1972
2604
|
{{{
|
1973
2605
|
#!ruby
|
1974
2606
|
Shoes.app do
|
1975
|
-
|
1976
|
-
para
|
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
|
-
|
2613
|
+
この例では、このスタックの下のパラグラフは最初に"1.0"の文字列を表示しますが、ボタンを
|
2614
|
+
クリックした後は"600"の文字列を表示するでしょう。
|
1981
2615
|
|
1982
2616
|
=== style(styles) » styles ===
|
1983
2617
|
|
1984
|
-
|
2618
|
+
ハッシュのスタイル設定を使ってスロットを修正してください。
|
2619
|
+
このページのどんなメソッドでも(もちろん、このメソッドは除いて)スタイルの設定に利用できます。
|
2620
|
+
そして、例えば、`width`メソッドがあり、このように`width`スタイルもあります。
|
1985
2621
|
|
1986
2622
|
{{{
|
1987
2623
|
#!ruby
|
1988
2624
|
Shoes.app do
|
1989
|
-
|
1990
|
-
|
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
|
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
|
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
|
2685
|
+
またShoesは7つの他の種類の要素を持っています:背景(Background)、ボーダー(Border)、
|
2686
|
+
画像(Image)、形状(Shape)、テキストブロック(TextBlock)、タイマー(Animate)、
|
2687
|
+
そしてビデオ(Video)。それらすべてはどんなオペレーティングシステムでも同じような見え方と
|
2688
|
+
動きになるべきです。
|
2027
2689
|
|
2028
|
-
|
2690
|
+
いったん要素を生成した後でも、それを変更したくなるでしょう。それを動かしたり隠したり
|
2691
|
+
またはそれを取り除くために。それらの種類のことを行うために、このセクションのコマンドを
|
2692
|
+
利用するでしょう。
|
2693
|
+
(特にどんな要素上でも利用できるコマンドの[[Common Common Methods]]セクションを
|
2694
|
+
確認してください。)
|
2029
2695
|
|
2030
|
-
そして、例として、PNGをスクリーンを配置するためにスロットの`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
|
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:
|
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 :
|
2049
|
-
|
2050
|
-
@
|
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
|
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
|
-
|
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
|
-
|
2760
|
+
他の2つのボタンは動かずにじっとしていますが、2番目のボタンが飛び跳ねることに
|
2761
|
+
注目してください。この状況で普通の`move`を使うなら、2番目のボタンはレイアウトから
|
2762
|
+
取り除かれて、2番目のボタンが全くそこにないかのように振る舞うでしょう。
|
2763
|
+
([[Common.move]]の例を見てください。)
|
2764
|
+
|
2765
|
+
'''特に注意してください:'''表示される要素の座標を得るために`left`と`top`メソッドを
|
2766
|
+
利用するなら、通常の座標を得るだけです。それは置き換えが行われていないかのようです。
|
2767
|
+
置き換えは即座のアニメーションだけを目的とします。
|
2081
2768
|
|
2082
|
-
'''
|
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
|
-
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2114
|
-
|
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
|
-
|
2812
|
+
3番目のボタンがその位置にスライドすることを許しており、2番目のボタンは特定の場所に
|
2813
|
+
動かされてします。要素を別の場所に変更しないで移動したいなら、
|
2814
|
+
[[Common.displace]]メソッドを見てください。
|
2122
2815
|
|
2123
2816
|
=== parent() » a Shoes::Stack or Shoes::Flow ===
|
2124
2817
|
|
2125
|
-
その要素のコンテナのオブジェクトを得ます。反対のことを行うためにはスロットの
|
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
|
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",
|
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
|
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
|
-
|
2864
|
+
要素の全体の大きさの幅をピクセルで得ます。
|
2865
|
+
このメソッドはいつも正確なピクセルサイズを返します。
|
2866
|
+
画像の場合は、画像の全幅ではなく、表示されているサイズだけです。
|
2867
|
+
詳しくは[[Common.height]]メソッドも見てください。
|
2165
2868
|
|
2166
|
-
また、120ピクセルの幅のスタック内に
|
2869
|
+
また、120ピクセルの幅のスタック内に1.0の幅の要素を作成したなら、`120`が返されます。
|
2870
|
+
`style[:width]`を呼んだなら、`120`を得ます。
|
2167
2871
|
|
2168
2872
|
{{{
|
2169
2873
|
#!ruby
|
2170
2874
|
Shoes.app do
|
2171
|
-
stack :
|
2172
|
-
@b = button "Click me", :
|
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] =
|
2878
|
+
"button.style[:width] = " +
|
2879
|
+
"#{@b.style[:width]}"
|
2175
2880
|
end
|
2176
2881
|
end
|
2177
2882
|
end
|
2178
2883
|
}}}
|
2179
2884
|
|
2180
|
-
幅を設定するためには、[[Common.style]]
|
2181
|
-
|
2182
|
-
要素の幅を取るには、設定を空にするために`@b.style(:width => nil)`とします
|
2885
|
+
幅を設定するためには、[[Common.style]]メソッドをもう一度調べる必要があります。
|
2886
|
+
そして、150ピクセルの幅にボタンを設定するには:`@b.style(width: 150)`。
|
2183
2887
|
|
2184
2888
|
== Background ==
|
2185
2889
|
|
2186
|
-
|
2890
|
+
背景はスロット全体に渡って塗られた、グラデーションまたは画像の色です。
|
2891
|
+
背景と枠線はShoes::Patternの種類の一つです。!{:margin_left => 100}man-ele-background.png!
|
2187
2892
|
|
2188
|
-
''背景(background)''
|
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, :
|
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,
|
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
|
-
|
2943
|
+
枠線はスロットの周囲の線に塗られた、色やグラデーションや画像です。
|
2944
|
+
前のセクションの背景(background)と同様に、枠線(Border)はShoes::Patternの一種です。
|
2945
|
+
!{:margin_left => 100}man-ele-border.png!
|
2230
2946
|
|
2231
|
-
はじめに、すべての枠線はスロットの周囲の外側ではなく、'''内側'''
|
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 :
|
2241
|
-
border black, :
|
2242
|
-
para "=^.^=",
|
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 :
|
2253
|
-
border black, :
|
2254
|
-
stack :
|
2255
|
-
para "=^.^=",
|
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
|
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
|
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
|
3035
|
+
@b1.click{para "Well okay then."}
|
2306
3036
|
@b2 = button "Are you sure?"
|
2307
|
-
@b2.click
|
3037
|
+
@b2.click{para "Your confidence is inspiring."}
|
2308
3038
|
end
|
2309
3039
|
}}}
|
2310
3040
|
|
2311
|
-
|
3041
|
+
見た目は劇的に違いますが、これは同じ動きです。
|
3042
|
+
1つ目の違い:直接ブロックをボタンに取り付けるのではなく、`click`メソッドを通して、
|
3043
|
+
ブロックを後で取り付けています。
|
2312
3044
|
|
2313
|
-
2つ目の違いはボタンには全く関係がありません。Shoes
|
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
|
3054
|
+
ボタンがクリックされたときには、`click`ブロックが呼ばれます。
|
3055
|
+
このブロックは`self`を渡します。意味すること:どちらのボタンでクリックされたか。
|
2320
3056
|
|
2321
3057
|
=== focus() » self ===
|
2322
3058
|
|
2323
|
-
|
3059
|
+
ボタンのフォーカスを移動します。
|
3060
|
+
そのボタンはハイライトされ、ユーザがエンターキーを打てば、クリックされます。
|
2324
3061
|
|
2325
3062
|
== Check ==
|
2326
3063
|
|
2327
|
-
|
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
|
2336
|
-
|
2337
|
-
|
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
|
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 =
|
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
|
-
|
3125
|
+
その箱がチェックされているかどうかを返します。
|
3126
|
+
そして、`true`の意味は"はい、この箱はチェックされています!"です。
|
2373
3127
|
|
2374
3128
|
=== checked = true or false ===
|
2375
3129
|
|
2376
|
-
|
3130
|
+
チェックボックスをマークしたりマークを外したりします。
|
3131
|
+
例えば、`checked = false`を利用して、箱のチェックを外します。
|
2377
3132
|
|
2378
3133
|
=== click() { |self| ... } » self ===
|
2379
3134
|
|
2380
|
-
チェックボックスがクリックされたときに、その`click
|
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)は、テキストを入力するための幅広い長方形の箱です。
|
3148
|
+
エディットボックス(Edit box)は、テキストを入力するための幅広い長方形の箱です。
|
3149
|
+
webでは、それらはテキストエリアと呼ばれます。それらは長い記述を入力するための
|
3150
|
+
マルチラインエディットボックスです。エッセイでさえ書けます!
|
3151
|
+
!{:margin_left => 100}man-ele-editbox.png!
|
2391
3152
|
|
2392
|
-
スタイルを何も設定しなければ、エディットボックスは200ピクセルx108
|
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 :
|
3160
|
+
edit_box width: 100, height: 100
|
2399
3161
|
end
|
2400
3162
|
}}}
|
2401
3163
|
|
2402
|
-
([[Button]]や[[Check]]などの)他のコントロールはクリックイベントだけを持っていますが、
|
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 =
|
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
|
-
エディットボックスの更なるメソッドは以下に一覧にしますが、すべての要素が応答できる、
|
3182
|
+
エディットボックスの更なるメソッドは以下に一覧にしますが、すべての要素が応答できる、
|
3183
|
+
[[Common]]メソッドの一覧も見てください。
|
2418
3184
|
|
2419
3185
|
=== change() { |self| ... } » self ===
|
2420
3186
|
|
2421
|
-
エディットボックスに文字が追加されたり取り除かれるたびに、`chenage
|
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
|
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 :
|
3219
|
+
edit_line width: 400
|
2447
3220
|
end
|
2448
3221
|
end
|
2449
3222
|
}}}
|
2450
3223
|
|
2451
|
-
`:width`と`:height
|
3224
|
+
`:width`と`:height`の両方のスタイルを設定することによりサイズを変更することができます。
|
3225
|
+
しかしながら、高さはフォントに合わせて調整されるため、一般的には`:width`だけの
|
3226
|
+
スタイルを設定します。(そして、現在のバージョンのGreen Shoesでは、エディットラインと
|
3227
|
+
エディットボックスフォントはどうやっても変更できません。)
|
2452
3228
|
|
2453
|
-
エディットラインにブロックが与えられたら、`change`イベントを受けとります。
|
3229
|
+
エディットラインにブロックが与えられたら、`change`イベントを受けとります。
|
3230
|
+
changeブロックを利用した例については[[EditBox]]のページを確認してください。
|
3231
|
+
実際には、そのエディットボックスはエディットラインとすべて同じメソッドを持ちます。
|
3232
|
+
すべての要素が応答できる、[[Common]]メソッドの一覧も見てください。
|
2454
3233
|
|
2455
3234
|
=== change() { |self| ... } » self ===
|
2456
3235
|
|
2457
|
-
エディットラインに文字が追加されたり取り除かれるたびに、`chenage
|
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フォーマットの画像ファイルです。
|
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
|
3264
|
+
image File.join DIR,
|
3265
|
+
"../static/shoes-manual-apps.png"
|
2482
3266
|
end
|
2483
3267
|
}}}
|
2484
3268
|
|
2485
|
-
Shoes
|
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://
|
3278
|
+
image "http://is.gd/c0mBtb"
|
2493
3279
|
end
|
2494
3280
|
}}}
|
2495
3281
|
|
2496
|
-
web
|
3282
|
+
webから画像がロードされたとき、それはハードディスクドライブとメモリの両方にキャッシュ
|
3283
|
+
されます。これは画像が変更されなければ再度ダウンロードをすることを防止します。
|
3284
|
+
(不思議に思う場合:正にブラウザが行うetagのようにShoesは変更時間の軌跡を
|
3285
|
+
保持します。)
|
3286
|
+
|
3287
|
+
'''注意:''' Green Shoesは、Red Shoesのようなハードドライブキャッシュ管理機能を
|
3288
|
+
サポートしていません。
|
2497
3289
|
|
2498
|
-
Shoes
|
3290
|
+
Green Shoesはバックグラウンドでシステムのスレッドを使ってリモートの画像もロードします。
|
3291
|
+
そのため、リモートの画像を利用することはRubyを妨げることはなく、またどんな強烈な
|
3292
|
+
グラフィカルな表示でも進み続けるでしょう。
|
2499
3293
|
|
2500
3294
|
=== full_height() » a number ===
|
2501
3295
|
|
2502
|
-
画像全体のピクセルでの高さです。通常は、ピクセルでの画像の高さを知るために
|
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]]
|
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)"または
|
3318
|
+
リストボックス(List box)(環境によって"コンボボックス(combo box)"または
|
3319
|
+
"ドロップダウンボックス(drop-down box)"または"セレクトボックス(select box)"とも
|
3320
|
+
呼ばれています。)は箱をクリックしたときドロップダウンしてオプションが一覧として表示されます。
|
3321
|
+
!{:margin_left => 100}man-ele-listbox.png!
|
2521
3322
|
|
2522
|
-
|
3323
|
+
リストボックスは配列からオプションを取得します。
|
3324
|
+
配列(リスト)の文字列は、`:items`スタイルに渡されます。
|
2523
3325
|
|
2524
3326
|
{{{
|
2525
3327
|
#!ruby
|
2526
3328
|
Shoes.app do
|
2527
3329
|
para "Choose a fruit:"
|
2528
|
-
list_box :
|
3330
|
+
list_box items: ["Grapes", "Pears", "Apricots"]
|
2529
3331
|
end
|
2530
3332
|
}}}
|
2531
3333
|
|
2532
|
-
そして、リストボックスの基本のサイズは200ピクセルの幅と28
|
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 :
|
2539
|
-
:
|
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
|
3350
|
+
`:width`スタイルに続いて、この例ではもう1つの便利なオプションを利用します。
|
3351
|
+
`:choose`オプションは始めからハイライトされるべきアイテムをリストボックスに教えます。
|
3352
|
+
(箱が作成された後でアイテムをハイライトするには[[ListBox.choose]]メソッドもあります。)
|
2548
3353
|
|
2549
|
-
リストボックスは[[ListBox.change]]
|
3354
|
+
リストボックスは[[ListBox.change]]イベントも持っています。次の例では、リストボックスに
|
3355
|
+
ブロックを取り付けました。いいですか、この`change`ブロックを見てください。
|
3356
|
+
このブロックは誰かが選択されたアイテムを変更するたびに呼ばれます。
|
2550
3357
|
|
2551
|
-
これらは基本的なことです。すべての要素が持っているメソッドの完全な一覧である、
|
3358
|
+
これらは基本的なことです。すべての要素が持っているメソッドの完全な一覧である、
|
3359
|
+
[[Common]]メソッドのページを見てください。
|
2552
3360
|
|
2553
3361
|
=== change() { |self| ... } » self ===
|
2554
3362
|
|
2555
|
-
|
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
|
-
|
3386
|
+
現在リストボックス内でハイライトされて表示されているテキストを含む文字列です。
|
3387
|
+
何も選択されていないなら、`nil`が応答されます。
|
2576
3388
|
|
2577
3389
|
== Progress ==
|
2578
3390
|
|
2579
|
-
プログレスバー(Progress bar
|
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
|
-
|
3399
|
+
'''注意:''' Green Shoesでは、最小サイズが幅150ピクセルです。
|
2582
3400
|
|
2583
3401
|
{{{
|
2584
3402
|
Shoes.app do
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
|
2589
|
-
|
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
|
-
プログレスバーを含む、すべての要素に備え付けられたメソッドの一覧については
|
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
|
3425
|
+
ラジオボタン(Radio button)はクリック可能な円のグループです。
|
3426
|
+
それをマークするには円をクリックしてください。ラジオボタンは1度に1つだけマークできます。
|
3427
|
+
(1度に1つのオプションだけしか選択できないところは、リストボックスに似ています。)
|
3428
|
+
!{:margin_left => 100}man-ele-radio.png!
|
2609
3429
|
|
2610
|
-
|
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
|
2617
|
-
|
2618
|
-
|
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
|
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
|
2632
|
-
|
2633
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
-
|
3673
|
+
animateとeveryは自動的に開始されます。
|
2731
3674
|
|
2732
3675
|
=== start() » self ===
|
2733
3676
|
|
2734
|
-
|
3677
|
+
どちらのタイプのタイマーもそれ自身で自動的に開始されるため、通常はこれは利用する
|
3678
|
+
必要がありません。しかし、[[Timers.stop]]でタイマーを止めて再開したい場合は、
|
3679
|
+
もちろん:これを利用してください!
|
3680
|
+
|
3681
|
+
'''注意:''' Green Shoesは`start`メソッドをサポートしていません。
|
2735
3682
|
|
2736
3683
|
=== stop() » self ===
|
2737
3684
|
|
2738
|
-
|
3685
|
+
animateまたはeveryのループを中断します。
|
2739
3686
|
|
2740
|
-
===
|
3687
|
+
=== pause() » self ===
|
2741
3688
|
|
2742
|
-
|
3689
|
+
animateまたはeveryのループを一時停止します。
|
3690
|
+
アニメーションまたはタイマーが停止されていれば、開始します。
|
3691
|
+
既に実行されていれば、停止します。
|
2743
3692
|
|
2744
3693
|
== Video ==
|
2745
3694
|
|
2746
|
-
Shoesは埋め込みの
|
2747
|
-
|
2748
|
-
|
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
|
-
|
3720
|
+
ビデオフォーマットに加えて、MP3、WAVとOgg Vorbisのような、いくつかの
|
3721
|
+
オーディオフォーマットもサポートされています。
|
2751
3722
|
|
2752
3723
|
=== hide() » self ===
|
2753
3724
|
|
2754
|
-
|
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
|
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
|
3757
|
+
(0.0)から(1.0)の間の10進数の(Floatの)数によるビデオの位置です。
|
3758
|
+
例えば、0.5のFloatの値はビデオの中間の位置を示します。
|
2779
3759
|
|
2780
3760
|
=== position = a decimal ===
|
2781
3761
|
|
2782
|
-
Floatの値を利用してビデオの位置を設定します。
|
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
|
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
|
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
|
-
* [[
|
2824
|
-
* [[http://
|
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
|
+
参照下さい。
|