<> <> <> <> <> DIRECTORY Imager, Rope; PopUpSelection2: CEDAR DEFINITIONS = <<>> <> BEGIN ROPE: TYPE = Rope.ROPE; <> Create: PROC [choices: ChoiceS, doc: ROPE, header: Image _ NIL, left, top: Label _ nullLabel, columns: NAT _ 1, timeOut: NAT _ 0] RETURNS [Menu]; ChoiceS: TYPE = REF ChoiceSequence; ChoiceSequence: TYPE = RECORD [elts: SEQUENCE length: NAT OF Choice]; Choice: TYPE = RECORD [ image: Image, doc: ROPE]; nullChoice: Choice = [NIL, NIL]; Image: TYPE = REF ImagePrivate; ImagePrivate: TYPE = RECORD [ size: Imager.VEC, Draw: Drawer, data: REF ANY _ NIL ]; Drawer: TYPE = PROC [image: Image, context: Imager.Context, bounds: Imager.Rectangle, highlight: BOOL]; <> nullLabel: Label = NIL; Label: TYPE = REF LabelPrivate; LabelPrivate: TYPE = RECORD [ minSpacing--parallel to edge being labelled--, minWidth--perpendicular--: NAT, Draw: PROC [context: Imager.Context, org: Imager.VEC, n, spacing, width: NAT, data: REF ANY], data: REF ANY ]; Menu: TYPE = REF MenuPrivate; MenuPrivate: TYPE; Pop: PROC [menu: Menu, default: NAT _ 0, position: REF _ NIL, InNotifier: Consumer _ NIL, notifyData: REF ANY _ NIL] RETURNS [INT]; <> <> << 0 if selected outside menu or on header-line>> << -1 if timed out>> <> <> <> Consumer: TYPE = PROC [INT, REF ANY]; <> END.