let add_item (factory:GMenu.menu GMenu.factory) ~callback name arg_opt =
match arg_opt with
| None -> (* add the menu item, but it isn't sensitive *)
let item = factory#add_item name ~callback:(fun () -> ())
in item#misc#set_sensitive false
| Some arg -> (* add the menu item with its callback *)
ignore (factory#add_item name ~callback:(fun () -> callback arg))