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
@@ -0,0 +1,96 @@
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 Notify
24
+ class Configuration < Hash
25
+ def initialize(dir)
26
+ @file=File.join(dir,'notifyrc')
27
+ default={:time=>3.0, :native=>true, :bg=>'Pink', :fg=>'black'}
28
+ super
29
+ self.merge!(default)
30
+ if File.exist?(@file)
31
+ read
32
+ else
33
+ ModErrorError.new(Notify.mod, "Configuration file not found. Use default configuration.")
34
+ end
35
+ end
36
+
37
+ def read
38
+ begin
39
+ f=File.open(@file,'r')
40
+ array=f.readlines
41
+ array.reject!{|a| a =~ /^#/}
42
+ array.reject!{|a| a =~ /^\n/}
43
+ array.each{|a| a.chomp!}
44
+ array.each{|a|
45
+ l=a.split('=', 2)
46
+ self[l[0].to_sym]=l[1]
47
+ }
48
+ test
49
+ str2value
50
+ ModErrorInfo.new(Notify.mod, "configuration read.")
51
+ rescue
52
+ ModErrorError.new(Notify.mod, "reading configuration file.")
53
+ ensure
54
+ f.close if f
55
+ end
56
+ end
57
+
58
+ def save
59
+ if $write_config
60
+ begin
61
+ dir=File.dirname(@file)
62
+ Dir.mkdir(dir) unless File.exist?(dir)
63
+ f=File.open(@file,'w')
64
+ f.puts '##Configuration file for notify module (ZiK audio player).'
65
+ self.each_pair{|key, value| f.puts "#{key}=#{value}"}
66
+ ModErrorInfo.new(Notify.mod, "configuration saved")
67
+ rescue
68
+ ModErrorError.new(Notify.mod, "writting configuration file.")
69
+ ensure
70
+ f.close if f
71
+ end
72
+ end
73
+ end
74
+
75
+ private
76
+ def str2value
77
+ self[:time]=self[:time].to_f
78
+ self[:native]=="false" ? self[:native]=false : self[:native]=true
79
+ end
80
+
81
+ def test
82
+ begin
83
+ Gdk::Color.parse(self[:bg])
84
+ rescue
85
+ ModErrorError.new(Notify.mod, "#{self[:bg]} is not a valid color. Use default one.")
86
+ self[:bg]=@default[:bg]
87
+ end
88
+ begin
89
+ Gdk::Color.parse(self[:fg])
90
+ rescue
91
+ ModErrorError.new(Notify.mod, "#{self[:fg]} is not a valid color. Use default one.")
92
+ self[:fg]=@default[:fg]
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,76 @@
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 Notify
24
+ class ConfigWidget < Gtk::VBox
25
+ attr_reader :btime, :bradio1, :bg_entry, :fg_entry
26
+
27
+ def initialize(config)
28
+ @adj=Gtk::Adjustment.new(config[:time], 0.5, 20.0, 0.5, 1.0, 0)
29
+ @btime=Gtk::SpinButton.new(@adj, 1.0, 1)
30
+ @time_frame=Gtk::Frame.new(_('Display time'))
31
+ @time_frame.add(@btime)
32
+
33
+ @bradio1=Gtk::RadioButton.new(_('Use native notifications'))
34
+ @bradio1.signal_connect('toggled'){
35
+ tf=@bradio1.active?
36
+ @bg_frame.sensitive=tf
37
+ @fg_frame.sensitive=tf
38
+ }
39
+ @bradio2=Gtk::RadioButton.new(@bradio1, _('Use system notifications'))
40
+
41
+ @bg_entry=Gtk::Entry.new
42
+ @bg_entry.text=config[:bg]
43
+ @bcolor=Gtk::ColorButton.new(Gdk::Color.parse(config[:bg]))
44
+ @bcolor.tooltip_text=_('Select a color.')
45
+ @bcolor.signal_connect('color-set'){@bg_entry.text=@bcolor.color.to_s}
46
+ @bg_frame=Gtk::Frame.new(_('Background color'))
47
+ @bg_frame.add(hpack([@bg_entry, @bcolor]))
48
+
49
+ @fg_entry=Gtk::Entry.new
50
+ @fg_entry.text=config[:fg]
51
+ @bcolor2=Gtk::ColorButton.new(Gdk::Color.parse(config[:fg]))
52
+ @bcolor2.tooltip_text=_('Select a color.')
53
+ @bcolor2.signal_connect('color-set'){@fg_entry.text=@bcolor2.color.to_s}
54
+ @fg_frame=Gtk::Frame.new(_('Foreground color'))
55
+ @fg_frame.add(hpack([@fg_entry, @bcolor2]))
56
+
57
+ config[:native] ? @bradio1.active=true : @bradio2.active=true
58
+ super()
59
+ self.spacing=$border
60
+ self.pack_start(@time_frame, false)
61
+ self.pack_start(hpack([@bradio1, @bradio2]), false)
62
+ self.pack_start(@bg_frame, false)
63
+ self.pack_start(@fg_frame, false)
64
+ end
65
+
66
+ private
67
+ def hpack(array)
68
+ hbox=Gtk::HBox.new
69
+ hbox.spacing=$border
70
+ array.each{|el|
71
+ el.is_a?(Gtk::Entry) ? expand=true : expand=false
72
+ hbox.pack_start(el, expand)}
73
+ hbox
74
+ end
75
+ end
76
+ end
@@ -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
+ module Notify
24
+ class Window < Gtk::Window
25
+ attr_reader :label
26
+
27
+ def initialize(config)
28
+ @config=config
29
+
30
+ @label=Gtk::Label.new
31
+ @label.wrap=true#ellipsize -> true
32
+ @image=Gtk::Image.new(File.join(Pix_dir,'ZiK.svg'))
33
+ @frame=Gtk::Frame.new
34
+ @frame.label_widget=Gtk::Label.new.set_markup('<span foreground="'+@config[:fg]+'">'+_('Playing')+'</span>')
35
+ @frame.add(@label)
36
+ @box=Gtk::HBox.new
37
+ @box.spacing=$border
38
+ @box.pack_start(@image, false, false)
39
+ @box.pack_start(@frame, false, false)
40
+ super(Gtk::Window::TOPLEVEL)
41
+ self.border_width=$border
42
+ self.decorated=false
43
+ self.skip_taskbar_hint=true
44
+ self.skip_pager_hint=true
45
+ self.resizable=false
46
+ self.can_focus=false
47
+ self.modify_bg(Gtk::STATE_NORMAL, Gdk::Color.parse(@config[:bg]))
48
+ #See Gtk::Widget#modify_style for global bg, fg, font, bg_pixmap
49
+ self.gravity=Gdk::Window::GRAVITY_NORTH_EAST
50
+ self.add(@box)
51
+
52
+ @box.show_all
53
+ end
54
+
55
+ end
56
+ end
data/mod/trayicon.rb ADDED
@@ -0,0 +1,83 @@
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 Trayicon
24
+ def Trayicon.mod
25
+ @m||=Mod.new('trayicon', "Tray icon", _("Display an icon in the system tray."),
26
+ 'Vincent Carmona <vinc4mai@gmail.com>', 'GPL-2')
27
+ end
28
+
29
+ Trayicon.mod
30
+ def @m.init(input)
31
+ @dir=input[:mod_dir]
32
+ @zik=zik
33
+ require File.join(@dir, 'trayicon', 'config')
34
+ @config=Configuration.new(input[:config_dir])
35
+ require File.join(@dir, 'trayicon', 'configwidget')
36
+ end
37
+
38
+ def @m.load
39
+ unless @loaded
40
+ require File.join(@dir, 'trayicon', 'icon')
41
+ (defined? @tray) ? @tray.visible=true : @tray=Trayicon::Icon.new(@zik, @config)
42
+ @zik.signal_connect('play'){|widget, song|
43
+ if @loaded
44
+ @tray.tooltip="ZiK\n#{song.name}"
45
+ end
46
+ }
47
+ @zik.signal_connect('stop'){@tray.tooltip='ZiK' if @loaded}
48
+ ModErrorInfo.new(self, "module loaded.")
49
+ @loaded=true
50
+ else
51
+ false
52
+ end
53
+ end
54
+
55
+ def @m.unload
56
+ if @loaded
57
+ #@tray.destroy #No method to destroy an Gtk::StatusIcon.
58
+ @tray.visible=false
59
+ ModErrorInfo.new(self, ModErrorINFO, "module unloaded.")
60
+ @loaded=false
61
+ true
62
+ else
63
+ false
64
+ end
65
+ end
66
+
67
+ def @m.configwidget
68
+ @wconfig=ConfigWidget.new(@config)
69
+ end
70
+
71
+ def @m.saveconfig
72
+ if @loaded
73
+ @config[:scroll_event]=@wconfig.bscroll.active?
74
+ true
75
+ else
76
+ false
77
+ end
78
+ end
79
+
80
+ def @m.quit
81
+ @config.save if @config
82
+ end
83
+ end
@@ -0,0 +1,79 @@
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 Trayicon
24
+ class Configuration < Hash
25
+ def initialize(dir)
26
+ @file=File.join(dir,'trayiconrc')
27
+ default={:scroll_event=>false}
28
+ super
29
+ self.merge!(default)
30
+ if File.exist?(@file)
31
+ read
32
+ else
33
+ ModErrorError.new(Trayicon.mod, "Configuration file not found. Use default configuration.")
34
+ end
35
+ end
36
+
37
+ def read
38
+ begin
39
+ f=File.open(@file,'r')
40
+ array=f.readlines
41
+ array.reject!{|a| a =~ /^#/}
42
+ array.reject!{|a| a =~ /^\n/}
43
+ array.each{|a| a.chomp!}
44
+ array.each{|a|
45
+ l=a.split('=', 2)
46
+ self[l[0].to_sym]=l[1]
47
+ }
48
+ str2value
49
+ ModErrorInfo.new(Trayicon.mod, "configuration read.")
50
+ rescue
51
+ ModErrorError.new(Trayicon.mod, "reading configuration file.")
52
+ ensure
53
+ f.close if f
54
+ end
55
+ end
56
+
57
+ def save
58
+ if $write_config
59
+ begin
60
+ dir=File.dirname(@file)
61
+ Dir.mkdir(dir) unless File.exist?(dir)
62
+ f=File.open(@file,'w')
63
+ f.puts '##Configuration file for trayicon module (ZiK audio player).'
64
+ self.each_pair{|key, value| f.puts "#{key}=#{value}"}
65
+ ModErrorInfo.new(Trayicon.mod, "configuration saved")
66
+ rescue
67
+ ModErrorError.new(Trayicon.mod, "Writting configuration file.")
68
+ ensure
69
+ f.close if f
70
+ end
71
+ end
72
+ end
73
+
74
+ private
75
+ def str2value
76
+ self[:scroll_event]=="true" ? self[:scroll_event]=true : self[:scroll_event]=false
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,35 @@
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 Trayicon
24
+ class ConfigWidget < Gtk::Frame
25
+ attr_reader :bscroll
26
+
27
+ def initialize(config)
28
+ @bscroll=Gtk::CheckButton.new(_("Check to add interactions with third button mouse.\ndown : next song.\nup : previous song.\nCtrl+down : decrease volume.\nCtrl+up : increase volume."))
29
+ @bscroll.active=config[:scroll_event]
30
+
31
+ super(_('Scroll actions'))
32
+ self.add(@bscroll)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,99 @@
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 Trayicon
24
+ class Icon < Gtk::StatusIcon
25
+ def initialize(zik, config)
26
+ @zik=zik
27
+ @pop=false
28
+
29
+ #*********************Menu**********************************
30
+ #player
31
+ @play_it=Gtk::ImageMenuItem.new(Gtk::Stock::MEDIA_PLAY)
32
+ @play_it.signal_connect('activate'){@zik.play}
33
+ @pause_it=Gtk::ImageMenuItem.new(Gtk::Stock::MEDIA_PAUSE)
34
+ @pause_it.signal_connect('activate'){@zik.pause}
35
+ @previous_it=Gtk::ImageMenuItem.new(Gtk::Stock::MEDIA_PREVIOUS)
36
+ @previous_it.signal_connect('activate'){@zik.previous_song}
37
+ @next_it=Gtk::ImageMenuItem.new(Gtk::Stock::MEDIA_NEXT)
38
+ @next_it.signal_connect('activate'){@zik.next_song}
39
+ #Hide/show
40
+ @showgui_it=Gtk::CheckMenuItem.new(_("Main window"))
41
+ @showgui_it.signal_connect("toggled"){
42
+ unless @pop
43
+ @zik.visible? ? @zik.hide : @zik.show
44
+ end
45
+ }
46
+ #Quit
47
+ @quit_it=Gtk::ImageMenuItem.new(Gtk::Stock::QUIT)
48
+ @quit_it.signal_connect('activate'){@zik.quit}
49
+ #Main
50
+ @menu=Gtk::Menu.new
51
+ [@play_it, @pause_it, @previous_it, @next_it].each{|it| @menu.append(it)}
52
+ @menu.append(Gtk::SeparatorMenuItem.new)
53
+ @menu.append(@showgui_it)
54
+ @menu.append(Gtk::SeparatorMenuItem.new)
55
+ @menu.append(@quit_it)
56
+ @menu.show_all
57
+
58
+ #*********************Main**********************************
59
+ super()
60
+ self.pixbuf=Gdk::Pixbuf.new(File.join(Pix_dir, 'ZiK.svg'))
61
+ self.tooltip='ZiK'
62
+ self.signal_connect('activate'){@zik.visible? ? @zik.hide : @zik.show}
63
+ self.signal_connect('popup-menu'){|tray, button, time|
64
+ @pop=true
65
+ @showgui_it.active=@zik.visible?
66
+ @menu.popup(nil, nil, button, time)
67
+ @pop=false
68
+ }
69
+ begin
70
+ self.signal_connect('scroll-event'){|icon, event|
71
+ if config[:scroll_event]
72
+ #Check only for control, alt and shift.
73
+ mask=event.state&(Gdk::Window::CONTROL_MASK|Gdk::Window::MOD1_MASK|Gdk::Window::SHIFT_MASK)
74
+ case mask
75
+ when 0#no modifier key hit
76
+ case event.direction
77
+ when Gdk::EventScroll::UP
78
+ @zik.previous_song
79
+ when Gdk::EventScroll::DOWN
80
+ @zik.next_song
81
+ end
82
+ when Gdk::Window::CONTROL_MASK
83
+ case event.direction
84
+ when Gdk::EventScroll::UP
85
+ @zik.volume_up
86
+ when Gdk::EventScroll::DOWN
87
+ @zik.volume_down
88
+ end
89
+ end
90
+ end
91
+ }
92
+ @mask=Gdk::Window::ModifierType.new
93
+ @mask2=Gdk::Window::ModifierType.new(Gdk::Window::CONTROL_MASK)
94
+ rescue GLib::NoSignalError
95
+ ModErrorError.new(Trayicon.mod, "Cannot watch for scrolling events.")
96
+ end
97
+ end
98
+ end
99
+ end