blob: 827cae64bf4bbd938115272b1d0e9f77441bb6e5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
implementation module Gtk.Internal
import StdEnv
import StdMaybe
import System._Pointer
import code from "clean_gtk_support."
g_object_unref :: !Pointer !.a -> .a
g_object_unref p env = code {
ccall g_object_unref "p:V:A"
}
g_signal_connect_void :: !Pointer !String !Int !.a -> .a
g_signal_connect_void widget signal id env = connect widget (packString signal) id env
where
connect :: !Pointer !String !Int !.a -> .a
connect _ _ _ _ = code {
ccall clean_g_signal_connect_void "psI:V:A"
}
g_signal_pop :: !.a -> (!Maybe GSignalArgs, !.a)
g_signal_pop env
# (sig,env) = pop env
| sig == 0
= (Nothing, env)
# (id,sig) = readIntP sig (IF_INT_64_OR_32 8 4)
| sig == 0 // force evaluation
= abort "Internal error in g_signal_pop\n"
= (Just {sig_id=id}, env)
where
pop :: !.a -> (!Pointer, !.a)
pop env = code {
ccall clean_g_signal_pop ":p:A"
}
gtk_init :: !.a -> .a
gtk_init env = init 0 0 env
where
init :: !Pointer !Pointer !.a -> .a
init argc argv env = code {
ccall gtk_init "pp:V:A"
}
gtk_main_iteration :: !.a -> (!Bool, !.a)
gtk_main_iteration env = code {
ccall gtk_main_iteration ":I:A"
}
gtk_main_quit :: !.a -> .a
gtk_main_quit env = code {
ccall gtk_main_quit ":V:A"
}
gtk_widget_set_size_request :: !Pointer !Int !Int !.a -> .a
gtk_widget_set_size_request widget hsize vsize env = code {
ccall gtk_widget_set_size_request "pII:V:A"
}
gtk_widget_show_all :: !Pointer !.a -> .a
gtk_widget_show_all widget env = code {
ccall gtk_widget_show_all "p:V:A"
}
gtk_window_new :: !Bool !.a -> (!Pointer, !.a)
gtk_window_new is_popup env = code {
ccall gtk_window_new "I:p:A"
}
gtk_window_set_title :: !Pointer !String !.a -> .a
gtk_window_set_title window title env = set window (packString title) env
where
set :: !Pointer !String !.a -> .a
set _ _ _ = code {
ccall gtk_window_set_title "ps:V:A"
}
|