]> matita.cs.unibo.it Git - helm.git/blob - helm/DEVEL/lablgtk/lablgtk_20000829-0.1.0/gtkSignal.mli
- DoubleTypeInference.does_not_occur exposed
[helm.git] / helm / DEVEL / lablgtk / lablgtk_20000829-0.1.0 / gtkSignal.mli
1 (* $Id$ *)
2
3 open Gtk
4
5 type id
6 type ('a,'b) t =
7  { name: string;
8    marshaller: ('b -> GtkArgv.t -> GtkArgv.data list -> unit) }
9
10 val stop_emit : unit -> unit
11     (* Call [stop_emit ()] in a callback to prohibit further handling
12        of the current signal invocation, by calling [emit_stop_by_name].
13        Be careful about where you use it, since the concept of current
14        signal may be tricky. *)
15
16 val connect :
17   sgn:('a, 'b) t -> callback:'b -> ?after:bool -> 'a obj -> id
18     (* You may use [stop_emit] inside the callback *)
19
20 external disconnect : 'a obj -> id -> unit
21   = "ml_gtk_signal_disconnect"
22 external emit_stop_by_name : 'a obj -> name:string -> unit
23   = "ml_gtk_signal_emit_stop_by_name"
24     (* Unsafe: use [stop_emit] instead. *)
25 external handler_block : 'a obj -> id -> unit
26   = "ml_gtk_signal_handler_block"
27 external handler_unblock : 'a obj -> id -> unit
28   = "ml_gtk_signal_handler_unblock"
29
30 (* Some marshaller functions, to build signals *)
31 val marshal_unit : (unit -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit
32 val marshal_int : (int -> unit) -> GtkArgv.t -> GtkArgv.data list -> unit
33
34 (* Emitter functions *)
35 val emit :
36   'a obj -> sgn:('a, 'b) t -> emitter:('a obj -> name:string -> 'b) -> 'b
37 val emit_unit : 'a obj -> sgn:('a, unit -> unit) t -> unit
38 val emit_int : 'a obj -> sgn:('a, int -> unit) t -> int -> unit
39
40 (* Internal functions. *)
41 val enter_callback : (unit -> unit) ref
42 val exit_callback : (unit -> unit) ref
43 type saved_state
44 val push_callback : unit -> saved_state
45 val pop_callback : saved_state -> bool