<> <> <> <> <> DIRECTORY BasicTime USING [nullGMT, GMT], Menus USING [MenuEntry], Rope USING [ROPE], Tempus USING [Packed, PackedSeconds, Seconds], Hickory USING [ Event, nullEvent, EventTuple], IO USING [ STREAM], ViewerClasses USING [Viewer] ; RememberDefsPrivate: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Packed: TYPE = Tempus.Packed; PackedSeconds: TYPE = Tempus.PackedSeconds; Seconds: TYPE = Tempus.Seconds; -- a long cardinal, time interval measured in seconds Viewer: TYPE = ViewerClasses.Viewer; ProtectedData: TYPE = MONITORED RECORD [ eventList: LIST OF Event _ NIL, logEvents: BOOLEAN _ FALSE, eventLogStream: IO.STREAM _ NIL, eventMinderDisabled: BOOL _ FALSE ]; protData: ProtectedData; Event: TYPE = REF EventRecord; EventRecord: TYPE = RECORD[ -- find out how to make this opaque text: ROPE, timeToStartNotification: PackedSeconds _ [0], trueTimeToStartNotification: PackedSeconds _ [0], newStartTime: BOOL _ TRUE, justPretending: BOOL _ FALSE, restoreTrueTimes: BOOL _ FALSE, blink: BOOL _ FALSE, destroyed: BOOL _ FALSE, repeat: ROPE, nextNotification: PackedSeconds _ [0], -- cache for use with repeat so don't have to compute each time trueNextNotification: PackedSeconds _ [0], leadTime: Seconds _ 0, -- saved separately from timeToStartNotification so can write it back out untilTime: Packed _ LOOPHOLE[ BasicTime.nullGMT], -- repeated until this time durationTime: Seconds _ 0, getSeriousAfter: Seconds _ 0, message: ROPE _ NIL, place: ROPE _ NIL, keyWord: ROPE _ NIL, -- associates a keyword with an event keepUntil: Packed _ LOOPHOLE[ BasicTime.nullGMT], -- specifies when event to be deleted from data base viewer: Viewer _ NIL, iconLabel: ROPE, iconFlavor: ROPE, -- no point in constructing flavor until you need it. dbKey: Hickory.Event _ Hickory.nullEvent -- database key for this event ]; IconLabelType: TYPE = {prev, next, this, none}; Construct: PRIVATE PROC; ComputeRepetitionInterval: PRIVATE PROCEDURE [r: Rope.ROPE, time: Tempus.PackedSeconds] RETURNS[Tempus.PackedSeconds]; LogEvent: PRIVATE PROC [event: Event, stream: IO.STREAM]; EnterEventMinder: PRIVATE PROC [itIsNow: Packed, itIsLater: Packed _ BasicTime.nullGMT]; <> <<>> DisableEventMinder: PRIVATE PROC; EnableEventMinder: PRIVATE PROC; itIsNow: PRIVATE Tempus.Packed; <> Save: PRIVATE PROC; BuildHickEvent: PRIVATE PROC [ ev: Event] RETURNS [ hEv: Hickory.EventTuple]; AddEvent: PRIVATE PROC [event: Event]; walnutUser: PRIVATE BOOL; peanutUser: PRIVATE BOOL; reminderButtons: Menus.MenuEntry; END. <> <<>> <> <<>> <> <> <<>> <<>> <> <> <<>> <<>>