$ 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