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.WriteRopes["Tiptable not installed; ", errorMsg, "\n"]; 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, September 19, 1985 1:20:01 pm PDT -- 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 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Κ˜˜codešœ,™,Kšœ Οmœ7™BKšœ/™/KšœC™CK˜—šΟk ˜ Kšžœ˜Kšœ˜Kšœ ˜ K˜Kšœ˜K˜Kšœ ˜ Kšœ ˜ Kšœ žœΟc˜>Kšœ˜Kšœ ˜ —K˜šΠbl œžœžœ˜KšžœV˜]Kšžœ ˜—Kšž˜K˜Kšœ6™6K™š Οn œžœžœžœžœ˜;Kšžœ˜Kšœžœ˜šžœ žœžœ"žœ˜9Kšœ˜—šžœ˜Kšœ)˜)—Kšžœžœžœ=˜OKšžœ˜K˜—Kš œžœžœžœ žœ˜(K˜šΟbœ"˜3Kšœžœ™%Kšž˜š žœžœžœžœ#žœžœž˜BKšœ%žœ˜)Kšž˜—Kšžœ˜—K˜š‘œžœžœ žœžœžœžœ˜aKšžœ˜šžœžœž˜Kšœžœ2žœ˜?šœžœ˜Kšœžœ-˜Bšœžœ ˜KšžœDžœ˜iKšœ˜Kšžœ/žœžœ˜RKšœ˜—Kšœ'žœ,˜VKšžœžœžœ2˜Dšžœ ž˜š žœžœžœžœ#žœžœž˜BKšžœžœžœ˜šžœ˜Kšžœžœ˜3—Kšž˜——Kšœ˜—Kšžœ5˜<—Kšžœ˜K˜—š ‘œžœžœžœžœžœ˜aKšžœ˜Kšœ žœ>˜Mšœ3˜3šœ˜KšœB˜BKšœ ˜ Kšœ˜—Kšœ˜—šž˜Kšœ ž˜—Kšžœ˜K˜—š ‘ œžœžœžœžœ˜@Kšžœ˜šžœBžœž˜QKšœžœ˜&Kšžœžœžœ˜—Kšžœ˜—K˜K™Kšœ4™4K˜š ‘œž œžœ žœžœ˜;KšŸ$™$Kšœ(™(Kšž˜Kšœžœžœ˜8Kšœžœ;˜FKšœ5žœžœ ˜OKšœ6˜6Kšžœ=˜BKšžœ˜K˜—š‘œž œžœžœ˜žœž˜MKšœžœžœ˜)Kšžœžœ˜-—Kšžœ˜—K˜š ‘ œž œžœ žœžœ˜@KšŸ$™$Kšœ(™(Kšž˜Kšœžœžœ˜8Kšœžœ;˜FKšœ5žœžœ ˜OKšœ;˜;KšžœC˜HKšžœ˜K˜—š‘ œž œžœžœ˜AKšŸ#™#Kšž˜šžœCžœž˜RKšœžœžœ˜)Kšžœžœ˜-—Kšžœ˜—K˜Kšœ)™)K˜š ‘ œžœžœžœžœ˜2Kšž˜šžœžœž˜Kšœžœ˜#Kšžœžœ˜—Kšžœžœ˜'Kšžœ˜—K˜š‘œžœ˜Kšž˜Kšœ žœžœ˜=Kšœ žœžœ˜>K˜Kšœ&˜&K˜Kšœ"˜"KšœHžœžœ˜^Kšœžœ!˜;K˜Kšœ'˜'KšœGžœžœ˜]Kšœžœ%˜?K˜Kšœ6˜6Kšžœ˜K˜—K˜Kšœ˜Kšžœ˜K˜K˜K˜—…—¬Π