File: SVEditToolMenusImplA.mesa
Last edited by Bier on May 4, 1987 5:41:30 pm PDT
Copyright © 1984 by Xerox Corporation. All rights reserved.
Contents: Procedures which build sections of the EditTool
DIRECTORY
AtomButtons, Containers, Rope, Rules, ViewerTools, SVEditToolMenus, SVInterfaceTypes, SVUserInput;
SVEditToolMenusImplA: CEDAR PROGRAM
IMPORTS AtomButtons, Containers, Rules, SVUserInput
EXPORTS SVEditToolMenus =
BEGIN
EditToolData: TYPE = SVInterfaceTypes.EditToolData;
declare the standard distances between menu lines.
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;
Builds the Add! Menus
BuildCompositeSection: PUBLIC PROC [editToolData: EditToolData] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDCOMPOSITE!
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
AddHalfSpace!
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDSPHERE RADIUS: <radius>
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDBLOCK x, y, z: <x, y, z>
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDCYLINDER RADIUS: <radius>HEIGHT: <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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDCONE RADIUS: <radius>HEIGHT: <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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDTorusbig radius: <real> section radius: <real>
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDLINEAR depth: <depth>
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
ADDREVOLUTE
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] = {
This section implements a set of buttons, text windows, and options listers in this format:
COPY! Rename! NewParent!
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] = {
This section implements a set of buttons in this format:
ListScenes! ListAssemblies! ListCS! ListLights! ListMOs! ListViews!
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.