Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/eXene/widgets/util/run-exene.sml
ViewVC logotype

Annotation of /sml/trunk/src/eXene/widgets/util/run-exene.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 29 - (view) (download)
Original Path: sml/branches/SMLNJ/src/eXene/widgets/util/run-exene.sml

1 : monnier 2 (* run-exene.sml
2 :     *
3 :     * COPYRIGHT (c) 1994 AT&T Bell Laboratories.
4 :     *
5 :     * This structure provides a higher-level interface to invoking applications.
6 :     * Users may set the shell variable "DISPLAY" to specify the display connection.
7 :     *)
8 :    
9 :     structure RunEXene : sig
10 :    
11 :     val run : (Widget.root -> unit) -> unit
12 :    
13 :     type options = {
14 :     dpy : string option, (* specify the display to connect to *)
15 :     timeq : LargeInt.int option (* specify the CML time quantum in ms. *)
16 :     }
17 :    
18 :     val runWArgs : (Widget.root -> unit) -> options -> unit
19 :    
20 :     end = struct
21 :    
22 :     structure W = Widget
23 :     structure EXB = EXeneBase
24 :    
25 : monnier 29 fun mkRoot optDpy = let
26 :     val (dpy, auth) = GetDpy.getDpy optDpy
27 : monnier 2 in
28 :     Widget.mkRoot (dpy, auth)
29 :     handle (EXeneBase.BadAddr s) => (
30 :     TextIO.output (TextIO.stdErr, String.concat[
31 :     "eXene: unable to open display \"", dpy, "\"\n",
32 :     " ", s, "\n"
33 :     ]);
34 :     RunCML.shutdown OS.Process.failure)
35 :     end
36 :    
37 :     (* the default time quantum *)
38 :     val defaultTimeQ = Time.fromMilliseconds 20 (* ms *)
39 :    
40 :     fun run doit = let
41 : monnier 29 fun runIt () = doit (mkRoot NONE)
42 : monnier 2 in
43 :     ignore(RunCML.doit (runIt, SOME defaultTimeQ))
44 :     end
45 :    
46 :     type options = {
47 :     dpy : string option, (* specify the display to connect to *)
48 :     timeq : LargeInt.int option (* specify the CML time quantum in ms. *)
49 :     }
50 :    
51 :     fun runWArgs doit (opts : options) = let
52 : monnier 29 fun runIt () = doit (mkRoot (#dpy opts))
53 : monnier 2 val timeQ = (case (#timeq opts)
54 :     of NONE => defaultTimeQ
55 :     | (SOME ms) => if (ms <= 0) then defaultTimeQ
56 :     else Time.fromMilliseconds ms
57 :     (* end case *))
58 :     in
59 :     ignore (RunCML.doit (runIt, SOME timeQ))
60 :     end
61 :    
62 :     end; (* RunEXene *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0