# File vtk/gtk/GtkGLExtVTKRenderWindowInteractor.rb, line 297
def main

  Gtk.init
  Gtk::GL.init

  # The main window
  window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
  window.set_title("A GtkVTKRenderWindow Demo!")
  window.signal_connect("destroy"){ gtk.main_quit }
  window.signal_connect("delete_event"){ gtk.main_quit }
  window.set_border_width(10)

  # A VBox into which widgets are packed.
  vbox = Gtk::VBox.new(false, 3)
  window.add(vbox)
  vbox.show

  # The GtkVTKRenderWindow
  gvtk = GtkGLExtVTKRenderWindowInteractor.new
  #gvtk.SetDesiredUpdateRate(1000)
  gvtk.set_size_request(400, 400)
  vbox.pack_start(gvtk)
  gvtk.show
  gvtk.Initialize
  gvtk.Start
  # prevents 'q' from exiting the app.
  exit = Proc.new{|obj, event, x|
    x
  }
#  gvtk.AddObserver("ExitEvent", exit)

  # The VTK stuff.
  cone = Vtk::ConeSource.new
  cone.SetResolution(80)
  coneMapper = Vtk::PolyDataMapper.new
  coneMapper.SetInput(cone.GetOutput)
  #coneActor = Vtk::LODActor.new
  coneActor = Vtk::Actor.new
  coneActor.SetMapper(coneMapper)    
  coneActor.GetProperty.SetColor(0.5, 0.5, 1.0)
  ren = Vtk::Renderer.new
  gvtk.GetRenderWindow.AddRenderer(ren)
  ren.AddActor(coneActor)

  # A simple quit button
  quit = Gtk::Button.new("Quit!")
  quit.signal_connect("clicked"){ Gtk.main_quit }
  vbox.pack_start(quit)
  quit.show

    # show the main window && start event processing.
  window.show
  Gtk.main
end