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