# File vtk/gtk/GtkVTKRenderWindowInteractor.rb, line 286
def main
    # The main window
    window = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL)
    window.set_title("A GtkVTKRenderWindow Demo!")
    window.connect("destroy", gtk.mainquit)
    window.connect("delete_event", gtk.mainquit)
    window.set_border_width(10)

    # A VBox into which widgets are packed.
    vbox = gtk.GtkVBox(spacing=3)
    window.add(vbox)
    vbox.show

    # The GtkVTKRenderWindow
    gvtk = GtkVTKRenderWindowInteractor
    #gvtk.SetDesiredUpdateRate(1000)
    gvtk.set_usize(400, 400)
    vbox.pack_start(gvtk)
    gvtk.show
    gvtk.Initialize
    gvtk.Start
    # prevents 'q' from exiting the app.
    gvtk.AddObserver("ExitEvent", lambda o,e,x=nil: x)

    # 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.GtkButton("Quit!")
    quit.connect("clicked", gtk.mainquit)
    vbox.pack_start(quit)
    quit.show

    # show the main window && start event processing.
    window.show
    gtk.mainloop
end