zik 0.16.1 → 0.16.2

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ ###Version 0.16.2
2
+ Fix a bug : ZiK crash when showing an error before main window is defined.
3
+ Fix a bug: ZiK crash when loading a module failed.
4
+
1
5
  ###Version 0.16.1
2
6
  Fix a bug in french translation
3
7
 
data/Makefile.in CHANGED
@@ -1,5 +1,5 @@
1
1
  NAME=ZiK
2
- VERSION=0.16.1
2
+ VERSION=0.16.2
3
3
 
4
4
  SHELL=/bin/sh
5
5
  RUBY=/usr/bin/ruby
data/doc/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ ###Version 0.16.2
2
+ Fix a bug : ZiK crash when showing an error before main window is defined.
3
+ Fix a bug: ZiK crash when loading a module failed.
4
+
1
5
  ###Version 0.16.1
2
6
  Fix a bug in french translation
3
7
 
data/doc/man/zik.1.gz ADDED
Binary file
data/gui/error.rb CHANGED
@@ -41,21 +41,21 @@ class Error
41
41
  case type
42
42
  when ErrorINFO, ModErrorINFO
43
43
  puts message
44
- if $show_errors&&user
44
+ if $show_errors&&user&&defined?(@@zik)
45
45
  dialog=Gtk::MessageDialog.new(@@zik, Gtk::Dialog::MODAL|Gtk::Dialog::DESTROY_WITH_PARENT,
46
46
  Gtk::MessageDialog::INFO, Gtk::MessageDialog::BUTTONS_CLOSE, @long_message)
47
47
  dialog.run; dialog.destroy
48
48
  end
49
49
  when ErrorWARNING, ModErrorWARNING
50
50
  $stderr.puts "WARNING. "+message
51
- if $show_errors&&user
51
+ if $show_errors&&user&&defined?(@@zik)
52
52
  dialog=Gtk::MessageDialog.new(@@zik, Gtk::Dialog::MODAL|Gtk::Dialog::DESTROY_WITH_PARENT,
53
53
  Gtk::MessageDialog::WARNING, Gtk::MessageDialog::BUTTONS_CLOSE, @long_message)
54
54
  dialog.run; dialog.destroy
55
55
  end
56
56
  when ErrorERROR, ModErrorERROR
57
57
  $stderr.puts "ERROR. "+message
58
- if $show_errors&&user
58
+ if $show_errors&&user&&defined?(@@zik)
59
59
  dialog=Gtk::MessageDialog.new(@@zik, Gtk::Dialog::MODAL|Gtk::Dialog::DESTROY_WITH_PARENT,
60
60
  Gtk::MessageDialog::ERROR, Gtk::MessageDialog::BUTTONS_CLOSE, @long_message)
61
61
  dialog.run; dialog.destroy
@@ -106,7 +106,7 @@ class ErrorsStock
106
106
  end
107
107
 
108
108
  def show_all(message="")
109
- if $show_errors
109
+ if $show_errors&&defined?(@@zik)
110
110
  unless @stock.empty?
111
111
  tmp=[]
112
112
  @stock.each{|error| message+="\n#{error.long_message}"; tmp.push(error.type)}
data/gui/mod.rb CHANGED
@@ -68,11 +68,11 @@ class ModErrorLoadError < ModError
68
68
  end
69
69
  end
70
70
 
71
- def initialize(mod, type, message)
71
+ def initialize(mod, message)
72
72
  @mod=mod; @message=message
73
73
  @@stock.push(self)
74
74
  $stderr.print "[#{mod.id}]: "
75
- super(mod, ModErrorLOAD_ERROR, message, false)
75
+ super(mod, ModErrorLOAD_ERROR, message, false, nil)
76
76
  end
77
77
  end
78
78
 
data/playlist/playlist.rb CHANGED
@@ -53,7 +53,7 @@ private
53
53
  f=File.open(file, 'r')
54
54
  data=f.read
55
55
  rescue
56
- ErrorError.new("#{file} cannot be read.", true)
56
+ ErrorError.new("#{file} cannot be read.")
57
57
  ensure
58
58
  f.close if f
59
59
  end
@@ -73,7 +73,7 @@ private
73
73
  add_file(p.to_s, tag)
74
74
  }
75
75
  rescue
76
- ErrorError.new("Error while parsing #{file}.", true)
76
+ ErrorError.new("Error while parsing #{file}.")
77
77
  end
78
78
  end
79
79
 
data/zik CHANGED
@@ -1,2 +1,377 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: UTF-8
3
+
4
+ =begin
5
+ Copyright 2007-2011 Vincent Carmona
6
+ vinc4mai@gmail.com
7
+
8
+ This file is part of ZiK.
9
+
10
+ ZiK is free software; you can redistribute it and/or modify
11
+ it under the terms of the GNU General Public License as published by
12
+ the Free Software Foundation; either version 2 of the License, or
13
+ (at your option) any later version.
14
+
15
+ ZiK is distributed in the hope that it will be useful,
16
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
17
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
+ GNU General Public License for more details.
19
+
20
+ You should have received a copy of the GNU General Public License
21
+ along with ZiK; if not, write to the Free Software
22
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
23
+ =end
24
+
25
+ $name='ZiK'
26
+ Version='0.16.2'
27
+
28
+ #Usage
29
+ def usage
30
+ puts "ZiK is an audio player based on gstreamer.\n\n"
31
+ puts "Options."
32
+ puts "--help -h\tPrint this help."
33
+ puts "--configuration -c <path>\tDirectory used to load and save configuration."
34
+ puts "--file -f <files>\tAdd files to playlist."
35
+ puts "--append -f <files>\tAppend files playlist."
36
+ puts "--show-all\tshow browser and playlist."
37
+ puts "--show-browser\tshow browser."
38
+ puts "--show-playlist\tshow playlist."
39
+ puts "--show-cd\tshow CD."
40
+ puts "--show-radio\tshow radios."
41
+ puts "--disable-cd\tDisable cd support"
42
+ puts "--disable-radio\tDisable webradios"
43
+ puts "--disable-module\tDisable module support"
44
+ puts "--hide-errors\tDo not show errors dialogs."
45
+ puts "--quiet -q\tDo not print on standart output."
46
+ puts "--no-save\tDo not overwrite configuration file"
47
+ puts "--title -t <name>\tRename window's title."
48
+ puts "--version\tDisplay the current version and exit."
49
+ end
50
+
51
+ #Parse options
52
+ $write_config=true
53
+ $show_errors=true
54
+ $cd=true
55
+ $radio=true
56
+ $module=true
57
+ append=false
58
+ playfiles=[]
59
+ while arg=ARGV.shift
60
+ case arg
61
+ when '--version'
62
+ puts "ZiK version #{Version}.";exit 0
63
+ when '--help', '-h'
64
+ usage;exit 0
65
+ when '--quiet', '-q'
66
+ $stderr=$stdout=File.new('/dev/null', 'w')
67
+ when '--no-save'
68
+ $write_config=false
69
+ when '--hide-errors'
70
+ $show_errors=false
71
+ when '--disable-cd'
72
+ $cd=false
73
+ when '--disable-radio'
74
+ $radio=false
75
+ when '--disable-module'
76
+ $module=false
77
+ when '--configuration', '-c'
78
+ User_dir=ARGV.shift
79
+ when '--show-all'
80
+ view='all'
81
+ when '--show-browser'
82
+ view='browser'
83
+ when '--show-playlist'
84
+ view='playlist'
85
+ when '--show-cd'
86
+ view='cd'
87
+ when '--show-radio'
88
+ view='radio'
89
+ when '--file', '-f'
90
+ append=false
91
+ when '--append', '-a'
92
+ append=true
93
+ when '--title', '-t'
94
+ $name+=' - '+ARGV.shift
95
+ when /^-/
96
+ $stderr.puts "Unknown option. Try ZiK --help.";exit 1
97
+ else
98
+ playfiles.push(arg)
99
+ end
100
+ end
101
+
102
+ Data_dir='/usr/share/ZiK'
103
+ Pix_dir=File.join(Data_dir,'pix')
104
+ Doc_dir='/usr/share/doc/ZiK'
105
+ Locale_dir='/usr/share/locale'
106
+
107
+ require 'gettext'
108
+ include GetText
109
+ bindtextdomain('ZiK', {:path=>Locale_dir})
110
+ require File.join(Data_dir, 'gui/error')
111
+ estock=ErrorsStock.new
112
+
113
+ ErrorInfo.new("Hi! This is #{$name} (#{Version}). Enjoy your music.")
114
+ ErrorWarning.new("ZiK is deprecated. You should call ZiK by zik") if __FILE__=~/ZiK$/
115
+
116
+ #Global configuration
117
+ $border=5
118
+
119
+ #Configuration
120
+ require File.join(Data_dir, 'gui/config')
121
+ User_dir=File.join(ENV['HOME'],'.ZiK') unless (defined? User_dir)
122
+ unless File.exist?(User_dir)
123
+ Dir.mkdir(User_dir)
124
+ config_new=true
125
+ end
126
+ if File.directory?(User_dir)
127
+ configuration_file=File.join(User_dir,'ZiKrc')
128
+ config=Configuration.new(configuration_file)
129
+ else
130
+ config=Configuration.new("")
131
+ $write_config=false
132
+ config_new=true
133
+ estock.add(ErrorERROR, _("Configuration will not be saved. #{User_dir} is not a directory."))
134
+ end
135
+ config_new||=false
136
+ config['view']=view if view
137
+
138
+ #Socket (client part)
139
+ module ZiKSocket
140
+ Address=File.join(User_dir, 'socket')
141
+ end
142
+ if config['socket']
143
+ require 'socket'
144
+ require File.join(Data_dir, 'gui/socket')
145
+ if File.socket?(ZiKSocket::Address)
146
+ begin
147
+ client=ZiKSocket::Client.new
148
+ ErrorInfo.new(_("Multisession : server already exists."))
149
+ playfiles.each{|file|
150
+ file=File.join(Dir.pwd, file) unless file =~ /^\//#absolute path
151
+ p client.command("add #{file}")
152
+ }
153
+ client.command("show")
154
+ client.close
155
+ exit 0
156
+ rescue Errno::ECONNREFUSED
157
+ ErrorError.new(_("Multissession: socket exists but server does not respond."))
158
+ File.delete(ZiKSocket::Address)
159
+ end
160
+ end
161
+ end
162
+
163
+ #Files needed for playlist managing
164
+ require 'pathname'
165
+ require 'rexml/document'
166
+ begin
167
+ require 'taglib2'
168
+ rescue LoadError
169
+ require 'taglib'
170
+ ErrorWarning.new("ruby-taglib is depreated.")
171
+ end
172
+ require File.join(Data_dir, 'playlist/song')
173
+ require File.join(Data_dir, 'playlist/common')
174
+ require File.join(Data_dir, 'playlist/export')
175
+ require File.join(Data_dir, 'playlist/playlist')
176
+
177
+
178
+ #Files needed for the audio player
179
+ require 'gst'
180
+ require File.join(Data_dir, 'player/player')
181
+
182
+ #Files needed for graphical interface
183
+ require 'gtk2'
184
+ require 'find'
185
+ require File.join(Data_dir, 'gui/common')
186
+ require File.join(Data_dir, 'gui/preference')
187
+ require File.join(Data_dir, 'gui/search')
188
+ require File.join(Data_dir, 'playlist/editlist')
189
+ require File.join(Data_dir, 'gui/edit')
190
+ require File.join(Data_dir, 'gui/progress')
191
+ require File.join(Data_dir, 'gui/gui')
192
+
193
+ #Files needed for audio cd
194
+ if $cd
195
+ begin
196
+ require 'musicbrainz'
197
+ require File.join(Data_dir, 'playlist/cdlist')
198
+ require File.join(Data_dir, 'player/cdplayer')
199
+ require File.join(Data_dir, 'gui/cdgui')
200
+ rescue LoadError
201
+ estock.add(ErrorERROR, _("CD support disable. mb-ruby is probably not installed."))
202
+ $cd=false
203
+ end
204
+ end
205
+
206
+ #Files needed for webradio
207
+ if $radio
208
+ begin
209
+ require 'uri'
210
+ require 'net/http'
211
+ require File.join(Data_dir, 'playlist/radiolist')
212
+ require File.join(Data_dir, 'player/radioplayer')
213
+ require File.join(Data_dir, 'gui/radiogui')
214
+ rescue LoadError
215
+ estock.add(ErrorERROR, _("Radio support disable."))
216
+ $radio=false
217
+ end
218
+ end
219
+
220
+ #Playlists
221
+ if (playfiles.empty? || append)
222
+ playlist=PlayList.new(File.join(User_dir,'playlist'),
223
+ config['current_song'], config['shuffle'], config['repeat'], config['name_format'], config['sort_by_track'])
224
+ end
225
+ playlist||=PlayList.new(nil, 0, config['shuffle'], config['repeat'], config['name_format'], config ['sort_by_track'])
226
+ playfiles.each{|f| playlist.add(f)}
227
+
228
+ cdlist=Cd::List.new(config) if $cd
229
+ if $radio
230
+ radio_file=File.join(User_dir,'radio')
231
+ radiolist=Radio::List.new(radio_file)
232
+ end
233
+
234
+ #Players
235
+ player=Player.new
236
+ player.volume=config['volume']
237
+ if $cd
238
+ begin
239
+ cdplayer=Cd::Player.new(config['cd_device'])
240
+ cdplayer.volume=config['volume']
241
+ rescue
242
+ estock.add(ErrorERROR, _("CD support disable (device not found?)."))
243
+ $cd=false
244
+ end
245
+ end
246
+ if $radio
247
+ radioplayer=Radio::Player.new
248
+ radioplayer.volume=config['volume']
249
+ end
250
+
251
+ cdplayer=nil unless $cd
252
+ cdlist=nil unless $cd
253
+ radiolist=nil unless $radio
254
+
255
+ #Gui
256
+ module View
257
+ View::ALL=0
258
+ View::PLAYLIST=1
259
+ View::BROWSER=2
260
+ View::COMPACT=3
261
+ if $cd
262
+ View::CD=4
263
+ $radio ? View::RADIO=5 : View::RADIO=View::ALL
264
+ else
265
+ View::CD=View::ALL
266
+ $radio ? View::RADIO=4 : View::RADIO=View::ALL
267
+ end
268
+ end
269
+ module DragType
270
+ #Type of data
271
+ #General types
272
+ #DragType::STRING=104 #Gdk::Atom.intern('string',true).to_i
273
+ DragType::URI_LIST=105 #text/uri-list
274
+ #DragType::PLAIN=106 #text/plain
275
+ #ZiK types
276
+ DragType::BROWSER_SELECTION=700
277
+ end
278
+ begin
279
+ Gdk::Color.parse(config['playing_color'])
280
+ rescue
281
+ ErrorError.new("#{config['playing_color']} is not a valid color. Use default one.")
282
+ config['playing_color']=config.default['playing_color']
283
+ end
284
+ if config_new
285
+ require File.join(Data_dir, 'gui/assistant')
286
+ assistant=Assistant.new(config)
287
+ def assistant.quit
288
+ self.destroy
289
+ Gtk.main_quit
290
+ end
291
+ Gtk.main
292
+ end
293
+ gui=Gui.new(player, playlist, config, cdplayer, cdlist, radioplayer, radiolist)
294
+ gui.show
295
+ Error.gui=gui
296
+ ErrorsStock.gui=gui
297
+ player.gui=gui
298
+ cdplayer.gui=gui if $cd
299
+ radioplayer.gui=gui if $radio
300
+
301
+ #Socket (Server part)
302
+ ##See http://ruby-gnome2.sourceforge.jp/hiki.cgi?tips_threads if random crash happen (or try GLib::Idle before)
303
+ module ZiKSocket
304
+ def ZiKSocket.clean
305
+ if File.socket?(Address)
306
+ c=ZiKSocket::Client.new
307
+ c.close_server
308
+ File.delete(Address)
309
+ end
310
+ end
311
+ end
312
+ if config['socket']
313
+ ErrorError.new(_("Multisession: server not started."), true) if ZiKSocket.start_server(gui, config, playlist).status.nil?#Except raise in thread used to start server.
314
+ end
315
+
316
+ #Modules
317
+ if $module
318
+ require File.join(Data_dir, 'gui/mod')
319
+ Mod.zik=gui
320
+ modinput={:config_dir=>File.join(User_dir, 'mod'), :mod_dir=>File.join(Data_dir,'mod'), :pix_dir=>Pix_dir}
321
+ ext='.rb'
322
+
323
+ mfiles=Dir.glob(File.join(Data_dir, 'mod', '*'+ext))
324
+ mfiles.each{|file|
325
+ begin
326
+ require file#require all modules in order to build preferences dialog.
327
+ rescue LoadError
328
+ estock.add(ErrorERROR, _("Cannot loaded a module (#{file})."))
329
+ rescue ModNotUniqueId
330
+ estock.add(ErrorERROR, _("Module id not unique (#{file})."))
331
+ end
332
+ }
333
+ Mod.own.each{|mod|
334
+ mod.init(modinput)
335
+ mod.load if config['module'].split(',').include?(mod.id)
336
+ }
337
+
338
+ Mod.global=false
339
+ mfiles=Dir.glob(File.join(User_dir, 'mod','*'+ext))
340
+ modinput[:mod_dir]=File.join(User_dir, 'mod')
341
+ mfiles.each{|file|
342
+ begin
343
+ require file#require all modules in order to build preferences dialog.
344
+ rescue LoadError
345
+ estock.add(ErrorERROR, _("Cannot loaded a module (#{file})."))
346
+ rescue ModNotUniqueId
347
+ estock.add(ErrorERROR, _("Module id not unique (#{file})."))
348
+ end
349
+ }
350
+ Mod.user.each{|mod|
351
+ mod.init(modinput)
352
+ mod.load if config['module'].split(',').include?(mod.id)
353
+ }
354
+ ModErrorLoadError.show_all
355
+ end
356
+
357
+ #Main
358
+ gui.play if config['play_on_start']
359
+ estock.show_all
360
+ begin
361
+ Gtk.main
362
+ if $write_config
363
+ playlist.save_zik(File.join(User_dir,'playlist'), config['relative_playlist'])
364
+ config['current_song']=playlist.current
365
+ config['volume']=player.volume
366
+ config.write
367
+ radiolist.write if $radio
368
+ end
369
+ Mod.all.each{|mod| mod.quit} if $module
370
+ ensure
371
+ player.stop
372
+ cdplayer.stop if $cd
373
+ radioplayer.stop if $radio
374
+ ZiKSocket.clean
375
+ end
376
+
377
+ ErrorInfo.new("Bye.")
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zik
3
3
  version: !ruby/object:Gem::Version
4
- hash: 93
4
+ hash: 91
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 16
9
- - 1
10
- version: 0.16.1
9
+ - 2
10
+ version: 0.16.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Vincent Carmona
@@ -36,7 +36,7 @@ cert_chain:
36
36
  oxzIRXlS
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2011-03-11 00:00:00 +01:00
39
+ date: 2011-03-12 00:00:00 +01:00
40
40
  default_executable:
41
41
  dependencies:
42
42
  - !ruby/object:Gem::Dependency
@@ -225,6 +225,7 @@ files:
225
225
  - doc/html/pix/logo.png
226
226
  - doc/html/styles/main.css
227
227
  - doc/ChangeLog
228
+ - doc/man/zik.1.gz
228
229
  - doc/man/manpage.1
229
230
  - ./zik
230
231
  has_rdoc: true
metadata.gz.sig CHANGED
Binary file