Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
101
Task/Hello-world-Graphical/ATS/hello-world-graphical.ats
Normal file
101
Task/Hello-world-Graphical/ATS/hello-world-graphical.ats
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
//
|
||||
#include
|
||||
"share/atspre_define.hats"
|
||||
#include
|
||||
"share/atspre_staload.hats"
|
||||
//
|
||||
(* ****** ****** *)
|
||||
|
||||
staload UN = $UNSAFE
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
staload "{$GLIB}/SATS/glib.sats"
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
staload "{$GTK}/SATS/gdk.sats"
|
||||
staload "{$GTK}/SATS/gtk.sats"
|
||||
staload "{$GLIB}/SATS/glib-object.sats"
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
%{^
|
||||
typedef char **charpp ;
|
||||
%} ;
|
||||
abstype charpp = $extype"charpp"
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
fun hello
|
||||
(
|
||||
widget: !GtkWidget1, _: gpointer
|
||||
) : void = print ("Goodbye, world!\n")
|
||||
|
||||
fun on_delete_event
|
||||
(
|
||||
widget: !GtkWidget1
|
||||
, event: &GdkEvent, udata: gpointer
|
||||
) : gboolean = let
|
||||
val () = print ("delete event occurred\n")
|
||||
in
|
||||
GTRUE // handling of delete-event is finished
|
||||
end // end of [on_delete_event]
|
||||
|
||||
fun on_destroy
|
||||
(widget: !GtkWidget1, _: gpointer): void = gtk_main_quit ()
|
||||
// end of [on_destroy]
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
macdef nullp = the_null_ptr
|
||||
|
||||
(* ****** ****** *)
|
||||
|
||||
implement
|
||||
main0 (argc, argv) =
|
||||
{
|
||||
//
|
||||
var argc: int = argc
|
||||
var argv: charpp = $UN.castvwtp1{charpp}(argv)
|
||||
//
|
||||
val () = $extfcall (void, "gtk_init", addr@(argc), addr@(argv))
|
||||
//
|
||||
val window =
|
||||
gtk_window_new (GTK_WINDOW_TOPLEVEL)
|
||||
val () = assertloc (ptrcast(window) > 0)
|
||||
//
|
||||
val _(*id*) =
|
||||
g_signal_connect (
|
||||
window, (gsignal)"destroy", (G_CALLBACK)on_destroy, (gpointer)nullp
|
||||
) (* end of [val] *)
|
||||
val _(*id*) =
|
||||
g_signal_connect (
|
||||
window, (gsignal)"delete_event", (G_CALLBACK)on_delete_event, (gpointer)nullp
|
||||
) (* end of [val] *)
|
||||
//
|
||||
val () = gtk_container_set_border_width (window, (guint)10)
|
||||
val button = gtk_button_new_with_label (gstring("Goodbye, world!"))
|
||||
val () = assertloc (ptrcast(button) > 0)
|
||||
//
|
||||
val () = gtk_widget_show (button)
|
||||
val () = gtk_container_add (window, button)
|
||||
val () = gtk_widget_show (window)
|
||||
//
|
||||
val _(*id*) =
|
||||
g_signal_connect
|
||||
(
|
||||
button, (gsignal)"clicked", (G_CALLBACK)hello, (gpointer)nullp
|
||||
)
|
||||
val _(*id*) =
|
||||
g_signal_connect_swapped
|
||||
(
|
||||
button, (gsignal)"clicked", (G_CALLBACK)gtk_widget_destroy, window
|
||||
)
|
||||
//
|
||||
val () = g_object_unref (button)
|
||||
val () = g_object_unref (window) // ref-count becomes 1!
|
||||
//
|
||||
val ((*void*)) = gtk_main ()
|
||||
//
|
||||
} (* end of [main0] *)
|
||||
Loading…
Add table
Add a link
Reference in a new issue