summaryrefslogtreecommitdiff
path: root/src/Gtk/Internal.icl
blob: b88a703ff60f5c00f3b934f4ddd3f714c945d398 (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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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_container_add :: !Pointer !Pointer !.a -> .a
gtk_container_add container widget env = code {
	ccall gtk_container_add "pp:V: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_paned_new :: !Bool !.a -> (!Pointer, !.a)
gtk_paned_new vertical env = code {
	ccall gtk_paned_new "I:p:A"
}

gtk_paned_pack1 :: !Pointer !Pointer !Bool !Bool !.a -> .a
gtk_paned_pack1 paned child resize shrink env = code {
	ccall gtk_paned_pack1 "ppII:V:A"
}

gtk_paned_pack2 :: !Pointer !Pointer !Bool !Bool !.a -> .a
gtk_paned_pack2 paned child resize shrink env = code {
	ccall gtk_paned_pack2 "ppII:V:A"
}

gtk_paned_set_wide_handle :: !Pointer !Bool !.a -> .a
gtk_paned_set_wide_handle paned setting env = code {
	ccall gtk_paned_set_wide_handle "pI:V:A"
}

gtk_text_buffer_insert_at_cursor :: !Pointer !String !Int !.a -> .a
gtk_text_buffer_insert_at_cursor buffer string len env = code {
	ccall gtk_text_buffer_insert_at_cursor "psI:V:A"
}

gtk_text_view_new :: !.a -> (!Pointer, !.a)
gtk_text_view_new env = code {
	ccall gtk_text_view_new ":p:A"
}

gtk_text_view_get_buffer :: !Pointer -> Pointer
gtk_text_view_get_buffer text_view = code {
	ccall gtk_text_view_get_buffer "p:p"
}

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 :: !Pointer !.a -> .a
gtk_widget_show widget env = code {
	ccall gtk_widget_show "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"
	}