import 
  glib2, gtk2

proc destroy(widget: pWidget, data: pgpointer){.cdecl.} = 
  main_quit()

proc widgetDestroy(w: PWidget) {.cdecl.} = 
  destroy(w)

nimrod_init()
var window = window_new(WINDOW_TOPLEVEL)
var button = button_new("Click me")
set_border_width(Window, 5)
add(window, button)
discard signal_connect(window, "destroy", 
                       SIGNAL_FUNC(ex5.destroy), nil)
discard signal_connect_object(button, "clicked", 
                              SIGNAL_FUNC(widgetDestroy), 
                              window)
show(button)
show(window)
main()