zik 0.16.2 → 0.17.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.tar.gz.sig +0 -0
- data/ChangeLog +22 -0
- data/Makefile.in +18 -11
- data/README +4 -0
- data/ZiK.rb +45 -21
- data/doc/ChangeLog +22 -0
- data/gui/assistant.rb +31 -16
- data/gui/common.rb +4 -2
- data/gui/config.rb +1 -1
- data/gui/gui.rb +77 -38
- data/gui/preference.rb +51 -14
- data/gui/socket.rb +5 -1
- data/mod/brainz.rb +4 -1
- data/mod/brainz/functions.rb +4 -4
- data/mod/hotkeys.rb +21 -14
- data/mod/hotkeys/config.rb +4 -2
- data/mod/hotkeys/configwidget.rb +18 -3
- data/mod/trayicon.rb +15 -1
- data/mod/trayicon/config.rb +2 -1
- data/mod/trayicon/configwidget.rb +11 -4
- data/player/cdplayer.rb +3 -3
- data/player/player.rb +5 -5
- data/player/radioplayer.rb +6 -6
- data/po/ZiK.pot +151 -99
- data/po/fr/ZiK.po +130 -98
- data/theme/dark/all.png +0 -0
- data/theme/dark/browser.png +0 -0
- data/theme/dark/cd.png +0 -0
- data/theme/dark/compact.png +0 -0
- data/theme/dark/copyright +10 -0
- data/theme/dark/playlist.png +0 -0
- data/theme/dark/radio.png +0 -0
- data/theme/ligth/all.png +0 -0
- data/theme/ligth/browser.png +0 -0
- data/theme/ligth/cd.png +0 -0
- data/theme/ligth/compact.png +0 -0
- data/theme/ligth/copyright +10 -0
- data/theme/ligth/playlist.png +0 -0
- data/theme/ligth/radio.png +0 -0
- data/zik +49 -25
- metadata +32 -10
- metadata.gz.sig +0 -0
- data/pix/gtk-directory.svg +0 -287
- data/pix/media-cdrom.svg +0 -292
- data/pix/network-wireless.svg +0 -429
- data/pix/player_play.svg +0 -286
- data/pix/sound.svg +0 -244
- data/pix/sound_directory.svg +0 -464
    
        data.tar.gz.sig
    CHANGED
    
    | Binary file | 
    
        data/ChangeLog
    CHANGED
    
    | @@ -1,3 +1,25 @@ | |
| 1 | 
            +
            ###Version 0.17.0
         | 
| 2 | 
            +
            Use new icons picture. Thanks J. Kaiden for the artwork.
         | 
| 3 | 
            +
            Add choices for theme in preferences window.
         | 
| 4 | 
            +
            Tray icon: add a option to hide ZiK on close.
         | 
| 5 | 
            +
            Hotkeys: add hide/show ZiK.
         | 
| 6 | 
            +
            Do not freeze browser when editing playlist (close bug #28638).
         | 
| 7 | 
            +
            Multi and single sessions were switched in preferences dialog.
         | 
| 8 | 
            +
            Choice between multi and single sessions is applied immediately.
         | 
| 9 | 
            +
            Fix a bug in hotkeys module that prevents multi-sessions.
         | 
| 10 | 
            +
            Fix a bug that can prevent loading previous browser view.
         | 
| 11 | 
            +
            Brainz module: fix a in error handling (thanks Merle from forum.ubuntu-fr.org for the report).
         | 
| 12 | 
            +
            Show the info dialog only the first time playlist is edited.
         | 
| 13 | 
            +
            Restore position when showing main window.
         | 
| 14 | 
            +
            Add scrollbars for the assistant.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Support only "zik" command to launch ZiK (nor ZiK or ZiK.rb).
         | 
| 17 | 
            +
            Drop support of old version of rghk (< 0.2)
         | 
| 18 | 
            +
            Start to implement XDG base directory specification for user directories.
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            translation:
         | 
| 21 | 
            +
             update french.
         | 
| 22 | 
            +
             | 
| 1 23 | 
             
            ###Version 0.16.2
         | 
| 2 24 | 
             
            Fix a bug : ZiK crash when showing an error before main window is defined.
         | 
| 3 25 | 
             
            Fix a bug: ZiK crash when loading a module failed.
         | 
    
        data/Makefile.in
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            NAME=ZiK
         | 
| 2 | 
            -
            VERSION=0. | 
| 2 | 
            +
            VERSION=0.17.0
         | 
| 3 3 |  | 
| 4 4 | 
             
            SHELL=/bin/sh
         | 
| 5 5 | 
             
            RUBY=/usr/bin/ruby
         | 
| @@ -31,6 +31,8 @@ HTMLFILES=$(wildcard $(SRCDIR)/doc/html/*.html) | |
| 31 31 | 
             
            HTMLFILESPIX=$(wildcard $(SRCDIR)/doc/html/pix/*.png)
         | 
| 32 32 | 
             
            HTMLFILESCSS=$(wildcard $(SRCDIR)/doc/html/styles/*.css)
         | 
| 33 33 | 
             
            HTMLLANGUAGES=fr
         | 
| 34 | 
            +
            THEMEDIR=$(DATADIR)/$(NAME)/theme
         | 
| 35 | 
            +
            THEMES=dark ligth
         | 
| 34 36 | 
             
            GUIDIR=$(DATADIR)/$(NAME)/gui
         | 
| 35 37 | 
             
            GUIFILES=$(wildcard $(SRCDIR)/gui/*.rb)
         | 
| 36 38 | 
             
            PIXDIR=$(DATADIR)/$(NAME)/pix
         | 
| @@ -70,22 +72,27 @@ check-depend: dependencies | |
| 70 72 | 
             
            test: zik
         | 
| 71 73 | 
             
            	$(RUBY) -c zik
         | 
| 72 74 |  | 
| 73 | 
            -
            install: install-exec install- | 
| 75 | 
            +
            install: install-exec install-data install-desktop install-module install-doc install-local
         | 
| 74 76 |  | 
| 75 77 | 
             
            install-exec: zik
         | 
| 76 78 | 
             
            	$(INSTALL_DIR) $(DESTDIR)$(BINDIR)
         | 
| 77 79 | 
             
            	$(INSTALL_PROGRAM) $(SRCDIR)/zik $(DESTDIR)$(BINDIR)/zik
         | 
| 78 80 |  | 
| 79 | 
            -
            install- | 
| 80 | 
            -
            	ln --symbolic $(BINDIR)/zik $(DESTDIR)$(BINDIR)/ZiK
         | 
| 81 | 
            -
             | 
| 82 | 
            -
            install-data:
         | 
| 81 | 
            +
            install-data: install-theme
         | 
| 83 82 | 
             
            	$(INSTALL_DIR) $(DESTDIR)$(GUIDIR) $(DESTDIR)$(PIXDIR) $(DESTDIR)$(PIXDIR)/assistant $(DESTDIR)$(PLAYLISTDIR) $(DESTDIR)$(PLAYERDIR)
         | 
| 84 83 | 
             
            	$(INSTALL_DATA) $(GUIFILES) $(DESTDIR)$(GUIDIR)
         | 
| 85 84 | 
             
            	$(INSTALL_DATA) $(PIXFILES) $(DESTDIR)$(PIXDIR)
         | 
| 86 85 | 
             
            	$(INSTALL_DATA) $(PLAYLISTFILES) $(DESTDIR)$(PLAYLISTDIR)
         | 
| 87 86 | 
             
            	$(INSTALL_DATA) $(PLAYERFILES) $(DESTDIR)$(PLAYERDIR)
         | 
| 88 87 |  | 
| 88 | 
            +
            install-theme:
         | 
| 89 | 
            +
            	$(INSTALL_DIR) $(DESTDIR)$(THEMEDIR)
         | 
| 90 | 
            +
            	for theme in $(THEMES); do \
         | 
| 91 | 
            +
            	$(INSTALL_DIR) $(DESTDIR)$(THEMEDIR)/$$theme; \
         | 
| 92 | 
            +
            #	echo $(SRCDIR)/theme/$theme/*; \
         | 
| 93 | 
            +
            	$(INSTALL_DATA) $(SRCDIR)/theme/$$theme/* $(DESTDIR)$(THEMEDIR)/$$theme; \
         | 
| 94 | 
            +
            	done
         | 
| 95 | 
            +
             | 
| 89 96 | 
             
            install-desktop:
         | 
| 90 97 | 
             
            	$(INSTALL_DIR) $(DESTDIR)$(DESKTOPDIR)
         | 
| 91 98 | 
             
            	$(INSTALL_DESKTOP) $(DESTDIR)$(DESKTOPDIR) $(SRCDIR)/zik.desktop
         | 
| @@ -148,18 +155,18 @@ install-local: | |
| 148 155 | 
             
            	$(INSTALL_DATA) $(SRCDIR)/locale/$$lang/LC_MESSAGES/ZiK.mo $(DESTDIR)$(LOCALEDIR)/$$lang/LC_MESSAGES; \
         | 
| 149 156 | 
             
            	done
         | 
| 150 157 |  | 
| 151 | 
            -
            uninstall: uninstall-exec uninstall- | 
| 158 | 
            +
            uninstall: uninstall-exec uninstall-data uninstall-desktop uninstall-module uninstall-doc uninstall-local
         | 
| 152 159 |  | 
| 153 160 | 
             
            uninstall-exec:
         | 
| 154 161 | 
             
            	rm -f $(DESTDIR)$(BINDIR)/zik
         | 
| 155 | 
            -
             | 
| 156 | 
            -
            uninstall-link:
         | 
| 157 | 
            -
            	rm -f $(DESTDIR)$(BINDIR)/ZiK
         | 
| 158 162 |  | 
| 159 | 
            -
            uninstall-data:
         | 
| 163 | 
            +
            uninstall-data: uninstall-theme
         | 
| 160 164 | 
             
            	rm -rf $(DESTDIR)$(GUIDIR) $(DESTDIR)$(PIXDIR) $(DESTDIR)$(PLAYLISTDIR) $(DESTDIR)$(PLAYERDIR)
         | 
| 161 165 | 
             
            	rmdir $(DESTDIR)$(DATADIR)/$(NAME) --ignore-fail-on-non-empty
         | 
| 162 166 |  | 
| 167 | 
            +
            uninstall-theme:
         | 
| 168 | 
            +
            	rm -rf $(DESTDIR)$(THEMEDIR)
         | 
| 169 | 
            +
             | 
| 163 170 | 
             
            uninstall-desktop:
         | 
| 164 171 | 
             
            	rm -f $(DESTDIR)$(DESKTOPDIR)/zik.desktop
         | 
| 165 172 | 
             
            	$(UPDATE_MIME)
         | 
    
        data/README
    CHANGED
    
    | @@ -20,6 +20,10 @@ gst-plugins-ugly http://gstreamer.freedesktop.org/ | |
| 20 20 | 
             
            For other format suppport (ie: mp3,wav), check gstreamer plug-ins:
         | 
| 21 21 | 
             
            gst-plugins-*	http://gstreamer.freedesktop.org/
         | 
| 22 22 |  | 
| 23 | 
            +
            For modules:
         | 
| 24 | 
            +
            cover -> ruby-mp3info http://rubyforge.org/projects/ruby-mp3info/
         | 
| 25 | 
            +
            notify -> ruby-libnotify http://ruby-libnotify.rubyforge.org/
         | 
| 26 | 
            +
            hotkeys -> rghk http://zik.rubyforge.org/rghk/
         | 
| 23 27 |  | 
| 24 28 | 
             
            You can use check the dependencies by running (after running the configure script):
         | 
| 25 29 | 
             
            		make check-depend
         | 
    
        data/ZiK.rb
    CHANGED
    
    | @@ -101,6 +101,7 @@ end | |
| 101 101 |  | 
| 102 102 | 
             
            Data_dir=File.dirname(__FILE__)
         | 
| 103 103 | 
             
            Pix_dir=File.join(Data_dir,'pix')
         | 
| 104 | 
            +
            Theme_dir=File.join(Data_dir, 'theme')
         | 
| 104 105 | 
             
            Doc_dir=File.join(Data_dir,'doc')
         | 
| 105 106 | 
             
            Locale_dir=File.join(Data_dir,'locale')
         | 
| 106 107 |  | 
| @@ -111,18 +112,38 @@ require File.join(Data_dir, 'gui/error') | |
| 111 112 | 
             
            estock=ErrorsStock.new
         | 
| 112 113 |  | 
| 113 114 | 
             
            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 115 |  | 
| 116 116 | 
             
            #Global configuration
         | 
| 117 117 | 
             
            $border=5
         | 
| 118 118 |  | 
| 119 119 | 
             
            #Configuration
         | 
| 120 120 | 
             
            require File.join(Data_dir, 'gui/config')
         | 
| 121 | 
            -
             | 
| 121 | 
            +
            if (defined? User_dir)
         | 
| 122 | 
            +
            	Cache_dir=File.join('User_dir', 'cache')
         | 
| 123 | 
            +
            	Runtime_dir=File.join('User_dir', 'runtime')
         | 
| 124 | 
            +
            else
         | 
| 125 | 
            +
            	User_dir= ENV['XDG_CONFIG_HOME'] ? File.join(ENV['XDG_CONFIG_HOME'], 'ZiK') :
         | 
| 126 | 
            +
            		File.join(ENV['HOME'], '.config', 'ZiK')
         | 
| 127 | 
            +
            	unless File.exist?(User_dir)#Check for deprecated location of User_dir
         | 
| 128 | 
            +
            		old_user_dir=File.join(ENV['HOME'],'.ZiK')
         | 
| 129 | 
            +
            		File.rename(old_user_dir, User_dir) if File.directory?(old_user_dir)
         | 
| 130 | 
            +
            	end
         | 
| 131 | 
            +
            	Cache_dir= ENV['XDG_CACHE_HOME'] ? File.join(ENV['XDG_CACHE_HOME'], 'ZiK') :
         | 
| 132 | 
            +
            		File.join(ENV['HOME'], '.cache', 'ZiK')
         | 
| 133 | 
            +
            	if ENV['XDG_RUNTIME_DIR']
         | 
| 134 | 
            +
            		Runtime_dir=File.join(ENV['XDG_RUNTIME_DIR'], 'ZiK')
         | 
| 135 | 
            +
            	else
         | 
| 136 | 
            +
            		require 'tempfile'
         | 
| 137 | 
            +
            		Runtime_dir=File.join(Dir.tmpdir, 'ZiK-'+ENV['USER'])
         | 
| 138 | 
            +
            		ErrorWarning.new("XDG_RUNTIME_DIR is not set. #{Runtime_dir} is used instead.")
         | 
| 139 | 
            +
            	end
         | 
| 140 | 
            +
            end
         | 
| 122 141 | 
             
            unless File.exist?(User_dir)
         | 
| 123 142 | 
             
            	Dir.mkdir(User_dir)
         | 
| 124 143 | 
             
            	config_new=true
         | 
| 125 144 | 
             
            end
         | 
| 145 | 
            +
            Dir.mkdir(Cache_dir) unless File.exist?(Cache_dir)
         | 
| 146 | 
            +
            Dir.mkdir(Runtime_dir, 0700) unless File.exist?(Runtime_dir)
         | 
| 126 147 | 
             
            if File.directory?(User_dir)
         | 
| 127 148 | 
             
            	configuration_file=File.join(User_dir,'ZiKrc')
         | 
| 128 149 | 
             
            	config=Configuration.new(configuration_file)
         | 
| @@ -137,26 +158,23 @@ config['view']=view if view | |
| 137 158 |  | 
| 138 159 | 
             
            #Socket (client part)
         | 
| 139 160 | 
             
            module ZiKSocket
         | 
| 140 | 
            -
            	Address=File.join( | 
| 161 | 
            +
            	Address=File.join(Runtime_dir, 'socket')
         | 
| 141 162 | 
             
            end
         | 
| 142 | 
            -
            if  | 
| 143 | 
            -
            	require 'socket'
         | 
| 163 | 
            +
            if File.socket?(ZiKSocket::Address)
         | 
| 144 164 | 
             
            	require File.join(Data_dir, 'gui/socket')
         | 
| 145 | 
            -
            	 | 
| 146 | 
            -
            		 | 
| 147 | 
            -
             | 
| 148 | 
            -
             | 
| 149 | 
            -
            			 | 
| 150 | 
            -
             | 
| 151 | 
            -
             | 
| 152 | 
            -
             | 
| 153 | 
            -
             | 
| 154 | 
            -
             | 
| 155 | 
            -
             | 
| 156 | 
            -
            		 | 
| 157 | 
            -
             | 
| 158 | 
            -
            			File.delete(ZiKSocket::Address)
         | 
| 159 | 
            -
            		end
         | 
| 165 | 
            +
            	begin
         | 
| 166 | 
            +
            		client=ZiKSocket::Client.new
         | 
| 167 | 
            +
            		ErrorInfo.new(_("Multisession : server already exists."))
         | 
| 168 | 
            +
            		playfiles.each{|file|
         | 
| 169 | 
            +
            			file=File.join(Dir.pwd, file) unless file =~ /^\//#absolute path
         | 
| 170 | 
            +
            			p client.command("add #{file}")
         | 
| 171 | 
            +
            		}
         | 
| 172 | 
            +
            		client.command("show")
         | 
| 173 | 
            +
            		client.close
         | 
| 174 | 
            +
            		exit 0
         | 
| 175 | 
            +
            	rescue Errno::ECONNREFUSED
         | 
| 176 | 
            +
            		ErrorError.new(_("Multissession: socket exists but server does not respond."))
         | 
| 177 | 
            +
            		File.delete(ZiKSocket::Address)
         | 
| 160 178 | 
             
            	end
         | 
| 161 179 | 
             
            end
         | 
| 162 180 |  | 
| @@ -310,7 +328,8 @@ module ZiKSocket | |
| 310 328 | 
             
            	end
         | 
| 311 329 | 
             
            end
         | 
| 312 330 | 
             
            if config['socket']
         | 
| 313 | 
            -
            	 | 
| 331 | 
            +
            	require File.join(Data_dir, 'gui/socket')
         | 
| 332 | 
            +
            	ZiKSocket.start_server(gui, config, playlist)
         | 
| 314 333 | 
             
            end
         | 
| 315 334 |  | 
| 316 335 | 
             
            #Modules
         | 
| @@ -372,6 +391,11 @@ ensure | |
| 372 391 | 
             
            	cdplayer.stop if $cd
         | 
| 373 392 | 
             
            	radioplayer.stop if $radio
         | 
| 374 393 | 
             
            	ZiKSocket.clean
         | 
| 394 | 
            +
            	begin
         | 
| 395 | 
            +
            		Dir.rmdir(Runtime_dir) if File.directory?(Runtime_dir)
         | 
| 396 | 
            +
            	rescue Errno::ENOTEMPTY
         | 
| 397 | 
            +
            		ErrorError.new("Cannot delete #{Runtime_dir}.")
         | 
| 398 | 
            +
            	end
         | 
| 375 399 | 
             
            end
         | 
| 376 400 |  | 
| 377 401 | 
             
            ErrorInfo.new("Bye.")
         | 
    
        data/doc/ChangeLog
    CHANGED
    
    | @@ -1,3 +1,25 @@ | |
| 1 | 
            +
            ###Version 0.17.0
         | 
| 2 | 
            +
            Use new icons picture. Thanks J. Kaiden for the artwork.
         | 
| 3 | 
            +
            Add choices for theme in preferences window.
         | 
| 4 | 
            +
            Tray icon: add a option to hide ZiK on close.
         | 
| 5 | 
            +
            Hotkeys: add hide/show ZiK.
         | 
| 6 | 
            +
            Do not freeze browser when editing playlist (close bug #28638).
         | 
| 7 | 
            +
            Multi and single sessions were switched in preferences dialog.
         | 
| 8 | 
            +
            Choice between multi and single sessions is applied immediately.
         | 
| 9 | 
            +
            Fix a bug in hotkeys module that prevents multi-sessions.
         | 
| 10 | 
            +
            Fix a bug that can prevent loading previous browser view.
         | 
| 11 | 
            +
            Brainz module: fix a in error handling (thanks Merle from forum.ubuntu-fr.org for the report).
         | 
| 12 | 
            +
            Show the info dialog only the first time playlist is edited.
         | 
| 13 | 
            +
            Restore position when showing main window.
         | 
| 14 | 
            +
            Add scrollbars for the assistant.
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            Support only "zik" command to launch ZiK (nor ZiK or ZiK.rb).
         | 
| 17 | 
            +
            Drop support of old version of rghk (< 0.2)
         | 
| 18 | 
            +
            Start to implement XDG base directory specification for user directories.
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            translation:
         | 
| 21 | 
            +
             update french.
         | 
| 22 | 
            +
             | 
| 1 23 | 
             
            ###Version 0.16.2
         | 
| 2 24 | 
             
            Fix a bug : ZiK crash when showing an error before main window is defined.
         | 
| 3 25 | 
             
            Fix a bug: ZiK crash when loading a module failed.
         | 
    
        data/gui/assistant.rb
    CHANGED
    
    | @@ -23,6 +23,8 @@ class Assistant < Gtk::Assistant | |
| 23 23 | 
             
            	def initialize(config, zik=nil)
         | 
| 24 24 | 
             
            		@config=config; @zik=zik
         | 
| 25 25 | 
             
            		super()
         | 
| 26 | 
            +
            		self.title=$name
         | 
| 27 | 
            +
            		self.set_default_size(800, 800)
         | 
| 26 28 | 
             
            		signal_connect('delete_event'){quit}
         | 
| 27 29 | 
             
            		signal_connect('cancel'){quit}
         | 
| 28 30 | 
             
            		signal_connect('close'){close}
         | 
| @@ -53,11 +55,14 @@ class Assistant < Gtk::Assistant | |
| 53 55 | 
             
            		vbox1.border_width=$border
         | 
| 54 56 | 
             
            		vbox1.pack_start(label1)
         | 
| 55 57 | 
             
            		vbox1.pack_start(icapture, false)
         | 
| 56 | 
            -
            		 | 
| 57 | 
            -
            		 | 
| 58 | 
            -
            		 | 
| 59 | 
            -
            		 | 
| 60 | 
            -
            		 | 
| 58 | 
            +
            		w1=Gtk::ScrolledWindow.new
         | 
| 59 | 
            +
            		w1.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
         | 
| 60 | 
            +
            		w1.add_with_viewport(vbox1)
         | 
| 61 | 
            +
            		append_page(w1)
         | 
| 62 | 
            +
            		set_page_header_image(w1, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
         | 
| 63 | 
            +
            		set_page_title(w1, _("Main window (2/6)"))
         | 
| 64 | 
            +
            		set_page_type(w1, Gtk::Assistant::PAGE_CONTENT)
         | 
| 65 | 
            +
            		set_page_complete(w1, true)
         | 
| 61 66 |  | 
| 62 67 | 
             
            #*********************Page 2******************************
         | 
| 63 68 | 
             
            #Directories
         | 
| @@ -78,24 +83,34 @@ Please select at least one Diretory.') | |
| 78 83 | 
             
            		vbox2.pack_start(@dirbox, false)
         | 
| 79 84 | 
             
            		vbox2.pack_start(@extbox, false)
         | 
| 80 85 | 
             
            		vbox2.pack_start(label2, false)
         | 
| 81 | 
            -
            		 | 
| 82 | 
            -
            		 | 
| 83 | 
            -
            		 | 
| 84 | 
            -
            		 | 
| 85 | 
            -
            		 | 
| 86 | 
            +
            		w2=Gtk::ScrolledWindow.new
         | 
| 87 | 
            +
            		w2.set_policy(Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC)
         | 
| 88 | 
            +
            		w2.add_with_viewport(vbox2)
         | 
| 89 | 
            +
            		append_page(w2)
         | 
| 90 | 
            +
            		set_page_header_image(w2, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
         | 
| 91 | 
            +
            		set_page_title(w2, _("Configuration (3/6)"))
         | 
| 92 | 
            +
            		set_page_type(w2, Gtk::Assistant::PAGE_CONTENT)
         | 
| 93 | 
            +
            		set_page_complete(w2, true)
         | 
| 86 94 |  | 
| 87 95 | 
             
            #*********************Page 3******************************
         | 
| 88 96 | 
             
            		label3=Gtk::Label.new(_(
         | 
| 89 97 | 
             
            "ZiK uses GStreamer to play audio files. GStreamer supports a lot of formats."+" "+
         | 
| 90 98 | 
             
            "The number of supported formats depends on which gstreamer plug-ins are installed"+" "+
         | 
| 99 | 
            +
            "If gstreamer plug-ins are missing ZiK will try to install them."+" "+
         | 
| 91 100 | 
             
            "If you cannot play a file you should check which plug-ins are not installed."+" "+
         | 
| 92 | 
            -
            "More informations on  | 
| 101 | 
            +
            "More informations on "))
         | 
| 93 102 | 
             
            		label3.wrap=true
         | 
| 94 | 
            -
            		 | 
| 95 | 
            -
            		 | 
| 96 | 
            -
            		 | 
| 97 | 
            -
            		 | 
| 98 | 
            -
            		 | 
| 103 | 
            +
            		b3=Gtk::LinkButton.new(_('http://zik.rubyforge.org/wiki/wiki.pl?Supported_Formats'))
         | 
| 104 | 
            +
            		vbox3=Gtk::VBox.new
         | 
| 105 | 
            +
            		vbox3.spacing=$border
         | 
| 106 | 
            +
            		vbox3.border_width=$border
         | 
| 107 | 
            +
            		vbox3.pack_start(label3, false)
         | 
| 108 | 
            +
            		vbox3.pack_start(b3, false)
         | 
| 109 | 
            +
            		append_page(vbox3)
         | 
| 110 | 
            +
            		set_page_header_image(vbox3, Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK3.png'), 128, 64))
         | 
| 111 | 
            +
            		set_page_title(vbox3, _("GStreamer (4/5)"))
         | 
| 112 | 
            +
            		set_page_type(vbox3, Gtk::Assistant::PAGE_CONTENT)
         | 
| 113 | 
            +
            		set_page_complete(vbox3, true)
         | 
| 99 114 |  | 
| 100 115 | 
             
            #*********************Page 4******************************
         | 
| 101 116 | 
             
            		label4=Gtk::Label.new(_(
         | 
    
        data/gui/common.rb
    CHANGED
    
    | @@ -37,7 +37,8 @@ end | |
| 37 37 |  | 
| 38 38 | 
             
            module Pack
         | 
| 39 39 | 
             
            private
         | 
| 40 | 
            -
            def hpack( | 
| 40 | 
            +
            def hpack(*a)#Accept both forms: hpack([1, 2, 3]) and hpack(1, 2, 3)
         | 
| 41 | 
            +
            	array=*a
         | 
| 41 42 | 
             
            	hbox=Gtk::HBox.new
         | 
| 42 43 | 
             
            	hbox.border_width=$border
         | 
| 43 44 | 
             
            	hbox.spacing=$border
         | 
| @@ -46,7 +47,8 @@ def hpack(array) | |
| 46 47 | 
             
            		hbox.pack_start(el, expand)}
         | 
| 47 48 | 
             
            	hbox
         | 
| 48 49 | 
             
            end
         | 
| 49 | 
            -
            def vpack( | 
| 50 | 
            +
            def vpack(*a)
         | 
| 51 | 
            +
            	array=*a
         | 
| 50 52 | 
             
            	vbox=Gtk::VBox.new
         | 
| 51 53 | 
             
            	vbox.border_width=$border
         | 
| 52 54 | 
             
            	vbox.spacing=$border
         | 
    
        data/gui/config.rb
    CHANGED
    
    | @@ -30,7 +30,7 @@ class Configuration < Hash | |
| 30 30 | 
             
            			'play_on_start'=>false, 'current_song'=>0, 'volume'=>1.0, 'shuffle'=>false, 'repeat'=>false,
         | 
| 31 31 | 
             
            			'sort_by_track'=>false,
         | 
| 32 32 | 
             
            			'x'=>0, 'y'=>0, 'width'=>500, 'height'=>500, 'view'=>'all', 'paned_position'=>250,
         | 
| 33 | 
            -
            			'playing_color'=>'Pink', 'compact'=>false,
         | 
| 33 | 
            +
            			'playing_color'=>'Pink', 'theme'=>'dark', 'compact'=>false,
         | 
| 34 34 | 
             
            			'directory'=>',', 'extension'=>'wav,flac,ogg,mp3,wma,xspf,m3u,pls',
         | 
| 35 35 | 
             
            			'sort_directories_first'=>true, 'sort_case_sensitive'=>true, 'refresh_on_start'=>true,
         | 
| 36 36 | 
             
            			'search_in_path'=>true, 'search_in_title'=>false, 'search_in_artist'=>false,
         | 
    
        data/gui/gui.rb
    CHANGED
    
    | @@ -114,7 +114,7 @@ class Gui < Gtk::Window | |
| 114 114 | 
             
            		@find2_it=Gtk::ImageMenuItem.new(Gtk::Stock::FIND)
         | 
| 115 115 | 
             
            		@find2_it.signal_connect('activate'){search}
         | 
| 116 116 | 
             
            		@edit_it=Gtk::ImageMenuItem.new(Gtk::Stock::EDIT)
         | 
| 117 | 
            -
            		@edit_it.signal_connect('activate'){list_edit}
         | 
| 117 | 
            +
            		@edit_it.signal_connect('activate'){GLib::Idle.add{list_edit}}#GLib::Idle.add closes bug #28638
         | 
| 118 118 | 
             
            		@bsave=Gtk::ImageMenuItem.new(Gtk::Stock::SAVE)
         | 
| 119 119 | 
             
            		@separator_it2=Gtk::SeparatorMenuItem.new
         | 
| 120 120 | 
             
            		@bsave.signal_connect('activate'){list_save}
         | 
| @@ -132,10 +132,7 @@ class Gui < Gtk::Window | |
| 132 132 | 
             
            		}
         | 
| 133 133 |  | 
| 134 134 | 
             
            		@playlist_menu=Gtk::Menu.new
         | 
| 135 | 
            -
             | 
| 136 | 
            -
            #Fixme
         | 
| 137 | 
            -
            #		[@add_it, @rm_it, @clear_it, @find2_it, @edit_it, @bsave, @separator_it2, @bexport,
         | 
| 138 | 
            -
            		[@add_it, @rm_it, @clear_it, @find2_it, @bsave, @separator_it2, @bexport,
         | 
| 135 | 
            +
            		[@add_it, @rm_it, @clear_it, @find2_it, @edit_it, @bsave, @separator_it2, @bexport,
         | 
| 139 136 | 
             
            			@separator_it3, @preference_it3].each{|it| @playlist_menu.append(it)}
         | 
| 140 137 |  | 
| 141 138 | 
             
            #Radio menu
         | 
| @@ -472,35 +469,14 @@ class Gui < Gtk::Window | |
| 472 469 |  | 
| 473 470 | 
             
            #*********************Player zone******************************
         | 
| 474 471 | 
             
            #View selection
         | 
| 475 | 
            -
            	#@icon_theme=Gtk::IconTheme.default
         | 
| 476 | 
            -
            		#@idir=@icon_theme.load_icon('gtk-directory', Gtk::IconSize::BUTTON, Gtk::IconTheme::LOOKUP_FORCE_SVG)
         | 
| 477 472 | 
             
            		@viewstore=Gtk::ListStore.new(Gdk::Pixbuf)
         | 
| 478 | 
            -
            		['sound_directory.svg','sound.svg','gtk-directory.svg','player_play.svg'].each{|image|
         | 
| 479 | 
            -
            			child=@viewstore.append
         | 
| 480 | 
            -
            			child[0]=Gdk::Pixbuf.new(File.join(Pix_dir, image), 24, 24)
         | 
| 481 | 
            -
            		}
         | 
| 482 | 
            -
            		if $cd
         | 
| 483 | 
            -
            			child=@viewstore.append
         | 
| 484 | 
            -
            			child[0]=Gdk::Pixbuf.new(File.join(Pix_dir, 'media-cdrom.svg'), 24, 24)
         | 
| 485 | 
            -
            		end
         | 
| 486 | 
            -
            		if $radio
         | 
| 487 | 
            -
            			child=@viewstore.append
         | 
| 488 | 
            -
            			child[0]=Gdk::Pixbuf.new(File.join(Pix_dir, 'network-wireless.svg'), 24, 24)
         | 
| 489 | 
            -
            		end
         | 
| 490 473 | 
             
            		@renderer3=Gtk::CellRendererPixbuf.new
         | 
| 491 474 | 
             
            		@selectview=Gtk::ComboBox.new(false)
         | 
| 492 475 | 
             
            		@selectview.model=@viewstore
         | 
| 493 476 | 
             
            		@selectview.pack_start(@renderer3,false)
         | 
| 494 477 | 
             
            		@selectview.set_attributes(@renderer3, :pixbuf => 0)
         | 
| 478 | 
            +
            		change_theme
         | 
| 495 479 |  | 
| 496 | 
            -
            		case @config['view']
         | 
| 497 | 
            -
            			when 'playlist' then @selectview.active=View::PLAYLIST
         | 
| 498 | 
            -
            			when 'browser' then @selectview.active=View::BROWSER
         | 
| 499 | 
            -
            			when 'player' then @selectview.active=View::COMPACT
         | 
| 500 | 
            -
            			when 'cd' then  @selectview.active=View::CD
         | 
| 501 | 
            -
            			when 'radio' then  @selectview.active=View::RADIO
         | 
| 502 | 
            -
            			else @selectview.active=View::ALL
         | 
| 503 | 
            -
            		end
         | 
| 504 480 | 
             
            		@selectview.signal_connect('changed'){change_view}
         | 
| 505 481 | 
             
            #Song title
         | 
| 506 482 | 
             
            		@song_title=Gtk::Label.new
         | 
| @@ -619,7 +595,7 @@ class Gui < Gtk::Window | |
| 619 595 | 
             
            		@vbox.pack_start(@button_container, false, false)
         | 
| 620 596 |  | 
| 621 597 | 
             
            		super()
         | 
| 622 | 
            -
            		self. | 
| 598 | 
            +
            		self.delete_event_connect
         | 
| 623 599 | 
             
            		self.title=$name
         | 
| 624 600 | 
             
            		@icon_Z=Gdk::Pixbuf.new(File.join(Pix_dir,'ZiK.svg'))
         | 
| 625 601 | 
             
            		self.icon=(@icon_Z)
         | 
| @@ -635,6 +611,45 @@ class Gui < Gtk::Window | |
| 635 611 | 
             
            		self.show
         | 
| 636 612 | 
             
            	end
         | 
| 637 613 |  | 
| 614 | 
            +
            	def change_theme
         | 
| 615 | 
            +
            		#@icon_theme=Gtk::IconTheme.default
         | 
| 616 | 
            +
            		#@idir=@icon_theme.load_icon('gtk-directory', Gtk::IconSize::BUTTON, Gtk::IconTheme::LOOKUP_FORCE_SVG)
         | 
| 617 | 
            +
            		theme=File.join(Theme_dir, @config['theme'])
         | 
| 618 | 
            +
            		begin
         | 
| 619 | 
            +
            			@viewstore.clear
         | 
| 620 | 
            +
            			%w(all.png playlist.png browser.png compact.png).each{|image|
         | 
| 621 | 
            +
            				child=@viewstore.append
         | 
| 622 | 
            +
            				child[0]=Gdk::Pixbuf.new(File.join(theme, image), 24, 24)
         | 
| 623 | 
            +
            			}
         | 
| 624 | 
            +
            			if $cd
         | 
| 625 | 
            +
            				child=@viewstore.append
         | 
| 626 | 
            +
            				child[0]=Gdk::Pixbuf.new(File.join(theme, 'cd.png'), 24, 24)
         | 
| 627 | 
            +
            			end
         | 
| 628 | 
            +
            			if $radio
         | 
| 629 | 
            +
            				child=@viewstore.append
         | 
| 630 | 
            +
            				child[0]=Gdk::Pixbuf.new(File.join(theme, 'radio.png'), 24, 24)
         | 
| 631 | 
            +
            			end
         | 
| 632 | 
            +
             | 
| 633 | 
            +
            			case @config['view']
         | 
| 634 | 
            +
            			when 'playlist' then @selectview.active=View::PLAYLIST
         | 
| 635 | 
            +
            			when 'browser' then @selectview.active=View::BROWSER
         | 
| 636 | 
            +
            			when 'player' then @selectview.active=View::COMPACT
         | 
| 637 | 
            +
            			when 'cd' then  @selectview.active=View::CD
         | 
| 638 | 
            +
            			when 'radio' then  @selectview.active=View::RADIO
         | 
| 639 | 
            +
            			else @selectview.active=View::ALL
         | 
| 640 | 
            +
            			end
         | 
| 641 | 
            +
            		rescue => e
         | 
| 642 | 
            +
            			ErrorError.new("Cannot find #{@config['theme']} theme.")
         | 
| 643 | 
            +
            			tmp=File.join(Theme_dir, @config.default['theme'])
         | 
| 644 | 
            +
            			if theme==tmp
         | 
| 645 | 
            +
            				raise e
         | 
| 646 | 
            +
            			else
         | 
| 647 | 
            +
            				theme=tmp
         | 
| 648 | 
            +
            				retry
         | 
| 649 | 
            +
            			end
         | 
| 650 | 
            +
            		end
         | 
| 651 | 
            +
            	end
         | 
| 652 | 
            +
             | 
| 638 653 | 
             
            private
         | 
| 639 654 |  | 
| 640 655 | 
             
            	def change_view
         | 
| @@ -698,6 +713,15 @@ private | |
| 698 713 | 
             
            	end
         | 
| 699 714 |  | 
| 700 715 | 
             
            public
         | 
| 716 | 
            +
             | 
| 717 | 
            +
            	def delete_event_connect(&block)
         | 
| 718 | 
            +
            		self.signal_handler_disconnect(@id_delete_event) if defined?(@id_delete_event)
         | 
| 719 | 
            +
            		if block
         | 
| 720 | 
            +
            			@id_delete_event=self.signal_connect("delete_event", &block)
         | 
| 721 | 
            +
            		else
         | 
| 722 | 
            +
            			@id_delete_event=self.signal_connect("delete_event"){quit; false}
         | 
| 723 | 
            +
            		end
         | 
| 724 | 
            +
            	end
         | 
| 701 725 |  | 
| 702 726 | 
             
            	def quit
         | 
| 703 727 | 
             
            		pos=self.position;@config['x']=pos[0];@config['y']=pos[1]
         | 
| @@ -706,7 +730,19 @@ public | |
| 706 730 |  | 
| 707 731 | 
             
            		Gtk.main_quit
         | 
| 708 732 | 
             
            	end
         | 
| 709 | 
            -
             | 
| 733 | 
            +
             | 
| 734 | 
            +
            	alias :super_hide :hide
         | 
| 735 | 
            +
            	def hide
         | 
| 736 | 
            +
            		@config['x'], @config['y']=self.position
         | 
| 737 | 
            +
            		super_hide
         | 
| 738 | 
            +
            	end
         | 
| 739 | 
            +
             | 
| 740 | 
            +
            	alias :super_show :show
         | 
| 741 | 
            +
            	def show
         | 
| 742 | 
            +
            		self.move(@config['x'],@config['y'])
         | 
| 743 | 
            +
            		super_show
         | 
| 744 | 
            +
            	end
         | 
| 745 | 
            +
             | 
| 710 746 | 
             
            	def play(player_wanted=@active_view)
         | 
| 711 747 | 
             
            		case player_wanted
         | 
| 712 748 | 
             
            		when 'default'
         | 
| @@ -961,9 +997,9 @@ public | |
| 961 997 | 
             
            		ErrorInfo.new('Refreshing tree view...')
         | 
| 962 998 | 
             
            		self.cursor=Gdk::Cursor::WATCH
         | 
| 963 999 |  | 
| 964 | 
            -
            		backup=File.join( | 
| 1000 | 
            +
            		backup=File.join(Cache_dir,'tree')
         | 
| 965 1001 | 
             
            		unless File.exist?(backup)
         | 
| 966 | 
            -
            			Dir.mkdir(backup) if $ | 
| 1002 | 
            +
            			Dir.mkdir(backup) if $write_config
         | 
| 967 1003 | 
             
            		end
         | 
| 968 1004 | 
             
            		BrowseSearchWindow.refresh
         | 
| 969 1005 | 
             
            		@treestore.clear
         | 
| @@ -983,7 +1019,7 @@ public | |
| 983 1019 | 
             
            					files=[]
         | 
| 984 1020 | 
             
            					Find.find(directory){|f| files.push(f) if f=~rexp}
         | 
| 985 1021 | 
             
            					@config['sort_case_sensitive'] ? files.sort! : files=files.sort_by{|f| f.downcase}
         | 
| 986 | 
            -
            					if $ | 
| 1022 | 
            +
            					if $write_config
         | 
| 987 1023 | 
             
            						if @config['refresh_on_start']
         | 
| 988 1024 | 
             
            							#Delete list
         | 
| 989 1025 | 
             
            							ff=Dir.glob(File.join(backup,'*'))
         | 
| @@ -1310,10 +1346,13 @@ _("An error occured while exporting songs.\nUnknown queued object type (#{o.clas | |
| 1310 1346 | 
             
            		@table.attach(bok, 7, 8, 8, 9, Gtk::SHRINK, Gtk::SHRINK)
         | 
| 1311 1347 | 
             
            		@bedit.sensitive=false
         | 
| 1312 1348 | 
             
            		@wlist.hide
         | 
| 1313 | 
            -
            		 | 
| 1314 | 
            -
            			 | 
| 1315 | 
            -
            			 | 
| 1316 | 
            -
             | 
| 1349 | 
            +
            		unless defined?(@list_edit_dialog)
         | 
| 1350 | 
            +
            			@list_edit_dialog=true
         | 
| 1351 | 
            +
            			dialog=Gtk::MessageDialog.new(self, Gtk::Dialog::MODAL, Gtk::MessageDialog::INFO,
         | 
| 1352 | 
            +
            				Gtk::MessageDialog::BUTTONS_CLOSE,
         | 
| 1353 | 
            +
            				_("Do not forget to validate your changes after editing the playlist."))
         | 
| 1354 | 
            +
            			dialog.run; dialog.destroy
         | 
| 1355 | 
            +
            		end
         | 
| 1317 1356 | 
             
            	end
         | 
| 1318 1357 |  | 
| 1319 1358 | 
             
            if $radio
         | 
| @@ -1373,10 +1412,10 @@ end | |
| 1373 1412 | 
             
            			Mod.all.each{|mod| authors.push("  "+mod.title+": "+mod.author)}
         | 
| 1374 1413 | 
             
            		end
         | 
| 1375 1414 | 
             
            		Gtk::AboutDialog.show(self, {:name=>$name, :version=>Version, :program_name=>$name,
         | 
| 1376 | 
            -
            			:copyright=>'Copyright 2007- | 
| 1415 | 
            +
            			:copyright=>'Copyright 2007-2011 Vincent Carmona', :comments=>_('Audio player'),
         | 
| 1377 1416 | 
             
            			:website=>'http://zik.rubyforge.org/', :license=>copying,
         | 
| 1378 1417 | 
             
            			:authors=>authors,
         | 
| 1379 | 
            -
            			:artists=>[" | 
| 1418 | 
            +
            			:artists=>["Justin Kaiden"],
         | 
| 1380 1419 | 
             
            			:translator_credits=>"Français: Vincent Carmona\n",
         | 
| 1381 1420 | 
             
            			:logo=>Gdk::Pixbuf.new(File.join(Pix_dir,'ZiK3.png'))})
         | 
| 1382 1421 | 
             
            	end
         |