All pastes #501670 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-22 04:58 UTC
rendered paste body
#!/usr/bin/env ruby

# Initializes Ruby/GTK2, as usual.
require 'gtk2'
require "xmmsclient"
require 'xmmsclient_glib'

ipcpath = "tcp://127.0.0.1:9667"
$xc = Xmms::Client.new("monkey")
$xc.connect(ipcpath)
$xc.add_to_glib_mainloop




# A push on a button will call this method.
def callback(widget)
  # Display the 'label' property of the widget.
  # Refer to the API reference for more information.
  #puts "Hello again - #{widget.label}(#{widget}) was pressed."
  case widget.label
    when "Play"
      widget.label = "Pause"
      $xc.playback_start
    when "Pause"
      widget.label = "Play"
      $xc.playback_stop
    when "Next"
      `xmms2 next`
  end
end

# Creates the window.
window = Gtk::Window.new

# Specify the title and border of the window.
window.title = "xmms2 radio panel"
window.border_width = 30

# The program will directly end upon 'delete_event'.
window.signal_connect('delete_event') do
  Gtk.main_quit
  false
end

# We create a box to pack widgets into.  
# This is described in detail in the following section.
# The box is not really visible, it is just used as a tool to arrange 
# widgets.
box1 = Gtk::HBox.new(false, 0)

# Put the box into the main window.
window.add(box1)

# Creates a new button with the label "Button 1".
button1 = Gtk::Button.new("Play")

# Now when the button is clicked, we call the "callback" method
# with a reference to "button 1" as its argument.
button1.signal_connect( "clicked" ) do |w|
  callback(w)
end

# Instead of window.add, we pack this button into the invisible
# box, which has been packed into the window.
box1.pack_start(button1, true, true, 0)

# Do these same steps again to create a second button.
button2 = Gtk::Button.new("Next")

# Call the same callback function with a different argument,
# passing a reference to "button 2" instead.
button2.signal_connect("clicked") do |w|
  callback(w)
end

# Pack the second button in a box as well.
box1.pack_start(button2, true, true, 0)

# You may call the show method of each widgets, as follows:
#   button1.show
#   button2.show
#   box1.show
#   window.show 
window.show_all
Gtk.main