+++ /dev/null
-(* $Id$ *)
-
-open GObj
-
-class multibox ~rows ~columns ?(row_view = rows) ?(col_view = columns)
- ?packing ?show () =
- let sw =
- GBin.scrolled_window ~hpolicy:`AUTOMATIC ~vpolicy:`AUTOMATIC
- ?show ?packing () in
- let vp = GBin.viewport ~shadow_type:`NONE ~packing:sw#add in
- let table =
- GPack.table ~columns ~rows ~homogeneous:true ~packing:vp#add () in
- let buttons =
- Array.init ~len:columns
- ~f:(fun left -> Array.init ~len:rows
- ~f:(fun top -> GButton.button
- ~packing:(table#attach ~top ~left ~expand:`BOTH)))
- in
- object (self)
- inherit widget sw#as_widget
- method cell ~col ~row = buttons.(col).(row)
- initializer
- let id = ref None in
- id := Some
- (sw#event#connect#expose ~after:true ~callback:
- begin fun _ ->
- may !id ~f:sw#connect#disconnect;
- let height = table#misc#allocation.height * row_view / rows
- and width = table#misc#allocation.width * col_view / columns in
- vp#misc#set_size ~height ~width;
- false
- end);
- table#focus#set_vadjustment vp#vadjustment
- end