51 lines
2.0 KiB
OCaml
51 lines
2.0 KiB
OCaml
(***********************************************************************)
|
|
(* *)
|
|
(* MLTk, Tcl/Tk interface of OCaml *)
|
|
(* *)
|
|
(* Francois Rouaix, Francois Pessaux, Jun Furuse and Pierre Weis *)
|
|
(* projet Cristal, INRIA Rocquencourt *)
|
|
(* Jacques Garrigue, Kyoto University RIMS *)
|
|
(* *)
|
|
(* Copyright 2002 Institut National de Recherche en Informatique et *)
|
|
(* en Automatique and Kyoto University. All rights reserved. *)
|
|
(* This file is distributed under the terms of the GNU Library *)
|
|
(* General Public License, with the special exception on linking *)
|
|
(* described in file LICENSE found in the OCaml source tree. *)
|
|
(* *)
|
|
(***********************************************************************)
|
|
open Camltk
|
|
|
|
open Widget
|
|
|
|
|
|
let version = "$Id$"
|
|
|
|
(*
|
|
* Simulate a button with a bitmap AND a label
|
|
*)
|
|
|
|
let rec sort_options but lab com = function
|
|
[] -> but,lab,com
|
|
|(Command f as o)::l -> sort_options (o::but) lab com l
|
|
|(Bitmap b as o)::l -> sort_options (o::but) lab com l
|
|
|(Text t as o)::l -> sort_options but (o::lab) com l
|
|
|o::l -> sort_options but lab (o::com) l
|
|
|
|
let create parent options =
|
|
let but,lab,com = sort_options [] [] [] options in
|
|
let f = Frame.create parent com in
|
|
let b = Button.create f (but@com)
|
|
and l = Label.create f (lab@com) in
|
|
pack [b;l][];
|
|
bind l [[],ButtonPressDetail 1] (BindSet ([],(function _ -> Button.invoke b)));
|
|
f
|
|
|
|
let configure f options =
|
|
let but,lab,com = sort_options [] [] [] options in
|
|
match Pack.slaves f with
|
|
[b;l] ->
|
|
Frame.configure f com;
|
|
Button.configure b (but@com);
|
|
Label.configure l (lab@com)
|
|
| _ -> raise (Invalid_argument "lbutton configure")
|