choice:
INT ¬ Controls.PopUpRequest[["Animation Ops"],
LIST[
-- 1 -- [IO.PutFR1["Set # Frames (now %g)", IO.int[t.nFrames]], "# frames in animation"],
-- 2 -- [IO.PutFR["Set Times (now %g to %g)", IO.real[t.time0], IO.real[t.time1]], "times"],
-- 3 -- [IO.PutFR1["Set frame (now %g)", IO.int[t.frame]], "set current frame"],
-- 4 -- [IO.PutFR1["Set time (now: %g)", IO.real[t.time]], "set current time"],
-- 5 -- ["ANIMATE", "Show a sequence of frames"],
-- 6 -- ["RENDER Frames", "Render a sequence of frames"],
-- 7 -- [Rope.Cat["Ouptut IP (now ", t.animateIPName, ")"], "Write IP out per frame"],
-- 8 -- ["Store Animation", "Store previously created animation"],
-- 9 -- ["Restore Animation", "Restore previously stored animation"],
-- 10 -- [IO.PutFR1["Playback pause (now: %g)", [real[t.playbackPause]]], "frame wait"],
-- 11 -- ["Playback", "Replay animated frames"],
-- 12 -- ["Cycle", "continuous replay"],
-- 13 -- ["Shuttle", "replay back and forth"],
-- 14 -- ["Shuttle Ease In/Out", "replay back and forth"],
-- 15 -- ["--", ""],
-- 16 -- ["Insert Key", "insert key at this time"]
]];
SELECT choice
FROM
1 => t.nFrames ¬ Controls.GetNat[t.typescript, "# frames", t.nFrames];
2 => SetTimes[t];
3 => SetCurrentFrame[t, Controls.GetNat[t.typescript, "current frame", t.frame]];
4 => SetCurrentTime[t, Controls.GetReal[t.typescript, "current time", t.time]];
5 => [] ¬ G3dTool.MaybeFork[t, ForkAnimation];
6 => Blink["unimplemented"];
7 => t.animateIPName ¬ Controls.TypescriptReadFileName[t.typescript];
8 => StoreAnimation[t];
9 => RestoreAnimation[t];
10 => t.playbackPause ¬
Controls.GetReal[t.typescript, "playback pause (secs)", t.playbackPause];
11 => [] ¬ G3dTool.MaybeFork[t, ForkPlayback];
12 => [] ¬ G3dTool.MaybeFork[t, ForkCycle];
13 => [] ¬ G3dTool.MaybeFork[t, ForkShuttle];
14 => [] ¬ G3dTool.MaybeFork[t, ForkShuttleEasy];
16 => InsertKey[t];
ENDCASE;