(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