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

SCM Repository

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

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

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3, Sat Oct 4 23:33:46 1997 UTC revision 29, Thu Mar 12 01:05:59 1998 UTC
# Line 8  Line 8 
8    
9  structure RunEXene : sig  structure RunEXene : sig
10    
     val parseDisplay : string -> {  
           host : string,  
           dpy : string,  
           screen : string  
         }  
   
11      val run : (Widget.root -> unit) -> unit      val run : (Widget.root -> unit) -> unit
12    
13      type options = {      type options = {
# Line 26  Line 20 
20    end = struct    end = struct
21    
22      structure W = Widget      structure W = Widget
     structure SS = Substring  
23      structure EXB = EXeneBase      structure EXB = EXeneBase
24    
25      fun getDpyName NONE = (case (Posix.ProcEnv.getenv "DISPLAY")      fun mkRoot optDpy = let
26             of NONE => ""            val (dpy, auth) = GetDpy.getDpy optDpy
             | (SOME dpy) => dpy  
           (* end case *))  
       | getDpyName (SOME dpy) = dpy  
   
     fun parseDisplay "" = {host="",dpy="0",screen="0"}  
       | parseDisplay d = let  
           val (host,rest) = SS.splitl (fn c => c <> #":") (SS.all d)  
           val (dpy,scr) = SS.splitl (fn c => c <> #".") rest  
           in  
             if SS.size dpy < 2 then raise EXB.BadAddr "No display field"  
             else if SS.size scr = 1 then raise EXB.BadAddr "No screen number"  
             else {host=SS.string host,  
                   dpy=SS.string(SS.triml 1 dpy),  
                   screen=SS.string(SS.triml 1 scr)}  
           end  
   
     fun mkRoot dpy = let  
           val auth = (case dpy  
                  of "" => XAuth.getAuthByAddr {  
                         family = XAuth.familyLocal,  
                         addr = "",  
                         dpy = "0"  
                       }  
                   | d => let  
                       val {dpy,...} = parseDisplay d  
                       in  
                         XAuth.getAuthByAddr {  
                             family = XAuth.familyInternet,  
                             addr = "",  
                             dpy = dpy  
                           }  
                       end  
                  (* end case *))  
27            in            in
28              Widget.mkRoot (dpy, auth)              Widget.mkRoot (dpy, auth)
29                handle (EXeneBase.BadAddr s) => (                handle (EXeneBase.BadAddr s) => (
# Line 78  Line 38 
38      val defaultTimeQ = Time.fromMilliseconds 20 (* ms *)      val defaultTimeQ = Time.fromMilliseconds 20 (* ms *)
39    
40      fun run doit = let      fun run doit = let
41            fun runIt () = let            fun runIt () = doit (mkRoot NONE)
                 val root = mkRoot (getDpyName NONE)  
                 in  
                   doit root  
                 end  
42            in            in
43              ignore(RunCML.doit (runIt, SOME defaultTimeQ))              ignore(RunCML.doit (runIt, SOME defaultTimeQ))
44            end            end
# Line 93  Line 49 
49        }        }
50    
51      fun runWArgs doit (opts : options) = let      fun runWArgs doit (opts : options) = let
52            fun runIt () = let            fun runIt () = doit (mkRoot (#dpy opts))
                 val root = mkRoot (getDpyName (#dpy opts))  
                 in  
                   doit root  
                 end  
53            val timeQ = (case (#timeq opts)            val timeQ = (case (#timeq opts)
54                   of NONE => defaultTimeQ                   of NONE => defaultTimeQ
55                    | (SOME ms) => if (ms <= 0) then defaultTimeQ                    | (SOME ms) => if (ms <= 0) then defaultTimeQ

Legend:
Removed from v.3  
changed lines
  Added in v.29

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