--- /dev/null
+(* $Id$ *)
+
+open Gtk
+open GObj
+
+class focus :
+ 'a obj ->
+ object
+ constraint 'a = [>`container]
+ val obj : 'a obj
+ method circulate : Tags.direction_type -> bool
+ method set : widget option -> unit
+ method set_hadjustment : GData.adjustment option -> unit
+ method set_vadjustment : GData.adjustment option -> unit
+ end
+
+class container :
+ 'a obj ->
+ object
+ inherit widget
+ constraint 'a = [>`container|`widget]
+ val obj : 'a obj
+ method add : widget -> unit
+ method children : widget list
+ method remove : widget -> unit
+ method focus : focus
+ method set_border_width : int -> unit
+ end
+
+class container_signals :
+ 'a obj ->
+ object
+ inherit widget_signals
+ constraint 'a = [>`container|`widget]
+ val obj : 'a obj
+ method add : callback:(widget -> unit) -> GtkSignal.id
+ method remove : callback:(widget -> unit) -> GtkSignal.id
+ end
+
+class container_full :
+ 'a obj ->
+ object
+ inherit container
+ constraint 'a = [>`container|`widget]
+ val obj : 'a obj
+ method connect : container_signals
+ end
+
+val cast_container : widget -> container_full
+(* may raise [Gtk.Cannot_cast "GtkContainer"] *)
+
+class virtual ['a] item_container :
+ 'c obj ->
+ object
+ constraint 'a = < as_item : [>`widget] obj; .. >
+ constraint 'c = [>`container|`widget]
+ inherit widget
+ val obj : 'c obj
+ method add : 'a -> unit
+ method append : 'a -> unit
+ method children : 'a list
+ method virtual insert : 'a -> pos:int -> unit
+ method prepend : 'a -> unit
+ method remove : 'a -> unit
+ method focus : focus
+ method set_border_width : int -> unit
+ method private virtual wrap : Gtk.widget obj -> 'a
+ end
+
+class item_signals :
+ 'a obj ->
+ object
+ inherit container_signals
+ constraint 'a = [>`container|`item|`widget]
+ val obj : 'a obj
+ method deselect : callback:(unit -> unit) -> GtkSignal.id
+ method select : callback:(unit -> unit) -> GtkSignal.id
+ method toggle : callback:(unit -> unit) -> GtkSignal.id
+ end