47 lines
1.2 KiB
Factor
47 lines
1.2 KiB
Factor
! Copyright (C) 2010 Anton Gorenko.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
USING: alien.strings gobject.ffi gtk.ffi io.encodings.utf8
|
|
kernel locals ;
|
|
IN: gtk-samples.hello-world
|
|
|
|
: on-button-clicked ( button label-user-data -- )
|
|
nip "Hello! :)" utf8 string>alien gtk_label_set_text ;
|
|
|
|
:: hello-world-win ( -- window )
|
|
GTK_WINDOW_TOPLEVEL gtk_window_new :> window
|
|
|
|
window
|
|
[ "Hello world!" utf8 string>alien gtk_window_set_title ]
|
|
[ 300 200 gtk_window_set_default_size ]
|
|
[ GTK_WIN_POS_CENTER gtk_window_set_position ] tri
|
|
|
|
gtk_fixed_new :> frame
|
|
window frame gtk_container_add
|
|
|
|
"Say 'Hello!'" utf8 string>alien gtk_button_new_with_label :> button
|
|
button 140 30 gtk_widget_set_size_request
|
|
frame button 80 60 gtk_fixed_put
|
|
|
|
"" utf8 string>alien gtk_label_new :> label
|
|
frame label 120 110 gtk_fixed_put
|
|
|
|
button "clicked" utf8 string>alien
|
|
[ on-button-clicked ] GtkButton:clicked label
|
|
g_signal_connect drop
|
|
|
|
window ;
|
|
|
|
:: hello-world-main ( -- )
|
|
f f gtk_init
|
|
hello-world-win :> window
|
|
|
|
window "destroy" utf8 string>alien
|
|
[ 2drop gtk_main_quit ] GtkObject:destroy f
|
|
g_signal_connect drop
|
|
|
|
window gtk_widget_show_all
|
|
|
|
gtk_main ;
|
|
|
|
MAIN: hello-world-main
|