DIRECTORY CD USING [Technology], Commander USING [CommandProc], Icons USING [IconFlavor], Rope USING [ROPE], TIPUser USING [TIPTable]; CDEnvironment: CEDAR DEFINITIONS = BEGIN cdVersion: READONLY NAT; profilePrefix: READONLY Rope.ROPE; preRelease: READONLY BOOL; SetTipTable: PROC [for: REF, tipTable: Rope.ROPE_NIL]; GetTipTable: PROC [for: REF] RETURNS [TIPUser.TIPTable]; SetIcon: PROC [for: REF, file: Rope.ROPE, n: NAT]; GetIcon: PROC [for: REF] RETURNS [Icons.IconFlavor]; SetPanelIcon: PROC [for: REF, file: Rope.ROPE, n: NAT]; GetPanelIcon: PROC [for: REF] RETURNS [Icons.IconFlavor]; SetWorkingDirectory: PROC [for: REF, wDir: Rope.ROPE_NIL]; GetWorkingDirectory: PROC [for: REF_NIL] RETURNS [wDir: Rope.ROPE]; DoWithWDir: PROC [wDir: Rope.ROPE, proc: PROC]; RegisterCommander: PROC [key: Rope.ROPE, proc: Commander.CommandProc _ NIL, doc: Rope.ROPE _ NIL, clientData: REF _ NIL, interpreted: BOOL _ TRUE, technology: CD.Technology _ NIL]; MakeName: PROC [base: Rope.ROPE, ext: Rope.ROPE_NIL, wDir: Rope.ROPE_NIL, modifier: Rope.ROPE_NIL] RETURNS [Rope.ROPE]; FindFile: PROC [base: Rope.ROPE, ext: Rope.ROPE_NIL, for: REF_NIL] RETURNS [Rope.ROPE]; RemoveSpaces: PROC [line: Rope.ROPE] RETURNS [Rope.ROPE_NIL]; SplitLine: PROC [line: Rope.ROPE] RETURNS [key, rest: Rope.ROPE_NIL]; FetchKeyLine: PROC [fileName: Rope.ROPE, key: Rope.ROPE] RETURNS [entry: Rope.ROPE]; StuffToCommandTool: PROC [r: Rope.ROPE, wDir: Rope.ROPE_NIL, searchPath: LIST OF Rope.ROPE_NIL, catchErrors: BOOL_TRUE, continueErrors: BOOL_TRUE] RETURNS [result: REF_NIL]; ExecFileEntry: PROC [key: Rope.ROPE, technology: CD.Technology_NIL, modifier: Rope.ROPE_NIL, catchErrors: BOOL_TRUE, continueErrors: BOOL_TRUE]; LoadTechnology: PROC [key: ATOM, name: Rope.ROPE] RETURNS [CD.Technology]; GetTechnology: PROC [hint: REF] RETURNS [CD.Technology]; END. ²CDEnvironment.mesa (part of ChipNDale) Copyright c 1983, 1987 by Xerox Corporation. All rights reserved. Created by Christian Jacobi, August 11, 1983 11:32 am Last Edited by: Christian Jacobi, March 23, 1987 4:23:26 pm PST Implementation of Cedar user interface features --The current ChipNDale release number --e.g. 28 --Prefix for user profile options --e.g. "ChipNDale28." --Never ever make output with a pre-released version of ChipNDale --and try to read the files with a released version of ChipNDale. -- Tip tables --Verbose on TerminalIO --for: Design, Technology or global --tipTable: NIL for standard lookup (user profile) --for: Design, Technology or global -- Icons --for: Design, Technology or global --Only new viewers might get the new icon --for: Design, Technology or global --for: Design, Technology or global --Only new viewers might get the new icon --for: Design, Technology or global -- Working Directories --Sets the working directory of ChipNDale feature (not process) --for: Design, Technology, NIL for ChipNDale itself (dangerous) --wDir: if NIL: takes wDir from profile or process --Gets the working directory for a ChipNDale feature (not process) [in slash format] --design: Design, Technology or ChipNDale's global directory --executes proc with wDir as current working directory for process -- Commander --Like Commander.Register, but also registers command with directory prefixes for --technology's and ChipNDale's global directory [in slash format] -- Names --Makes a full path filename: adds extension ext if base does not have an extension; --Adds working directory wDir if base is not a full path name --Adds modifier if not NIL. --No check whether file exist is made. --Makes a full path filename and checks existence of file. --Returns NIL if file does not exist. -- Loader --Returns rope with spaces (and tabs) removed from both ends --Splits a line into a keyword and the rest --Returns -- key: keyword at beginning of line; -- (leading spaces and trailing separator [space or colon] removed) -- rest: rest of line (after separator) -- (leading spaces removed) --Searches for a line starting with key in file --Returns the rest of the line found or NIL if not found --Executes r with a commandtool --catchErrors: allows to interactively debug on errors --continueErrors: continue after error or aborting the debugger --Checks whether a particular key is mentioned in a .CDLoadList file --if particular key is found, executes the rest of the line with a command tool --technology and modifier are used to make the name of the used .CDLoadList file --(using modifier .CDLoadList files for particular feature classes can be distinguished) --building of name for the .CDLoadList files: -- ChipNDale-CD.CDLoadList if {technology=NIL, modifier=NIL} -- ChipNDale-CD-modifier.CDLoadList if {technology=NIL, modifier#NIL} -- ChipNDale-technologyName.CDLoadList if {technology#NIL, modifier=NIL} -- ChipNDale-technologyName-modifier.CDLoadList if {technology#NIL, modifier#NIL} --Makes all the necessary messages if not loaded --Returns technology given its name or key; NIL if not found. --[more friendly version of CD.GetTechnology, which requires a key] Κˆ˜codešœ-™-Kšœ Οmœ7™BKšœ6™6K™?—K˜šΟk ˜ Kšžœžœ˜Kšœ žœ˜Kšœžœ˜Kšœžœžœ˜Kšœžœ ˜—K˜KšΟn œžœž œ˜#Kšž˜K˜K™/K™šœ žœžœ˜KšΟc&™&Kš  ™ —K™šœžœžœ˜"Kš !™!Kš œ™—K˜šœ žœžœ˜Kš œ@™BKš œB™D—K™Kšœ™K˜š Ÿ œžœžœžœžœ˜6Kš ™Kš #™#Kš 2™2K˜—šŸ œžœžœžœ˜8Kš #™#K˜—K˜Kšœ ™ K˜š Ÿœžœžœ žœžœ˜2Kš #™#Kš )™)K˜—šŸœžœžœžœ˜4Kš #™#K˜—š Ÿ œžœžœ žœžœ˜7Kš #™#Kš )™)K˜—šŸ œžœžœžœ˜9Kšœ#™#K˜—K™Kšœ™K˜š Ÿœžœžœ žœžœ˜:Kš ?™?Kš ?™?Kš 2™2K˜—š Ÿœžœžœžœžœ žœ˜CKš Gœ  ™TKš <™™>Kš G™GKš J™JKš S™S—K˜š Ÿœžœžœ žœžœžœ ˜JKš 0™0—K™š Ÿ œžœžœžœžœ ˜8Kšœ=™=KšœC™C—K˜Kšžœ˜K˜K˜—…—F€