let tabbed_box conf_struct_list buttons tooltips =
let vbox = GPack.vbox () in
let wnote = GPack.notebook
~scrollable: true
~show_tabs: true
~tab_border: 3
~packing: (vbox#pack ~expand: true)
()
in
let list_param_box =
List.map
(fun conf_struct -> new configuration_box tooltips conf_struct wnote)
conf_struct_list
in
let f_apply () =
List.iter (fun param_box -> param_box#apply) list_param_box ;
in
let hbox_buttons = GPack.hbox ~packing: (vbox#pack ~expand: false ~padding: 4) () in
let rec iter_buttons ?(grab=false) = function
[] ->
()
| (label, callb) :: q ->
let b = GButton.button ~label: label
~packing:(hbox_buttons#pack ~expand:true ~fill: true ~padding:4) ()
in
ignore (b#connect#clicked ~callback:
(fun () -> f_apply (); callb ()));
if grab then b#grab_default ();
iter_buttons q
in
iter_buttons ~grab: true buttons;
vbox