Class: Gtk::SysTray

Inherits:
StatusIcon
  • Object
show all
Defined in:
lib/plugins/systray.rb

Instance Method Summary collapse

Constructor Details

#initialize(window, title = "title?", config) ⇒ SysTray

Returns a new instance of SysTray.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/plugins/systray.rb', line 10

def initialize(window,title="title?",config)
    $statusIcon=self
    @popup_tray=Menu.new
    @checkMenu={}
    file= (config[:icon] && File.exist?(config[:icon])) ? config[:icon] : nil
    alert("No icon defined for systray (or unknown file)") if ! file 
    config.each do |label,proc|
if Proc === proc 
  case label
  when  /^\+/
    bshow = CheckMenuItem.new(label[1..-1])
  @checkMenu[bshow]=bshow
    bshow.signal_connect("toggled") { |w| 
     proc.call(! w.active?) 
  }  
  #TODO : get checkButton state to application closure, set state with closure return value

  when  /^-+/
          bshow = SeparatorMenuItem.new
  else
          bshow = MenuItem.new(label)
    bshow.signal_connect("activate") { proc.call(window.visible?) }  
  #TODO : icon in face of button

  end
  @popup_tray.append(bshow) 
end
    end
    if config[:quit]
@bquit_tray=ImageMenuItem.new(Stock::QUIT)
@bquit_tray.signal_connect("activate"){window.main_quit}
@popup_tray.append(SeparatorMenuItem.new)
@popup_tray.append(@bquit_tray)
    end
    @popup_tray.show_all
    
    super()
    self.pixbuf=if file then  Gdk::Pixbuf.new(file) ;else nil ; end
    self.tooltip=title||""
    self.signal_connect('activate'){ window.visible? ? window.hide : window.show }
    self.signal_connect('popup-menu'){|tray, button, time|
 @popup_tray.popup(nil, nil, button, time)
    }
end