wait_up 0.0.1 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 08dd0a312d7c05cab5f82a82f590ece6372912e3
4
- data.tar.gz: 4e152ff496e74fb188b5b84bd06d69e30b56f707
2
+ SHA256:
3
+ metadata.gz: bca5586ce3b259683495e20c1d499ad45f54f2a8e254380a9d7dfbbdaef72e9e
4
+ data.tar.gz: bfd361ad4ae092f963218494a5ac7116e802b65426e5b27b23e699c9a5e4d397
5
5
  SHA512:
6
- metadata.gz: edf77f5f1edb09cd9257dd629a05d66a1db528aefaa1b890b8ccccc3330d3e8624e251c3faa013471b981aa6ae8720b8725799cc9ca46a13b0ba9a2c21b7fbf7
7
- data.tar.gz: 77b19223b591b192b44eece8884a80772d68edef6c72d66f7d8b9890bdf8026a0ae705e5de4fb3604a7ba4a8662c58a604edbdd2a5dec792441146176a0216a6
6
+ metadata.gz: 88fd80e6b065930a4cf7fc7af48cc253c7d6c6d53a7879a1aa07f236c8ba332242e4372fb99747bfa4b196dc6f09e983acf82379c45e92966de4751f821c77fd
7
+ data.tar.gz: 4da0e9a043949cc36f6834ea6b2cd78895c3e0119fb08fa92bde8e2b6dace9b299b5b23a29cf0344ca24bce7622d813d9e9a3da653f078b93e1703b9727d1e9e
data/Changelog.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Change log
2
2
 
3
+ ## 0.1.1 2021-01-21
4
+
5
+ * Support Rubies 2.7 through 3.1
6
+ * Update dependencies
7
+
8
+ ## 0.1.0 2017-04-25
9
+
10
+ * Port to Ruby-GNOME2
11
+
12
+ ## 0.0.3 2017-04-25
13
+
14
+ * Update dependencies
15
+
16
+ ## 0.0.2 2016-03-28
17
+
18
+ * Update dependencies
19
+
3
20
  ## 0.0.1 2016-02-05
4
21
 
5
22
  * Initial release
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Play sound files slowly so you can follow along.
4
4
 
5
- This will be a port of playitslowly to Ruby + GirFFI.
5
+ This will be a port of playitslowly to Ruby + Ruby-GNOME2.
6
6
 
7
7
  ## Usage
8
8
 
@@ -48,5 +48,5 @@ If you want to run the tests, you may need to install additional packages:
48
48
 
49
49
  ## License
50
50
 
51
- Copyright © 2015–2016 [Matijs van Zuijlen](http://www.matijs.net).
51
+ Copyright © 2015–2017 [Matijs van Zuijlen](http://www.matijs.net).
52
52
  See LICENSE for details.
data/bin/wait_up CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- require_relative '../lib/wait_up'
2
+ # frozen_string_literal: true
3
+
4
+ require "wait_up"
3
5
 
4
6
  Gtk.init
5
7
 
data/bin/wait_up-cli CHANGED
@@ -1,8 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
- require_relative '../lib/wait_up/pipeline'
2
+ # frozen_string_literal: true
3
+
4
+ require "wait_up/pipeline"
3
5
 
4
6
  unless ARGV.length == 2
5
- warn 'Usage: wait_up-cli [file] [tempo]'
7
+ warn "Usage: wait_up-cli [file] [tempo]"
6
8
  exit 1
7
9
  end
8
10
  filename = ARGV[0]
@@ -16,11 +18,9 @@ mainloop = GLib::MainLoop.new(GLib::MainContext.default, true)
16
18
  bus = pipeline.play_bin.bus
17
19
  bus.add_signal_watch
18
20
 
19
- bus.signal_connect 'message' do |_bus, message, _ud|
21
+ bus.signal_connect "message" do |_bus, message, _ud|
20
22
  case message.type
21
- when :error
22
- mainloop.quit
23
- when :eos
23
+ when Gst::MessageType::ERROR, Gst::MessageType::EOS
24
24
  mainloop.quit
25
25
  end
26
26
  end
@@ -1,4 +1,6 @@
1
- require 'gir_ffi-gtk3'
1
+ # frozen_string_literal: true
2
+
3
+ require "gtk3"
2
4
 
3
5
  module WaitUp
4
6
  # Main Wait Up application class
@@ -19,47 +21,59 @@ module WaitUp
19
21
  end
20
22
 
21
23
  def connect_destroy_signal
22
- @win.signal_connect('destroy') { Gtk.main_quit }
24
+ @win.signal_connect("destroy") { Gtk.main_quit }
23
25
  end
24
26
 
25
27
  def connect_key_press_event_signal
26
- @win.signal_connect 'key-press-event' do |_wdg, evt, _ud|
27
- handle_key(evt) if evt.state[:control_mask]
28
+ @win.signal_connect "key-press-event" do |_wdg, evt, _ud|
29
+ handle_key(evt) if evt.state.control_mask?
28
30
  false
29
31
  end
30
32
  end
31
33
 
32
34
  def handle_key(evt)
33
35
  case evt.keyval
34
- when 'q'.ord
36
+ when "q".ord
35
37
  @win.destroy
36
38
  end
37
39
  end
38
40
 
39
41
  def connect_slide_signal
40
- @timeline.signal_connect 'format-value' do |_scale, value, _user_data|
42
+ timeline.signal_connect "format-value" do |_scale, value, _user_data|
41
43
  ">#{value}<"
42
44
  end
43
45
  end
44
46
 
45
47
  def connect_file_chooser_signal
46
- @chooser.signal_connect 'file-set' do |_widget, _user_data|
47
- puts @chooser.filename
48
+ chooser.signal_connect "file-set" do |_widget, _user_data|
49
+ puts chooser.filename
48
50
  end
49
51
  end
50
52
 
51
53
  def setup_gui
52
54
  @win = Gtk::Window.new :toplevel
53
- @grid = Gtk::Grid.new
54
- @grid.orientation = :vertical
55
- @win.add @grid
56
- @chooser = Gtk::FileChooserButton.new('Hello!', :open)
57
- @grid.add @chooser
58
- @timeline = Gtk::Scale.new_with_range :horizontal, 0.0, 10.0, 0.1
59
- @timeline.hexpand = true
60
- @grid.add @timeline
61
- @volume = Gtk::VolumeButton.new
62
- @grid.add @volume
55
+ @win.add grid
56
+ end
57
+
58
+ def grid
59
+ @grid ||=
60
+ Gtk::Grid.new.tap do |grid|
61
+ grid.orientation = :vertical
62
+ grid.add chooser
63
+ grid.add timeline
64
+ grid.add Gtk::VolumeButton.new
65
+ end
66
+ end
67
+
68
+ def timeline
69
+ @timeline ||=
70
+ Gtk::Scale.new(:horizontal, 0.0, 10.0, 0.1).tap do |it|
71
+ it.hexpand = true
72
+ end
73
+ end
74
+
75
+ def chooser
76
+ @chooser ||= Gtk::FileChooserButton.new("Hello!", :open)
63
77
  end
64
78
  end
65
79
  end
@@ -1,4 +1,6 @@
1
- require 'gir_ffi-gst'
1
+ # frozen_string_literal: true
2
+
3
+ require "gstreamer"
2
4
 
3
5
  module WaitUp
4
6
  # Wait Up pipeline class
@@ -9,20 +11,10 @@ module WaitUp
9
11
  @filename = filename
10
12
  @tempo = tempo
11
13
 
12
- play_bin.set_property 'uri', "file://#{File.absolute_path(filename)}"
13
-
14
- sink_bin.add audiosink
15
- sink_bin.add postconverter
16
- sink_bin.add speed_changer
17
-
18
- speed_changer.link_many [postconverter, audiosink]
14
+ fill_sink_bin
15
+ link_elements
19
16
 
20
- sink_pad = Gst::GhostPad.new 'sink', speed_changer.iterate_sink_pads.first
21
- sink_bin.add_pad sink_pad
22
-
23
- play_bin.set_property 'audio-sink', GObject::Value.wrap_instance(sink_bin)
24
- play_bin.set_state :paused
25
- play_bin.get_state(-1)
17
+ set_up_play_bin
26
18
  end
27
19
 
28
20
  def play
@@ -30,29 +22,54 @@ module WaitUp
30
22
  end
31
23
 
32
24
  def play_bin
33
- @play_bin ||= Gst::ElementFactory.make 'playbin', nil
25
+ @play_bin ||= Gst::ElementFactory.make "playbin", nil
34
26
  end
35
27
 
36
28
  def sink_bin
37
- @sink_bin ||= Gst::Bin.new('sinkbin')
29
+ @sink_bin ||= Gst::Bin.new("sinkbin")
38
30
  end
39
31
 
40
32
  def speed_changer
41
- @speed_changer ||= Gst::ElementFactory.make('pitch', 'speed changer').tap do |element|
42
- element.set_property 'tempo', tempo
33
+ @speed_changer ||= Gst::ElementFactory.make("pitch", "speed changer").tap do |element|
34
+ element.set_property "tempo", tempo
43
35
  end
44
36
  end
45
37
 
46
38
  def audiosink
47
- @audiosink ||= Gst::ElementFactory.make('autoaudiosink', 'audiosink')
39
+ @audiosink ||= Gst::ElementFactory.make("autoaudiosink", "audiosink")
48
40
  end
49
41
 
50
42
  def postconverter
51
- @postconverter ||= Gst::ElementFactory.make('audioconvert', 'postconverter')
43
+ @postconverter ||= Gst::ElementFactory.make("audioconvert", "postconverter")
52
44
  end
53
45
 
54
46
  def preconverter
55
- @preconverter ||= Gst::ElementFactory.make('audioconvert', 'preconverter')
47
+ @preconverter ||= Gst::ElementFactory.make("audioconvert", "preconverter")
48
+ end
49
+
50
+ private
51
+
52
+ def fill_sink_bin
53
+ sink_bin.add audiosink
54
+ sink_bin.add postconverter
55
+ sink_bin.add speed_changer
56
+ sink_bin.add_pad speed_changer_ghost_pad
57
+ end
58
+
59
+ def speed_changer_ghost_pad
60
+ @speed_changer_ghost_pad ||= Gst::GhostPad.new "sink", speed_changer.sinkpads.first
61
+ end
62
+
63
+ def link_elements
64
+ speed_changer.link postconverter
65
+ postconverter.link audiosink
66
+ end
67
+
68
+ def set_up_play_bin
69
+ play_bin.set_property "uri", "file://#{File.absolute_path(filename)}"
70
+ play_bin.audio_sink = sink_bin
71
+ play_bin.state = :paused
72
+ play_bin.get_state(-1)
56
73
  end
57
74
  end
58
75
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WaitUp
4
+ VERSION = "0.1.1"
5
+ end
data/lib/wait_up.rb CHANGED
@@ -1 +1,4 @@
1
- require_relative 'wait_up/application'
1
+ # frozen_string_literal: true
2
+
3
+ require "wait_up/application"
4
+ require "wait_up/version"
metadata CHANGED
@@ -1,160 +1,199 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wait_up
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-05 00:00:00.000000000 Z
11
+ date: 2022-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: gir_ffi-gtk
14
+ name: gstreamer
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.0
19
+ version: 3.5.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.0
26
+ version: 3.5.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: gir_ffi-gst
28
+ name: gtk3
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.5
33
+ version: 3.5.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.0.5
40
+ version: 3.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: gir_ffi
42
+ name: gnome_app_driver
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.9.2
48
- type: :runtime
47
+ version: 0.3.0
48
+ type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.9.2
54
+ version: 0.3.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5.12'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5.12'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
73
  - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: '10.1'
75
+ version: '13.0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: '10.1'
82
+ version: '13.0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: minitest
84
+ name: rake-manifest
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '5.5'
89
+ version: 0.2.0
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '5.5'
96
+ version: 0.2.0
83
97
  - !ruby/object:Gem::Dependency
84
- name: atspi_app_driver
98
+ name: rubocop
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - '='
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: 0.0.5
103
+ version: 1.25.0
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - '='
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: 0.0.5
110
+ version: 1.25.0
97
111
  - !ruby/object:Gem::Dependency
98
- name: pry
112
+ name: rubocop-minitest
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: 0.10.2
117
+ version: 0.17.0
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: 0.10.2
111
- description:
124
+ version: 0.17.0
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-packaging
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.5.0
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: 0.5.0
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-performance
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.13.0
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.13.0
153
+ description:
112
154
  email:
113
155
  - matijs@matijs.net
114
156
  executables:
115
157
  - wait_up
116
158
  - wait_up-cli
117
159
  extensions: []
118
- extra_rdoc_files: []
160
+ extra_rdoc_files:
161
+ - README.md
162
+ - Changelog.md
119
163
  files:
120
164
  - Changelog.md
121
- - Gemfile
122
165
  - LICENSE
123
166
  - README.md
124
- - Rakefile
125
167
  - bin/wait_up
126
168
  - bin/wait_up-cli
127
169
  - lib/wait_up.rb
128
170
  - lib/wait_up/application.rb
129
171
  - lib/wait_up/pipeline.rb
130
- - test/end_to_end/basic_run_test.rb
131
- - test/test_helper.rb
132
- - test/unit/pipeline_test.rb
172
+ - lib/wait_up/version.rb
133
173
  homepage: http://www.github.com/mvz/wait_up
134
174
  licenses:
135
175
  - MIT
136
- metadata: {}
137
- post_install_message:
138
- rdoc_options: []
176
+ metadata:
177
+ rubygems_mfa_required: 'true'
178
+ post_install_message:
179
+ rdoc_options:
180
+ - "--main"
181
+ - README.md
139
182
  require_paths:
140
183
  - lib
141
184
  required_ruby_version: !ruby/object:Gem::Requirement
142
185
  requirements:
143
186
  - - ">="
144
187
  - !ruby/object:Gem::Version
145
- version: '0'
188
+ version: 2.7.0
146
189
  required_rubygems_version: !ruby/object:Gem::Requirement
147
190
  requirements:
148
191
  - - ">="
149
192
  - !ruby/object:Gem::Version
150
193
  version: '0'
151
194
  requirements: []
152
- rubyforge_project:
153
- rubygems_version: 2.5.1
154
- signing_key:
195
+ rubygems_version: 3.3.3
196
+ signing_key:
155
197
  specification_version: 4
156
198
  summary: Play sound files slowly so you can follow along
157
- test_files:
158
- - test/test_helper.rb
159
- - test/unit/pipeline_test.rb
160
- - test/end_to_end/basic_run_test.rb
199
+ test_files: []
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gemspec
data/Rakefile DELETED
@@ -1,23 +0,0 @@
1
- require 'rake/clean'
2
- require 'bundler/gem_tasks'
3
- require 'rake/testtask'
4
-
5
- namespace :test do
6
- Rake::TestTask.new(:unit) do |t|
7
- t.libs = ['lib']
8
- t.test_files = FileList['test/unit/*_test.rb']
9
- t.warning = true
10
- end
11
-
12
- Rake::TestTask.new(:end_to_end) do |t|
13
- t.libs = ['lib']
14
- t.test_files = FileList['test/end_to_end/*_test.rb']
15
- t.warning = true
16
- end
17
-
18
- task all: [:unit, :end_to_end]
19
- end
20
-
21
- task test: 'test:all'
22
-
23
- task default: 'test'
@@ -1,27 +0,0 @@
1
- require_relative '../test_helper'
2
- require 'atspi_app_driver'
3
-
4
- # Test driver for the Wait Up application.
5
- class WaitUpDriver < AtspiAppDriver
6
- def initialize
7
- super 'wait_up'
8
- end
9
- end
10
-
11
- describe 'The Wait Up application' do
12
- before do
13
- @driver = WaitUpDriver.new
14
- @driver.boot
15
- end
16
-
17
- it 'starts and can be quit with Ctrl-q' do
18
- @driver.press_ctrl_q
19
-
20
- status = @driver.cleanup
21
- status.exitstatus.must_equal 0
22
- end
23
-
24
- after do
25
- @driver.cleanup
26
- end
27
- end
data/test/test_helper.rb DELETED
@@ -1 +0,0 @@
1
- require 'minitest/autorun'
@@ -1,78 +0,0 @@
1
- require_relative '../test_helper'
2
- require_relative '../../lib/wait_up/pipeline'
3
-
4
- Gst.init
5
-
6
- def next_element(element)
7
- # FIXME: Reduce the number of necessary chained calls here.
8
- pad = element.iterate_src_pads.first
9
- peer = pad.get_peer if pad
10
- peer.parent if peer
11
- end
12
-
13
- describe WaitUp::Pipeline do
14
- # Empty mp3 file from http://www.xamuel.com/blank-mp3s/
15
- let(:filename) { File.join(File.dirname(__FILE__), '..', 'fixtures', 'point1sec.mp3') }
16
- let(:instance) { WaitUp::Pipeline.new filename, 0.9 }
17
-
18
- describe '#sink_bin' do
19
- let(:sink_bin) { instance.sink_bin }
20
-
21
- it 'returns a Gst::Bin' do
22
- sink_bin.must_be_instance_of Gst::Bin
23
- end
24
-
25
- it 'has the correct build-up' do
26
- iter = sink_bin.iterate_elements
27
- iter.map(&:name).must_equal ['speed changer', 'postconverter', 'audiosink']
28
- end
29
-
30
- it 'has the elements all linked up' do
31
- iter = sink_bin.iterate_elements
32
-
33
- iter.to_a.each_cons(2) do |src, dst|
34
- next_element(src).
35
- must_equal dst, "Expected #{src.name} to link up to #{dst.name}"
36
- end
37
- end
38
-
39
- it 'must have the state :paused' do
40
- sink_bin.get_state(0)[1].must_equal :paused
41
- end
42
-
43
- it 'must be linked up to a source' do
44
- sink_bin.iterate_sink_pads.first.get_peer.wont_be_nil
45
- end
46
- end
47
-
48
- describe '#play_bin' do
49
- let(:play_bin) { instance.play_bin }
50
-
51
- it 'must have the state :paused' do
52
- play_bin.get_state(0)[1].must_equal :paused
53
- end
54
-
55
- it 'has the correct source set up' do
56
- source = play_bin.get_property('source').get_value
57
- source.uri.must_equal "file://#{File.absolute_path filename}"
58
- end
59
- end
60
-
61
- describe '#speed_changer' do
62
- let(:speed_changer) { instance.speed_changer }
63
- it 'returns a Gst::Element' do
64
- speed_changer.must_be_kind_of Gst::Element
65
- end
66
-
67
- it 'has the correct tempo' do
68
- speed_changer.get_property('tempo').must_be_close_to 0.9
69
- end
70
- end
71
-
72
- describe '#play' do
73
- it "sets the play bin's state to :playing" do
74
- instance.play
75
- instance.play_bin.get_state(0)[1].must_equal :playing
76
- end
77
- end
78
- end