gtk2mp3 0.3.2 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/gtk2mp3 CHANGED
@@ -1,28 +1,25 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'rubygems'
3
- gem 'gtk2applib', '~> 10'
3
+ gem 'gtk2applib', '~> 14.0'
4
4
  $help = <<EOT
5
5
 
6
6
  You can also give it the default mp3 directory via command line...
7
7
  \t#{$0} /path-to/mp3s
8
8
 
9
9
  EOT
10
- require 'gtk2applib'
11
- include Gtk2AppLib
12
- include Configuration
10
+ require 'gtk2applib' # Gtk2AppLib defined
13
11
 
14
- Lock.lock_mode
15
- program = Program.new( {
12
+ program = Gtk2AppLib::Program.new( {
16
13
  'name' => 'Ruby-Gnome MP3',
17
14
  'authors' => ['carlosjhr64@gmail.com'],
18
- 'website' => 'http://ruby-gnome-apps.blogspot.com/search/label/MP3',
15
+ 'website' => 'https://sites.google.com/site/gtk2applib/home/gtk2applib-applications/gtk2mp3',
19
16
  'website-label' => 'Ruby-Gnome MP3',
20
17
  'license' => 'GPL',
21
- 'copyright' => '2010-12-07 13:04:23',
18
+ 'copyright' => '2011-03-10 11:19:13',
22
19
  } )
23
20
 
24
21
  begin
25
- require 'gtk2mp3'
22
+ require 'gtk2mp3' # Gtk2MP3 defined
26
23
  Gtk2MP3::Couple.load
27
24
  program.window do |window|
28
25
  Gtk2MP3::GUI.new(window,program)
@@ -1,5 +1,15 @@
1
- module Gtk2AppLib
1
+ module Gtk2AppLib # Gtk2AppLib defined
2
2
  module Configuration
3
+ WINDOW_DEFAULT_SIZE[0],WINDOW_DEFAULT_SIZE[1] = 0,0 # WINDOW_DEFAULT_SIZE defined in gtk2applib/configuration
4
+ MENU[:dock] = '_Dock' # MENU defined in gtk2applib/configuration
5
+ end
6
+ end
7
+
8
+ module Gtk2MP3
9
+ module Configuration
10
+ # File defined
11
+ # ARGV defined as command line arguments
12
+ # Gtk defined in gtk2
3
13
  # Where is your MP3 directory?
4
14
  dialog = Gtk::FileChooserDialog.new("Choose Mp3 Directory", nil, Gtk::FileChooser::ACTION_SELECT_FOLDER, nil,
5
15
  [Gtk::Stock::CANCEL, Gtk::Dialog::RESPONSE_CANCEL], [Gtk::Stock::OPEN, Gtk::Dialog::RESPONSE_ACCEPT])
@@ -15,25 +25,22 @@ module Configuration
15
25
  dialog.destroy
16
26
  DIRECTORY = directory
17
27
 
18
- WINDOW_DEFAULT_SIZE[0],WINDOW_DEFAULT_SIZE[1] = 0,0
19
- OPTIONS = {:modify_font => FONT[:Large]}.freeze
20
-
21
- SPACER1 = [' ', OPTIONS].freeze
22
- SPACER2 = [' ', OPTIONS].freeze
23
- SPACER3 = [' ', OPTIONS].freeze
24
- SPACER4 = [' ', OPTIONS].freeze
25
- INFO = {:modify_font => FONT[:Small]}.freeze
26
-
28
+ options = {:modify_font => Gtk2AppLib::Configuration::FONT[:Large]}.freeze
29
+ SPACER1 = [' ', options].freeze
30
+ SPACER2 = [' ', options].freeze
31
+ SPACER3 = [' ', options].freeze
32
+ SPACER4 = [' ', options].freeze
33
+ INFO = ['Gtk2 MP3 Next!!!!',{:modify_font => Gtk2AppLib::Configuration::FONT[:Small]}].freeze
27
34
 
28
35
  RELOAD = '_Reload'
29
36
 
30
- CLICKED = 'clicked' # Signal (should be no need to edit)
31
- NEXT = ['Next!', OPTIONS, CLICKED].freeze
32
- PAUSE = ['Pause', OPTIONS, CLICKED].freeze # this one can be set to nil
33
- STOP = ['Stop', OPTIONS, CLICKED].freeze # this one can be set to nil
34
- DELETE = ['Delete', OPTIONS, CLICKED].freeze # this one can be set to nil
37
+ clicked = 'clicked'
38
+ NEXT = ['Next!', options, clicked].freeze
39
+ PAUSE = ['Pause', options, clicked].freeze # this one can be set to nil
40
+ STOP = ['Stop', options, clicked].freeze # this one can be set to nil
41
+ DELETE = ['Delete', options, clicked].freeze # this one can be set to nil
35
42
 
36
- SELECT_A_FILE = [['Select a file', Gtk::FileChooser::ACTION_OPEN],HNIL].freeze
43
+ SELECT_A_FILE = [['Select a file', Gtk::FileChooser::ACTION_OPEN],Gtk2AppLib::HNIL].freeze
37
44
 
38
45
  PLAYER = 'mpg123 -q -a hw:0,0 -R' # 'mpg123 -q -R'
39
46
  # mpg123 commands
@@ -43,11 +50,5 @@ module Configuration
43
50
  C_LOAD = 'L'
44
51
  C_QUIT = 'Q'
45
52
 
46
- ### Unused ####
47
- # C_LOADPAUSED = 'LP'
48
- # C_VOLUME = 'V'
49
- # C_TAG = 'T'
50
-
51
- MENU[:dock] = '_Dock'
52
53
  end
53
54
  end
@@ -1,17 +1,25 @@
1
- module Gtk2MP3
2
- class Couple
1
+ # Gtk2AppLib defined
2
+ module Gtk2MP3 # Gtk2MP3 defined
3
+ class Couple # Couple defined
3
4
  BASE = Hash.new(1.0)
4
- BASE_DUMP = USERDIR + '/base.dump'
5
+ BASE_DUMP = Gtk2AppLib::USERDIR + '/base.dump'
5
6
 
6
7
  COUPLE = Hash.new(1.0)
7
- COUPLE_DUMP = USERDIR + '/couple.dump'
8
+ COUPLE_DUMP = Gtk2AppLib::USERDIR + '/couple.dump'
8
9
 
9
- LEARNING = Math.sqrt(2.0)
10
+ LEARNING = Math.sqrt(2.0) # Math defined, built in
10
11
  SEP = '/'
11
- SEPX = Regexp.new(SEP)
12
+ SEPX = Regexp.new(SEP) # Regexp defined, built in
13
+
14
+ def initialize(candidate,previous)
15
+ @candidate = candidate
16
+ @previous = previous
17
+ self.keys!
18
+ self.threshold!
19
+ end
12
20
 
13
21
  def self._load(dump,hash)
14
- File.open(dump,'r'){|fh|
22
+ File.open(dump,'r'){|fh| # File defined, built in
15
23
  fh.each{|line|
16
24
  if line=~/^(.*)\s([\d\.]+)\s*$/ then
17
25
  hash[$1.strip] = $2.to_f
@@ -25,7 +33,7 @@ class Couple
25
33
  end
26
34
 
27
35
  def self.delete(current)
28
- key = File.basename(current,MP3)
36
+ key = File.basename(current,Gtk2MP3::MP3)
29
37
  BASE.delete(key)
30
38
  COUPLE.delete_if{|k| k.split(SEPX).include?(key)}
31
39
  end
@@ -40,8 +48,8 @@ class Couple
40
48
  end
41
49
 
42
50
  def keys!
43
- @base = File.basename(@candidate,MP3)
44
- @couple = @base + SEP + File.basename(@previous,MP3)
51
+ @base = File.basename(@candidate,Gtk2MP3::MP3)
52
+ @couple = @base + SEP + File.basename(@previous,Gtk2MP3::MP3)
45
53
  end
46
54
 
47
55
  def keys
@@ -56,13 +64,6 @@ class Couple
56
64
  @threshold
57
65
  end
58
66
 
59
- def initialize(candidate,previous)
60
- @candidate = candidate
61
- @previous = previous
62
- self.keys!
63
- self.threshold!
64
- end
65
-
66
67
  def promote
67
68
  BASE[@base] *= LEARNING
68
69
  COUPLE[@couple] *= LEARNING
@@ -1,12 +1,8 @@
1
- module Gtk2MP3
2
- class Playlist < Array
3
- IS_MP3 = Regexp.new(/\.mp3$/)
1
+ require 'find' # Find defined
4
2
 
5
- def reload
6
- self.clear
7
- Find.find(@directory){|fn| self.push(fn) if fn=~IS_MP3 }
8
- raise 'no mp3s found' if self.length < 1
9
- end
3
+ module Gtk2MP3
4
+ class Playlist < Array # [] defined in Array
5
+ IS_MP3 = Regexp.new(/\.mp3$/) # Regexp defined, built in
10
6
 
11
7
  def initialize(directory)
12
8
  super()
@@ -15,6 +11,12 @@ class Playlist < Array
15
11
  $stderr.puts "Playlist length #{self.length}" if $trace
16
12
  end
17
13
 
14
+ def reload
15
+ self.clear
16
+ Find.find(@directory){|fn| self.push(fn) if fn=~IS_MP3 }
17
+ raise 'no mp3s found' if self.length < 1
18
+ end
19
+
18
20
  def random
19
21
  self[ rand(self.length) ]
20
22
  end
data/lib/gtk2mp3.rb CHANGED
@@ -1,12 +1,19 @@
1
1
  require 'gtk2mp3/playlist'
2
- require 'gtk2mp3/couple'
2
+ require 'gtk2mp3/couple' # Couple defined
3
+ # Configuration defined in gtk2mp3/appconfig
4
+ # Gtk2AppLib defined
3
5
 
4
- module Gtk2MP3
6
+ module Gtk2MP3 # Gtk2MP3 defined
5
7
  MP3 = '.mp3'
6
8
 
7
- class Pipe
9
+ class Pipe # Pipe defined
10
+ def initialize(gui)
11
+ @gui = gui
12
+ @pipe = nil
13
+ self.open
14
+ end
8
15
  def _read
9
- @thread = Thread.new do
16
+ @thread = Thread.new do # Thread defined
10
17
  @pipe.each do |line|
11
18
  line.strip!
12
19
  $stderr.puts line if $trace
@@ -24,8 +31,8 @@ module Gtk2MP3
24
31
  end
25
32
  def open
26
33
  if !@pipe then
27
- @pipe = IO.popen(Configuration::PLAYER,'w+')
28
- self.puts C_SILENCE
34
+ @pipe = IO.popen(Configuration::PLAYER,'w+') # IO defined
35
+ self.puts Configuration::C_SILENCE
29
36
  self._read
30
37
  end
31
38
  end
@@ -42,16 +49,54 @@ module Gtk2MP3
42
49
  @pipe = nil
43
50
  end
44
51
  end
45
- def initialize(gui)
46
- @gui = gui
47
- self.open
48
- end
49
52
  end
50
53
 
51
54
  class GUI
52
- include Configuration
53
55
  attr_reader :continue, :couple, :current
54
56
  attr_writer :previous
57
+ def initialize(window,program)
58
+ @playlist = Gtk2MP3::Playlist.new(Configuration::DIRECTORY)
59
+ @current = ''
60
+ @previous = ''
61
+ @continue = true
62
+ @pipe = Pipe.new(self)
63
+ window.signal_connect('destroy'){ @pipe.close }
64
+
65
+ vbox = Gtk2AppLib::Widgets::VBox.new(window)
66
+
67
+ hbox = Gtk2AppLib::Widgets::HBox.new(vbox)
68
+ @info = Gtk2AppLib::Widgets::Label.new(*Configuration::INFO+[hbox])
69
+
70
+ hbox = Gtk2AppLib::Widgets::HBox.new(vbox)
71
+ Gtk2AppLib::Widgets::Label.new(*Configuration::SPACER1+[hbox]) # Spacer
72
+ Gtk2AppLib::Widgets::Button.new(*Configuration::NEXT+[hbox]){ self.skip_song }
73
+ if Configuration::PAUSE then
74
+ Gtk2AppLib::Widgets::Label.new(*Configuration::SPACER2+[hbox]) # Spacer
75
+ Gtk2AppLib::Widgets::Button.new(*Configuration::PAUSE+[hbox]){ self.pause_song }
76
+ end
77
+ if Configuration::STOP then
78
+ Gtk2AppLib::Widgets::Label.new(*Configuration::SPACER2+[hbox]) # Spacer
79
+ Gtk2AppLib::Widgets::Button.new(*Configuration::STOP+[hbox]){ self.stop_song }
80
+ end
81
+ if Configuration::DELETE then
82
+ Gtk2AppLib::Widgets::Label.new(*Configuration::SPACER3+[hbox]) # Spacer
83
+ Gtk2AppLib::Widgets.define_composite(:CheckButton,:Button)
84
+ Gtk2AppLib::Widgets::CheckButtonButton.new(*Configuration::DELETE+[hbox]){|is,*dummies|
85
+ if is.checkbutton.active? then
86
+ self.delete_song
87
+ is.checkbutton.active = false
88
+ end
89
+ }
90
+ end
91
+ Gtk2AppLib::Widgets::Label.new(*Configuration::SPACER4+[hbox]) # Spacer
92
+
93
+ self.load_song
94
+
95
+ program.append_app_menu(Configuration::RELOAD){ @playlist.reload }
96
+ program.append_dock_menu(Configuration::PAUSE.first){ self.pause_song } if Configuration::PAUSE
97
+ program.append_dock_menu(Configuration::STOP.first){ self.stop_song } if Configuration::STOP
98
+ program.append_dock_menu(Configuration::NEXT.first){ self.skip_song }
99
+ end
55
100
 
56
101
  def random_song
57
102
  plays = false
@@ -66,8 +111,8 @@ module Gtk2MP3
66
111
 
67
112
  def load_song
68
113
  self.random_song
69
- @info.text = File.basename(@current,MP3)
70
- @pipe.puts "#{C_LOAD} #{@current}"
114
+ @info.text = File.basename(@current,MP3) # File defined
115
+ @pipe.puts "#{Configuration::C_LOAD} #{@current}"
71
116
  end
72
117
 
73
118
  def skip_song
@@ -77,7 +122,7 @@ module Gtk2MP3
77
122
 
78
123
  def stop_song
79
124
  if @continue then
80
- @pipe.puts C_STOP
125
+ @pipe.puts Configuration::C_STOP
81
126
  @previous = ''
82
127
  @continue = false
83
128
  @pipe.close
@@ -88,7 +133,7 @@ module Gtk2MP3
88
133
  end
89
134
 
90
135
  def pause_song
91
- @pipe.puts C_PAUSE
136
+ @pipe.puts Configuration::C_PAUSE
92
137
  end
93
138
 
94
139
  def delete_song
@@ -97,50 +142,5 @@ module Gtk2MP3
97
142
  Couple.delete(@current)
98
143
  self.load_song
99
144
  end
100
-
101
-
102
- def initialize(window,program)
103
- @playlist = Gtk2MP3::Playlist.new(DIRECTORY)
104
- @current = ''
105
- @previous = ''
106
- @continue = true
107
- @pipe = Pipe.new(self)
108
- window.signal_connect('destroy'){ @pipe.close }
109
-
110
- vbox = Widgets::VBox.new(window)
111
-
112
- hbox = Widgets::HBox.new(vbox)
113
- @info = Widgets::Label.new('Gtk2 MP3 Next!!!!', INFO, hbox)
114
-
115
- hbox = Widgets::HBox.new(vbox)
116
- Widgets::Label.new(*SPACER1, hbox) # Spacer
117
- Widgets::Button.new(*NEXT, hbox){ self.skip_song }
118
- if PAUSE then
119
- Widgets::Label.new(*SPACER2, hbox) # Spacer
120
- Widgets::Button.new(*PAUSE, hbox){ self.pause_song }
121
- end
122
- if STOP then
123
- Widgets::Label.new(*SPACER2, hbox) # Spacer
124
- Widgets::Button.new(*STOP, hbox){ self.stop_song }
125
- end
126
- if DELETE then
127
- Widgets::Label.new(*SPACER3, hbox) # Spacer
128
- Widgets.define_composite(:CheckButton,:Button)
129
- Widgets::CheckButtonButton.new(*DELETE, hbox){|is,*dummies|
130
- if is.checkbutton.active? then
131
- self.delete_song
132
- is.checkbutton.active = false
133
- end
134
- }
135
- end
136
- Widgets::Label.new(*SPACER4, hbox) # Spacer
137
-
138
- self.load_song
139
-
140
- program.append_app_menu(RELOAD){ @playlist.reload }
141
- program.append_dock_menu(PAUSE.first){ self.pause_song } if PAUSE
142
- program.append_dock_menu(STOP.first){ self.stop_song } if STOP
143
- program.append_dock_menu(NEXT.first){ self.skip_song }
144
- end
145
145
  end
146
146
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2mp3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
4
+ hash: 15
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 3
9
- - 2
10
- version: 0.3.2
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - carlosjhr64@gmail.com
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-07 00:00:00 -08:00
18
+ date: 2011-03-10 00:00:00 -08:00
19
19
  default_executable: gtk2mp3
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -26,10 +26,11 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- hash: 23
29
+ hash: 51
30
30
  segments:
31
- - 10
32
- version: "10"
31
+ - 14
32
+ - 0
33
+ version: "14.0"
33
34
  type: :runtime
34
35
  version_requirements: *id001
35
36
  description: a "Next!" button gui for mpg123
@@ -51,7 +52,7 @@ files:
51
52
  - README.txt
52
53
  - bin/gtk2mp3
53
54
  has_rdoc: true
54
- homepage: http://ruby-gnome-apps.blogspot.com/search/label/MP3
55
+ homepage: https://sites.google.com/site/gtk2applib/home/gtk2applib-applications/gtk2mp3
55
56
  licenses: []
56
57
 
57
58
  post_install_message:
@@ -80,8 +81,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
81
  version: "0"
81
82
  requirements:
82
83
  - mpg123
83
- rubyforge_project: gtk2mp3
84
- rubygems_version: 1.3.7
84
+ rubyforge_project:
85
+ rubygems_version: 1.5.2
85
86
  signing_key:
86
87
  specification_version: 3
87
88
  summary: Gtk2MP3