-- File: SVEditToolMenusImplB.mesa
-- Last edited by Bier on December 19, 1982 12:07 am
-- Author: Eric Bier on July 7, 1983 11:25 am
-- Contents: Procedures which build sections of the EditTool (continued).
DIRECTORY
Buttons,
Labels,
Rope,
Rules,
ViewerTools,
VFonts,
SVEditToolMenus,
SVEditUser,
SVEditUserB;
SVEditToolMenusImplB: PROGRAM
IMPORTS Buttons, Labels, SVEditUser, SVEditUserB, VFonts, ViewerTools
EXPORTS SVEditToolMenus =
BEGIN
EditToolData: TYPE = SVEditUser.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;
BuildRenameSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- Rename! newName: <Rope>
renameButton, newNamePrompt: Buttons.Button;
initialNameRope: Rope.ROPE ← "NewName";
renameButton ← Buttons.Create[
info: [name: "Rename!", wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Rename,
clientData: editToolData
];
newNamePrompt ← Buttons.Create[
info: [name: "new name:",
wx: renameButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.NewNamePrompt,
clientData: editToolData
];
editToolData.renameSection.newName ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: newNamePrompt.wx + newNamePrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["<<<<<DogWithYellowCat"],
wh: entryHeight,
data: initialNameRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildRenameSection
BuildMoveSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- Move Assembly!
[] ← Buttons.Create[
info: [name: "Move Assembly!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.Move,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildMoveSection
BuildArtworkSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- SetArtwork! GetArtwork! picName: <rope> isColorFile: <BOOL>
-- material: <plastic> resolution: <real>
-- tubeHeight: <real> tubeRadius: <real>
-- SET COLOR R,G,B: <red, green, blue>
getArtworkButton, picNamePrompt, isColorButton: Buttons.Button;
materialButton, resolutionButton: Buttons.Button;
setColorButton, rgbPrompt: Buttons.Button;
initialPicNameRope: Rope.ROPE ← "TinaEyes.ais";
initialIsColorRope: Rope.ROPE ← "FALSE";
initialResolutionRope: Rope.ROPE ← "72.0";
initialRGBRope: Rope.ROPE ← "0.75, 0.75, 0.75";
getArtworkButton ← Buttons.Create[
info: [name: "GetArtwork!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.GetArtwork,
clientData: editToolData
];
picNamePrompt ← Buttons.Create[
info: [name: "picName:",
wx: getArtworkButton.wx + getArtworkButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ArtworkNamePrompt,
clientData: editToolData
];
editToolData.artworkSection.picName ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: picNamePrompt.wx + picNamePrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["TinasEyes.ais "],
wh: entryHeight,
data: initialPicNameRope,
scrollable: FALSE, border: FALSE]];
isColorButton ← Buttons.Create[
info: [name: "isColorFile:",
wx: editToolData.artworkSection.picName.wx +
editToolData.artworkSection.picName.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.IsColor,
clientData: editToolData
];
editToolData.artworkSection.isColor ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: isColorButton.wx + isColorButton.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["FALSE "],
wh: entryHeight,
data: initialIsColorRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
-- material: <plastic> resolution: <real>
materialButton ← Buttons.Create[
info: [name: "material:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.MaterialCycle,
clientData: editToolData
];
editToolData.artworkSection.material ← Labels.Create[
info: [name: "plastic",
wx: materialButton.wx + materialButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]];
editToolData.artworkSection.materialValue ← 1;
resolutionButton ← Buttons.Create[
info: [name: "resolution:",
wx: editToolData.artworkSection.material.wx +
editToolData.artworkSection.material.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ResolutionPrompt,
clientData: editToolData
];
editToolData.artworkSection.resolution ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: resolutionButton.wx + resolutionButton.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88 "],
wh: entryHeight,
data: initialResolutionRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
-- SET COLOR R,G,B: <red, green, blue>
setColorButton ← Buttons.Create[
info: [name: "SetColorArtwork!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.SetColor,
clientData: editToolData
];
rgbPrompt ← Buttons.Create[
info: [name: "r, g, b:",
wx: setColorButton.wx + column2,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.RGBPrompt,
clientData: editToolData
];
editToolData.artworkSection.rgb ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: rgbPrompt.wx + rgbPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["9.10000e-1, 9.10000e-1, 9.10000e-1 "],
wh: entryHeight,
data: initialRGBRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildTubeArtworkSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- SetTubeArtwork! tube height: <real> tube radius: <real>
setTubeArtworkButton, tubeHeightPrompt, tubeRadiusPrompt: Buttons.Button;
initialHeightRope: Rope.ROPE ← "100";
initialRadiusRope: Rope.ROPE ← "50";
setTubeArtworkButton ← Buttons.Create[
info: [name: "SetTubeArtwork!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.SetTubeArtwork,
clientData: editToolData
];
tubeHeightPrompt ← Buttons.Create[
info: [name: "tubeH:",
wx: setTubeArtworkButton.wx + setTubeArtworkButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.TubeHeightPrompt,
clientData: editToolData
];
editToolData.artworkSection.tubeHeight ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: tubeHeightPrompt.wx + tubeHeightPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88 "],
wh: entryHeight,
data: initialHeightRope,
scrollable: FALSE, border: FALSE]];
tubeRadiusPrompt ← Buttons.Create[
info: [name: "tubeR:",
wx: editToolData.artworkSection.tubeHeight.wx +
editToolData.artworkSection.tubeHeight.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.TubeRadiusPrompt,
clientData: editToolData
];
editToolData.artworkSection.tubeRadius ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: tubeRadiusPrompt.wx + tubeRadiusPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88 "],
wh: entryHeight,
data: initialRadiusRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildBoxArtworkSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- SetTubeArtwork! tube height: <real> tube radius: <real>
setBoxArtworkButton, xyzPrompt, oMapCycle: Buttons.Button;
initialXYZRope: Rope.ROPE ← "100, 100, 100";
initialOMapRope: Rope.ROPE ← "Orthogonal";
setBoxArtworkButton ← Buttons.Create[
info: [name: "SetBoxArtwork!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.SetBoxArtwork,
clientData: editToolData
];
xyzPrompt ← Buttons.Create[
info: [name: "X,Y,Z:",
wx: setBoxArtworkButton.wx + setBoxArtworkButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.BoxXYZPrompt,
clientData: editToolData
];
editToolData.artworkSection.boxXYZ ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: xyzPrompt.wx + xyzPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88, 188.88 188.88 "],
wh: entryHeight,
data: initialXYZRope,
scrollable: FALSE, border: FALSE]];
oMapCycle ← Buttons.Create[
info: [name: "OMap:",
wx: editToolData.artworkSection.boxXYZ.wx +
editToolData.artworkSection.boxXYZ.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.BoxOCycle,
clientData: editToolData
];
editToolData.artworkSection.oMapLabel ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: oMapCycle.wx + oMapCycle.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["Orthogonal "],
wh: entryHeight,
data: initialOMapRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildBoxArtworkSecition
BuildArtworkTransformSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- Rotate! degrees: <real> Normalize!
rotateButton, degreesPrompt, normButton: Buttons.Button;
initialDegreesRope: Rope.ROPE ← "45";
rotateButton ← Buttons.Create[
info: [name: "Rotate!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.RotateArtwork,
clientData: editToolData
];
degreesPrompt ← Buttons.Create[
info: [name: "degrees:",
wx: rotateButton.wx + rotateButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ArtworkDegreesPrompt,
clientData: editToolData
];
editToolData.artworkTransformSection.degrees ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: degreesPrompt.wx + degreesPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88, "],
wh: entryHeight,
data: initialDegreesRope,
scrollable: FALSE, border: FALSE]];
normButton ← Buttons.Create[
info: [name: "Normalize!",
wx: editToolData.artworkTransformSection.degrees.wx +
editToolData.artworkTransformSection.degrees.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.NormalizeArtwork,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildArtworkTransformSection
BuildLightSourceSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons, text windows, and options listers in this format:
-- AddLight! DeleteLight! EditLight!
-- lightName: <rope> position: <BOOL> color: <red, green, blue>
addLightButton, deleteLightButton, editLightButton: Buttons.Button;
lightNamePrompt, positionPrompt, colorPrompt: Buttons.Button;
initialLightNameRope: Rope.ROPE ← "WhiteLight";
initialPositionRope: Rope.ROPE ← "600, 600, 600";
initialColorRope: Rope.ROPE ← "0.75, 0.75, 0.75";
addLightButton ← Buttons.Create[
info: [name: "AddLight!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.AddLight,
clientData: editToolData
];
deleteLightButton ← Buttons.Create[
info: [name: "DeleteLight!",
wx: addLightButton.wx + addLightButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.DeleteLight,
clientData: editToolData
];
editLightButton ← Buttons.Create[
info: [name: "EditLight!",
wx: deleteLightButton.wx + deleteLightButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.EditLight,
clientData: editToolData
];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
lightNamePrompt ← Buttons.Create[
info: [name: "light name:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.LightNamePrompt,
clientData: editToolData
];
editToolData.lightSection.name ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: lightNamePrompt.wx + lightNamePrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["WhiteLight "],
wh: entryHeight,
data: initialLightNameRope,
scrollable: FALSE, border: FALSE]];
positionPrompt ← Buttons.Create[
info: [name: "position:",
wx: editToolData.lightSection.name.wx +
editToolData.lightSection.name.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.LightPositionPrompt,
clientData: editToolData
];
editToolData.lightSection.position ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: positionPrompt.wx + positionPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.88, 188.188, 188.88 "],
wh: entryHeight,
data: initialPositionRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
colorPrompt ← Buttons.Create[
info: [name: "color:",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.LightColorPrompt,
clientData: editToolData
];
editToolData.lightSection.color ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: colorPrompt.wx + colorPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["9.10000e-1, 9.10000e-1, 9.10000e-1 "],
wh: entryHeight,
data: initialColorRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildCameraSection: PUBLIC PROC [editToolData: EditToolData] = {
-- This section implements a set of buttons in this format:
-- SETCAMERA! [←] FocusPoint: <x, y, z>
-- [←] Origin: <x, y, z> [←] FocalLength: <1800>
setCameraButton, setFocusButton, focusPrompt, setResButton, resolutionPrompt: Buttons.Button;
setOriginButton, originPrompt, setFocalLengthButton, focalLengthPrompt: Buttons.Button;
shadowPrompt, setShadowButton: Buttons.Button;
initialFocusRope: Rope.ROPE ← "0, 0, 0";
initialOriginRope: Rope.ROPE ← "0, 0, 1800";
initialFocalLengthRope: Rope.ROPE ← "1800";
initialResolutionRope: Rope.ROPE ← "72";
setCameraButton ← Buttons.Create[
info: [name: "Set Camera!",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUserB.SetCamera,
clientData: editToolData
];
setFocusButton ← Buttons.Create[
info: [name: " ← ",
wx: setCameraButton.wx + column1,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUserB.SetFocus,
clientData: editToolData
];
focusPrompt ← Buttons.Create[
info: [name: "focus point:",
wx: setFocusButton.wx + setFocusButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.FocusPrompt,
clientData: editToolData
];
editToolData.cameraSection.focus ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: focusPrompt.wx + focusPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.8, 188.8, 188.8"],
wh: entryHeight,
data: initialFocusRope,
scrollable: FALSE, border: FALSE]];
setResButton← Buttons.Create[
info: [name: " ← ",
wx: editToolData.cameraSection.focus.wx +
editToolData.cameraSection.focus.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUserB.SetResolution,
clientData: editToolData
];
resolutionPrompt ← Buttons.Create[
info: [name: "resolution:",
wx: setResButton.wx + setResButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ScanResolutionPrompt,
clientData: editToolData
];
editToolData.cameraSection.resolution ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: resolutionPrompt.wx + resolutionPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.8yy"],
wh: entryHeight,
data: initialResolutionRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
setOriginButton ← Buttons.Create[
info: [name: " ← ",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUserB.SetCamera,
clientData: editToolData
];
originPrompt ← Buttons.Create[
info: [name: "origin:",
wx: setOriginButton.wx + setOriginButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.CameraOriginPrompt,
clientData: editToolData
];
editToolData.cameraSection.origin ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: originPrompt.wx + originPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["188.8, 188.8, 188.8"],
wh: entryHeight,
data: initialOriginRope,
scrollable: FALSE, border: FALSE]];
setFocalLengthButton ← Buttons.Create[
info: [name: " ← ",
wx: editToolData.cameraSection.origin.wx +
editToolData.cameraSection.origin.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUserB.SetFocalLength,
clientData: editToolData
];
focalLengthPrompt ← Buttons.Create[
info: [name: "focal length:",
wx: setFocalLengthButton.wx + setFocalLengthButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.FocalLengthPrompt,
clientData: editToolData
];
editToolData.cameraSection.focalLength ← ViewerTools.MakeNewTextViewer[[
parent: editToolData.outer,
wx: focalLengthPrompt.wx + focalLengthPrompt.ww + entryHSpace,
wy: editToolData.height,
ww: VFonts.StringWidth["1800 "],
wh: entryHeight,
data: initialFocalLengthRope,
scrollable: FALSE, border: FALSE]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
setShadowButton ← Buttons.Create[
info: [name: " ← ",
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: TRUE],
proc: SVEditUserB.SetShadows,
clientData: editToolData
];
shadowPrompt ← Buttons.Create[
info: [name: "Shadows: ",
wx: setShadowButton.wx + setShadowButton.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE],
proc: SVEditUser.ShadowsPrompt,
clientData: editToolData
];
editToolData.cameraSection.shadowLabel ← Labels.Create[
[name: "FALSE",
wx: shadowPrompt.wx + shadowPrompt.ww + entryHSpace,
wy: editToolData.height, wh: entryHeight,
parent: editToolData.outer, border: FALSE]
];
editToolData.cameraSection.shadowValue ← FALSE;
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildCameraSection
END.