<> <> <> <> DIRECTORY AtomButtons, Containers, Rope, Rules, ViewerTools, SVEditToolMenus, SVInterfaceTypes, SVUserInput; SVEditToolMenusImplA: CEDAR PROGRAM IMPORTS AtomButtons, Containers, Rules, SVUserInput 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; nameSize: CARDINAL = 130; numberSize: CARDINAL = 80; numberSize3: CARDINAL = 160; <> BuildCompositeSection: PUBLIC PROC [editToolData: EditToolData] = { <> <> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Composite!", LIST[LIST[$AddComposite]]]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; BuildHalfSpaceSection: PUBLIC PROC [editToolData: EditToolData] = { <> <> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add HalfSpace!", LIST[LIST[$AddHalfSpace,$Add],NIL,LIST[$AddHalfSpace,$Replace]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildHalfSpaceSection BuildSphereSection: PUBLIC PROC [editToolData: EditToolData] = { <> <>> nextX: INTEGER; initialRadiusRope: Rope.ROPE _ "100"; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Sphere!", LIST[LIST[$AddSphere,$Add],NIL,LIST[$AddSphere,$Replace]] ]], [button["radius:", LIST[LIST[$SphereRadiusPrompt]], column2]], [text[initialRadiusRope, SphereRadiusInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildSphereSection BuildBlockSection: PUBLIC PROC [editToolData: EditToolData] = { <> <>> nextX: INTEGER; initialXYZRope: Rope.ROPE _ "200, 200, 200"; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Block!", LIST[LIST[$AddBlock,$Add],NIL,LIST[$AddBlock,$Replace]] ]], [button["x, y, z:", LIST[LIST[$BlockXYZPrompt]], column2 ]], [text[initialXYZRope, BlockXYZInData, numberSize3]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildBlockSection BuildCylinderSection: PUBLIC PROC [editToolData: EditToolData] = { <> <HEIGHT: >> nextX: INTEGER; initialRadiusRope: Rope.ROPE _ "100"; initialHeightRope: Rope.ROPE _ "200"; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Cylinder!", LIST[LIST[$AddCyl,$Add],NIL,LIST[$AddCyl,$Replace]] ]], [button["radius:", LIST[LIST[$CylinderRadiusPrompt]], column2]], [text[initialRadiusRope, CylRadiusInData, numberSize]], [button["height:", LIST[LIST[$CylinderHeightPrompt]], column3]], [text[initialHeightRope, CylHeightInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildCylinderSection BuildConeSection: PUBLIC PROC [editToolData: EditToolData] = { <> <HEIGHT: >> nextX: INTEGER; initialRadiusRope: Rope.ROPE _ "100"; initialHeightRope: Rope.ROPE _ "200"; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Cone!", LIST[LIST[$AddCone,$Add],NIL,LIST[$AddCone,$Replace]] ]], [button["radius:", LIST[LIST[$ConeRadiusPrompt]], column2]], [text[initialRadiusRope, ConeRadiusInData, numberSize]], [button["height:", LIST[LIST[$ConeHeightPrompt]], column3]], [text[initialHeightRope, ConeHeightInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildConeSection BuildTorusSection: PUBLIC PROC [editToolData: EditToolData] = { <> < section radius: >> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Torus!", LIST[LIST[$AddTorus,$Add],NIL,LIST[$AddTorus,$Replace]] ]], [button["radius:", LIST[LIST[$BigRadiusPrompt]], column2]], [text["100", TorusBigRadiusInData, numberSize]], [button["section:", LIST[LIST[$SectionRadiusPrompt]], column3 ]], [text["50", TorusSectionInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildTorusSection BuildLinearSweepSection: PUBLIC PROC [editToolData: EditToolData] = { <> <>> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Linear!", LIST[LIST[$AddLinear,$Add],NIL,LIST[$AddLinear,$Replace]] ]], [button["depth:", LIST[LIST[$LinDepthPrompt]], column2 ]], [text["100", DepthInData, numberSize]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildLinearSweepSection BuildRevoluteSweepSection: PUBLIC PROC [editToolData: EditToolData] = { <> <> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Add Revolute!", LIST[LIST[$AddRevo,$Add],NIL,LIST[$AddRevo,$Replace]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildRevoluteSweepSection BuildCopySection: PUBLIC PROC [editToolData: EditToolData] = { <> <> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["Copy!", LIST[LIST[$Copy]] ]], [button["Rename!", LIST[LIST[$Rename]] ]], [button["NewParent!", LIST[LIST[$NewParent]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildCopySection BuildListingSection: PUBLIC PROC [editToolData: EditToolData] = { <> <> nextX: INTEGER; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["ListScenes!", LIST[LIST[$ListScenes]] ]], [button["ListAssemblies!", LIST[LIST[$ListAssemblies]] ]], [button["ListCoordSystems!", LIST[LIST[$ListCoordSystems]] ]], [button["ListLights!", LIST[LIST[$ListLights]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; nextX _ AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[ [button["ListMasterObjects!", LIST[LIST[$ListMasterObjects]] ]], [button["ListViews!", LIST[LIST[$ListViews]] ]], [button["ListCameras!", LIST[LIST[$ListCameras]] ]] ]]; editToolData.height _ editToolData.height + entryVSpace + entryHeight; }; -- end of BuildListingSection AddARule: PUBLIC PROC [editToolData: EditToolData] = { rule: Rules.Rule; rule _ Rules.Create[[ parent: editToolData.outer, wy: editToolData.height, ww: editToolData.outer.cw, wh: 2 ]]; Containers.ChildXBound[editToolData.outer, rule]; editToolData.height _ editToolData.height + rule.wh + entryVSpace; }; -- end of AddARule SphereRadiusInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.sphereSection.radius _ button; }; BlockXYZInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.blockSection.xyz _ button; }; CylRadiusInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.cylinderSection.radius _ button; }; CylHeightInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.cylinderSection.height _ button; }; ConeRadiusInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.coneSection.radius _ button; }; ConeHeightInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.coneSection.height _ button; }; TorusBigRadiusInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.torusSection.bigRadius _ button; }; TorusSectionInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.torusSection.sectionRadius _ button; }; DepthInData: AtomButtons.UpdateProc = { editToolData: EditToolData _ NARROW[clientData]; editToolData.linSection.depth _ button; }; END.