<> <> <> <> 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] = { <> <> < position: color: >> 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.