|
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 |
(* This examples is based on Ousterhout's book (fig 16.15) *)
|
|
Packit |
bd2e5d |
open Camltk
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
let main () =
|
|
Packit |
bd2e5d |
let top = opentk() in
|
|
Packit |
bd2e5d |
let mbar = Frame.create top [Relief Raised; BorderWidth (Pixels 2)]
|
|
Packit |
bd2e5d |
and dummy =
|
|
Packit |
bd2e5d |
Frame.create top [Width (Centimeters 10.); Height (Centimeters 5.)] in
|
|
Packit |
bd2e5d |
pack [mbar; dummy] [Side Side_Top; Fill Fill_X];
|
|
Packit |
bd2e5d |
let file = Menubutton.create mbar [Text "File"; UnderlinedChar 0]
|
|
Packit |
bd2e5d |
and edit = Menubutton.create mbar [Text "Edit"; UnderlinedChar 0]
|
|
Packit |
bd2e5d |
and graphics = Menubutton.create mbar [Text "Graphics"; UnderlinedChar 0]
|
|
Packit |
bd2e5d |
and text = Menubutton.create mbar [Text "Text"; UnderlinedChar 0]
|
|
Packit |
bd2e5d |
and view = Menubutton.create mbar [Text "View"; UnderlinedChar 0]
|
|
Packit |
bd2e5d |
and help = Menubutton.create mbar [Text "Help"; UnderlinedChar 0] in
|
|
Packit |
bd2e5d |
pack [file;edit;graphics;text;view] [Side Side_Left];
|
|
Packit |
bd2e5d |
pack [help] [Side Side_Right];
|
|
Packit |
bd2e5d |
(* same code as chap16-14 *)
|
|
Packit |
bd2e5d |
let m = Menu.create text [] in
|
|
Packit |
bd2e5d |
let bold = Textvariable.create()
|
|
Packit |
bd2e5d |
and italic = Textvariable.create()
|
|
Packit |
bd2e5d |
and underline = Textvariable.create() in
|
|
Packit |
bd2e5d |
Menu.add_checkbutton m [Label "Bold"; Variable bold];
|
|
Packit |
bd2e5d |
Menu.add_checkbutton m [Label "Italic"; Variable italic];
|
|
Packit |
bd2e5d |
Menu.add_checkbutton m [Label "Underline"; Variable underline];
|
|
Packit |
bd2e5d |
Menu.add_separator m;
|
|
Packit |
bd2e5d |
let font = Textvariable.create() in
|
|
Packit |
bd2e5d |
Menu.add_radiobutton m [Label "Times"; Variable font; Value "times"];
|
|
Packit |
bd2e5d |
Menu.add_radiobutton m [Label "Helvetica"; Variable font; Value "helvetica"]
|
|
Packit |
bd2e5d |
;
|
|
Packit |
bd2e5d |
Menu.add_radiobutton m [Label "Courier"; Variable font; Value "courier"];
|
|
Packit |
bd2e5d |
Menu.add_separator m;
|
|
Packit |
bd2e5d |
Menu.add_command m [Label "Insert Bullet";
|
|
Packit |
bd2e5d |
Command (function () ->
|
|
Packit |
bd2e5d |
print_string "Insert Bullet\n";
|
|
Packit |
bd2e5d |
flush stdout)];
|
|
Packit |
bd2e5d |
Menu.add_command m [Label "Margins and Tags...";
|
|
Packit |
bd2e5d |
Command (function () ->
|
|
Packit |
bd2e5d |
print_string "margins\n";
|
|
Packit |
bd2e5d |
flush stdout)];
|
|
Packit |
bd2e5d |
Menubutton.configure text [Menu m];
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
mainLoop()
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
|
|
Packit |
bd2e5d |
let _ =
|
|
Packit |
bd2e5d |
Printexc.catch main ()
|