File: SVEditToolMenusImplC.mesa
Last edited by Bier on May 23, 1985 2:17:40 pm PDT
Copyright © 1984 by Xerox Corporation. All rights reserved.
Created August 9, 1984 10:47:05 pm PDT
Contents: Procedures which build sections of the EditTool
DIRECTORY
Buttons,
Labels,
Rope,
ViewerTools,
SVEditToolMenus,
SVEditUser,
SVEditUserB,
SVInterfaceTypes,
VFonts;
SVEditToolMenusImplC: CEDAR PROGRAM
IMPORTS Buttons, Labels, SVEditUser, SVEditUserB, VFonts, ViewerTools
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;
column2Quarter: CARDINAL = 190;
column2Half: CARDINAL = 225;
column3: CARDINAL = SVEditToolMenus.column3;
nameSize: CARDINAL = 140;
numberSize: CARDINAL = 80;
numberSize3: CARDINAL = 160;
boldFont: VFonts.Font ← VFonts.EstablishFont[family: "Helvetica", size: 10, bold: TRUE,
 italic: FALSE, defaultOnFailure: TRUE];
BuildCurrentSceneSection: PUBLIC PROC [editToolData: EditToolData] = {
This section implements a set of buttons, text windows, and options listers in this format:
Scene: <SCENENAME> NEW VIEWER NEW OUTPUT
Help! ColorMap! BWMap! ReStart! DestroyAll!
scenePrompt, newViewer, newOutput: Buttons.Button;
helpButton, colorMapButton, bwMapButton, restartButton, closeAll: Buttons.Button;
editToolData.height ← editToolData.height + entryVSpace; -- space down from the top of the viewer
Scene: <SCENENAME> New Viewer  New Output
scenePrompt ← Buttons.Create[
info: [name: "Scene:", wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ScenePrompt,
clientData: editToolData
];
editToolData.sceneSection.sceneName ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: scenePrompt.wx + scenePrompt.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "DefaultScene",
scrollable: FALSE, border: FALSE]];
newViewer ← Buttons.Create[
info: [name: "New Viewer",
wx: editToolData.sceneSection.sceneName.wx + editToolData.sceneSection.sceneName.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUser.NewViewer,
clientData: editToolData
];
newOutput ← Buttons.Create[
info: [name: "New Typescript",
wx: newViewer.wx + newViewer.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUser.NewOutput,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
ColorMap! BWMap! Restart! DestroyAll!
helpButton ← Buttons.Create[
info: [name: "Help!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Help,
clientData: editToolData
];
colorMapButton ← Buttons.Create[
info: [name: "ColorMap!",
wx: helpButton.wx + helpButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.SetColorMap,
clientData: editToolData
];
bwMapButton ← Buttons.Create[
info: [name: "BWMap!",
wx: colorMapButton.wx + colorMapButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.BWMap,
clientData: editToolData
];
restartButton ← Buttons.Create[
info: [name: "Restart!",
wx: bwMapButton.wx + bwMapButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Restart,
clientData: editToolData
];
closeAll ← Buttons.Create[
info: [
name: "DestroyAll",
wx: restartButton.wx + restartButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUser.DestroyAllSolidviewsWindows,
clientData: editToolData,
guarded: TRUE,
documentation: "Will Close Down Solidviews"
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildTextInputSection: PUBLIC PROC [editToolData: EditToolData] = {
currentAssemblyPrompt: Buttons.Button;
text1Prompt: Buttons.Button;
selectedTextLabel, selectedTextPlane, selectedTextSource, selectedTextTarget, selectedTextParent: Buttons.Button;
SkitterAssembly: <name>
Text1: <name>
Selected Text  Plane! Source! Target! Parent!
New: <name>  Parent: <name>
TopSource: <obname> TopTarget: <obname>
SkitterAssembly: <name> Source! Target! Parent!
currentAssemblyPrompt ← Buttons.Create[
info: [name: "Skitter:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.CurrentAssemblyPrompt,
clientData: editToolData
];
editToolData.sceneSection.current ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: currentAssemblyPrompt.wx + currentAssemblyPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "",
scrollable: FALSE, border: FALSE]];
skitterSource ← Buttons.Create[
info: [
name: "Source!",
wx: currentAssemblyPrompt.wx + column2Half,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.SkitterSourceButton,
clientData: editToolData
];
skitterTarget ← Buttons.Create[
info: [
name: "Target!",
wx: skitterSource.wx + skitterSource.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.SkitterTargetButton,
clientData: editToolData
];
skitterParent ← Buttons.Create[
info: [
name: "Parent!",
wx: skitterTarget.wx + skitterTarget.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.SkitterParentButton,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
Text1: <name> Source! Target! Parent!
text1Prompt ← Buttons.Create[
info: [name: "Text1:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Text1PromptButton,
clientData: editToolData
];
editToolData.sceneSection.text1 ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: text1Prompt.wx + text1Prompt.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "sceneAssembly",
scrollable: FALSE, border: FALSE]];
text1Source ← Buttons.Create[
info: [
name: "Source!",
wx: text1Prompt.wx + column2Half,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.Text1SourceButton,
clientData: editToolData
];
text1Target ← Buttons.Create[
info: [
name: "Target!",
wx: text1Source.wx + text1Source.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.Text1TargetButton,
clientData: editToolData
];
text1Parent ← Buttons.Create[
info: [
name: "Parent!",
wx: text1Target.wx + text1Target.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE
],
proc: SVEditUser.Text1ParentButton,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
Selected Text  Plane! Source! Target! Parent!
selectedTextLabel ← Labels.Create[
info: [name: "Selected Text:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]];
selectedTextPlane ← Buttons.Create[
info: [
name: "Plane!",
wx: selectedTextLabel.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE
],
proc: SVEditUser.SelectedTextPlaneButton,
clientData: editToolData
];
selectedTextSource ← Buttons.Create[
info: [
name: "Source!",
wx: selectedTextLabel.wx + column2Half,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE
],
proc: SVEditUser.SelectedTextSourceButton,
clientData: editToolData
];
selectedTextTarget ← Buttons.Create[
info: [
name: "Target!",
wx: selectedTextSource.wx + selectedTextSource.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE
],
proc: SVEditUser.SelectedTextTargetButton,
clientData: editToolData
];
selectedTextParent ← Buttons.Create[
info: [
name: "Parent!",
wx: selectedTextTarget.wx + selectedTextTarget.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE
],
proc: SVEditUser.SelectedTextParentButton,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildDerivedTextSection: PUBLIC PROC [editToolData: EditToolData] = {
newPrompt, parentPrompt: Buttons.Button;
sourceLabel, targetLabel, planeLabel: Buttons.Button;
New: <Text>  Parent: <Text>
Source: <obname> Target: <coordsystem>
Plane: <obname>
newPrompt ← Buttons.Create[
info: [name: "New:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.NewPrompt,
clientData: editToolData
];
editToolData.sceneSection.new ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: newPrompt.wx + newPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "Charlie",
scrollable: FALSE, border: FALSE]];
parentPrompt ← Buttons.Create[
info: [name: "Parent:",
wx: newPrompt.wx + column2Quarter,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ParentPrompt,
clientData: editToolData
];
editToolData.sceneSection.parent ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: parentPrompt.wx + parentPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "sceneAssembly",
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
sourceLabel ← Labels.Create[
info: [name: "Source:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]];
editToolData.sceneSection.source ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: sourceLabel.wx + sourceLabel.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "",
scrollable: FALSE, border: TRUE]];
ViewerTools.InhibitUserEdits[editToolData.sceneSection.source];
targetLabel ← Labels.Create[
info: [name: "Target:",
wx: sourceLabel.wx + column2Quarter,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]];
editToolData.sceneSection.target ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: targetLabel.wx + targetLabel.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "",
scrollable: FALSE, border: TRUE]];
ViewerTools.InhibitUserEdits[editToolData.sceneSection.target];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
planeLabel ← Labels.Create[
info: [name: "Plane:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]];
editToolData.sceneSection.plane ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: planeLabel.wx + planeLabel.ww + entryHSpace,
wy: editToolData.height,
ww: nameSize,
wh: entryHeight,
data: "",
scrollable: FALSE, border: TRUE]];
ViewerTools.InhibitUserEdits[editToolData.sceneSection.plane];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildAssemblyOpsSection: PUBLIC PROC [editToolData: EditToolData] = {
firstButton, drawCSButton, deleteButton, editButton: Buttons.Button;
setOpButton, selectOpButton: Buttons.Button;
FIRST! DrawCS! DELETE! EDIT!
SET PointSetOp<op>
firstButton ← Buttons.Create[
info: [name: "First!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.First,
clientData: editToolData
];
drawCSButton ← Buttons.Create[
info: [name: "DrawCS!",
wx: firstButton.wx + firstButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.DrawCS,
clientData: editToolData
];
deleteButton ← Buttons.Create[
info: [name: "Delete!",
wx: firstButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.DeleteButton,
clientData: editToolData
];
editButton ← Buttons.Create[
info: [name: "Edit!",
wx: firstButton.wx + column3,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Edit,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
SET PointSetOp Op: <op>
setOpButton← Buttons.Create[
info: [name: "Set Pointset Op!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.SetOp,
clientData: editToolData
];
selectOpButton ← Buttons.Create[
info: [name: "Op:",
wx: setOpButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.SelectOp,
clientData: editToolData
];
editToolData.sceneSection.opLabel ← Labels.Create[
info: [name: "union",
wx: selectOpButton.wx + selectOpButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
ww: VFonts.StringWidth["intersection>>>"],
parent: editToolData.outer, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildAssemblyOpsSection
BuildTransformSection: PUBLIC PROC [editToolData: EditToolData] = {
This section implements a set of buttons, text windows, and options listers in this format:
SCALE PRIMITIVE X,Y,Z: <x,y,z>
EVENSCALEs scalar: <real>
TRANSLATE X,Y,Z,:<x,y,z>
ROTX ROTY ROTZ DEGREES: <degrees>
NormalizeRot! Normalize! Align! Abut! AbutX! AbutY! AbutZ!
scaleButton, scaleXYZPrompt: Buttons.Button;
evenScaleButton, evenScaleXYZPrompt: Buttons.Button;
translateButton, transXYZPrompt: Buttons.Button;
rotxButton, rotyButton, rotzButton, degreesPrompt: Buttons.Button;
normRot, norm, align, abut, abutX, abutY, abutZ: Buttons.Button;
SCALEX,Y,Z: <x,y,z>
scaleButton ← Buttons.Create[
info: [name: "ScalePrimitive!", wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ScalePrimitive,
clientData: editToolData,
font: boldFont
];
scaleXYZPrompt ← Buttons.Create[
info: [name: "X, Y, Z:",
wx: scaleButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ScaleXYZPrompt,
clientData: editToolData
];
editToolData.transformSection.scaleXYZ ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: scaleXYZPrompt.wx + scaleXYZPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: numberSize3,
wh: entryHeight,
data: "2, 2, 2",
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
EVENSCALE X,Y,Z: <x,y,z>
evenScaleButton ← Buttons.Create[
info: [
name: "EvenScale!",
wy: editToolData.height,
wh: entryHeight,
parent: editToolData.outer,
border: FALSE
],
proc: SVEditUser.EvenScale,
clientData: editToolData,
font: boldFont
];
evenScaleXYZPrompt ← Buttons.Create[
info: [name: "scalar:",
wx: scaleButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.EvenScaleXYZPrompt,
clientData: editToolData
];
editToolData.transformSection.scalar ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: evenScaleXYZPrompt.wx + evenScaleXYZPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: numberSize,
wh: entryHeight,
data: "2",
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
TRANSLATE X,Y,Z,:<x,y,z>
translateButton ← Buttons.Create[
info: [name: "Translate!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Trans,
clientData: editToolData,
font: boldFont
];
transXYZPrompt ← Buttons.Create[
info: [name: "X, Y, Z:",
wx: translateButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.TranslateXYZPrompt,
clientData: editToolData
];
editToolData.transformSection.transXYZ ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: transXYZPrompt.wx + transXYZPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: numberSize3,
wh: entryHeight,
data: "0, 200, 0",
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
ROTX ROTY ROTZ DEGREES: <degrees>
rotxButton ← Buttons.Create[
info: [name: "RotX!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.RotX,
clientData: editToolData,
font: boldFont
];
rotyButton ← Buttons.Create[
info: [name: "RotY!",
wx: rotxButton.wx + rotxButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.RotY,
clientData: editToolData,
font: boldFont
];
rotzButton ← Buttons.Create[
info: [name: "RotZ!",
wx: rotyButton.wx + rotyButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.RotZ,
clientData: editToolData,
font: boldFont
];
degreesPrompt ← Buttons.Create[
info: [name: "degrees:",
wx: rotxButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.DegreesPrompt,
clientData: editToolData
];
editToolData.transformSection.degrees ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: degreesPrompt.wx + degreesPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: numberSize,
wh: entryHeight,
data: "90",
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
normRot ← Buttons.Create[
info: [name: "NormalizeRot!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.NormalizeRot,
clientData: editToolData
];
norm ← Buttons.Create[
info: [name: "Normalize!",
wx: normRot.wx + normRot.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.Normalize,
clientData: editToolData
];
align ← Buttons.Create[
info: [name: "Align!",
wx: norm.wx + norm.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.Align,
clientData: editToolData
];
abut ← Buttons.Create[
info: [name: "Abut!",
wx: align.wx + align.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.Abut,
clientData: editToolData
];
abutX ← Buttons.Create[
info: [name: "AbutX!",
wx: abut.wx + abut.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.AbutX,
clientData: editToolData
];
abutY ← Buttons.Create[
info: [name: "AbutY!",
wx: abutX.wx + abutX.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.AbutY,
clientData: editToolData
];
abutZ ← Buttons.Create[
info: [name: "AbutZ!",
wx: abutY.wx + abutY.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.AbutZ,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildTransfromSection
END.