let create_button = fun ?label ~stock ~packing () ->
    let button = GButton.button ~packing () in
      match label with
        | Some label ->
            let align = GBin.alignment
                          ~xalign:0.5 ~yalign:0.5
                          ~xscale:0.0 ~yscale:0.0
                          ~packing:button#add
                          ()
            in
            let bbox = GPack.hbox ~spacing:2 ~packing:align#add () in
              ignore (GMisc.image ~stock:stock ~packing:bbox#pack ());
              ignore (GMisc.label ~text:label ~packing:bbox#pack ());
              button
        | None ->
            ignore (GMisc.image ~stock:stock ~packing:button#add ());
            button