<> <> DIRECTORY Commander USING [Register, CommandProc], JaM USING [State], JaMTS USING [GetLastHandle, JaMData, CreateJaMTS], ReadEvalPrint USING [Handle], List USING [Assoc, CopyTopList], Rope USING [Cat, ROPE], Convert USING [RopeFromInt], TJaMGraphics USING [Create]; RegisterJaMGraphics: CEDAR PROGRAM IMPORTS Commander, Convert, TJaMGraphics, Rope, List, JaMTS = { called: INT _ 0; NewJaMGraphics: Commander.CommandProc --[cmd: Commander.Handle]-- = { data: JaMTS.JaMData; rep: ReadEvalPrint.Handle _ JaMTS.GetLastHandle[]; IF rep=NIL THEN { name: Rope.ROPE _ "JaM"; rules: LIST OF REF ANY _ List.CopyTopList[NARROW[List.Assoc[key: $SearchRules, aList: cmd.propertyList]]]; IF called#0 THEN name _ Rope.Cat[name,Convert.RopeFromInt[from: called, showRadix: FALSE]]; rep _ JaMTS.CreateJaMTS[name, cmd.commandLine, rules]; called _ called+1; }; data _ NARROW[rep.clientData]; result _ TJaMGraphics.Create[frame: data.state, typescript: rep.viewer]; }; Commander.Register[key: "JaMGraphics", proc: NewJaMGraphics, doc: "Start JaM, its typescript and its Graphics viewer"]; }.