$ od -c -N 50000 [Erinyes]<LispManual>Menus.im!4 0000000 \r { B e g i n S u b S e c M 0000020 e n u s } \r { T i t l e M e n 0000040 u s } \r { T e x t \r \r { i n d e 0000060 x * P R I M A R Y * M e n u 0000100 s } \r \r A m e n u i s b a 0000120 s i c a l l y a m e a n s 0000140 o f s e l e c t i n g f r o 0000160 m a l i s t o f i t e m 0000200 s . T h e s y s t e m p 0000220 r o v i d e s c o m m o n l 0000240 a y o u t a n d i n t e r a 0000260 c t i v e u s e r s e l e c 0000300 t i o n m e c h a n i s m s , 0000320 t h e n c a l l s a u s 0000340 e r - s u p p l i e d f u n c 0000360 t i o n w h e n a s e l e 0000400 c t i o n h a s b e e n c 0000420 o n f i r m e d . T h e t 0000440 w o m a j o r c o n s t i t 0000460 u e n t s o f a m e n u 0000500 a r e a l i s t o f i t 0000520 e m s a n d a " w h e n 0000540 s e l e c t e d f u n c t i o 0000560 n . " T h e l a b e l t 0000600 h a t a p p e a r s f o r 0000620 e a c h i t e m i s t h e 0000640 i t e m i t s e l f f o r 0000660 n o n - l i s t s , o r i 0000700 t s { l i s p C A R } i f 0000720 t h e i t e m i s a l 0000740 i s t . I n a d d i t i o 0000760 n , t h e r e a r e a m 0001000 u l t i t u d e o f d i f f 0001020 e r e n t f o r m a t t i n g 0001040 p a r a m e t e r s f o r 0001060 s p e c i f y i n g f o n t , 0001100 s i z e , a n d l a y o u 0001120 t . W h e n a m e n u 0001140 i s c r e a t e d , i t s 0001160 u n s p e c i f i e d f i e l 0001200 d s a r e f i l l e d w i 0001220 t h d e f a u l t s a n d 0001240 i t s s c r e e n i m a g e 0001260 i s c o m p u t e d a n d 0001300 s a v e d . \r \r M e n u s c 0001320 a n b e e i t h e r p o p 0001340 u p o r f i x e d . I 0001360 f f i x e d m e n u s a r 0001400 e u s e d , t h e m e n u 0001420 m u s t b e i n c l u d e 0001440 d i n a w i n d o w . \r \r 0001460 \r { F n D e f { N a m e M E 0001500 N U } { A r g s M E N U P 0001520 O S I T I O N R E L E A S E C 0001540 O N T R O L F L G { a n o n a 0001560 r g } } \r { T e x t \r T h i s 0001600 f u n c t i o n p r o v i d e 0001620 s m e n u s t h a t p o p 0001640 u p w h e n t h e y a r 0001660 e u s e d . I t d i s p 0001700 l a y s { a r g M E N U } 0001720 a t { a r g P O S I T I O N 0001740 } ( i n s c r e e n c o o 0001760 r d i n a t e s ) a n d w a 0002000 i t s f o r t h e u s e r 0002020 t o s e l e c t a n i t 0002040 e m w i t h a m o u s e 0002060 k e y . B e f o r e a n y 0002100 m o u s e k e y i s p r 0002120 e s s e d , t h e i t e m 0002140 t h e m o u s e i s o v e 0002160 r i s b o x e d . A f t 0002200 e r a n y k e y i s d o 0002220 w n , t h e s e l e c t e d 0002240 m e n u i t e m i s v i 0002260 d e o r e v e r s e d . W 0002300 h e n a l l k e y s a r e 0002320 r e l e a s e d , { a r g 0002340 M E N U } ' s { l i s p W H 0002360 E N S E L E C T E D F N } f i 0002400 e l d i s c a l l e d w i 0002420 t h f o u r a r g u m e n t 0002440 s : ( 1 ) t h e i t e m 0002460 s e l e c t e d , ( 2 ) t h 0002500 e m e n u , ( 3 ) t h e 0002520 l a s t m o u s e k e y r 0002540 e l e a s e d ( { l i s p L 0002560 E F T } , { l i s p M I D D 0002600 L E } , o r { l i s p R I 0002620 G H T } ) , a n d ( 4 ) t 0002640 h e r e v e r s e l i s t 0002660 o f s u p e r i t e m s r o 0002700 l l e d t h r o u g h w h e 0002720 n s e l e c t i n g t h e 0002740 i t e m a n d { f n M E N 0002760 U } r e t u r n s i t s v 0003000 a l u e . I f n o i t e 0003020 m i s s e l e c t e d , { 0003040 f n M E N U } r e t u r n s 0003060 { l i s p N I L } . I f 0003100 { a r g P O S I T I O N } 0003120 i s { l i s p N I L } , t 0003140 h e m e n u i s b r o u g 0003160 h t u p a t t h e v a l 0003200 u e f r o m { a r g M E N 0003220 U } ' s { l i s p M E N U P 0003240 O S I T I O N } f i e l d , 0003260 i f i t i s a { l i s p 0003300 P O S I T I O N } , o r a 0003320 t t h e c u r r e n t c u 0003340 r s o r p o s i t i o n . 0003360 T h e o r i e n t a t i o n 0003400 o f { a r g M E N U } w i 0003420 t h r e s p e c t t o t h 0003440 e s p e c i f i e d p o s i 0003460 t i o n i s d e t e r m i n 0003500 e d b y i t s { l i s p 0003520 M E N U O F F S E T } f i e l 0003540 d . \r \r I f { a r g R E L E 0003560 A S E C O N T R O L F L G } i 0003600 s { l i s p N I L } , t h 0003620 i s p r o c e s s w i l l 0003640 r e t a i n c o n t r o l o 0003660 f t h e m o u s e . I n 0003700 t h i s c a s e , i f t 0003720 h e u s e r l e t s t h e 0003740 m o u s e k e y u p o u 0003760 t s i d e o f t h e m e n 0004000 u , { l i s p M E N U } r 0004020 e t u r n { l i s p N I L } 0004040 . ( N o t e : t h i s i 0004060 s t h e s t a n d a r d w 0004100 a y o f a l l o w i n g t 0004120 h e u s e r t o i n d i c 0004140 a t e t h a t t h e y d o 0004160 n o t w a n t t o m a k 0004200 e t h e o f f e r e d c h 0004220 o i c e . ) I f { a r g 0004240 R E L E A S E C O N T R O L F L 0004260 G } i s n o n - { l i s p 0004300 N I L } , t h i s p r o c e 0004320 s s w i l l g i v e u p 0004340 c o n t r o l o f t h e m 0004360 o u s e w h e n i t i s 0004400 o u t s i d e o f t h e m 0004420 e n u s o t h a t o t h e 0004440 r p r o c e s s e s c a n 0004460 b e r u n . I n t h i s 0004500 c a s e , c l i c k i n g 0004520 o u t s i d e t h e m e n u 0004540 h a s n o e f f e c t o 0004560 n t h e c a l l t o { l 0004600 i s p M E N U } . I f t 0004620 h e m e n u i s c l o s e 0004640 d ( f o r e x a m p l e , 0004660 b y r i g h t b u t t o n i 0004700 n g i n i t a n d s e l 0004720 e c t i n g " { l i s p C l 0004740 o s e } " f r o m t h e w 0004760 i n d o w m e n u ) , { l i 0005000 s p M E N U } r e t u r n s 0005020 { l i s p N I L } . P r 0005040 o g r a m m e r s a r e e n 0005060 c o u r a g e d t o p r o v 0005100 i d e a m e n u i t e m 0005120 s u c h a s " c a n c e l " 0005140 o r " a b o r t " w h i c 0005160 h g i v e s u s e r s a 0005200 p o s i t i v e w a y o f 0005220 i n d i c a t i n g " n o c 0005240 h o i c e " . \r \r N o t e : 0005260 A " r e l e a s e d " m e n 0005300 u w i l l s t a y v i s i 0005320 b l e ( o n t o p o f t 0005340 h e w i n d o w s t a c k ) 0005360 u n t i l i t i s c l o 0005400 s e d o r a n i t e m i 0005420 s s e l e c t e d . \r } } \r \r 0005440 \r { F n D e f { N a m e A D 0005460 D M E N U } { A r g s M E N 0005500 U W I N D O W P O S I T I O 0005520 N D O N T O P E N F L G } \r { 0005540 T e x t \r T h i s f u n c t i 0005560 o n p r o v i d e s m e n u 0005600 s t h a t r e m a i n a c 0005620 t i v e i n w i n d o w s . 0005640 { f n A D D M E N U } d 0005660 i s p l a y s { a r g M E N 0005700 U } a t { a r g P O S I T 0005720 I O N } ( i n w i n d o w 0005740 c o o r d i n a t e s ) i n 0005760 { a r g W I N D O W } . I 0006000 f t h e w i n d o w i s 0006020 t o o s m a l l t o d i s 0006040 p l a y t h e e n t i r e 0006060 m e n u , t h e w i n d o w 0006100 i s m a d e s c r o l l a 0006120 b l e . W h e n a n i t 0006140 e m i s s e l e c t e d , 0006160 t h e v a l u e o f t h e 0006200 { l i s p W H E N S E L E C 0006220 T E D F N } f i e l d o f 0006240 { a r g M E N U } i s c a 0006260 l l e d w i t h t h r e e 0006300 a r g u m e n t s : ( 1 ) t 0006320 h e i t e m s e l e c t e d 0006340 , ( 2 ) t h e m e n u , 0006360 a n d ( 3 ) t h e m o u s 0006400 e k e y t h a t t h e i 0006420 t e m w a s s e l e c t e d 0006440 w i t h ( { l i s p L E F 0006460 T } , { l i s p M I D D L E 0006500 } , o r { l i s p R I G H 0006520 T } ) . M o r e t h a n 0006540 o n e m e n u c a n b e 0006560 p u t i n a w i n d o w , 0006600 b u t a m e n u c a n 0006620 o n l y b e a d d e d t o 0006640 o n e w i n d o w a t a 0006660 t i m e . { f n A D D M 0006700 E N U } r e t u r n s t h e 0006720 w i n d o w i n t o w h i 0006740 c h { a r g M E N U } i s 0006760 p l a c e d . \r \r \r \r I f { 0007000 a r g W I N D O W } i s { 0007020 l i s p N I L } , a w i n 0007040 d o w i s c r e a t e d a 0007060 t t h e p o s i t i o n s 0007100 p e c i f i e d b y { a r g 0007120 P O S I T I O N } ( i n s 0007140 c r e e n c o o r d i n a t e 0007160 s ) t h a t i s t h e s 0007200 i z e o f { a r g M E N U 0007220 } . I f a w i n d o w 0007240 i s c r e a t e d , i t w 0007260 i l l b e o p e n e d u n 0007300 l e s s { a r g D O N T O P 0007320 E N F L G } i s n o n - { l 0007340 i s p N I L } . I f { a 0007360 r g P O S I T I O N } i s 0007400 { l i s p N I L } , t h e 0007420 m e n u i s b r o u g h t 0007440 u p a t t h e v a l u e 0007460 o f { a r g M E N U } ' s 0007500 { l i s p M E N U P O S I T I 0007520 O N } f i e l d ( i n w i 0007540 n d o w c o o r d i n a t e s 0007560 ) , i f i t i s a p o 0007600 s i t i o n , o r e l s e 0007620 i n t h e l o w e r l e f 0007640 t c o r n e r o f { a r g 0007660 W I N D O W } . I f b o 0007700 t h { a r g W I N D O W } 0007720 a n d { a r g P O S I T I O 0007740 N } a r e { l i s p N I L 0007760 } , a w i n d o w i s c 0010000 r e a t e d a t t h e c u 0010020 r r e n t c u r s o r p o s 0010040 i t i o n . \r \r { i n d e x C 0010060 U R S O R I N F N ( W i n d o 0010100 w P r o p e r t y ) } \r { i n 0010120 d e x C U R S O R M O V E D F 0010140 N ( W i n d o w P r o p e r 0010160 t y ) } \r { i n d e x B U T T 0010200 O N E V E N T F N ( W i n d o 0010220 w P r o p e r t y ) } \r { i n 0010240 d e x R E P A I N T F N ( W 0010260 i n d o w P r o p e r t y ) } 0010300 \r { i n d e x S C R O L L F N 0010320 ( W i n d o w P r o p e r t 0010340 y ) } \r \r W a r n i n g : { 0010360 f n A D D M E N U } r e s e 0010400 t s s e v e r a l o f t h 0010420 e w i n d o w p r o p e r t 0010440 i e s o f { a r g W I N D 0010460 O W } . T h e { l i s p 0010500 C U R S O R I N F N } , { l i 0010520 s p C U R S O R M O V E D F N 0010540 } , a n d { l i s p B U T 0010560 T O N E V E N T F N } w i n d 0010600 o w p r o p e r t i e s a r 0010620 e r e p l a c e d w i t h 0010640 { f n M E N U B U T T O N F N 0010660 } , { i n d e x M E N U B U T 0010700 T O N F N F n } s o t h a 0010720 t { a r g M E N U } w i l 0010740 l b e a c t i v e . { f 0010760 n M E N U R E P A I N T F N } 0011000 i s a d d e d t o t h e 0011020 { l i s p R E P A I N T F N 0011040 } w i n d o w p r o p e r t 0011060 y t o u p d a t e t h e 0011100 m e n u i m a g e i f t h 0011120 e w i n d o w i s r e d i 0011140 s p l a y e d . T h e { l 0011160 i s p S C R O L L F N } w i 0011200 n d o w p r o p e r t y i s 0011220 c h a n g e d t o { f n 0011240 S C R O L L B Y R E P A I N T F 0011260 N } i f t h e w i n d o w 0011300 i s t o o s m a l l f o 0011320 r t h e m e n u , t o m 0011340 a k e t h e w i n d o w s 0011360 c r o l l . \r } } \r \r \r \r \r { F 0011400 n D e f { N a m e D E L E T 0011420 E M E N U } { A r g s M E N 0011440 U C L O S E F L G F R O M W 0011460 I N D O W } \r { T e x t \r T h i 0011500 s f u n c t i o n r e m o v 0011520 e s { a r g M E N U } f r 0011540 o m t h e w i n d o w { a 0011560 r g F R O M W I N D O W } . 0011600 I f { a r g M E N U } i 0011620 s t h e o n l y m e n u 0011640 i n t h e w i n d o w a n 0011660 d { a r g C L O S E F L G } 0011700 i s n o n - { l i s p N I 0011720 L } , i t s w i n d o w w 0011740 i l l b e c l o s e d ( b 0011760 y { f n C L O S E W } ) . \r 0012000 \r I f { a r g F R O M W I N 0012020 D O W } i s { l i s p N I 0012040 L } , t h e l i s t o f 0012060 c u r r e n t l y o p e n w 0012100 i n d o w s i s s e a r c h 0012120 e d f o r o n e t h a t 0012140 c o n t a i n s { a r g M E 0012160 N U } . I f n o n e i s 0012200 f o u n d , { f n D E L E 0012220 T E M E N U } d o e s n o t 0012240 h i n g . \r } } \r \r { n o t e 0012260 e x a m p l e s ! ! ( w i 0012300 t h f i g u r e s i f p o 0012320 s s i b l e ) } \r \r \r \r { B e g 0012340 i n S u b S e c M e n u F 0012360 i e l d s } \r { T i t l e M e 0012400 n u F i e l d s } \r { T e x t 0012420 \r \r \r A m e n u i s a d 0012440 a t a t y p e w i t h t h e 0012460 f o l l o w i n g f i e l d 0012500 s : \r \r \r { D e f { T y p e 0012520 ( M e n u F i e l d ) } { 0012540 N a m e I T E M S } \r { T e x 0012560 t \r T h e l i s t o f i t 0012600 e m s t o a p p e a r i n 0012620 t h e m e n u . I f a 0012640 n i t e m i s a l i s t 0012660 , i t s { l i s p C A R } 0012700 w i l l a p p e a r i n 0012720 t h e m e n u . I f t h 0012740 e i t e m ( o r i t s { 0012760 l i s p C A R } ) i s a 0013000 b i t m a p , t h e b i t m 0013020 a p w i l l b e d i s p l 0013040 a y e d i n t h e m e n u 0013060 . T h e d e f a u l t s 0013100 e l e c t i o n f u n c t i o 0013120 n s i n t e r p r e t e a c 0013140 h i t e m a s a l i s t 0013160 o f t h r e e e l e m e n 0013200 t s : a l a b e l , a f 0013220 o r m w h o s e v a l u e 0013240 i s r e t u r n e d u p o n 0013260 s e l e c t i o n , a n d 0013300 a h e l p s t r i n g t h 0013320 a t i s p r i n t e d i n 0013340 t h e p r o m p t w i n d 0013360 o w w h e n t h e u s e r 0013400 p r e s s e s a m o u s e 0013420 k e y w i t h t h e c u 0013440 r s o r p o i n t i n g t o 0013460 t h i s i t e m . T h e 0013500 d e f a u l t s u b i t e m 0013520 f u n c t i o n i n t e r p 0013540 r e t s t h e f o u r t h 0013560 e l e m e n t o f t h e l 0013600 i s t . I f i t i s a 0013620 l i s t w h o s e { l i s 0013640 p C A R } i s t h e l i 0013660 t a t o m { l i s p S U B I 0013700 T E M S } { i n d e x S U B 0013720 I T E M S a t o m } , t h e 0013740 { l i s p C D R } i s t 0013760 a k e n a s a l i s t o 0014000 f s u b i t e m s . \r } } \r \r 0014020 \r { D e f { T y p e ( M e n 0014040 u F i e l d ) } { N a m e 0014060 S U B I T E M F N } \r { T e x 0014100 t \r A f u n c t i o n t o 0014120 b e c a l l e d t o d e t 0014140 e r m i n e i f a n i t e 0014160 m h a s a n y s u b i t e 0014200 m s . I f a n i t e m 0014220 h a s s u b i t e m s a n d 0014240 t h e u s e r r o l l s 0014260 t h e c u r s o r o u t t 0014300 h e r i g h t o f t h a t 0014320 i t e m , a s u b m e n u 0014340 w i t h t h a t i t e m ' 0014360 s s u b i t e m s i n i t 0014400 p o p s u p . I f t h 0014420 e u s e r s e l e c t s o 0014440 n e o f t h e i t e m s 0014460 f r o m t h e s u b m e n u 0014500 , t h e s e l e c t e d s 0014520 u b i t e m i s h a n d l e 0014540 d a s i f i t w e r e 0014560 s e l e c t e d f r o m t h 0014600 e m a i n m e n u . I f 0014620 t h e u s e r r o l l s 0014640 o u t o f t h e s u b m e 0014660 n u t o t h e l e f t , 0014700 t h e s u b m e n u i s t 0014720 a k e n d o w n a n d s e 0014740 l e c t i o n r e s u m e s 0014760 f r o m t h e m a i n m e 0015000 n u . \r \r A n i t e m w i t 0015020 h s u b i t e m s i s m a 0015040 r k e d i n t h e m e n u 0015060 b y a g r e y , r i g h 0015100 t p o i n t i n g t r i a n 0015120 g l e f o l l o w i n g t h 0015140 e l a b e l . \r \r T h e f u 0015160 n c t i o n i s c a l l e d 0015200 w i t h t w o a r g u m e 0015220 n t s : ( 1 ) t h e m e n 0015240 u a n d ( 2 ) t h e i t 0015260 e m . I t s h o u l d r 0015300 e t u r n a l i s t o f 0015320 t h e s u b i t e m s o f 0015340 t h i s i t e m i f a n y 0015360 . ( N o t e : i t i s 0015400 c a l l e d t w i c e t o 0015420 c o m p u t e t h e m e n u 0015440 i m a g e a n d e a c h 0015460 t i m e t h e u s e r r o 0015500 l l s o u t o f t h e i 0015520 t e m b o x s o i t s h 0015540 o u l d b e m o d e r a t e 0015560 l y e f f i c i e n t . T 0015600 h e d e f a u l t { l i s p 0015620 S U B I T E M F N } , { f n 0015640 D E F A U L T S U B I T E M F 0015660 N } , { i n d e x D E F A U L 0015700 T S U B I T E M F N F n } c 0015720 h e c k s t o s e e i f 0015740 t h e i t e m i s a l i 0015760 s t w h o s e f o u r t h 0016000 e l e m e n t i s a l i s 0016020 t w h o s e { f n C A R } 0016040 i s t h e l i t a t o m 0016060 { i n d e x S U B I T E M S 0016100 L i t a t o m } { l i s p S U 0016120 B I T E M S } a n d i f s 0016140 o , r e t u r n s t h e { 0016160 f n C D R } o f i t . \r 0016200 \r F o r e x a m p l e : \r \r { 0016220 l i s p c o d e \r ( c r e a t e 0016240 M E N U \r I T E M 0016260 S _ ' ( A A A A ( B B B B 0016300 ' B B B B " h e l p s t r 0016320 i n g f o r B B B B " \r 0016340 0016360 ( S U B I T E M S 0016400 B B B B 1 B B B B 2 B B B B 0016420 3 ) ) ) ) } \r \r w i l l c r e 0016440 a t e a m e n u w i t h 0016460 i t e m s { l i s p A } a 0016500 n d { l i s p B } i n w 0016520 h i c h { l i s p B } w i 0016540 l l h a v e s u b i t e m s 0016560 { l i s p B 1 } , { l i s 0016600 p B 2 } a n d { l i s p 0016620 B 3 } . T h e f o l l o w 0016640 i n g p i c t u r e b e l o 0016660 w s h o w s t h i s m e n 0016700 u a s i t f i r s t a p 0016720 p e a r s : \r \r \0 001 \0 \0 \0 . \0 032 0016740 \0 001 377 377 377 377 377 374 200 \0 \0 \0 \0 004 200 \0 0016760 \0 \0 \0 004 202 001 \0 200 @ 004 202 001 \0 200 @ 004 0017000 205 002 201 @ 240 004 205 002 201 @ 240 004 210 204 B ! 0017020 020 004 217 207 303 341 360 004 220 H $ 022 \b 004 220 H 0017040 $ 022 \b 004 200 \0 \0 \0 \0 004 200 \0 \0 \0 \0 004 0017060 200 \0 \0 \0 \0 004 200 \0 \0 \0 001 004 237 217 307 343 0017100 360 204 220 H $ 022 \t D 220 H $ 022 \b 244 237 217 0017120 307 343 361 T 220 H $ 022 \b 244 220 H $ 022 \t D 0017140 220 H $ 022 \b 204 237 217 307 343 361 004 200 \0 \0 \0 0017160 \0 004 200 \0 \0 \0 \0 004 377 377 377 377 377 374 \r \r 0017200 T h e f o l l o w i n g p i 0017220 c t u r e s h o w s t h e 0017240 s u b m e n u , w i t h t h 0017260 e i t e m { l i s p B B B 0017300 B 3 } s e l e c t e d b y 0017320 t h e c u r s o r ( \0 001 \0 \0 0017340 \0 \b \0 020 \0 001 200 \0 300 \0 340 \0 360 \0 370 \0 0017360 374 \0 376 \0 360 \0 330 \0 230 \0 \f \0 \f \0 006 \0 0017400 006 \0 003 \0 003 \0 ) : \r \r \0 001 \0 \0 \0 [ 0017420 \0 2 \0 001 \0 \0 \0 \0 \0 017 377 377 377 377 377 340 0017440 \0 \0 \0 \0 \0 \b \0 \0 \0 \0 \0 \0 \0 \0 \0 0017460 \0 \b \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \t 370 374 0017500 ~ ? 002 \0 \0 \0 \0 \0 \t 004 202 A 206 0017520 \0 \0 \0 \0 \0 \t 004 202 A 236 \0 \0 \0 \0 0017540 \0 \t 370 374 ~ ? 002 \0 \0 \0 \0 \0 \t 004 202 0017560 A 202 377 377 377 377 377 371 004 202 A 202 0017600 200 \0 \0 \0 \0 \t 004 202 A 202 200 \0 \0 \0 0017620 \0 \t 370 374 ~ ? 002 202 001 \0 200 @ \b \0 \0 0017640 \0 \0 \0 202 001 \0 200 @ \b \0 \0 \0 \0 \0 0017660 205 002 201 @ 240 \b \0 \0 \0 \0 \0 205 002 201 @ 0017700 240 \b \0 \0 \0 \0 \0 210 204 B ! 020 \t 370 374 0017720 ~ ? 016 217 207 303 341 360 \t 004 202 A 221 0017740 220 H $ 022 \b \t 004 202 A 201 220 H $ 022 0017760 \b \t 370 374 ~ ? 001 200 \0 \0 \0 \0 \t 004 202 0020000 A 206 200 \0 \0 \0 \0 \t 004 202 A 210 0020020 377 377 377 377 377 371 004 202 A 220 377 377 377 377 0020040 376 371 370 374 ~ ? 037 340 p 8 034 017 x \0 \0 0020060 \0 \0 \0 357 267 333 355 366 270 \0 \0 \0 \0 \0 0020100 357 267 333 355 367 _ 377 377 377 377 377 340 340 p 8 034 0020120 016 257 377 377 377 377 377 340 357 267 333 355 367 ^ \a 003 0020140 201 300 361 340 357 267 333 355 366 276 373 } 276 337 n 340 0020160 357 267 333 355 367 ~ 373 } 276 337 ~ 340 340 p 8 034 0020200 016 376 \a 003 201 300 371 340 377 377 377 377 377 376 373 } 0020220 276 337 ~ 340 377 377 377 377 377 376 373 } 276 337 ~ 340 0020240 377 377 377 377 377 376 373 } 276 337 n 340 \0 \0 \0 \0 0020260 \0 016 \a 003 201 300 361 340 \0 \0 \0 \0 \0 017 377 377 0020300 377 377 377 340 \0 \0 \0 \0 \0 017 377 377 377 377 377 340 0020320 \0 \0 \0 \0 \0 017 377 377 377 377 377 340 \0 \0 \0 \0 0020340 \0 \0 \0 \0 \0 \0 037 \0 \0 \0 \0 \0 \0 \0 \0 \0 0020360 \0 \0 037 200 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 037 300 0020400 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 036 \0 \0 \0 \0 \0 0020420 \0 \0 \0 \0 \0 \0 033 \0 \0 \0 \0 \0 \0 \0 \0 \0 0020440 \0 \0 023 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 200 0020460 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 200 \0 \0 \0 \0 0020500 \0 \0 \0 \0 \0 \0 \0 300 \0 \0 \0 \0 \0 \0 \0 \0 0020520 \0 \0 \0 300 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ` 0020540 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ` \r } } \r 0020560 \r \r \r { D e f { T y p e ( M 0020600 e n u F i e l d ) } { N a 0020620 m e W H E N S E L E C T E D F 0020640 N } \r { T e x t \r A f u n c t 0020660 i o n t o b e c a l l e d 0020700 w h e n a n i t e m i s 0020720 s e l e c t e d . T h e 0020740 f u n c t i o n i s c a l l 0020760 e d w i t h t h r e e a r 0021000 g u m e n t s : ( 1 ) t h e 0021020 i t e m s e l e c t e d , 0021040 ( 2 ) t h e m e n u , a n 0021060 d ( 3 ) t h e m o u s e 0021100 k e y t h a t t h e i t e 0021120 m w a s s e l e c t e d w 0021140 i t h ( { l i s p L E F T } 0021160 , { l i s p M I D D L E } , 0021200 o r { l i s p R I G H T } 0021220 ) . T h e d e f a u l t 0021240 f u n c t i o n { f n D E F 0021260 A U L T W H E N S E L E C T E D 0021300 F N } { i n d e x D E F A U L 0021320 T W H E N S E L E C T E D F N 0021340 F n } e v a l u a t e s a n 0021360 d r e t u r n s t h e v a 0021400 l u e o f t h e s e c o n 0021420 d e l e m e n t o f t h e 0021440 i t e m i f t h e i t e 0021460 m i s a l i s t o f a 0021500 t l e a s t l e n g t h 2 0021520 . I f t h e i t e m i 0021540 s n o t a l i s t o f 0021560 a t l e a s t l e n g t h 0021600 2 , { f n D E F A U L T W H 0021620 E N S E L E C T E D F N } r e 0021640 t u r n s t h e i t e m . \r 0021660 \r N o t e : I f t h e m 0021700 e n u i s a d d e d t o 0021720 a w i n d o w w i t h { f 0021740 n A D D M E N U } , t h e 0021760 d e f a u l t { l i s p W H 0022000 E N S E L E C T E D F N } i s 0022020 { f n B A C K G R O U N D W 0022040 H E N S E L E C T E D F N } , { 0022060 i n d e x B A C K G R O U N D 0022100 W H E N S E L E C T E D F N F 0022120 n } w h i c h i s t h e 0022140 s a m e a s { f n D E F A 0022160 U L T W H E N S E L E C T E D F 0022200 N } e x c e p t t h a t { 0022220 f n E V A L . A S . P R O C E 0022240 S S } ( { P a g e R e f F n 0022260 E V A L . A S . P R O C E S S 0022300 } ) i s u s e d t o e v 0022320 a l u a t e t h e s e c o n 0022340 d e l e m e n t o f t h e 0022360 i t e m , i n s t e a d o 0022400 f t y i n g u p t h e m 0022420 o u s e p r o c e s s . \r } 0022440 } \r \r \r \r { D e f { T y p e 0022460 ( M e n u F i e l d ) } { 0022500 N a m e W H E N H E L D F N } 0022520 \r { T e x t \r T h e f u n c t 0022540 i o n w h i c h i s c a l 0022560 l e d w h e n t h e u s e 0022600 r h a s h e l d a m o u 0022620 s e k e y o n a n i t e 0022640 m f o r { v a r M E N U H 0022660 E L D W A I T } { i n d e x M 0022700 E N U H E L D W A I T V a r } 0022720 m i l l i s e c o n d s ( i 0022740 n i t i a l l y 1 2 0 0 ) . 0022760 T h e f u n c t i o n i s 0023000 c a l l e d w i t h t h r 0023020 e e a r g u m e n t s : ( 1 0023040 ) t h e i t e m s e l e c 0023060 t e d , ( 2 ) t h e m e n 0023100 u , a n d ( 3 ) t h e m 0023120 o u s e k e y t h a t t h 0023140 e i t e m w a s s e l e c 0023160 t e d w i t h ( { l i s p 0023200 L E F T } , { l i s p M I D 0023220 D L E } , o r { l i s p R 0023240 I G H T } ) . { l i s p W 0023260 H E N H E L D F N } i s i n 0023300 t e n d e d f o r p r o m p 0023320 t i n g u s e r s . T h e 0023340 d e f a u l t i s { f n 0023360 D E F A U L T M E N U H E L D F 0023400 N } { i n d e x D E F A U L T 0023420 M E N U H E L D F N F n } w 0023440 h i c h p r i n t s ( i n 0023460 t h e p r o m p t w i n d o 0023500 w ) t h e t h i r d e l e 0023520 m e n t o f t h e i t e m 0023540 o r , i f t h e r e i s 0023560 n o t a t h i r d e l e 0023600 m e n t , t h e s t r i n g 0023620 " T h i s i t e m w i l l 0023640 b e s e l e c t e d w h e 0023660 n t h e b u t t o n i s 0023700 r e l e a s e d . " \r } } \r \r \r 0023720 \r { D e f { T y p e ( M e n 0023740 u F i e l d ) } { N a m e 0023760 W H E N U N H E L D F N } \r { 0024000 T e x t \r I f { l i s p W H 0024020 E N H E L D F N } w a s c a 0024040 l l e d , { l i s p W H E N 0024060 U N H E L D F N } w i l l b 0024100 e c a l l e d : ( 1 ) w h 0024120 e n t h e c u r s o r l e 0024140 a v e s t h e i t e m , ( 0024160 2 ) w h e n a m o u s e 0024200 k e y i s r e l e a s e d , 0024220 o r ( 3 ) w h e n a n o 0024240 t h e r k e y i s p r e s 0024260 s e d . T h e f u n c t i 0024300 o n i s c a l l e d w i t 0024320 h t h e s a m e t h r e e 0024340 a r g u m e n t v a l u e s 0024360 u s e d t o c a l l { l 0024400 i s p W H E N H E L D F N } . 0024420 T h e d e f a u l t { l 0024440 i s p W H E N U N H E L D F N 0024460 } i s t h e f u n c t i o 0024500 n { f n C L R P R O M P T } 0024520 ( { P a g e R e f F n C L 0024540 R P R O M P T } ) , w h i c h 0024560 j u s t c l e a r s t h e 0024600 p r o m p t w i n d o w . \r 0024620 } } \r \r \r \r { D e f { T y p e 0024640 ( M e n u F i e l d ) } 0024660 { N a m e M E N U P O S I T I 0024700 O N } \r { T e x t \r T h e p o 0024720 s i t i o n o f t h e m e 0024740 n u t o b e u s e d i f 0024760 t h e c a l l t o { f n 0025000 M E N U } o r { f n A D 0025020 D M E N U } d o e s n o t 0025040 s p e c i f y a p o s i t i 0025060 o n . F o r p o p u p m 0025100 e n u s , t h i s i s i n 0025120 s c r e e n c o o r d i n a 0025140 t e s . F o r f i x e d 0025160 m e n u s , i t i s i n 0025200 t h e c o o r d i n a t e s 0025220 o f t h e w i n d o w t h 0025240 e m e n u i s i n . T 0025260 h e p o i n t w i t h i n 0025300 t h e m e n u i m a g e t 0025320 h a t i s p l a c e d a t 0025340 t h i s p o s i t i o n i 0025360 s d e t e r m i n e d b y 0025400 { l i s p M E N U O F F S E T 0025420 } . I f { l i s p M E N 0025440 U P O S I T I O N } i s { l 0025460 i s p N I L } , t h e m e 0025500 n u w i l l b e b r o u g 0025520 h t u p a t t h e c u r 0025540 s o r p o s i t i o n . { n o 0025560 t e a w k . } \r } } \r \r \r \r { 0025600 D e f { T y p e ( M e n u 0025620 F i e l d ) } { N a m e M 0025640 E N U O F F S E T } \r { T e x t 0025660 \r T h e p o s i t i o n i n 0025700 t h e m e n u i m a g e 0025720 t h a t i s t o b e l o 0025740 c a t e d a t { l i s p M 0025760 E N U P O S I T I O N } . T 0026000 h e d e f a u l t o f f s e 0026020 t i s ( 0 , 0 ) . F o r 0026040 e x a m p l e , t o b r i 0026060 n g u p a m e n u w i t 0026100 h t h e c u r s o r o v e 0026120 r a p a r t i c u l a r m 0026140 e n u i t e m , s e t i t 0026160 s { l i s p M E N U O F F S 0026200 E T } t o a p o s i t i o 0026220 n w i t h i n t h a t i t 0026240 e m a n d s e t i t s { 0026260 l i s p M E N U P O S I T I O 0026300 N } t o { l i s p N I L } 0026320 . { n o t e a w k . } \r } } \r 0026340 \r \r \r { D e f { T y p e ( M 0026360 e n u F i e l d ) } { N a 0026400 m e M E N U F O N T } \r { T e 0026420 x t \r T h e f o n t i n w 0026440 h i c h t h e i t e m s w 0026460 i l l b e a p p e a r i n 0026500 t h e m e n u . \r D e f a u 0026520 l t i s t h e v a l u e 0026540 o f { v a r M E N U F O N T 0026560 } . { i n d e x M E N U F O N 0026600 T V a r } \r } } \r \r \r \r { D e 0026620 f { T y p e ( M e n u F i 0026640 e l d ) } { N a m e T I T 0026660 L E } \r { T e x t \r I f n o n 0026700 - { l i s p N I L } , t h e 0026720 v a l u e o f t h i s f 0026740 i e l d w i l l a p p e a r 0026760 a s a t i t l e i n a 0027000 l i n e a b o v e t h e 0027020 m e n u . \r } } \r \r \r \r { D e f 0027040 { T y p e ( M e n u F i e 0027060 l d ) } { N a m e M E N U 0027100 T I T L E F O N T } \r { T e x t 0027120 \r T h e f o n t i n w h i 0027140 c h t h e t i t l e o f 0027160 t h e m e n u w i l l b e 0027200 a p p e a r . I f t h i 0027220 s i s { l i s p N I L } , 0027240 t h e t i t l e w i l l 0027260 b e i n t h e s a m e f 0027300 o n t a s w i n d o w t i 0027320 t l e s . I f i t i s 0027340 { l i s p T } , i t w i l 0027360 l b e i n t h e s a m e 0027400 f o n t a s t h e m e n 0027420 u i t e m s . \r } } \r \r \r \r 0027440 { D e f { T y p e ( M e n u 0027460 F i e l d ) } { N a m e 0027500 C E N T E R F L G } \r { T e x t 0027520 \r I f n o n - { l i s p N I 0027540 L } , t h e m e n u i t e 0027560 m s a r e c e n t e r e d ; 0027600 o t h e r w i s e t h e y 0027620 a r e l e f t - j u s t i f i 0027640 e d . \r } } \r \r \r \r { D e f { 0027660 T y p e ( M e n u F i e l d 0027700 ) } { N a m e M E N U R O 0027720 W S } } \r { D e f { T y p e 0027740 ( M e n u F i e l d ) } { 0027760 N a m e M E N U C O L U M N S 0030000 } \r { T e x t \r T h e s e f i 0030020 e l d s c o n t r o l t h e 0030040 s h a p e o f t h e m e 0030060 n u i n t e r m s o f r 0030100 o w s \r a n d c o l u m n s . 0030120 I f { l i s p M E N U R 0030140 O W S } i s g i v e n , t 0030160 h e m e n u w i l l h a v 0030200 e t h a t \r n u m b e r o f 0030220 r o w s . I f { l i s p 0030240 M E N U C O L U M N S } i s 0030260 g i v e n , t h e m e n u 0030300 w i l l h a v e \r t h a t 0030320 n u m b e r o f c o l u m n 0030340 s . I f o n l y o n e 0030360 i s g i v e n , t h e o t 0030400 h e r o n e w i l l b e \r 0030420 c a l c u l a t e d t o g e 0030440 n e r a t e t h e m i n i m 0030460 a l r e c t a n g u l a r m 0030500 e n u . ( N o r m a l l y o 0030520 n l y \r o n e o f { l i s p 0030540 M E N U R O W S } o r { l 0030560 i s p M E N U C O L U M N S } 0030600 i s g i v e n . ) I f 0030620 n e i t h e r \r i s g i v e n 0030640 , t h e i t e m s w i l l 0030660 b e i n o n e c o l u m 0030700 n . \r } } \r \r \r \r { D e f { T 0030720 y p e ( M e n u F i e l d ) 0030740 } { N a m e I T E M H E I 0030760 G H T } \r { T e x t \r T h e h 0031000 e i g h t o f e a c h i t 0031020 e m b o x i n t h e m e 0031040 n u . I f n o t s p e c 0031060 i f i e d , i t w i l l b 0031100 e t h e m a x i m u m o f 0031120 t h e h e i g h t o f t 0031140 h e { l i s p M E N U F O N 0031160 T } a n d t h e h e i g h 0031200 t s o f a n y b i t m a p 0031220 s a p p e a r i n g a s l 0031240 a b e l s . \r } } \r \r \r \r { D e 0031260 f { T y p e ( M e n u F i 0031300 e l d ) } { N a m e I T E 0031320 M W I D T H } \r { T e x t \r T h 0031340 e w i d t h o f e a c h 0031360 i t e m b o x i n t h e 0031400 m e n u . I f n o t s p 0031420 e c i f i e d , i t w i l l 0031440 b e t h e w i d t h o f 0031460 t h e l a r g e s t i t e 0031500 m i n t h e m e n u . \r } 0031520 } \r \r \r \r { D e f { T y p e 0031540 ( M e n u F i e l d ) } { 0031560 N a m e M E N U B O R D E R S 0031600 I Z E } \r { T e x t \r T h e s 0031620 i z e o f t h e b o r d e 0031640 r a r o u n d e a c h i t 0031660 e m b o x . I f n o t 0031700 s p e c i f i e d , 0 ( n o 0031720 b o r d e r ) i s u s e d 0031740 . \r } } \r \r \r \r { D e f { T y 0031760 p e ( M e n u F i e l d ) } 0032000 { N a m e M E N U O U T L 0032020 I N E S I Z E } \r { T e x t \r T 0032040 h e s i z e o f t h e o 0032060 u t l i n e a r o u n d t h 0032100 e e n t i r e m e n u . 0032120 I f n o t \r s p e c i f i e d 0032140 , a m a x i m u m o f 1 0032160 a n d t h e { l i s p M 0032200 E N U B O R D E R S I Z E } i 0032220 s u s e d . \r } } \r \r \r \r { D 0032240 e f { T y p e ( M e n u F 0032260 i e l d ) } { N a m e C H 0032300 A N G E O F F S E T F L G } \r { 0032320 T e x t \r ( p o p u p m e n u 0032340 s o n l y ) I f { l i s 0032360 p C H A N G E O F F S E T F L 0032400 G } i s n o n - { l i s p 0032420 N I L } , t h e p o s i t i 0032440 o n o f t h e m e n u o 0032460 f f s e t i s s e t e a c 0032500 h t i m e a s e l e c t i 0032520 o n i s c o n f i r m e d 0032540 s o t h a t t h e m e n u 0032560 w i l l c o m e u p n e 0032600 x t t i m e i n t h e s 0032620 a m e p o s i t i o n r e l 0032640 a t i v e t o t h e c u r 0032660 s o r . T h i s w i l l 0032700 c a u s e t h e m e n u t 0032720 o r e a p p e a r i n t h 0032740 e s a m e p l a c e o n 0032760 t h e s c r e e n i f t h 0033000 e c u r s o r h a s n o t 0033020 m o v e d s i n c e t h e 0033040 l a s t s e l e c t i o n . 0033060 T h i s i s i m p l e m 0033100 e n t e d b y c h a n g i n 0033120 g t h e { l i s p M E N U 0033140 O F F S E T } f i e l d o n 0033160 e a c h u s e . I f { 0033200 l i s p C H A N G E O F F S E 0033220 T F L G } i s t h e a t o 0033240 m { l i s p X } o r t h 0033260 e a t o m { l i s p Y } , 0033300 o n l y t h e X o r t 0033320 h e Y c o o r d i n a t e 0033340 o f t h e { l i s p M E N 0033360 U O F F S E T } f i e l d w 0033400 i l l b e c h a n g e d . 0033420 F o r e x a m p l e , b y 0033440 s e t t i n g t h e { l i 0033460 s p M E N U O F F S E T } p 0033500 o s i t i o n t o ( - 1 , 0 0033520 ) a n d s e t t i n g { l 0033540 i s p C H A N G E O F F S E T 0033560 F L G } t o { l i s p Y } 0033600 , t h e m e n u w i l l 0033620 p o p u p s o t h a t t 0033640 h e c u r s o r i s j u s 0033660 t t o t h e l e f t o f 0033700 t h e l a s t i t e m s 0033720 e l e c t e d . T h i s i 0033740 s t h e s e t t i n g o f 0033760 t h e w i n d o w c o m m 0034000 a n d m e n u s . \r } } \r \r \r 0034020 \r T h e f o l l o w i n g f 0034040 i e l d s a r e r e a d o 0034060 n l y . \r \r \r { D e f { T y p 0034100 e ( M e n u F i e l d ) } 0034120 { N a m e I M A G E H E I G 0034140 H T } \r { T e x t \r R e t u r n 0034160 s t h e h e i g h t o f 0034200 t h e e n t i r e m e n u . 0034220 \r } } \r \r \r \r { D e f { T y p 0034240 e ( M e n u F i e l d ) } 0034260 { N a m e I M A G E W I D T 0034300 H } \r { T e x t \r R e t u r n s 0034320 t h e w i d t h o f t h 0034340 e e n t i r e m e n u . \r } 0034360 } \r \r \r \r } { E n d S u b S e 0034400 c M e n u F i e l d s } \r \r 0034420 \r \r { B e g i n S u b S e c 0034440 M i s c e l l a n e o u s M e 0034460 n u F u n c t i o n s } \r { T 0034500 i t l e M i s c e l l a n e o 0034520 u s M e n u F u n c t i o n 0034540 s } \r { T e x t \r \r { F n D e f 0034560 { N a m e M A X M E N U I T 0034600 E M W I D T H } { A r g s M 0034620 E N U } \r { T e x t \r R e t u 0034640 r n s t h e w i d t h o f 0034660 t h e l a r g e s t m e n 0034700 u i t e m l a b e l i n 0034720 t h e m e n u { a r g M E 0034740 N U } . \r } } \r \r \r { F n D e f 0034760 { N a m e M A X M E N U I T 0035000 E M H E I G H T } { A r g s 0035020 M E N U } \r { T e x t \r R e t 0035040 u r n s t h e h e i g h t 0035060 o f t h e l a r g e s t m 0035100 e n u i t e m l a b e l i 0035120 n t h e m e n u { a r g 0035140 M E N U } . \r } } \r \r \r { F n D 0035160 e f { N a m e M E N U R E G 0035200 I O N } { A r g s M E N U } 0035220 \r { T e x t \r R e t u r n s 0035240 t h e r e g i o n c o v e r 0035260 e d b y t h e i m a g e 0035300 o f { a r g M E N U } i n 0035320 i t s w i n d o w . \r } } \r 0035340 \r \r \r { F n D e f { N a m e 0035360 W F R O M M E N U } { A r g s 0035400 M E N U } \r { T e x t \r R e 0035420 t u r n s t h e w i n d o w 0035440 { a r g M E N U } i s l 0035460 o c a t e d i n , i f i t 0035500 i s i n o n e ; { l i s 0035520 p N I L } o t h e r w i s e 0035540 . \r } } \r \r \r { F n D e f { N 0035560 a m e D O S E L E C T E D I T 0035600 E M } { A r g s M E N U I 0035620 T E M B U T T O N } \r { T e x 0035640 t \r C a l l s { a r g M E N 0035660 U } ' s { l i s p W H E N S 0035700 E L E C T E D F N } o n { a 0035720 r g I T E M } a n d { a r 0035740 g B U T T O N } . I t p 0035760 r o v i d e s a p r o g r a 0036000 m m a t i c w a y o f m a 0036020 k i n g a s e l e c t i o n 0036040 . I t d o e s n o t c 0036060 h a n g e t h e d i s p l a 0036100 y . \r } } \r \r \r { F n D e f { 0036120 N a m e M E N U I T E M R E G 0036140 I O N } { A r g s I T E M 0036160 M E N U } \r { T e x t \r R e t u 0036200 r n s t h e r e g i o n o 0036220 c c u p i e d b y { a r g 0036240 I T E M } i n { a r g M E 0036260 N U } . \r } } \r \r \r { F n D e f 0036300 { N a m e S H A D E I T E M 0036320 } { A r g s I T E M M E N 0036340 U S H A D E D S / W } \r { T 0036360 e x t \r S h a d e s t h e r 0036400 e g i o n o c c u p i e d b 0036420 y { a r g I T E M } i n 0036440 { a r g M E N U } . I f 0036460 { a r g D S / W } i s a 0036500 d i s p l a y s t r e a m o 0036520 r a w i n d o w , i t i 0036540 s a s s u m e d t o b e 0036560 w h e r e { a r g M E N U } 0036600 i s d i s p l a y e d . 0036620 O t h e r w i s e , { f n W 0036640 F R O M M E N U } i s c a l 0036660 l e d t o l o c a t e t h 0036700 e w i n d o w { a r g M E 0036720 N U } i s i n . S h a d 0036740 i n g i s p e r s i s t e n 0036760 t , a n d i s r e a p p l 0037000 i e d w h e n t h e w i n 0037020 d o w t h e m e n u i s 0037040 i n g e t s r e d i s p l a 0037060 y e d . T o u n s h a d e 0037100 a n i t e m , c a l l w 0037120 i t h a { a r g S H A D E 0037140 } o f 0 . \r } } \r \r \r { F n 0037160 D e f { N a m e P U T M E N 0037200 U P R O P } { A r g s M E N 0037220 U P R O P E R T Y V A L U E 0037240 } \r { T e x t \r S t o r e s t 0037260 h e p r o p e r t y { a r g 0037300 P R O P E R T Y } w i t h 0037320 t h e v a l u e { a r g V 0037340 A L U E } o n a p r o p e 0037360 r t y l i s t i n t h e 0037400 m e n u { a r g M E N U } . 0037420 T h e u s e r c a n u 0037440 s e t h i s p r o p e r t y 0037460 l i s t f o r a s s o c i 0037500 a t i n g a r b i t r a r y 0037520 d a t a w i t h a m e n u 0037540 o b j e c t . \r } } \r \r { F n 0037560 D e f { N a m e G E T M E N 0037600 U P R O P } { A r g s M E N 0037620 U P R O P E R T Y } \r { T e x 0037640 t \r R e t u r n s t h e v a 0037660 l u e o f t h e { a r g 0037700 P R O P E R T Y } p r o p e r 0037720 t y o f t h e m e n u { 0037740 a r g M E N U } . \r } } \r \r \r 0037760 } { E n d S u b S e c M i s 0040000 c e l l a n e o u s M e n u 0040020 F u n c t i o n s } \r \r \r { B e 0040040 g i n S u b S e c E x a m p 0040060 l e s o f M e n u U s e } 0040100 \r { T i t l e E x a m p l e s 0040120 o f M e n u U s e } \r { T 0040140 e x t \r \r \r { B e g i n l a b 0040160 e l e d l i s t E x a m p l e 0040200 s o f M e n u U s e } \r \r 0040220 { L a b e l E x a m p l e : } 0040240 \r { T e x t \r A s i m p l e 0040260 m e n u : \r \r { l i s p c o d e 0040300 ( M E N U ( c r e a t e M 0040320 E N U I T E M S _ ' ( ( Y 0040340 E S T ) ( N O ( Q U O T E 0040360 N I L ) ) ) ) ) } \r \r C r e 0040400 a t e s a m e n u w i t h 0040420 i t e m s { l i s p Y E S 0040440 } a n d { l i s p N O } 0040460 i n a s i n g l e v e r t 0040500 i c a l c o l u m n : \r \r \0 001 0040520 \0 \0 \0 037 \0 032 \0 001 377 377 377 376 200 \0 \0 002 0040540 200 \0 \0 002 220 O 343 342 210 210 004 022 210 210 004 002 0040560 205 017 303 302 202 \b \0 " 202 \b \0 022 202 \b 004 022 0040600 202 017 343 342 200 \0 \0 002 200 \0 \0 002 200 \0 \0 002 0040620 200 \0 \0 002 220 C 300 002 230 D 002 224 H 020 002 0040640 222 H 020 002 222 H 020 002 221 H 020 002 220 304 002 0040660 220 C 300 002 200 \0 \0 002 200 \0 \0 002 377 377 377 376 0040700 \r \r I f { l i s p Y E S } 0040720 i s s e l e c t e d , { l i 0040740 s p T } w i l l b e r e 0040760 t u r n e d . O t h e r w i 0041000 s e , { l i s p N I L } w 0041020 i l l b e r e t u r n e d . 0041040 \r } \r \r { L a b e l E x a m p 0041060 l e : } \r { T e x t \r A s i m 0041100 p l e m e n u , w i t h c 0041120 e n t e r i n g : \r \r { l i s p 0041140 c o d e \r ( M E N U ( c r e a 0041160 t e M E N U T I T L E _ 0041200 " F o o ? " \r 0041220 I T E M S _ ' ( ( Y E S 0041240 T " A d d s t h e F o o 0041260 f e a t u r e . " ) \r 0041300 0041320 ( N O ' 0041340 N O " R e m o v e s t h e 0041360 F o o f e a t u r e . " ) ) \r 0041400 C E N T E 0041420 R F L G _ T ) ) } \r \r C r e 0041440 a t e s a m e n u w i t h 0041460 a t i t l e { l i s p F 0041500 o o ? } a n d i t e m s { 0041520 l i s p Y E S } a n d { l 0041540 i s p N O } c e n t e r e d 0041560 i n a s i n g l e v e r 0041600 t i c a l c o l u m n : \r \r \0 0041620 001 \0 \0 \0 037 \0 # \0 001 377 377 377 376 377 377 377 0041640 376 374 037 377 236 375 371 347 n 374 6 333 336 375 366 333 0041660 276 375 366 333 276 375 371 347 376 377 377 377 276 377 377 377 0041700 376 200 \0 \0 002 200 \0 \0 002 220 O 343 342 210 210 004 0041720 022 210 210 004 002 205 017 303 302 202 \b \0 " 202 \b \0 0041740 022 202 \b 004 022 202 017 343 342 200 \0 \0 002 200 \0 \0 0041760 002 200 \0 \0 002 200 \0 \0 002 201 004 < 002 201 204 B 0042000 002 201 D 201 002 201 $ 201 002 201 $ 201 002 201 024 201 0042020 002 201 \f B 002 201 004 < 002 200 \0 \0 002 200 \0 \0 0042040 002 377 377 377 376 \r \r T h e s t r i n 0042060 g s f o l l o w i n g t h e 0042100 { l i s p Y E S } a n d 0042120 { l i s p N O } a r e h e 0042140 l p s t r i n g s a n d w 0042160 i l l b e p r i n t e d i 0042200 f t h e c u r s o r r e m 0042220 a i n s o v e r o n e o f 0042240 t h e i t e m s f o r a 0042260 p e r i o d o f t i m e . 0042300 T h i s m e n u d i f f 0042320 e r s f r o m t h e o n e 0042340 a b o v e i n t h a t i 0042360 t d i s t i n q u i s h e s 0042400 t h e { l i s p N O } c a 0042420 s e f r o m t h e c a s e 0042440 w h e r e t h e u s e r 0042460 c l i c k e d o u t s i d e 0042500 o f t h e m e n u . I f 0042520 t h e u s e r c l i c k s 0042540 o u t s i d e o f t h e 0042560 m e n u , { l i s p N I L } 0042600 i s r e t u r n e d . \r } \r 0042620 \r { L a b e l E x a m p l e : 0042640 } \r { T e x t \r A m u l t i - 0042660 c o l u m n m e n u : \r \r { L 0042700 i s p C o d e \r ( c r e a t e 0042720 M E N U I T E M S _ ' ( 1 0042740 2 3 4 5 6 7 8 9 0042760 * 0 # ) \r 0043000 C E N T E R F L G _ 0043020 T \r 0043040 M E N U C O L U M N S _ 3 \r 0043060 M E N 0043100 U F O N T _ ( F O N T C R E 0043120 A T E ' M O D E R N 1 0 ' 0043140 B O L D ) \r 0043160 I T E M H E I G H T _ 0043200 1 5 \r 0043220 I T E M W I D T H _ 1 5 \r 0043240 C H A N 0043260 G E O F F S E T F L G _ T ) 0043300 } \r \r C r e a t e s a t o u 0043320 c h - t o n e - p h o n e n u 0043340 m b e r p a d w i t h t h 0043360 e i t e m s i n 1 5 b y 0043400 1 5 b o x e s p r i n t e 0043420 d i n M o d e r n 1 0 b 0043440 o l d f o n t : \r \r \0 001 \0 \0 \0 0043460 / \0 > \0 001 377 377 377 377 377 376 200 \0 \0 \0 \0 0043500 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 0043520 \0 \0 002 200 340 003 300 \a 202 201 340 \0 ` \0 302 201 0043540 ` \0 ` \0 302 200 ` \0 300 003 202 200 ` 001 200 \0 0043560 302 200 ` 003 \0 \0 302 200 ` 003 340 \a 202 200 \0 \0 0043600 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 0043620 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 0043640 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 p 003 0043660 340 003 302 200 360 003 \0 006 002 200 260 003 \0 \a 202 201 0043700 260 003 300 006 302 201 360 004 ` 006 302 200 0 \0 ` 006 0043720 302 200 0 003 300 003 202 200 \0 \0 \0 \0 002 200 \0 \0 0043740 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 0043760 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 0044000 002 200 \0 \0 \0 \0 002 201 360 001 300 003 202 200 0 003 0044020 ` 006 302 200 ` 003 ` 006 302 200 ` 001 300 006 302 200 0044040 300 003 ` 003 302 200 300 003 ` \0 302 201 200 001 300 \a 0044060 202 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 0044100 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 0044120 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 @ \0 \0 \0 0044140 002 201 360 001 300 003 b 200 340 003 ` 003 b 200 340 003 0044160 ` 017 342 201 260 003 ` 006 302 200 \0 003 ` 037 342 200 0044200 \0 003 ` \r 202 200 \0 001 300 \r 202 200 \0 \0 \0 \0 0044220 002 200 \0 \0 \0 \0 002 200 \0 \0 \0 \0 002 200 \0 \0 0044240 \0 \0 002 377 377 377 377 377 376 \r \r I f u s 0044260 e d i n p o p u p m o d 0044300 e , i t s f i r s t u s e 0044320 w i l l h a v e t h e c 0044340 u r s o r i n t h e m i d 0044360 d l e . S u b s e q u e n t 0044400 u s e w i l l h a v e t 0044420 h e c u r s o r i n t h e 0044440 s a m e r e l a t i v e l 0044460 o c a t i o n a s t h e p 0044500 r e v i o u s s e l e c t i o 0044520 n . \r } \r \r { L a b e l E x a 0044540 m p l e : } \r { T e x t \r A p 0044560 r o g r a m u s i n g a p 0044600 r e v i o u s l y - s a v e d 0044620 m e n u : \r \r { L i s p C o d e 0044640 \r ( S E L E C T Q [ M E N U \r 0044660 ( C O N D 0044700 ( ( t y p e ? M E N U F O O 0044720 M E N U ) \r 0044740 { i t ( * 0044760 u s e p r e v i o u s l y c 0045000 o m p u t e d m e n u . ) } \r 0045020 0045040 F O O M E N U ) \r 0045060 ( T { 0045100 i t ( * c r e a t e a n d 0045120 s a v e t h e m e n u ) } 0045140 \r 0045160 ( S E T Q F O O M E N 0045200 U \r 0045220 ( c r e a t e 0045240 M E N U \r 0045260 I T 0045300 E M S _ ' ( ( A ' A - S E 0045320 L E C T E D " p r o m p t s 0045340 t r i n g f o r A " ) \r 0045360 * 0045420 ( B ' B - S E L E C T E D 0045440 " p r o m p t s t r i n g f 0045460 o r B " ] \r 0045500 ( A - S E L E C T E D { i t 0045520 ( * i f A i s s e l e 0045540 c t e d ) } ( D O A T H I N G 0045560 ) ) \r ( B - S 0045600 E L E C T E D { i t ( * 0045620 i f B i s s e l e c t e d 0045640 ) } ( D O B T H I N G ) ) \r 0045660 ( P R O G N { 0045700 i t ( * u s e r s e l e c 0045720 t e d o u t s i d e t h e 0045740 m e n u ) } N I L ) ) ) } \r \r 0045760 T h i s e x p r e s s i o n 0046000 d i s p l a y s a p o p u 0046020 p m e n u w i t h t w o 0046040 i t e m s , { l i s p A } 0046060 a n d { l i s p B } , a n 0046100 d w a i t s f o r t h e 0046120 u s e r t o s e l e c t o 0046140 n e . I f { l i s p A } 0046160 i s s e l e c t e d , { l 0046200 i s p D O A T H I N G } i s 0046220 c a l l e d . I f { l i 0046240 s p B } i s s e l e c t e 0046260 d , { l i s p D O B T H I N 0046300 G } i s c a l l e d . I 0046320 f n e i t h e r o f t h e 0046340 s e i s s e l e c t e d , 0046360 t h e f o r m r e t u r n s 0046400 { l i s p N I L } . \r \r T h 0046420 e p u r p o s e o f t h i 0046440 s e x a m p l e i s t o 0046460 s h o w s o m e g o o d p 0046500 r a c t i c e s t o f o l l 0046520 o w w h e n u s i n g m e 0046540 n u s . F i r s t , t h e 0046560 m e n u i s o n l y c r 0046600 e a t e d o n c e , a n d 0046620 s a v e d i n t h e v a r 0046640 i a b l e { l i s p F O O M 0046660 E N U } . T h i s i s m 0046700 o r e e f f i c i e n t i f 0046720 t h e m e n u i s u s e 0046740 d m o r e t h a n o n c e 0046760 . S e c o n d , a l l o 0047000 f t h e i n f o r m a t i o 0047020 n a b o u t t h e m e n u 0047040 i s k e p t i n o n e 0047060 p l a c e , w h i c h m a k 0047100 e s i t e a s y t o u n 0047120 d e r s t a n d a n d e d i 0047140 t . T h i r d , t h e f 0047160 o r m s e v a l u a t e d a 0047200 s a r e s u l t o f s e 0047220 l e c t i n g s o m e t h i n 0047240 g f r o m t h e m e n u 0047260 a r e p a r t o f t h e 0047300 c o d e a n d h e n c e w 0047320 i l l b e k n o w n t o 0047340 m a s t e r s c o p e ( a s 0047360 o p p o s e d t o t h e s 0047400 i t u a t i o n i f t h e 0047420 f o r m s w e r e s t o r e 0047440 d a s p a r t o f t h e 0047460 i t e m s ) . F o u r t h 0047500 , t h e i t e m s i n t 0047520 h e m e n u h a v e h e l 0047540 p s t r i n g s f o r t h 0047560 e u s e r . F i n a l l y 0047600 , t h e c o d e i s c o 0047620 m m e n t e d ( a l w a y s 0047640 w o r t h t h e t r o u b l 0047660 e ) . \r } \r \r { E n d l a b e 0047700 l e d l i s t E x a m p l e s 0047720 o f M e n u U s e } \r \r \r 0047740 } { E n d S u b S e c E x a 0047760 m p l e s o f M e n u U s 0050000 e } \r \r \r } { E n d S u b S e 0050020 c M e n u s } \r \r \r \0 \0 \0 \0 \0 0050040 004 \0 001 \0 ? \0 1 ( D E F A U L T F 0050060 O N T 1 ( G A C H A 1 0 ) 0050100 ( G A C H A 8 ) ( T E R M 0050120 I N A L 8 ) ) \0 \n \0 \0 \0 \0 \0 \0 0050140 \0 \0 \0 \0 035 330 \0 \0 \0 \0 001 \0 \0 \0 246 \0 0050160 001 \0 \f B M O B J . G E T F N 2 \0 0050200 \0 \0 \0 ^ \0 \0 \0 \0 001 \0 \0 \0 * \0 001 \0 0050220 \f B M O B J . G E T F N 2 \0 \0 \0 0050240 \0 004 \0 \0 \0 \0 001 \0 \0 002 b \0 001 \0 \f B 0050260 M O B J . G E T F N 2 \0 \0 \0 037 342 0050300 \0 \0 \0 \0 001 \0 \0 \0 r \0 001 \0 \f B M O 0050320 B J . G E T F N 2 \0 \0 \0 001 317 \0 \0 0050340 \0 \0 001 \0 \0 \0 226 \0 001 \0 \f B M O B J 0050360 . G E T F N 2 \0 \0 \0 003 006 \0 \0 \0 \0 0050400 001 \0 \0 001 ~ \0 001 \0 \f B M O B J . G 0050420 E T F N 2 \0 \0 \0 \a r \0 \0 \0 \0 001 \0 0050440 \0 P 033 \0 \r z 272 0050447