DIRECTORY AtomButtons, Rope, Rules, VFonts, SVEditToolMenus, SVInterfaceTypes, SVUserInput; SVEditToolMenusImplE: CEDAR PROGRAM IMPORTS AtomButtons, SVUserInput, VFonts EXPORTS SVEditToolMenus = BEGIN EditToolData: TYPE = SVInterfaceTypes.EditToolData; entryHeight: CARDINAL = SVEditToolMenus.entryHeight; entryVSpace: CARDINAL = SVEditToolMenus.entryVSpace; entryHSpace: CARDINAL = SVEditToolMenus.entryHSpace; column0: CARDINAL = SVEditToolMenus.column0; column1: CARDINAL = SVEditToolMenus.column1; column2: CARDINAL = SVEditToolMenus.column2; column3: CARDINAL = SVEditToolMenus.column3; numberSize: CARDINAL = 80; numberSize3: CARDINAL = 160; BuildLightSourceSection: PUBLIC PROC [editToolData: EditToolData] = { nextX: INTEGER; lightNameSize: NAT; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["AddLight!", LIST[LIST[$AddLight, $Add], NIL, LIST[$AddLight, $Replace]] ]], [button["DeleteLight!", LIST[LIST[$DeleteLight]] ]], [button["EditLight!", LIST[LIST[$EditLight]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; lightNameSize _ VFonts.StringWidth["MysteriousLight "]; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["light name:", LIST[LIST[$LightNamePrompt]] ]], [text["WhiteLight", LightNameInData, lightNameSize]], [button["position:", LIST[LIST[$LightPositionPrompt]] ]], [text["600, 600, 600", LightPositionInData, numberSize3]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["color:", LIST[LIST[$LightColorPrompt]] ]], [text["0.75, 0.75, 0.75", LightColorInData, numberSize3]], [button["SetAmbient!", LIST[LIST[$SetAmbient]] ]], [button["GetAmbient!", LIST[LIST[$GetAmbient]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; BuildShadowSection: PUBLIC PROC [editToolData: EditToolData] = { nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Shadows:", LIST[LIST[$ShadowsPrompt]] ]], [label["FALSE", ShadowLabelInData]], [button["Set!", LIST[LIST[$SetShadows]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; boldFont: VFonts.Font _ VFonts.EstablishFont[family: "Helvetica", size: 10, bold: TRUE, italic: FALSE, defaultOnFailure: TRUE]; BuildTransformSection1: PUBLIC PROC [editToolData: EditToolData] = { nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["ScalePrimitive!", LIST[LIST[$ScalePrimitive,$Do],NIL,LIST[$ScalePrimitive,$Undo]], -1, FALSE, boldFont]], [button["X, Y, Z:", LIST[LIST[$ScaleXYZPrompt]], column2 ]], [text["2, 2, 2", ScaleXYZInData, numberSize3]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["EvenScale!", LIST[LIST[$EvenScale,$Do],NIL,LIST[$EvenScale,$Undo]], -1, FALSE, boldFont ]], [button["scalar:", LIST[LIST[$EvenScaleXYZPrompt]], column2 ]], [text["2", ScalarInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; BuildTransformSection2: PUBLIC PROC [editToolData: EditToolData] = { nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Translate!", LIST[LIST[$Trans,$Do],NIL,LIST[$Trans,$Undo]], -1, FALSE, boldFont ]], [button["X, Y, Z:", LIST[LIST[$TranslateXYZPrompt]], column2 ]], [text["0, 200, 0", TransXYZInData, numberSize3]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["RotX!", LIST[LIST[$RotX,$Do],NIL,LIST[$RotX,$Undo]], -1, FALSE, boldFont ]], [button["RotY!", LIST[LIST[$RotY,$Do],NIL,LIST[$RotY,$Undo]], -1, FALSE, boldFont ]], [button["RotZ!", LIST[LIST[$RotZ,$Do],NIL,LIST[$RotZ,$Undo]], -1, FALSE, boldFont ]], [button["degrees:", LIST[LIST[$DegreesPrompt]], column2 ]], [text["10", DegreesInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["NormalizeRot!", LIST[LIST[$NormalizeRot]] ]], [button["Normalize!", LIST[LIST[$Normalize]] ]], [button["Align!", LIST[LIST[$Align]] ]], [button["Abut!", LIST[LIST[$Abut]] ]], [button["AbutX!", LIST[LIST[$AbutX]] ]], [button["AbutY!", LIST[LIST[$AbutY]] ]], [button["AbutZ!", LIST[LIST[$AbutZ]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildTransfromSection LightNameInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.lightSection.name _ button; }; LightPositionInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.lightSection.position _ button; }; LightColorInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.lightSection.color _ button; }; ShadowLabelInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.shadowSection.shadowLabel _ button; editToolData.shadowSection.shadowValue _ FALSE; }; ScaleXYZInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.transformSection.scaleXYZ _ button; }; ScalarInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.transformSection.scalar _ button; }; TransXYZInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.transformSection.transXYZ _ button; }; DegreesInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.transformSection.degrees _ button; }; END. ΊFile: SVEditToolMenusImplE.mesa Last edited by Bier on May 4, 1987 5:39:03 pm PDT Copyright c 1984 by Xerox Corporation. All rights reserved. Contents: Procedures which build sections of the EditTool (continued). Declare the standard distances between menu lines. This section implements a set of buttons, text windows, and options listers in this format: AddLight! DeleteLight! EditLight! lightName: position: color: This section implements a set of buttons in this format: Shadows: FALSE Set! Shadows: FALSE Set! This section implements a set of buttons, text windows, and options listers in this format: SCALE PRIMITIVE X,Y,Z: EVENSCALEs scalar: SCALEX,Y,Z: EVENSCALE X,Y,Z: TRANSLATE X,Y,Z,: ROTX ROTY ROTZ DEGREES: NormalizeRot! Normalize! Align! Abut! AbutX! AbutY! AbutZ! TRANSLATE X,Y,Z,: ROTX ROTY ROTZ DEGREES: Κ―˜Iheadšœ™Jšœ1™1Jšœ Οmœ1™™>J˜Icodešœžœ˜Lšœžœ˜J˜šœwžœ˜|Jš œžœžœžœžœ˜TJšœžœžœ˜4Jšœžœžœ˜/Jšœ˜J˜—JšœF˜FJ˜Jšœ:˜:J˜šœwžœ˜|Jšœžœžœ˜7Lšœ5˜5Jšœžœžœ˜9Lšœ9˜9Jšœ˜J˜—JšœF˜FJ˜šœwžœ˜|Jšœžœžœ˜3Lšœ:˜:Jšœžœžœ˜2Jšœžœžœ˜1Jšœ˜—J˜JšœF˜FJ˜Jšœ˜J˜—šŸœžœžœ!˜@Jšœ8™8Jšœ™J˜šœžœ˜J˜—JšΟb™šœwžœ˜|Jšœžœžœ˜2Jšœ$˜$Jšœžœžœ˜*Jšœ˜—J˜JšœF˜FJ˜J˜—IprocšœRžœ žœžœ˜€M˜šŸœžœžœ!˜DMšœ[™[Mšœ ™ Mšœ™M˜Lšœžœ˜M˜Mšœ™M˜šœwžœ˜|Jš œžœžœžœžœžœ ˜rJšœžœžœ˜