diff options
author | rumpf_a@web.de <> | 2010-02-21 19:42:36 +0100 |
---|---|---|
committer | rumpf_a@web.de <> | 2010-02-21 19:42:36 +0100 |
commit | d913fdb2800d83680e413cd8a5f07b7f85deac6e (patch) | |
tree | 09a284861adf96520059f211ba8bae1a76294a9c /tests/accept/compile/tgtk.nim | |
parent | 6bc16904edd3738ab97573b9eeb3a6a7cce9574c (diff) | |
download | Nim-d913fdb2800d83680e413cd8a5f07b7f85deac6e.tar.gz |
start of tests refactoring; sqlite3 new wrapper fixes
Diffstat (limited to 'tests/accept/compile/tgtk.nim')
-rw-r--r-- | tests/accept/compile/tgtk.nim | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/accept/compile/tgtk.nim b/tests/accept/compile/tgtk.nim new file mode 100644 index 000000000..cd9254e4f --- /dev/null +++ b/tests/accept/compile/tgtk.nim @@ -0,0 +1,61 @@ + +import + gtk2, glib2, atk, gdk2, gdk2pixbuf, libglade2, pango, + pangoutils + +proc hello(widget: PGtkWidget, data: pointer) {.cdecl.} = + write(stdout, "Hello World\n") + +proc delete_event(widget: PGtkWidget, event: PGdkEvent, + data: pointer): bool {.cdecl.} = + # If you return FALSE in the "delete_event" signal handler, + # GTK will emit the "destroy" signal. Returning TRUE means + # you don't want the window to be destroyed. + # This is useful for popping up 'are you sure you want to quit?' + # type dialogs. + write(stdout, "delete event occurred\n") + # Change TRUE to FALSE and the main window will be destroyed with + # a "delete_event". + return false + +# Another callback +proc destroy(widget: PGtkWidget, data: pointer) {.cdecl.} = + gtk_main_quit() + +proc main() = + # GtkWidget is the storage type for widgets + var + window: PGtkWindow + button: PGtkButton + + gtk_nimrod_init() + window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL)) + discard g_signal_connect(window, "delete_event", + Gcallback(delete_event), nil) + discard g_signal_connect(window, "destroy", Gcallback(destroy), nil) + # Sets the border width of the window. + gtk_container_set_border_width(window, 10) + + # Creates a new button with the label "Hello World". + button = GTK_BUTTON(gtk_button_new_with_label("Hello World")) + + discard g_signal_connect(button, "clicked", Gcallback(hello), nil) + + # This will cause the window to be destroyed by calling + # gtk_widget_destroy(window) when "clicked". Again, the destroy + # signal could come from here, or the window manager. + discard g_signal_connect_swapped(button, "clicked", + Gcallback(gtk_widget_destroy), window) + + # This packs the button into the window (a gtk container). + gtk_container_add(window, button) + + # The final step is to display this newly created widget. + gtk_widget_show(button) + + # and the window + gtk_widget_show(window) + + gtk_main() + +main() |