DIRECTORY NodeStyleOps USING [defaultStyleName, InitializeDefaultStyle, LoadStyle], NodeStyleWorks USING [attachmentsDict, bindingDict, defaultFrame, FreeFrame, get, GetCommand, GetFrame, InitDict, load, RegisterStyleLiteral, RegisterWorks1, RegisterWorks2, RegisterWorks3, RegisterWorks4, run, styledict, stylesDicts, sysdict, TypeCheckDict, userdict], Rope USING [ROPE], TJaM USING [AtomFromRope, AttachDict, Begin, DictTop, End, Execute, Frame, NewFrame, Pop, Push, TryToLoad]; NodeStyleWorksStartImpl: CEDAR PROGRAM IMPORTS NodeStyleOps, NodeStyleWorks, TJaM EXPORTS NodeStyleWorks ~ BEGIN OPEN NodeStyleWorks; ROPE: TYPE ~ Rope.ROPE; Frame: TYPE ~ TJaM.Frame; RunFile: PROC [frame: Frame, name: ATOM, fileName: ROPE] RETURNS [ran: BOOL] ~ { known: BOOL; [known, ] _ TJaM.TryToLoad[frame, name]; IF known THEN RETURN [FALSE]; TJaM.Push[frame, fileName]; TJaM.Execute[frame, run]; RETURN [TRUE]; }; StartTheWorks: PUBLIC PROC ~ { frame: Frame _ defaultFrame _ TJaM.NewFrame[]; get _ GetCommand[frame, TJaM.AtomFromRope[".get"]]; run _ GetCommand[frame, TJaM.AtomFromRope[".run"]]; load _ GetCommand[frame, TJaM.AtomFromRope[".load"]]; TJaM.Execute[frame, TJaM.AtomFromRope[".sysdict"]]; sysdict _ TypeCheckDict[TJaM.Pop[frame]]; IF NOT RunFile[frame, $user ,"start.jam"] THEN TJaM.Execute[frame, TJaM.AtomFromRope[".start"]]; userdict _ TJaM.DictTop[frame]; styledict _ InitDict[$TiogaStylesDictionary]; TJaM.AttachDict[styledict, userdict]; TJaM.End[frame]; TJaM.Begin[frame, styledict]; stylesDicts[base] _ InitDict[$TiogaBaseStylesDictionary]; stylesDicts[print] _ InitDict[$TiogaPrintStylesDictionary]; stylesDicts[screen] _ InitDict[$TiogaScreenStylesDictionary]; bindingDict _ InitDict[$TiogaBindingDictionary, 200]; attachmentsDict _ InitDict[$TiogaAttachedStylesDictionary]; [] _ RunFile[frame, $StyleError, "TiogaUtils.jam"]; RegisterWorks1[frame]; RegisterWorks2[frame]; RegisterWorks3[frame]; RegisterWorks4[frame]; RegisterStyleLiteral[frame, $the]; RegisterStyleLiteral[frame, $smaller]; RegisterStyleLiteral[frame, $bigger]; RegisterStyleLiteral[frame, $percent]; RegisterStyleLiteral[frame, $regular]; RegisterStyleLiteral[frame, $bold]; RegisterStyleLiteral[frame, $italic]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["bold+italic"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["+bold"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["+italic"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["-bold"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["-italic"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["caps+lowercase"]]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["caps+smallcaps"]]; RegisterStyleLiteral[frame, $lowercase]; RegisterStyleLiteral[frame, $caps]; RegisterStyleLiteral[frame, $all]; RegisterStyleLiteral[frame, $visible]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["letters+digits"]]; RegisterStyleLiteral[frame, $none]; RegisterStyleLiteral[frame, $justified]; RegisterStyleLiteral[frame, $flush]; RegisterStyleLiteral[frame, $flushLeft]; RegisterStyleLiteral[frame, $flushRight]; RegisterStyleLiteral[frame, $centered]; RegisterStyleLiteral[frame, $filled]; RegisterStyleLiteral[frame, $outlined]; RegisterStyleLiteral[frame, $filled]; RegisterStyleLiteral[frame, TJaM.AtomFromRope["filled+outlined"]]; RegisterStyleLiteral[frame, $fixed]; RegisterStyleLiteral[frame, $relative]; RegisterStyleLiteral[frame, $looks]; RegisterStyleLiteral[frame, $breakIfPast]; RegisterStyleLiteral[frame, $spaceIfPast]; RegisterStyleLiteral[frame, $blank]; RegisterStyleLiteral[frame, $leaders]; RegisterStyleLiteral[frame, $rule]; RegisterStyleLiteral[frame, $rules]; RegisterStyleLiteral[frame, $aligned]; RegisterStyleLiteral[frame, $congruent]; { frame: ARRAY [0..4) OF Frame; FOR i: NAT IN [0..4) DO frame[i] _ GetFrame[NIL, NIL, screen] ENDLOOP; FOR i: NAT IN [0..4) DO FreeFrame[frame[i], NIL, screen] ENDLOOP; }; NodeStyleOps.InitializeDefaultStyle["Cedar"]; [] _ NodeStyleOps.LoadStyle[NodeStyleOps.defaultStyleName]; }; StartTheWorks[!]; END. NodeStyleWorksStartImpl.mesa Copyright c 1985, 1986 by Xerox Corporation. All rights reserved. Michael Plass, April 22, 1986 10:27:46 am PST Rick Beach, June 11, 1985 11:03:31 am PDT The starting process for the Tioga style machinery is somewhat magical. This should be the only NodeStyle module that executes any initialization code. We orchestrate the start up sequence from here. if name is unknown in the current frame, then run the named file Some JaM commands needed to run the style machinery Remember the system dictionary, since the style machinery manipulates the dictionary stack Check if we have run the start jam code: (start.jam) .run This provides a user dictionary into which start.jam loads util.jam and errordefs.jam Remember the user dictionary pointer Create the dicitionary of Tioga style names Replace userdict by styledict for rest of startup Create and register dictionaries for style rules, name bindings, and attached styles Check if have run the Tioga utility jam code: (TiogaUtils.jam) .run Register various style and JaM commands implemented elsewhere TJaM.Register[frame, $GetFreeVarOp, NodeStyleObsolete.GetFreeVarOp]; TJaM.Register[frame, $GetFreeVarObjOp, NodeStyleObsolete.GetFreeVarObjOp]; Register various literals used by the style machinery as keywords numeric style attributes font attributes font alphabets underlining and strikeout line formatting graphical paths tab stop positioning tab stop attributes Initialize the small cache of frames by allocating and freeing some Initialize the default style Κ*˜code™Kšœ Οmœ7™BK™-K™)—K™K™GK™OK™/K™šΟk ˜ Jšœ žœ7˜IJšœžœω˜Jšœžœžœ˜Jšœžœa˜k—K˜KšΠblœž ˜&Kšžœ#˜*Kšžœ˜šœž œž˜K™Kšžœžœžœ˜K˜šœžœ˜K˜—š Οnœžœžœ žœžœžœ˜PKšœ@™@Kšœžœ˜ K˜(Kšžœžœžœžœ˜Kšœ˜K˜Kšžœžœ˜Kšœ˜K˜—š  œžœžœ˜Kšœ.˜.K™Kšœ3™3Kšœ3˜3Kšœ3˜3Kšœ5˜5K˜KšœZ™ZKšœ3˜3Kšœ)˜)K˜Kšœ9™9K™Ušžœžœ$ž˜.Kšœžœ˜1K˜—Kšœ$™$K˜K˜Kšœ+™+K˜-K˜%K™Kšœ1™1Kšœ˜K˜K˜K™TK˜9K˜;K˜=K˜5K˜;K˜KšœC™CK˜3K˜K™=K˜K˜K˜K˜KšœD™DKšœJ™JK™KšœA™AKšœ™Kšœ"˜"Kšœ&˜&Kšœ%˜%Kšœ&˜&K™Kšœ™Kšœ&˜&Kšœ#˜#Kšœ%˜%Kšœ>˜>Kšœ8˜8Kšœ:˜:Kšœ8˜8Kšœ:˜:K™Kšœ™KšœA˜AKšœA˜AKšœ(˜(Kšœ#˜#K™Kšœ™Kšœ"˜"Kšœ&˜&KšœA˜AKšœ#˜#K˜Kšœ™Kšœ(˜(Kšœ$˜$Kšœ(˜(Kšœ)˜)Kšœ'˜'K™Kšœ™Kšœ%˜%Kšœ'˜'Kšœ%˜%KšœB˜BK™Kšœ™Kšœ$˜$Kšœ'˜'K™Kšœ™Kšœ$˜$Kšœ*˜*Kšœ*˜*Kšœ$˜$Kšœ&˜&Kšœ#˜#Kšœ$˜$Kšœ&˜&Kšœ(˜(K™KšœC™Cšœ˜Kšœžœžœ˜Kšžœžœžœžœžœžœ žœ˜FKš žœžœžœžœžœ žœ˜AKšœ˜—K˜Kšœ™K˜-K˜;Kšœ˜K˜—K˜—K˜K˜Kšžœ˜—…—¨ξ