easy_mplayer 1.0.0 → 1.1.0

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/Rakefile CHANGED
@@ -6,7 +6,7 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "easy_mplayer"
8
8
  gem.summary = "Wrapper to launch and control MPlayer"
9
- gem.description = "A wrapper to manage mplayer, that supports callbacks to easyily support event-driven GUIs"
9
+ gem.description = "A wrapper to manage mplayer, that supports callbacks to easily support event-driven GUIs"
10
10
  gem.email = "gem-mplayer@thoughtnoise.net"
11
11
  gem.homepage = "http://github.com/pdkl95/easy_mplayer"
12
12
  gem.authors = ["Brent Sanders"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.0
data/easy_mplayer.gemspec CHANGED
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{easy_mplayer}
8
- s.version = "1.0.0"
8
+ s.version = "1.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Brent Sanders"]
12
- s.date = %q{2010-01-05}
13
- s.description = %q{A wrapper to manage mplayer, that supports callbacks to easyily support event-driven GUIs}
12
+ s.date = %q{2010-01-09}
13
+ s.description = %q{A wrapper to manage mplayer, that supports callbacks to easily support event-driven GUIs}
14
14
  s.email = %q{gem-mplayer@thoughtnoise.net}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
@@ -9,6 +9,7 @@ class MPlayer
9
9
  # spawn the mplayer process, which also starts the media playing. It
10
10
  # is requires that #opts[:path] point to a valid media file
11
11
  def play
12
+ must_be_ready!
12
13
  stop if running?
13
14
 
14
15
  info "PLAY: #{opts[:path]}"
@@ -24,6 +25,7 @@ class MPlayer
24
25
 
25
26
  # pause playback if we are running
26
27
  def pause
28
+ return unless running?
27
29
  return if paused?
28
30
  info "PAUSE!"
29
31
  send_command :pause
@@ -33,6 +35,7 @@ class MPlayer
33
35
 
34
36
  # opposite of #pause
35
37
  def unpause
38
+ return unless running?
36
39
  return unless paused?
37
40
  info "UNPAUSE!"
38
41
  send_command :pause
@@ -60,6 +63,7 @@ class MPlayer
60
63
  # seek to an absolute position in a file, by seconds. requires a
61
64
  # float between 0.0 and the length (in seconds) of the file being played.
62
65
  def seek_to_time(seconds)
66
+ return unless running?
63
67
  info "SEEK TO: #{seconds} seconds"
64
68
  send_command :seek, seconds, 1
65
69
  end
@@ -67,6 +71,7 @@ class MPlayer
67
71
  # seek by a relative amount, in seconds. requires a float. Negative
68
72
  # values rewind to a previous point.
69
73
  def seek_by(amount)
74
+ return unless running?
70
75
  info "SEEK BY: #{amount}"
71
76
  send_command :seek, amount, 0
72
77
  end
@@ -49,9 +49,21 @@ class MPlayer
49
49
  end
50
50
  end
51
51
 
52
- # create a new object. The option hash must have, at a minimum, a
53
- # :path reference to the file we want to play, or an exception will
54
- # be raised.
52
+ # create a new object, with the named options
53
+ # valid options:
54
+ # :program Path to the mplayer binary itself
55
+ # (default: /usr/bin/mplayer)
56
+ # :path Path to the media file to be played
57
+ # :message_style How verbose our debug messages should
58
+ # be (see #set_message_style)
59
+ # :seek_size Time, in seconds, to seek
60
+ # forwards/reverse by default (default:
61
+ # 10 seconds)
62
+ # :select_wait_time Time, in seconds, for blocking on
63
+ # IO.select in the worker threads (default: 1)
64
+ # :thread_safe_callbacks If we should buffer callbacks back to
65
+ # the main thread, so they are called off
66
+ # the #playing? polling-loop (default: true)
55
67
  def initialize(new_opts=Hash.new)
56
68
  @opts = DEFAULT_OPTS.merge(new_opts)
57
69
  set_message_style opts[:message_style]
@@ -59,9 +71,6 @@ class MPlayer
59
71
  unless File.executable?(@opts[:program])
60
72
  raise NoPlayerFound.new(@opts[:program])
61
73
  end
62
- unless @opts[:path] and File.readable?(new_opts[:path])
63
- raise NoTargetPath.new(@opts[:path])
64
- end
65
74
 
66
75
  @stats = Hash.new
67
76
  @callbacks = Hash.new
@@ -100,6 +109,26 @@ class MPlayer
100
109
  @worker = nil
101
110
  callback! :stop
102
111
  end
112
+
113
+ # true if we can call #play without an exception
114
+ def ready?
115
+ @opts[:path] and File.readable?(@opts[:path])
116
+ end
117
+
118
+ def must_be_ready! # :nodoc:
119
+ ready? or raise NoTargetPath.new(@opts[:path])
120
+ end
121
+
122
+ # returns the path we are currently playing
123
+ def path
124
+ @opts[:path]
125
+ end
126
+
127
+ # sets the path to #play - this does not interrupt a currently
128
+ # playing file. #stop and #play should be called again.
129
+ def path=(val)
130
+ @opts[:path] = val
131
+ end
103
132
 
104
133
  # can be any of:
105
134
  # :quiet Supperss all output!
@@ -172,7 +201,7 @@ class MPlayer
172
201
  def update_stat(name, newval) # :nodoc:
173
202
  name = name.to_sym
174
203
  if @stats[name] != newval
175
- debug "STATS[:#{name}] -> #{newval.inspect}"
204
+ debug "STATS[:#{name}] #{@stats[name].inspect} -> #{newval.inspect}"
176
205
  @stats[name] = newval
177
206
  callback! name, newval
178
207
  end
@@ -132,7 +132,7 @@ class MPlayer
132
132
  end
133
133
 
134
134
  def process_line
135
- debug "LINE> \"#{@line}\""
135
+ # debug "LINE> \"#{@line}\""
136
136
  send "process_#{@type}", @line
137
137
  # callback! @type, @line
138
138
  @line = ''
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: easy_mplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brent Sanders
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-05 00:00:00 -08:00
12
+ date: 2010-01-09 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.8.0
34
34
  version:
35
- description: A wrapper to manage mplayer, that supports callbacks to easyily support event-driven GUIs
35
+ description: A wrapper to manage mplayer, that supports callbacks to easily support event-driven GUIs
36
36
  email: gem-mplayer@thoughtnoise.net
37
37
  executables: []
38
38