Blame examples_camltk/winskel.ml

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 ()