class AudioSwitch::UI
Public Class Methods
new(model)
click to toggle source
# File lib/audio_switch/ui.rb, line 6 def initialize(model) @model = model @menu = Gtk::Menu.new @items = [] end
Public Instance Methods
start()
click to toggle source
# File lib/audio_switch/ui.rb, line 12 def start add_to_tray subscribe AudioSwitch::LOG.info 'starting GTK main' loop do Gtk.main AudioSwitch::LOG.info 'restarting GTK main' end end
Private Instance Methods
add(item)
click to toggle source
# File lib/audio_switch/ui.rb, line 50 def add(item) @menu.append item @items.push item item.show end
add_to_tray()
click to toggle source
# File lib/audio_switch/ui.rb, line 24 def add_to_tray indicator = AppIndicator::AppIndicator.new( self.class.name, 'multimedia-volume-control', AppIndicator::Category::HARDWARE ) indicator.set_menu(@menu) indicator.set_status(AppIndicator::Status::ACTIVE) end
clear()
click to toggle source
# File lib/audio_switch/ui.rb, line 104 def clear @menu.remove(@items.pop) until @items.empty? end
draw(sinks)
click to toggle source
# File lib/audio_switch/ui.rb, line 38 def draw(sinks) clear sinks .sort_by { |sink| sink[:description] } .each { |sink| add new_item(sink) } add new_separator add new_rtp_toggle add new_mute_toggle add new_separator add new_quit_item end
new_item(sink)
click to toggle source
# File lib/audio_switch/ui.rb, line 56 def new_item(sink) item = Gtk::RadioMenuItem.new(@items, sink[:description]) item.signal_connect('toggled') do @model.select_sink(sink[:id]) if item.active? end item.set_active(sink[:default]) item end
new_mute_toggle()
click to toggle source
# File lib/audio_switch/ui.rb, line 78 def new_mute_toggle toggle = Gtk::CheckMenuItem.new('Mute Inputs') toggle.active = @model.sources_mute? toggle.sensitive = !@model.rtp_on? toggle.signal_connect('toggled') do if toggle.active? @model.mute_sources else @model.unmute_sources end end toggle end
new_quit_item()
click to toggle source
# File lib/audio_switch/ui.rb, line 92 def new_quit_item item = Gtk::MenuItem.new('Quit') item.signal_connect('activate') do AudioSwitch::App.quit end item end
new_rtp_toggle()
click to toggle source
# File lib/audio_switch/ui.rb, line 65 def new_rtp_toggle toggle = Gtk::CheckMenuItem.new('Enable RTP') toggle.active = @model.rtp_on? toggle.signal_connect('toggled') do if toggle.active? @model.rtp_on else @model.rtp_off end end toggle end
new_separator()
click to toggle source
# File lib/audio_switch/ui.rb, line 100 def new_separator Gtk::SeparatorMenuItem.new end
subscribe()
click to toggle source
# File lib/audio_switch/ui.rb, line 34 def subscribe @model.watch { draw(@model.sinks) } end