class Pong::Window

Public Class Methods

new(speed=30) click to toggle source
Calls superclass method Gtk::Window::new
# File gtk2/sample/misc/cairo-pong.rb, line 170
def initialize(speed=30)
  super()
  @speed = speed
  
  self.title = 'Pong Demonstration'
  signal_connect('destroy') { Gtk.main_quit }
  signal_connect("key_press_event") do |widget, event|
    if event.state.control_mask? and event.keyval == Gdk::Keyval::GDK_q
      destroy
      true
    else
      false
    end
  end

  set_default_size(260, 200)

  @field = Field.new

  @drawing_area = Gtk::DrawingArea.new
  set_expose_event

  vb = Gtk::VBox.new(false, 5)
  vb.border_width = 10
  vb.pack_start(@drawing_area, true, true, 0)
  vb.show_all
  add(vb)

  Gtk.timeout_add(@speed) do
    @field.update
    @drawing_area.queue_draw unless @drawing_area.destroyed?
  end
end

Public Instance Methods

set_draw() click to toggle source
# File gtk3/sample/misc/cairo-pong.rb, line 204
def set_draw
  @drawing_area.signal_connect("draw") do |widget, cr|
    window = widget.window
    cr.scale(window.width, window.height)
    @field.draw(cr)
  end
end
set_expose_event() click to toggle source
# File gtk2/sample/misc/cairo-pong.rb, line 204
def set_expose_event
  @drawing_area.signal_connect('expose_event') do |widget, event|
    cr = widget.window.create_cairo_context
    cr.scale(*widget.window.size)
    @field.draw(cr)
  end
end