DIRECTORY CD, CDIO, CDTipEtc, CDValue, Icons, Rope, RuntimeError, TerminalIO, TEditImpl USING [ReloadTable], --crazy tiptable load procedure TIPUser, UserProfile; CDTipEtcImpl: CEDAR PROGRAM IMPORTS CDIO, CDValue, Icons, RuntimeError, Rope, TEditImpl, TerminalIO, TIPUser, UserProfile EXPORTS CDTipEtc = BEGIN SetTipTable: PUBLIC PROC [onto: REF, tipTable: Rope.ROPE] = BEGIN tTable: TIPUser.TIPTable _ NIL; IF tipTable=NIL OR Rope.Equal[tipTable, "Standard"] THEN tTable _ NewMakeTipTable[onto] ELSE tTable _ OldMakeTipTable[onto, tipTable]; IF tTable#NIL THEN CDValue.Store[boundTo: onto, key: $TipTable, value: tTable]; END; rememberList: LIST OF CD.Technology_NIL; NoteProfileChange: UserProfile.ProfileChangedProc = BEGIN FOR l: LIST OF CD.Technology _ rememberList, l.rest WHILE l#NIL DO SetTipTable[onto: l.first, tipTable: NIL] ENDLOOP END; NewMakeTipTable: PROC [onto: REF, remember: BOOL_TRUE] RETURNS [tTable: TIPUser.TIPTable _ NIL] = BEGIN WITH onto SELECT FROM d: CD.Design => tTable _ NewMakeTipTable[d.technology, FALSE]; tech: CD.Technology => { profileKey: Rope.ROPE _ Rope.Cat["ChipNDale.", tech.name, ".TIP"]; default: Rope.ROPE _ Rope.Cat[ CDIO.MakeName[base: "ChipNDale", ext: "tip", modifier: tech.name, wDir: CDIO.GetWorkingDirectory[tech]], " ", CDIO.MakeName[base: "ChipNDale", ext: "tip", wDir: CDIO.GetWorkingDirectory[NIL]] ]; tTable _ TEditImpl.ReloadTable[oldTIP: NIL, profileKey: profileKey, default: default]; IF tTable=NIL THEN TerminalIO.WriteRope["Tiptable not installed\n"]; IF remember THEN FOR l: LIST OF CD.Technology _ rememberList, l.rest WHILE l#NIL DO IF l.first=tech THEN EXIT; REPEAT FINISHED => rememberList _ CONS[tech, rememberList] ENDLOOP }; ENDCASE => TerminalIO.WriteRope["Tiptable not installed\n"]; END; OldMakeTipTable: PROC [onto: REF, tipTable: Rope.ROPE] RETURNS [tTable: TIPUser.TIPTable _ NIL] = BEGIN tipTable _ CDIO.MakeName[base: tipTable, ext: "tip", wDir: GlobalWDir[onto]]; tTable _ TIPUser.InstantiateNewTIPTable[tipTable ! TIPUser.InvalidTable => { TerminalIO.WriteRope["Tiptable not installed; "]; TerminalIO.WriteRope[errorMsg]; TerminalIO.WriteLn[]; GOTO NotDone } ]; EXITS NotDone => NULL END; GetTipTable: PUBLIC PROC [for: REF] RETURNS [TIPUser.TIPTable] = BEGIN WITH CDValue.Fetch[boundTo: for, key: $TipTable, propagation: global] SELECT FROM ttr: TIPUser.TIPTable => RETURN [ttr]; ENDCASE => RETURN [NIL]; END; SetIcon: PUBLIC PROC [onto: REF, file: Rope.ROPE, n: NAT] = BEGIN icon: REF Icons.IconFlavor = NEW[Icons.IconFlavor_tool]; file _ CDIO.MakeName[base: file, ext: "icon", wDir: GlobalWDir[onto]]; icon^ _ Icons.NewIconFromFile[file, n ! RuntimeError.UNCAUGHT => GOTO notDone]; CDValue.Store[boundTo: onto, key: $Icon, value: icon]; EXITS notDone => TerminalIO.WriteRope["**Icon not initialized\n"]; END; GetIcon: PUBLIC PROC [for: REF] RETURNS [Icons.IconFlavor] = BEGIN WITH CDValue.Fetch[boundTo: for, key: $Icon, propagation: global] SELECT FROM ip: REF Icons.IconFlavor => RETURN [ip^]; ENDCASE => RETURN [Icons.IconFlavor[unInit]] END; SetPanelIcon: PUBLIC PROC [onto: REF, file: Rope.ROPE, n: NAT] = BEGIN icon: REF Icons.IconFlavor = NEW[Icons.IconFlavor_tool]; file _ CDIO.MakeName[base: file, ext: "icon", wDir: GlobalWDir[onto]]; icon^ _ Icons.NewIconFromFile[file, n ! RuntimeError.UNCAUGHT => GOTO notDone]; CDValue.Store[boundTo: onto, key: $PanelIcon, value: icon]; EXITS notDone => TerminalIO.WriteRope["**Panel-Icon not initialized\n"]; END; GetPanelIcon: PUBLIC PROC [for: REF] RETURNS [Icons.IconFlavor] = BEGIN WITH CDValue.Fetch[boundTo: for, key: $PanelIcon, propagation: global] SELECT FROM ip: REF Icons.IconFlavor => RETURN [ip^]; ENDCASE => RETURN [Icons.IconFlavor[unInit]] END; GlobalWDir: PROC [onto: REF] RETURNS [Rope.ROPE] = BEGIN WITH onto SELECT FROM d: CD.Design => onto _ d.technology ENDCASE => NULL; RETURN [CDIO.GetWorkingDirectory[onto]] END; Init: PROC [] = BEGIN panelIcon: REF Icons.IconFlavor = NEW[Icons.IconFlavor_tool]; designIcon: REF Icons.IconFlavor = NEW[Icons.IconFlavor_tool]; CDValue.EnregisterKey[key: $TipTable]; CDValue.EnregisterKey[key: $Icon]; designIcon^ _ Icons.NewIconFromFile["Chipndale.icons", 0 ! RuntimeError.UNCAUGHT => CONTINUE]; CDValue.Store[boundTo: NIL, key: $Icon, value: designIcon]; CDValue.EnregisterKey[key: $PanelIcon]; panelIcon^ _ Icons.NewIconFromFile["Chipndale.icons", 1 ! RuntimeError.UNCAUGHT => CONTINUE]; CDValue.Store[boundTo: NIL, key: $PanelIcon, value: panelIcon]; UserProfile.CallWhenProfileChanges[NoteProfileChange]; END; Init[]; END. ŠCDTipEtcImpl.mesa (part of Chipndale) Copyright c 1983, 1985 by Xerox Corporation. All rights reserved. by Christian Jacobi August 11, 1983 11:32 am last edited by Christian Jacobi January 15, 1985 9:44:07 am PST -- tip tables ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- PROC [reason: ProfileChangeReason] -- Icons ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --onto: Design, Technology or global --only new viewers will get the new icon --for: Design, Technology or global --onto: Design, Technology or global --only new viewers will get the new icon --for: Design, Technology or global -- init ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ê—˜šœ,™,Jšœ Ïmœ7™BJšœ/™/JšœA™A—J˜šÏk ˜ Jšžœ˜Jšœ˜Jšœ ˜ J˜Jšœ˜J˜Jšœ ˜ Jšœ ˜ Jšœ žœÏc˜>Jšœ˜Jšœ ˜ J˜—šÏb œžœžœ˜JšžœV˜]Jšžœ ˜—Jšž˜J˜Jšœ6™6J™š Ïn œžœžœžœžœ˜;Jšžœ˜Jšœžœ˜šžœ žœžœ"žœ˜9Jšœ˜—šžœ˜Jšœ)˜)—Jšžœžœžœ=˜OJšžœ˜J˜—Jš œžœžœžœ žœ˜(J˜š œ"˜3Jšœžœ™%Jšž˜š žœžœžœžœ#žœžœž˜BJšœ%žœ˜)Jšž˜—Jšžœ˜—J˜š¡œžœžœ žœžœžœžœ˜aJšžœ˜šžœžœž˜Jšœžœ2žœ˜?šœžœ˜Jšœžœ-˜Bšœžœ ˜JšžœDžœ˜iJšœ˜Jšžœ/žœžœ˜RJšœ˜—Jšœ'žœ,˜VJšžœžœžœ2˜Dšžœ ž˜š žœžœžœžœ#žœžœž˜BJšžœžœžœ˜šžœ˜Jšžœžœ˜3—Jšž˜——Jšœ˜—Jšžœ5˜<—Jšžœ˜J˜—š ¡œžœžœžœžœžœ˜aJšžœ˜Jšœ žœ>˜Mšœ3˜3šœ˜J˜1Jšœ˜J˜Jšœ ˜ Jšœ˜—Jšœ˜—šž˜Jšœ ž˜—Jšžœ˜J˜—š ¡ œžœžœžœžœ˜@Jšžœ˜šžœBžœž˜QJšœžœ˜&Jšžœžœžœ˜—Jšžœ˜—J˜J™Jšœ4™4J˜š ¡œž œžœ žœžœ˜;JšŸ$™$Jšœ(™(Jšž˜Jšœžœžœ˜8Jšœžœ;˜FJšœ5žœžœ ˜OJšœ6˜6Jšžœ=˜BJšžœ˜J˜—š¡œž œžœžœ˜žœž˜MJšœžœžœ˜)Jšžœžœ˜-—Jšžœ˜—J˜š ¡ œž œžœ žœžœ˜@JšŸ$™$Jšœ(™(Jšž˜Jšœžœžœ˜8Jšœžœ;˜FJšœ5žœžœ ˜OJšœ;˜;JšžœC˜HJšžœ˜J˜—š¡ œž œžœžœ˜AJšŸ#™#Jšž˜šžœCžœž˜RJšœžœžœ˜)Jšžœžœ˜-—Jšžœ˜—J˜Jšœ)™)J˜š ¡ œžœžœžœžœ˜2Jšž˜šžœžœž˜Jšœžœ˜#Jšžœžœ˜—Jšžœžœ˜'Jšžœ˜—J˜š¡œžœ˜Jšž˜Jšœ žœžœ˜=Jšœ žœžœ˜>J˜Jšœ&˜&J˜Jšœ"˜"JšœHžœžœ˜^Jšœžœ!˜;J˜Jšœ'˜'JšœGžœžœ˜]Jšœžœ%˜?J˜Jšœ6˜6Jšžœ˜J˜—J˜Jšœ˜Jšžœ˜J˜J˜J˜—…—Òó