zik 0.16.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.
Files changed (84) hide show
  1. data.tar.gz.sig +0 -0
  2. data/ChangeLog +222 -0
  3. data/INSTALL +34 -0
  4. data/Makefile.in +199 -0
  5. data/README +53 -0
  6. data/ZiK.desktop +11 -0
  7. data/ZiK.rb +377 -0
  8. data/configure +269 -0
  9. data/dependencies +142 -0
  10. data/doc/COPYING +340 -0
  11. data/doc/ChangeLog +222 -0
  12. data/doc/html/fr/index.html +128 -0
  13. data/doc/html/index.html +126 -0
  14. data/doc/html/pix/ZiK3.png +0 -0
  15. data/doc/html/pix/capture.png +0 -0
  16. data/doc/html/pix/capture_cd.png +0 -0
  17. data/doc/html/pix/capture_compact.png +0 -0
  18. data/doc/html/pix/capture_radio.png +0 -0
  19. data/doc/html/pix/icon.png +0 -0
  20. data/doc/html/pix/logo.png +0 -0
  21. data/doc/html/styles/main.css +47 -0
  22. data/doc/man/manpage.1 +43 -0
  23. data/gui/assistant.rb +133 -0
  24. data/gui/cdgui.rb +54 -0
  25. data/gui/common.rb +56 -0
  26. data/gui/config.rb +120 -0
  27. data/gui/edit.rb +413 -0
  28. data/gui/error.rb +124 -0
  29. data/gui/gui.rb +1383 -0
  30. data/gui/mod.rb +239 -0
  31. data/gui/preference.rb +496 -0
  32. data/gui/progress.rb +50 -0
  33. data/gui/radiogui.rb +404 -0
  34. data/gui/search.rb +249 -0
  35. data/gui/socket.rb +107 -0
  36. data/mod/brainz.rb +76 -0
  37. data/mod/brainz/dialogs.rb +132 -0
  38. data/mod/brainz/functions.rb +55 -0
  39. data/mod/brainz/ofa.rb +76 -0
  40. data/mod/brainz/song.rb +139 -0
  41. data/mod/brainz/widget.rb +34 -0
  42. data/mod/cover.rb +90 -0
  43. data/mod/cover/application-x-cd-image.svg +666 -0
  44. data/mod/cover/config.rb +79 -0
  45. data/mod/cover/configwidget.rb +35 -0
  46. data/mod/cover/widget.rb +147 -0
  47. data/mod/hotkeys.rb +137 -0
  48. data/mod/hotkeys/config.rb +84 -0
  49. data/mod/hotkeys/configwidget.rb +93 -0
  50. data/mod/interact.rb +131 -0
  51. data/mod/interact/configwidget.rb +107 -0
  52. data/mod/interact/interaction.rb +79 -0
  53. data/mod/notify.rb +128 -0
  54. data/mod/notify/config.rb +96 -0
  55. data/mod/notify/configwidget.rb +76 -0
  56. data/mod/notify/window.rb +56 -0
  57. data/mod/trayicon.rb +83 -0
  58. data/mod/trayicon/config.rb +79 -0
  59. data/mod/trayicon/configwidget.rb +35 -0
  60. data/mod/trayicon/icon.rb +99 -0
  61. data/pix/ZiK.svg +78 -0
  62. data/pix/ZiK3.png +0 -0
  63. data/pix/assistant/capture.png +0 -0
  64. data/pix/gtk-directory.svg +287 -0
  65. data/pix/media-cdrom.svg +292 -0
  66. data/pix/network-wireless.svg +429 -0
  67. data/pix/player_play.svg +286 -0
  68. data/pix/sound.svg +244 -0
  69. data/pix/sound_directory.svg +464 -0
  70. data/player/cdplayer.rb +108 -0
  71. data/player/player.rb +132 -0
  72. data/player/radioplayer.rb +124 -0
  73. data/playlist/cdlist.rb +140 -0
  74. data/playlist/common.rb +343 -0
  75. data/playlist/editlist.rb +50 -0
  76. data/playlist/export.rb +108 -0
  77. data/playlist/playlist.rb +143 -0
  78. data/playlist/radiolist.rb +148 -0
  79. data/playlist/song.rb +122 -0
  80. data/po/ZiK.pot +622 -0
  81. data/po/fr/ZiK.po +658 -0
  82. data/zik +2 -0
  83. metadata +265 -0
  84. metadata.gz.sig +0 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,47 @@
1
+ div#header{
2
+ height:auto;
3
+ font-size:x-large;
4
+ background:#E3E3FF;
5
+ }
6
+ div#footer{
7
+ height:auto;
8
+ clear:both;
9
+ background:#E3E3FF;
10
+ text-align:right;
11
+ }
12
+ div#side{
13
+ float:left;
14
+ width:15%;
15
+ height:100%;
16
+ margin-top:5%;
17
+ }
18
+ div#side ul{
19
+ padding:5%;
20
+ border:2px solid;
21
+ background:#E3E3FF;/*#E4E4E4;*/
22
+ }
23
+ div#side li{
24
+ list-style-type:none;
25
+ padding:5%;
26
+ }
27
+ div#main{
28
+ float:left;
29
+ width:85%;
30
+ height:100%;
31
+ }
32
+ div#main p,div#main h1,div#main h2,div#main h3,div#main img{
33
+ margin-left:2%;
34
+ }
35
+
36
+ h1{
37
+ text-align: center;
38
+ }
39
+ .code{
40
+ border: thin solid black;
41
+ width: 50%;
42
+ padding-left: 5%;
43
+ background-color:#B9B9B9;
44
+ }
45
+ .index{
46
+ font-size:small;
47
+ }
data/doc/man/manpage.1 ADDED
@@ -0,0 +1,43 @@
1
+ \" Copyright 2007-2010 Vincent Carmona
2
+ \"
3
+ \" This file is part of ZiK.
4
+ \"
5
+ \" ZiK is free software; you can redistribute it and/or modify
6
+ \" it under the terms of the GNU General Public License as published by
7
+ \" the Free Software Foundation; either version 2 of the License, or
8
+ \" (at your option) any later version.
9
+ \"
10
+ \" ZiK is distributed in the hope that it will be useful,
11
+ \" but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ \" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ \" GNU General Public License for more details.
14
+ \"
15
+ \" You should have received a copy of the GNU General Public License
16
+ \" along with ZiK; if not, write to the Free Software
17
+ \" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
+ \"
19
+ .TH ZIK 1 "August 20, 2010"
20
+ .\" Please adjust this date whenever revising the manpage.
21
+ .SH NAME
22
+ zik \- ZiK is an audio player.
23
+ .SH SYNOPSIS
24
+ .B zik
25
+ .RI [ options ] " files" ...
26
+ .SH DESCRIPTION
27
+ .B ZiK
28
+ is simple and powerfull.
29
+ Audio files are shown the way you have sorted it to be added to your playlist. There is no library audio.
30
+ It can play all formats supported by gstreamer, CDs and radios.
31
+ .SH OPTIONS
32
+ .TP
33
+ .B \-h, \-\-help
34
+ Show summary of options.
35
+ .TP
36
+ .B \-v, \-\-version
37
+ Show version of program and exit.
38
+ .SH SEE ALSO
39
+ gstreamer documentation (http://gstreamer.freedesktop.org)
40
+ .P
41
+ http://zik.rubyforge.org/
42
+ .SH AUTHOR
43
+ zik was written by Vincent Carmona.
data/gui/assistant.rb ADDED
@@ -0,0 +1,133 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright 2007-2011 Vincent Carmona
4
+
5
+ This file is part of ZiK.
6
+
7
+ ZiK is free software; you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation; either version 2 of the License, or
10
+ (at your option) any later version.
11
+
12
+ ZiK is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with ZiK; if not, write to the Free Software
19
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
+ =end
21
+
22
+ class Assistant < Gtk::Assistant
23
+ def initialize(config, zik=nil)
24
+ @config=config; @zik=zik
25
+ super()
26
+ signal_connect('delete_event'){quit}
27
+ signal_connect('cancel'){quit}
28
+ signal_connect('close'){close}
29
+
30
+ #*********************Page 0******************************
31
+ lintro=Gtk::Label.new(_(
32
+ "Welcome to ZiK.\nThis assistant will briefly helps you to use and configure ZiK."))
33
+ lintro.wrap=true
34
+ append_page(lintro)
35
+ set_page_header_image(lintro, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
36
+ set_page_title(lintro, _("Introduction (1/6)"))
37
+ set_page_type(lintro, Gtk::Assistant::PAGE_INTRO)
38
+ set_page_complete(lintro, true)
39
+
40
+ #*********************Page 1******************************
41
+ label1=Gtk::Label.new(_(
42
+ "ZiK uses the path of your audio files instead of a music library.\n"+
43
+ "The browser (1) shows your audio files.\n"+
44
+ "Your playlist is shown on (3).\n"+
45
+ "You can use buttons (2) to add/remove files to/from your playlist.\n"+
46
+ "The button (4) is used to hide/show the different part of the window."+" "+
47
+ "It is also used to display the radio and the CDs player."))
48
+ label1.wrap=true
49
+ icapture=Gtk::Image.new(File.join(Doc_dir, 'html', 'pix', 'capture.png'))
50
+ #Box
51
+ vbox1=Gtk::VBox.new
52
+ vbox1.spacing=$border
53
+ vbox1.border_width=$border
54
+ vbox1.pack_start(label1)
55
+ vbox1.pack_start(icapture, false)
56
+ append_page(vbox1)
57
+ set_page_header_image(vbox1, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
58
+ set_page_title(vbox1, _("Main window (2/6)"))
59
+ set_page_type(vbox1, Gtk::Assistant::PAGE_CONTENT)
60
+ set_page_complete(vbox1, true)
61
+
62
+ #*********************Page 2******************************
63
+ #Directories
64
+ @dirbox=DirBox.new(self)
65
+ @dirbox.ilabel=_(
66
+ 'The browser displays only the selected directories.'+' '+'
67
+ Please select at least one Diretory.')
68
+ #Extensions
69
+ @extbox=ExtBox.new(config)
70
+ @extbox.ilabel=_(
71
+ 'Only files with the given extension are displayed in the browser view.'+' '+
72
+ 'Extensions must be separate by a comma (,).')
73
+ #Box
74
+ label2=Gtk::Label.new(_("Later you can change your setting in the Browser/Preferences menu."))
75
+ vbox2=Gtk::VBox.new
76
+ vbox2.spacing=$border
77
+ vbox2.border_width=$border
78
+ vbox2.pack_start(@dirbox, false)
79
+ vbox2.pack_start(@extbox, false)
80
+ vbox2.pack_start(label2, false)
81
+ append_page(vbox2)
82
+ set_page_header_image(vbox2, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
83
+ set_page_title(vbox2, _("Configuration (3/6)"))
84
+ set_page_type(vbox2, Gtk::Assistant::PAGE_CONTENT)
85
+ set_page_complete(vbox2, true)
86
+
87
+ #*********************Page 3******************************
88
+ label3=Gtk::Label.new(_(
89
+ "ZiK uses GStreamer to play audio files. GStreamer supports a lot of formats."+" "+
90
+ "The number of supported formats depends on which gstreamer plug-ins are installed"+" "+
91
+ "If you cannot play a file you should check which plug-ins are not installed."+" "+
92
+ "More informations on http://zik.rubyforge.org/wiki/wiki.pl?Supported_Formats"))
93
+ label3.wrap=true
94
+ append_page(label3)
95
+ set_page_header_image(label3, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
96
+ set_page_title(label3, _("GStreamer (4/5)"))
97
+ set_page_type(label3, Gtk::Assistant::PAGE_CONTENT)
98
+ set_page_complete(label3, true)
99
+
100
+ #*********************Page 4******************************
101
+ label4=Gtk::Label.new(_(
102
+ "ZiK configuration is done. You can find more options on the preferences window."+" "+
103
+ "You can find help or rerun this assistant on the help menu."))
104
+ label4.wrap=true
105
+ append_page(label4)
106
+ set_page_header_image(label4, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
107
+ set_page_title(label4, _("Conclusion (5/5)"))
108
+ set_page_type(label4, Gtk::Assistant::PAGE_CONFIRM)
109
+ set_page_complete(label4, true)
110
+
111
+ @config['directory'].split(',').each{|dir| @dirbox.add_directory(dir)}
112
+ config['extension'].split(',').each{|ext| @extbox.add_ext(ext)}
113
+ show_all
114
+ end
115
+
116
+ def close
117
+ ext=@config['extension']; dir=@config['directory']
118
+ @config['directory']=@dirbox.sdirectory
119
+ @config['extension']=@extbox.sext
120
+ if @zik
121
+ if @config['directory']==dir
122
+ @zik.refresh_treestore(@config['directory'], @config['extension']) unless @config['extension']==ext
123
+ else
124
+ @zik.refresh_treestore(@config['directory'], @config['extension'])
125
+ end
126
+ end
127
+ quit
128
+ end
129
+
130
+ def quit
131
+ destroy
132
+ end
133
+ end
data/gui/cdgui.rb ADDED
@@ -0,0 +1,54 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright 2007-2011 Vincent Carmona
4
+ vinc4mai@gmail.com
5
+
6
+ This file is part of ZiK.
7
+
8
+ ZiK is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 2 of the License, or
11
+ (at your option) any later version.
12
+
13
+ ZiK is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with ZiK; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ =end
22
+
23
+ module Cd
24
+ class Window < Gtk::ScrolledWindow
25
+ attr_reader :store, :view, :renderer
26
+
27
+ def initialize(config, list)
28
+ @config=config
29
+ @list=list
30
+
31
+ @store=Gtk::ListStore.new(String,TrueClass)
32
+ refresh_store
33
+
34
+ @renderer=Gtk::CellRendererText.new
35
+ @renderer.background=@config['playing_color']
36
+ @col=Gtk::TreeViewColumn.new(_("Cd"), @renderer, :text => 0, :background_set => 1)
37
+ @view=Gtk::TreeView.new(@store)
38
+ @view.append_column(@col)
39
+
40
+ super()
41
+ self.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
42
+ self.add(@view)
43
+ end
44
+
45
+ def refresh_store
46
+ @store.clear
47
+ @list.songs.each{|song|
48
+ child=@store.append
49
+ child[0]=song.name
50
+ child[1]=false
51
+ }
52
+ end
53
+ end
54
+ end
data/gui/common.rb ADDED
@@ -0,0 +1,56 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright 2007-2011 Vincent Carmona
4
+ vinc4mai@gmail.com
5
+
6
+ This file is part of ZiK.
7
+
8
+ ZiK is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 2 of the License, or
11
+ (at your option) any later version.
12
+
13
+ ZiK is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with ZiK; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ =end
22
+
23
+ #GDK_KEY_name are defined since gtk 2.22 and ruby-gnome2 ?.?
24
+ #GDK_name will be dropped
25
+ begin
26
+ Gdk::Keyval::GDK_KEY_p
27
+ rescue NameError
28
+ module Gdk
29
+ module Keyval
30
+ def self.compat(key)
31
+ eval("GDK_KEY_"+key+"=GDK_"+key)
32
+ end
33
+ %w(p s b n Down Up f d F1 Delete).each{|el| self.compat(el)}
34
+ end
35
+ end
36
+ end
37
+
38
+ module Pack
39
+ private
40
+ def hpack(array)
41
+ hbox=Gtk::HBox.new
42
+ hbox.border_width=$border
43
+ hbox.spacing=$border
44
+ array.each{|el|
45
+ el.is_a?(Gtk::Entry) ? expand=true : expand=false
46
+ hbox.pack_start(el, expand)}
47
+ hbox
48
+ end
49
+ def vpack(array)
50
+ vbox=Gtk::VBox.new
51
+ vbox.border_width=$border
52
+ vbox.spacing=$border
53
+ array.each{|el| vbox.pack_start(el, false)}
54
+ vbox
55
+ end
56
+ end
data/gui/config.rb ADDED
@@ -0,0 +1,120 @@
1
+ # encoding: UTF-8
2
+ =begin
3
+ Copyright 2007-2011 Vincent Carmona
4
+ vinc4mai@gmail.com
5
+
6
+ This file is part of ZiK.
7
+
8
+ ZiK is free software; you can redistribute it and/or modify
9
+ it under the terms of the GNU General Public License as published by
10
+ the Free Software Foundation; either version 2 of the License, or
11
+ (at your option) any later version.
12
+
13
+ ZiK is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ GNU General Public License for more details.
17
+
18
+ You should have received a copy of the GNU General Public License
19
+ along with ZiK; if not, write to the Free Software
20
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ =end
22
+
23
+ class Configuration < Hash
24
+
25
+ attr_reader :default
26
+
27
+ def initialize(file)
28
+ #Colors are list in /etc/X11/rgb.txt.
29
+ @default={'name_format'=>'Artist - Title - None - None',
30
+ 'play_on_start'=>false, 'current_song'=>0, 'volume'=>1.0, 'shuffle'=>false, 'repeat'=>false,
31
+ 'sort_by_track'=>false,
32
+ 'x'=>0, 'y'=>0, 'width'=>500, 'height'=>500, 'view'=>'all', 'paned_position'=>250,
33
+ 'playing_color'=>'Pink', 'compact'=>false,
34
+ 'directory'=>',', 'extension'=>'wav,flac,ogg,mp3,wma,xspf,m3u,pls',
35
+ 'sort_directories_first'=>true, 'sort_case_sensitive'=>true, 'refresh_on_start'=>true,
36
+ 'search_in_path'=>true, 'search_in_title'=>false, 'search_in_artist'=>false,
37
+ 'search_in_album'=>false, 'search_in_genre'=>false,
38
+ 'relative_playlist'=>false,
39
+ 'cd_device'=>'/dev/cdrom', 'cd_web'=>false,
40
+ 'remaining_time'=>false,
41
+ 'socket'=>false,
42
+ 'module'=>','}
43
+ @file=file
44
+
45
+ super
46
+ self.merge!(@default)
47
+
48
+ if File.exist?(@file)
49
+ read
50
+ else
51
+ ErrorWarning.new("Configuration file not found. Loading default configuration.")
52
+ end
53
+ end
54
+
55
+ def read
56
+ begin
57
+ f=File.open(@file,'r')
58
+ array=f.readlines
59
+ array.reject!{|a| a =~ /^#/}
60
+ array.reject!{|a| a =~ /^\n/}
61
+ array.each{|a| a.chomp!}
62
+ array.each{|a|
63
+ l=a.split('=', 2)
64
+ self[l[0]]=l[1]
65
+ }
66
+ ErrorInfo.new("#{@file} read.")
67
+ rescue
68
+ ErrorError.new('Error while reading configuration file. Use default configuration.')
69
+ ensure
70
+ str2value
71
+ f.close unless f.nil?
72
+ end
73
+ end
74
+
75
+ def write
76
+ begin
77
+ f=File.open(@file,'w')
78
+ f.puts '##Configuration file for ZiK player.'
79
+ f.puts '##All lines begining with # are ignored.'
80
+ f.puts '###'
81
+ self.each{|key,value| f.puts "#{key}=#{value}"}
82
+ ErrorInfo.new("Configuration saved.")
83
+ rescue
84
+ ErrorError.new(_('Saving configuration.'), true)
85
+ ensure
86
+ f.close unless f.nil?
87
+ end
88
+ end
89
+
90
+ private
91
+
92
+ def str2value
93
+ #Playlist
94
+ self['sort_by_track']=="true" ? self['sort_by_track']=true : self['sort_by_track']=false
95
+ #Player
96
+ self['play_on_start']=="true" ? self['play_on_start']=true : self['play_on_start']=false
97
+ self['current_song']=self['current_song'].to_i
98
+ self['volume']=self['volume'].gsub(/,/,'.').to_f#Volume is written with a comma to seperate decimals. Is it a bug?
99
+ self['shuffle']=="true" ? self['shuffle']=true : self['shuffle']=false
100
+ self['repeat']=="true" ? self['repeat']=true : self['repeat']=false
101
+ #cd
102
+ self['cd_web']=="true" ? self['cd_web']=true : self['cd_web']=false
103
+ #Gui
104
+ self['x']=self['x'].to_i;self['y']=self['y'].to_i;
105
+ self['width']=self['width'].to_i;self['height']=self['height'].to_i
106
+ self['paned_position']=self['paned_position'].to_i
107
+ self['refresh_on_start']=="false" ? self['refresh_on_start']=false : self['refresh_on_start']=true
108
+ self['sort_directories_first']=="false" ? self['sort_directories_first']=false : self['sort_directories_first']=true
109
+ self['sort_case_sensitive']=="false" ? self['sort_case_sensitive']=false : self['sort_case_sensitive']=true
110
+ self['search_in_path']=="false" ? self['search_in_path']=false : self['search_in_path']=true
111
+ self['search_in_title']=="true" ? self['search_in_title']=true : self['search_in_title']=false
112
+ self['search_in_artist']=="true" ? self['search_in_artist']=true : self['search_in_artist']=false
113
+ self['search_in_album']=="true" ? self['search_in_album']=true : self['search_in_album']=false
114
+ self['search_in_genre']=="true" ? self['search_in_genre']=true : self['search_in_genre']=false
115
+ self['relative_playlist']=="true" ? self['relative_playlist']=true : self['relative_playlist']=false
116
+ self['compact']=="true" ? self['compact']=true : self['compact']=false
117
+ self['remaining_time']=="true" ? self['remaining_time']=true : self['remaining_time']=false
118
+ self['socket']=="true" ? self['socket']=true : self['socket']=false
119
+ end
120
+ end