File: SVEditToolMenusImplD.mesa
Last edited by Bier on May 4, 1987 5:39:27 pm PDT
Copyright © 1984 by Xerox Corporation. All rights reserved.
Contents: Procedures which build sections of the EditTool
DIRECTORY
AtomButtonsTypes, AtomButtons, Containers, Rope, Rules, VFonts, SVEditToolMenus, SVInterfaceTypes, SVUserInput;
SVEditToolMenusImplD: CEDAR PROGRAM
IMPORTS AtomButtons, SVUserInput, VFonts
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;
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>
nextX: INTEGER;
smallStringSize: NAT ← VFonts.StringWidth["TinasEyes.ais >>>>>"];
booleanSize: NAT ← VFonts.StringWidth["FALSE "];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["GetArtwork!", LIST[LIST[$GetArtwork ]]]],
[button["picName:", LIST[LIST[$ArtworkNamePrompt ]]]],
[text["TinaEyes.ais", PicNameInData, smallStringSize]],
[button["isColorFile:", LIST[LIST[$IsColor ]]]],
[text["FALSE", IsColorInData, booleanSize]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
material: <plastic> resolution: <real>
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["material:", LIST[LIST[$MaterialCycle]]]],
[label["plastic", MaterialInData]],
[button["resolution:", LIST[LIST[$ResolutionPrompt ]]]],
[text["72", ResolutionInData, VFonts.StringWidth["188.88 "]]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
Build3DArtworkSection: PUBLIC PROC [editToolData: EditToolData] = {
SET COLOR R,G,B: <red, green, blue>
nextX: INTEGER;
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Set3DArtwork!", LIST[LIST[$Set3DArtwork,$Do],NIL,LIST[$Set3DArtwork,$Undo]] ]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
};
BuildColorArtworkSection: PUBLIC PROC [editToolData: EditToolData] = {
SET COLOR R,G,B: <red, green, blue>
nextX: INTEGER;
bigColorSize: NAT ← VFonts.StringWidth["9.10000e-1, 9.10000e-1, 9.10000e-1 "];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["SetColorArtwork!", LIST[LIST[$SetColorArtwork,$Do],NIL,LIST[$SetColorArtwork,$Undo]] ]],
[button["r, g, b:", LIST[LIST[$RGBPrompt]] ]],
[text["0.75, 0.75, 0.75", RGBInData, bigColorSize]]
]];
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>
nextX: INTEGER;
initialHeightRope: Rope.ROPE ← "100";
initialRadiusRope: Rope.ROPE ← "50";
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["SetTubeArtwork!", LIST[LIST[$SetTubeArtwork]] ]],
[button["tubeH:", LIST[LIST[$TubeHeightPrompt]] ]],
[text[initialHeightRope, TubeHeightInData, numberSize]],
[button["tubeR:", LIST[LIST[$TubeRadiusPrompt]] ]],
[text[initialRadiusRope, TubeRadiusInData, numberSize]]
]];
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>
nextX: INTEGER;
initialXYZRope: Rope.ROPE ← "100, 100, 100";
xyzSize: NAT ← VFonts.StringWidth["188.88, 188.88 188.88 "];
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["SetBoxArtwork!", LIST[LIST[$SetBoxArtwork]] ]],
[button["X,Y,Z:", LIST[LIST[$BoxXYZPrompt]] ]],
[text[initialXYZRope, BoxXYZInData, xyzSize]],
[button["OMap:", LIST[LIST[$BoxOCycle]] ]],
[text["Orthogonal", OMapLabelInData, VFonts.StringWidth["Orthogonal "]]]
]];
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!
nextX: INTEGER;
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Rotate!", LIST[LIST[$RotateArtwork]] ]],
[button["degrees:", LIST[LIST[$ArtworkDegreesPrompt]] ]],
[text["45", DegreesInData, numberSize]],
[button["Normalize!", LIST[LIST[$NormalizeArtwork]] ]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildArtworkTransformSection
BuildAssemblyOpsSection: PUBLIC PROC [editToolData: EditToolData] = {
nextX: INTEGER;
FIRST! DrawCS! DELETE! EDIT!
SET PointSetOp<op>
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["First!", LIST[LIST[$First]] ]],
[button["DrawCS!", LIST[LIST[$DrawCS]] ]],
[button["Delete!", LIST[LIST[$Delete,$Do],NIL,LIST[$Delete,$Undo]], column2]],
[button["Edit!", LIST[LIST[$Edit]], column3]]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
SET PointSetOp Op: <op>
nextX ← AtomButtons.BuildButtonLine[editToolData.outer, 0, editToolData.height, editToolData, SVUserInput.EventNotify, LIST[
[button["Set Pointset Op!", LIST[LIST[$SetOp,$Do],NIL,LIST[$SetOp,$Undo]] ]],
[button["Op:", LIST[LIST[$SelectOp]], column2]],
[label["union", OpLabelInData, VFonts.StringWidth["intersection>>>"]] ]
]];
editToolData.height ← editToolData.height + entryVSpace + entryHeight;
}; -- end of BuildAssemblyOpsSection
PicNameInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.picName ← button;
};
IsColorInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.isColor ← button;
};
MaterialInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.material ← button;
editToolData.artworkSection.materialValue ← 1;
};
ResolutionInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.resolution ← button;
};
RGBInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.rgb ← button;
};
TubeHeightInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.tubeHeight ← button;
};
TubeRadiusInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.tubeRadius ← button;
};
BoxXYZInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.boxXYZ ← button;
};
OMapLabelInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkSection.oMapLabel ← button;
};
DegreesInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.artworkTransformSection.degrees ← button;
};
OpLabelInData: AtomButtons.UpdateProc = {
editToolData: EditToolData ← NARROW[clientData];
editToolData.sceneSection.opLabel ← button;
};
boldFont: VFonts.Font ← VFonts.EstablishFont[family: "Helvetica", size: 10, bold: TRUE,
 italic: FALSE, defaultOnFailure: TRUE];
END.