(FILECREATED "30-Nov-84 10:12:41" {AZTEC}<TRILLIUM>BIRTHDAY84>ITEMTYPES>TRAINING-ITEMTYPES.;1 6507
changes to: (VARS TRAINING-ITEMTYPESCOMS)
previous date: "25-Aug-84 18:34:45" {AZTEC}<TRILLIUM>BIRTHDAY84>TRAINING-ITEMTYPES.;1)
(PRETTYCOMPRINT TRAINING-ITEMTYPESCOMS)
(RPAQQ TRAINING-ITEMTYPESCOMS [(ITEMTYPES SET.OF.DIRECT.GRAPHIC.BUTTONS TIMEOUT.REPEAT)
(P (COMPILE.INTERNAL.FNS.IF.NECESSARY))
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDVARS (NLAMA)
(NLAML START.TIMEOUT.REPEAT)
(LAMA])
(READ.ITEMTYPE SET.OF.DIRECT.GRAPHIC.BUTTONS 5)
(\TYPE ITEM.TYPE NAME SET.OF.DIRECT.GRAPHIC.BUTTONS COMMENT
"A set of graphic buttons, each with its own ON & OFF picture, which all affect the same cell" KIND
COMPOSITE PARAMETERS ((\TYPE PARAMETER NAME PLACEMENT TYPE (POSITION) DEFAULT (100 . 100) COMMENT
"Offset for the whole bunch") (\TYPE PARAMETER NAME BUTTONS TYPE (LIST (STRUCTURE ((ON.PICTURE (
BITMAP.NAME)) (OFF.PICTURE (BITMAP.NAME)) (TEXT (LIST (STRING))) (VALUE (CONSTANT))))) DEFAULT
((UP.BUTTON DOWN.BUTTON ("Label 1") VALUE.1) (UP.BUTTON DOWN.BUTTON ("Label 2") VALUE.2)) COMMENT
"The ON & OFF pictures, text and values for each of the buttons") (\TYPE PARAMETER NAME
BUTTON.SPACING TYPE (OFFSET.VECTOR) DEFAULT (0 . 51) COMMENT
"Space between buttons in screen coordinates") (\TYPE PARAMETER NAME TEXT.DISPLACEMENT TYPE (
OFFSET.VECTOR) DEFAULT (-34 . 17) COMMENT "Offset for the text from the buttons") (\TYPE PARAMETER
NAME HORIZONTAL.ALIGNMENT TYPE (ONEOF (LEFT CENTER RIGHT)) DEFAULT LEFT COMMENT
"Horizontal alignment of the text") (\TYPE PARAMETER NAME VERTICAL.ALIGNMENT TYPE (ONEOF (TOP
CENTER BOTTOM)) DEFAULT TOP COMMENT "Vertical alignment of the text") (\TYPE PARAMETER NAME
TEXT.BITBLT.OPERATION TYPE (ONEOF (REPLACE PAINT INVERT ERASE)) DEFAULT INVERT COMMENT
"The BITBLT operation to use to combine the text with the bitmaps") (\TYPE PARAMETER NAME FONT TYPE
(FONT) DEFAULT NIL COMMENT "The font in which to print the labels") (\TYPE PARAMETER NAME CELL TYPE
(CELL) DEFAULT CELL.1 COMMENT "The affected cell") (\TYPE PARAMETER NAME INITIAL.VALUE TYPE (
CONSTANT) DEFAULT VALUE.1 COMMENT "An initial value for the cell")) SUBITEM.SPECS ((FOREACH (BUTTON
IN BUTTONS) (I FROM 0) DO (ITEM GRAPHIC.ON/OFF.BUTTON (PLACEMENT (PTRANSLATE PLACEMENT (
NEW.POSITION (ITIMES I (CAR BUTTON.SPACING)) (ITIMES I (CDR BUTTON.SPACING))))) (ON.PICTURE (CAR
BUTTON)) (OFF.PICTURE (CADR BUTTON)) (TEXT (CADDR BUTTON)) (TEXT.OFFSET TEXT.DISPLACEMENT) (
HORIZONTAL.ALIGNMENT HORIZONTAL.ALIGNMENT) (VERTICAL.ALIGNMENT VERTICAL.ALIGNMENT) (BITBLT.OPERATION
TEXT.BITBLT.OPERATION) (FONT FONT) (CELL CELL) (VALUE (CADDDR BUTTON)))) (ITEM INITIALIZATION (
PLACEMENT PLACEMENT) (ACTION.FORM (LIST (QUOTE SET.CELL) CELL (KWOTE INITIAL.VALUE))))) OTHER (
FNS ((1 CONVERT.SET.OF.DIRECT.GRAPHIC.BUTTONS.OFFSETS))) CLASSES (COMPOSITE) VERSION 1)
(DEFINEQ
(CONVERT.SET.OF.DIRECT.GRAPHIC.BUTTONS.OFFSETS
[LAMBDA (ITEM) (* edited: "25-Aug-84 18:28")
(CONVERT.NONGRIDDED.OFFSETS ITEM (QUOTE HORIZONTAL.SPACING)
(QUOTE VERTICAL.SPACING)
(QUOTE BUTTON.SPACING))
(CONVERT.NONGRIDDED.OFFSETS ITEM (QUOTE TEXT.DISPLACEMENT)
(QUOTE TEXT.DISPLACEMENT.↑)
(QUOTE TEXT.DISPLACEMENT])
)
(READ.ITEMTYPE TIMEOUT.REPEAT 5)
(\TYPE ITEM.TYPE NAME TIMEOUT.REPEAT COMMENT
"A timeout that repeats an action for a specified duration" KIND COMPOSITE PARAMETERS ((\TYPE
PARAMETER NAME PLACEMENT TYPE (POSITION) DEFAULT (100 . 100) COMMENT
"A location for identification purposes") (\TYPE PARAMETER NAME TIMEOUT.CELL TYPE (CELL) DEFAULT
CELL.1 COMMENT "The cell for saving the clock time when the repeat timeout starts") (\TYPE PARAMETER
NAME DURATION.CELL TYPE (CELL) DEFAULT CELL.2 COMMENT
"The cell for saving the clock time when the duration timeout starts") (\TYPE PARAMETER NAME DELAY
TYPE (INTEGER) DEFAULT 10000 COMMENT "The time (in milliseconds) between repeating actions") (\TYPE
PARAMETER NAME DURATION TYPE (INTEGER) DEFAULT 10000 COMMENT
"The duration (in milliseconds) that the action is repeated") (\TYPE PARAMETER NAME INITIAL.STATE
TYPE (ONEOF (ON OFF)) DEFAULT OFF COMMENT
"The status of the TIMEOUT.REPEAT when the frame is initialized") (\TYPE PARAMETER NAME ACTION.FORM
TYPE (FORM) DEFAULT (ACTION.PRINT "This action is brought to you by a TIMEOUT.REPEAT") COMMENT
"The action to be repeated")) SUBITEM.SPECS ((ITEM TIMEOUT.SENSOR (PLACEMENT PLACEMENT) (BASE
TIMEOUT.CELL) (DELAY DELAY) (ACTION.FORM ACTION.FORM)) (ITEM TIMEOUT.SENSOR (PLACEMENT (TRANSLATE
PLACEMENT 1 0)) (BASE DURATION.CELL) (DELAY DURATION) (ACTION.FORM (LIST (QUOTE
ACTON.TIMEOUT.REPEAT.DURATION) (KWOTE TIMEOUT.CELL) (KWOTE DURATION.CELL)))) (ITEM INITIALIZATION
(PLACEMENT (TRANSLATE PLACEMENT 2 0)) (ACTION.FORM (LIST (QUOTE
ACTON.TIMEOUT.REPEAT.INITIALIZATION) (KWOTE TIMEOUT.CELL) (KWOTE DURATION.CELL) (EQ INITIAL.STATE
(QUOTE ON)))))) OTHER (FNS ((ACTON ACTON.TIMEOUT.REPEAT.DURATION) (ACTON
ACTON.TIMEOUT.REPEAT.INITIALIZATION) (NIL START.TIMEOUT.REPEAT))) CLASSES (COMPOSITE))
(DEFINEQ
(ACTON.TIMEOUT.REPEAT.DURATION
[LAMBDA (TIMEOUT.CELL DURATION.CELL) (* KKM "30-APR-84 15:10")
(CHANGE.CURRENT.VALUE TIMEOUT.CELL (QUOTE OFF))
(CHANGE.CURRENT.VALUE DURATION.CELL (QUOTE OFF])
(ACTON.TIMEOUT.REPEAT.INITIALIZATION
[LAMBDA (TIMEOUT.CELL DURATION.CELL ON?) (* KKM "30-APR-84 15:18")
(PROG (TIME)
(COND
(ON? (SET.CURRENT.VALUE DURATION.CELL (SETQ TIME (CELL.VALUE CLOCK)))
(SET.CURRENT.VALUE TIMEOUT.CELL TIME))
(T (SET.CURRENT.VALUE TIMEOUT.CELL (QUOTE OFF))
(SET.CURRENT.VALUE DURATION.CELL (QUOTE OFF])
(START.TIMEOUT.REPEAT
[NLAMBDA (TIMEOUT.CELL.NAME DURATION.CELL.NAME DONT.TRACE)
(* KKM "30-APR-84 15:20")
(PROG (TIME)
(CHANGE.CURRENT.VALUE TIMEOUT.CELL.NAME (SETQ TIME (CELL.VALUE CLOCK))
(EVAL DONT.TRACE))
(CHANGE.CURRENT.VALUE DURATION.CELL.NAME TIME (EVAL DONT.TRACE])
)
(COMPILE.INTERNAL.FNS.IF.NECESSARY)
(DECLARE: DONTEVAL@LOAD DOEVAL@COMPILE DONTCOPY COMPILERVARS
(ADDTOVAR NLAMA )
(ADDTOVAR NLAML START.TIMEOUT.REPEAT)
(ADDTOVAR LAMA )
)
(DECLARE: DONTCOPY
(FILEMAP (NIL (3029 3433 (CONVERT.SET.OF.DIRECT.GRAPHIC.BUTTONS.OFFSETS 3039 . 3431)) (5290 6297 (
ACTON.TIMEOUT.REPEAT.DURATION 5300 . 5530) (ACTON.TIMEOUT.REPEAT.INITIALIZATION 5532 . 5920) (
START.TIMEOUT.REPEAT 5922 . 6295)))))
STOP