green_shoes 1.0.303 → 1.0.309
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/green_shoes.rb +1 -0
- data/lib/plugins/video.rb +90 -0
- data/lib/shoes/helper_methods.rb +14 -2
- data/lib/shoes/slot.rb +3 -1
- data/samples/sample58.rb +24 -0
- data/snapshots/sample33.png +0 -0
- data/snapshots/sample46.png +0 -0
- data/snapshots/sample58.png +0 -0
- data/static/manual-en.txt +25 -22
- metadata +8 -5
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.0.
|
|
1
|
+
1.0.309
|
data/lib/green_shoes.rb
CHANGED
|
@@ -60,6 +60,7 @@ require_relative 'plugins/thread'
|
|
|
60
60
|
require_relative 'plugins/httpd'
|
|
61
61
|
require_relative 'plugins/treeview'
|
|
62
62
|
require_relative 'plugins/code_box'
|
|
63
|
+
require_relative 'plugins/video'
|
|
63
64
|
|
|
64
65
|
autoload :ChipMunk, File.join(Shoes::DIR, 'ext/chipmunk')
|
|
65
66
|
autoload :Bloops, File.join(Shoes::DIR, 'ext/bloops')
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
class Shoes
|
|
2
|
+
class Video
|
|
3
|
+
def initialize args
|
|
4
|
+
@initials = args
|
|
5
|
+
args.each do |k, v|
|
|
6
|
+
instance_variable_set "@#{k}", v
|
|
7
|
+
end
|
|
8
|
+
Video.class_eval do
|
|
9
|
+
attr_accessor *args.keys
|
|
10
|
+
end
|
|
11
|
+
args[:real].bus.add_watch do |b, message|
|
|
12
|
+
case message.type
|
|
13
|
+
when Gst::Message::EOS
|
|
14
|
+
@eos = true; pause
|
|
15
|
+
when Gst::Message::WARNING, Gst::Message::ERROR
|
|
16
|
+
p message.parse
|
|
17
|
+
else
|
|
18
|
+
#p message.type
|
|
19
|
+
end
|
|
20
|
+
true
|
|
21
|
+
end
|
|
22
|
+
@app.win.signal_connect('destroy'){@real.stop}
|
|
23
|
+
@stime = 0
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def playing?
|
|
27
|
+
@eos ? false : @playing
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def play
|
|
31
|
+
if @playing
|
|
32
|
+
self.time, @eos = 0, nil
|
|
33
|
+
else
|
|
34
|
+
@stime = clock_time - seek_time
|
|
35
|
+
@ready = @playing = true
|
|
36
|
+
(self.time, @eos = 0, nil) if @eos
|
|
37
|
+
end
|
|
38
|
+
@real.play
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def pause
|
|
42
|
+
if @playing
|
|
43
|
+
@real.pause
|
|
44
|
+
@stime = clock_time - @stime
|
|
45
|
+
@playing = false
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def stop
|
|
50
|
+
@eos = true
|
|
51
|
+
@real.stop
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def time
|
|
55
|
+
seek_time / 1_000_000
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def time=(ms)
|
|
59
|
+
if @ready
|
|
60
|
+
t = ms * 1_000_000
|
|
61
|
+
e = Gst::EventSeek.new 1.0, Gst::Format::TIME, Gst::Seek::FLAG_FLUSH,
|
|
62
|
+
Gst::SeekType::SET, t, Gst::SeekType::NONE, Gst::ClockTime::NONE
|
|
63
|
+
@real.send_event e
|
|
64
|
+
@stime = @playing ? clock_time - t : t
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def seek_time
|
|
69
|
+
@playing ? clock_time - @stime : @stime
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def clock_time
|
|
73
|
+
@real.clock ? @real.clock.time : 0
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
class Shoes
|
|
79
|
+
class App
|
|
80
|
+
def video uri
|
|
81
|
+
args = {}
|
|
82
|
+
uri = File.join('file://', uri.gsub("\\", '/').sub(':', '')) unless uri =~ /^(http|https|file):\/\//
|
|
83
|
+
require 'gst'
|
|
84
|
+
v = Gst::ElementFactory.make 'playbin2'
|
|
85
|
+
v.uri = uri
|
|
86
|
+
args[:real], args[:app] = v, self
|
|
87
|
+
Video.new args
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
data/lib/shoes/helper_methods.rb
CHANGED
|
@@ -64,14 +64,24 @@ class Shoes
|
|
|
64
64
|
def basic_attributes args={}
|
|
65
65
|
default = BASIC_ATTRIBUTES_DEFAULT
|
|
66
66
|
default.merge!({nocontrol: true}) if @nolayout
|
|
67
|
+
replace_string_to_float args
|
|
67
68
|
default.merge args
|
|
68
69
|
end
|
|
69
70
|
|
|
70
71
|
def slot_attributes args={}
|
|
71
72
|
default = SLOT_ATTRIBUTES_DEFAULT
|
|
73
|
+
replace_string_to_float args
|
|
72
74
|
default.merge args
|
|
73
75
|
end
|
|
74
76
|
|
|
77
|
+
def replace_string_to_float args={}
|
|
78
|
+
[:width, :height, :left, :top].each do |k|
|
|
79
|
+
if args[k].is_a? String
|
|
80
|
+
args[k] = args[k].include?('%') ? args[k].to_f / 100 : args[k].to_i
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
75
85
|
def create_tmp_png surface
|
|
76
86
|
surface.write_to_png TMP_PNG_FILE
|
|
77
87
|
Gtk::Image.new TMP_PNG_FILE
|
|
@@ -165,9 +175,11 @@ class Shoes
|
|
|
165
175
|
next
|
|
166
176
|
end
|
|
167
177
|
tmp = max
|
|
168
|
-
max = ele.positioning x, y, max
|
|
178
|
+
max, flag = ele.positioning x, y, max
|
|
169
179
|
x, y = ele.left + ele.width, ele.top + ele.height
|
|
170
|
-
|
|
180
|
+
unless max == tmp
|
|
181
|
+
slot_height = flag ? [slot_height, y].max : slot_height + max.height
|
|
182
|
+
end
|
|
171
183
|
end
|
|
172
184
|
slot_height
|
|
173
185
|
end
|
data/lib/shoes/slot.rb
CHANGED
|
@@ -58,10 +58,12 @@ class Shoes
|
|
|
58
58
|
move3 x + parent.margin_left, max.top + parent.margin_top
|
|
59
59
|
@height = Shoes.contents_alignment self
|
|
60
60
|
max = self if max.height < @height
|
|
61
|
+
flag = true
|
|
61
62
|
else
|
|
62
63
|
move3 parent.left + parent.margin_left, max.top + max.height + parent.margin_top
|
|
63
64
|
@height = Shoes.contents_alignment self
|
|
64
65
|
max = self
|
|
66
|
+
flag = false
|
|
65
67
|
end
|
|
66
68
|
case @initials[:height]
|
|
67
69
|
when 0
|
|
@@ -71,7 +73,7 @@ class Shoes
|
|
|
71
73
|
max.height = @height = @initials[:height]
|
|
72
74
|
end
|
|
73
75
|
contents.each &:fix_size
|
|
74
|
-
max
|
|
76
|
+
return max, flag
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def fix_size; end
|
data/samples/sample58.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require '../lib/green_shoes'
|
|
2
|
+
|
|
3
|
+
Shoes.app width: 300, height: 100, title: 'Teeny-weeny MP3 player' do
|
|
4
|
+
space = ' '
|
|
5
|
+
background gold..cyan, angle: 30
|
|
6
|
+
song = para 'song.mp3', stroke: firebrick, left: 0, top: 70
|
|
7
|
+
file = 'https://github.com/ashbb/teeny-weeny_mp3_player/raw/master/samples/song.mp3'
|
|
8
|
+
v = video file
|
|
9
|
+
|
|
10
|
+
para link('select'){
|
|
11
|
+
unless v.playing?
|
|
12
|
+
f = ask_open_file
|
|
13
|
+
file = f if f
|
|
14
|
+
v = video file
|
|
15
|
+
song.text = fg(file.gsub("\\", '/').split('/').last, firebrick)
|
|
16
|
+
end
|
|
17
|
+
}, space, link('play'){v.play}, space, link('pause'){v.pause}, space, link('stop'){v.stop}
|
|
18
|
+
|
|
19
|
+
img = image Dir.pwd + '/loogink.png'
|
|
20
|
+
n = 0
|
|
21
|
+
animate 5 do
|
|
22
|
+
img.move (n+=1) % 300 , 40 - rand(10) if file && v.playing?
|
|
23
|
+
end
|
|
24
|
+
end
|
data/snapshots/sample33.png
CHANGED
|
Binary file
|
data/snapshots/sample46.png
CHANGED
|
Binary file
|
|
Binary file
|
data/static/manual-en.txt
CHANGED
|
@@ -347,7 +347,7 @@ differently. To be sure that the end of the slot is chopped off perfectly, the
|
|
|
347
347
|
slot becomes a '''nested window'''. A new layer is created by the operating
|
|
348
348
|
system to keep the slot in a fixed square.
|
|
349
349
|
|
|
350
|
-
|
|
350
|
+
One difference between normal slots and nested window slots is that the latter
|
|
351
351
|
can have scrollbars.
|
|
352
352
|
|
|
353
353
|
{{{
|
|
@@ -365,7 +365,7 @@ These nested windows require more memory. They tax the application a bit more.
|
|
|
365
365
|
So if you're experiencing some slowness with hundreds of fixed-height slots,
|
|
366
366
|
try a different approach.
|
|
367
367
|
|
|
368
|
-
'''Note'''
|
|
368
|
+
'''Note:''' Fixed height magic (the slot becomes a nested window) is not implemented
|
|
369
369
|
in Green Shoes so far. Scrollbar will appear automatically but at main window only.
|
|
370
370
|
|
|
371
371
|
{{{
|
|
@@ -441,7 +441,7 @@ The point is: it's easy to group shapes together into image or shape blocks, so
|
|
|
441
441
|
give it a try if you're looking to gain some speed. Shape blocks particularly
|
|
442
442
|
will save you some memory and speed.
|
|
443
443
|
|
|
444
|
-
'''
|
|
444
|
+
''Note:'' Green Shoes doesn't support this magic (grouping shapes together
|
|
445
445
|
into image or shape blocks) so far.
|
|
446
446
|
|
|
447
447
|
==== UTF-8 Everywhere ====
|
|
@@ -1023,7 +1023,7 @@ query google's search engine.
|
|
|
1023
1023
|
As you can see from the above example, Green Shoes includes the Hpricot
|
|
1024
1024
|
library for parsing HTML.
|
|
1025
1025
|
|
|
1026
|
-
'''Note'''
|
|
1026
|
+
'''Note:''' Windows platform only so far.
|
|
1027
1027
|
|
|
1028
1028
|
=== location() » a string ===
|
|
1029
1029
|
|
|
@@ -2319,9 +2319,7 @@ Creates a Title text block. Green Shoes styles these elements to 34 pixels high
|
|
|
2319
2319
|
|
|
2320
2320
|
=== video(path or url) » Shoes::Video ===
|
|
2321
2321
|
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
'''Note:''' Green Shoes doesn't support `video` method.
|
|
2322
|
+
Play some audio files.
|
|
2325
2323
|
|
|
2326
2324
|
=== window(styles) { ... } » Shoes::App ===
|
|
2327
2325
|
|
|
@@ -2805,8 +2803,6 @@ For specific commands, see the other links to the left in the Elements section.
|
|
|
2805
2803
|
Like if you want to pause or play a video file, check the [[Video]] section,
|
|
2806
2804
|
since pausing and playing is peculiar to videos. No sense pausing a button.
|
|
2807
2805
|
|
|
2808
|
-
'''Note:''' Green Shoes doesn't support `video` method.
|
|
2809
|
-
|
|
2810
2806
|
=== displace(left: a number, top: a number) » self ===
|
|
2811
2807
|
|
|
2812
2808
|
Displacing an element moves it. But without changing the layout around it.
|
|
@@ -3779,20 +3775,11 @@ already running, it is stopped.
|
|
|
3779
3775
|
|
|
3780
3776
|
== Video ==
|
|
3781
3777
|
|
|
3782
|
-
Shoes
|
|
3783
|
-
|
|
3784
|
-
|
|
3785
|
-
setup a Shoes::Video object.
|
|
3786
|
-
|
|
3787
|
-
'''Note:''' Green Shoes doesn't support any video formats. !{:margin_left => 100}man-ele-video.png!
|
|
3778
|
+
Green Shoes is trying to support embedding of MP4 video format with Ruby/GStreamer.
|
|
3779
|
+
But for now, not available any video formats. Just available some audio formats,
|
|
3780
|
+
such as MP3 and Ogg Vorbis.
|
|
3788
3781
|
|
|
3789
|
-
|
|
3790
|
-
MP3, WAV and Ogg Vorbis.
|
|
3791
|
-
|
|
3792
|
-
Video support is optional in Shoes and some builds do not support video. For
|
|
3793
|
-
example, video support is unavailable for PowerPC. When you download Shoes, the
|
|
3794
|
-
build for your platform will be marked `novideo` in the filename if no video
|
|
3795
|
-
support is available.
|
|
3782
|
+
'''Note:''' Green Shoes doesn't support any video formats so far. !{:margin_left => 70}man-ele-video.png!
|
|
3796
3783
|
|
|
3797
3784
|
=== hide() » self ===
|
|
3798
3785
|
|
|
@@ -3800,16 +3787,22 @@ Hides the video. If already playing, the video will continue to play. This just
|
|
|
3800
3787
|
turns off display of the video. One possible use of this method is to collapse
|
|
3801
3788
|
the video area when it is playing an audio file, such as an MP3.
|
|
3802
3789
|
|
|
3790
|
+
'''Note:''' Green Shoes doesn't support hide method so far.
|
|
3791
|
+
|
|
3803
3792
|
=== length() » a number ===
|
|
3804
3793
|
|
|
3805
3794
|
The full length of the video in milliseconds. Returns nil if the video is not
|
|
3806
3795
|
yet loaded.
|
|
3807
3796
|
|
|
3797
|
+
'''Note:''' Green Shoes doesn't support length method so far.
|
|
3798
|
+
|
|
3808
3799
|
=== move(left, top) » self ===
|
|
3809
3800
|
|
|
3810
3801
|
Moves the video to specific coordinates, the (left, top) being the upper left
|
|
3811
3802
|
hand corner of the video.
|
|
3812
3803
|
|
|
3804
|
+
'''Note:''' Green Shoes doesn't support move method so far.
|
|
3805
|
+
|
|
3813
3806
|
=== pause() » self ===
|
|
3814
3807
|
|
|
3815
3808
|
Pauses the video, if it is playing.
|
|
@@ -3830,19 +3823,27 @@ The position of the video as a decimanl number (a Float) between the beginning
|
|
|
3830
3823
|
(0.0) and the end (1.0). For instance, a Float value of 0.5 indicates the
|
|
3831
3824
|
halfway point of the video.
|
|
3832
3825
|
|
|
3826
|
+
'''Note:''' Green Shoes doesn't support position method so far.
|
|
3827
|
+
|
|
3833
3828
|
=== position = a decimal ===
|
|
3834
3829
|
|
|
3835
3830
|
Sets the position of the video using a Float value. To move the video to its
|
|
3836
3831
|
25% position: `@video.position = 0.25`.
|
|
3837
3832
|
|
|
3833
|
+
'''Note:''' Green Shoes doesn't support position= method so far.
|
|
3834
|
+
|
|
3838
3835
|
=== remove() » self ===
|
|
3839
3836
|
|
|
3840
3837
|
Removes the video from its slot. This will stop the video as well.
|
|
3841
3838
|
|
|
3839
|
+
'''Note:''' Green Shoes doesn't support remove method so far.
|
|
3840
|
+
|
|
3842
3841
|
=== show() » self ===
|
|
3843
3842
|
|
|
3844
3843
|
Reveals the video, if it has been hidden by the `hide()` method.
|
|
3845
3844
|
|
|
3845
|
+
'''Note:''' Green Shoes doesn't support show method so far.
|
|
3846
|
+
|
|
3846
3847
|
=== stop() » self ===
|
|
3847
3848
|
|
|
3848
3849
|
Stops the video, if it is playing.
|
|
@@ -3861,6 +3862,8 @@ Set the position of the video to a time in milliseconds.
|
|
|
3861
3862
|
Toggles the visibility of the video. If the video can be seen, then `hide` is
|
|
3862
3863
|
called. Otherwise, `show` is called.
|
|
3863
3864
|
|
|
3865
|
+
'''Note:''' Green Shoes doesn't support tobble method so far.
|
|
3866
|
+
|
|
3864
3867
|
= AndSoForth =
|
|
3865
3868
|
|
|
3866
3869
|
A place for some other information.
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: green_shoes
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.309
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,11 +9,11 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2011-
|
|
12
|
+
date: 2011-10-02 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: gtk2
|
|
16
|
-
requirement: &
|
|
16
|
+
requirement: &16500636 !ruby/object:Gem::Requirement
|
|
17
17
|
none: false
|
|
18
18
|
requirements:
|
|
19
19
|
- - ! '>='
|
|
@@ -21,7 +21,7 @@ dependencies:
|
|
|
21
21
|
version: '0'
|
|
22
22
|
type: :runtime
|
|
23
23
|
prerelease: false
|
|
24
|
-
version_requirements: *
|
|
24
|
+
version_requirements: *16500636
|
|
25
25
|
description: Green Shoes is one of colorful Shoes, written in pure Ruby with Ruby/GTK2.
|
|
26
26
|
email: ashbbb@gmail.com
|
|
27
27
|
executables: []
|
|
@@ -66,6 +66,7 @@ files:
|
|
|
66
66
|
- lib/plugins/systray.rb
|
|
67
67
|
- lib/plugins/thread.rb
|
|
68
68
|
- lib/plugins/treeview.rb
|
|
69
|
+
- lib/plugins/video.rb
|
|
69
70
|
- lib/shoes/anim.rb
|
|
70
71
|
- lib/shoes/app.rb
|
|
71
72
|
- lib/shoes/basic.rb
|
|
@@ -203,6 +204,7 @@ files:
|
|
|
203
204
|
- samples/sample55.rb
|
|
204
205
|
- samples/sample56.rb
|
|
205
206
|
- samples/sample57.rb
|
|
207
|
+
- samples/sample58.rb
|
|
206
208
|
- samples/sample6.rb
|
|
207
209
|
- samples/sample7.rb
|
|
208
210
|
- samples/sample8.rb
|
|
@@ -268,6 +270,7 @@ files:
|
|
|
268
270
|
- snapshots/sample55.png
|
|
269
271
|
- snapshots/sample56.png
|
|
270
272
|
- snapshots/sample57.png
|
|
273
|
+
- snapshots/sample58.png
|
|
271
274
|
- snapshots/sample6.png
|
|
272
275
|
- snapshots/sample7.png
|
|
273
276
|
- snapshots/sample8.png
|
|
@@ -334,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
334
337
|
version: '0'
|
|
335
338
|
requirements: []
|
|
336
339
|
rubyforge_project:
|
|
337
|
-
rubygems_version: 1.
|
|
340
|
+
rubygems_version: 1.8.10
|
|
338
341
|
signing_key:
|
|
339
342
|
specification_version: 3
|
|
340
343
|
summary: Green Shoes
|