home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / sys / mac / oop / macapp3 / 235 < prev    next >
Encoding:
Internet Message Format  |  1992-12-20  |  8.2 KB

  1. Path: sparky!uunet!stanford.edu!apple!applelink.apple.com
  2. From: SCHALK1@AppleLink.Apple.COM (Euro Tech Svcs, OOP Spec)
  3. Newsgroups: comp.sys.mac.oop.macapp3
  4. Subject: Re: TPopup Testing
  5. Message-ID: <724591933.1915627@AppleLink.Apple.COM>
  6. Date: 17 Dec 92 10:23:00 GMT
  7. Sender: usenet@Apple.COM
  8. Organization: AppleLink Gateway
  9. Lines: 192
  10.  
  11.  
  12.  
  13. Paul,
  14.  
  15. Although you can access the menuhandle data structure to get the status of
  16. items (it is kept in the enableFlags of a MenuInfo data structure), this is not
  17. the way to go. What I would do, is subclass my TPopup and add a field that
  18. keeps track of enabled items. I actually added a object (TBitMap, which come to
  19. think of it is a really confusing name) that is an array of Booleans.
  20.  
  21. Included the MacApp 2.0 source code of UBitMap.cp and UBitMap.h. Adding it to
  22. your subclass of TPopup is easy. For MacApp 3.0 some changes might be
  23. necessary.
  24.  
  25. pascal void TMyPopup::IRes(TDocument *itsDocument, TView *itsSuperView, Ptr *
  26. itsParams)
  27. /*
  28. Task:
  29.    Initialize popup with bitmap of enabled/disabled items.
  30. */
  31. {
  32.    // do private initialization
  33.    fEnabledItems = NULL;
  34.  
  35.    // and inherited one
  36.    inherited::IRes(itsDocument, itsSuperView, itsParams);
  37.  
  38.    // allocate BitMap object that keeps track of enabled items
  39.    fEnabledItems = new TBitMap;
  40.    FailNIL(fEnabledItems);
  41.    fEnabledItems->IBitMap();
  42. }
  43.  
  44. pascal void TMyPopup::Free()
  45. /*
  46. Task:
  47.    Free allocated BitMap object first.
  48. */
  49. {
  50.    FreeIfObject(fEnabledItems);
  51.  
  52.    inherited::Free();
  53. }
  54.  
  55. Boolean TMyPopup::IsEnabled(short item)
  56. /*
  57. Task:
  58.    Test if popup item is enabled.
  59.  
  60. Parameters:
  61.    item: (IN) item to test.
  62.  
  63. Return Value:
  64.    'true' If enabled, 'false' otherwise.
  65. */
  66. {
  67.    return fEnabledItems->IsEnabled(item);
  68. }
  69.  
  70. short TMyPopup::FirstEnabled()
  71. /*
  72. Task:
  73.    Determine first enabled item in a popup.
  74.  
  75. Return Value:
  76.    Number of first enabled item, 0 if none.
  77. */
  78. {
  79.    return short(fEnabledItems->FirstEnabled());
  80. }
  81.  
  82. void TMyPopup::SetValidSelection()
  83. /*
  84. Task:
  85.    Make sure there is an enabled item selected in the popup.
  86. */
  87. {
  88.    if (! this->IsEnabled(this->GetCurrentItem())) {
  89.    if (this->FirstEnabled()) {
  90.    this->SetCurrentItem(this->FirstEnabled(), kRedraw);
  91.    }
  92.    }
  93. }
  94.  
  95. Hope this helps, regards,
  96.  
  97. Jeroen Schalk
  98. Object Programming Specialist
  99. European Technology Services
  100. Apple Computer Europe
  101.  
  102.  
  103. begin 644 CompressedFile%2ePKG
  104. M``46```"``````````````````````````4````#````5@```!(````)````
  105. M:````"`````!````B```$',````"```0^P`````````(```0^P````A#;VUP
  106. M<F5S<V5D1FEL92Y02T=(0E-&1T5/3```````````````````````````````
  107. M``(!```````````````````"60``"!,```%V```)B51%6%1-4%,@`0`!'@0G
  108. M```*54)I=$UA<"YC<````````````````````````````*50+^.FD9[(```#
  109. M+0``$9N```````````'=```"M```"^(```Z65$585$U04R`!``&+!`\```E5
  110. M0FET36%P+F@`````````````````````````````I5`REZ:1G@\```)@```$
  111. MLX```````@````````````$```````````)9```($P```78```F)5$585$U0
  112. M4R`!``$>!"<```I50FET36%P+F-P````````````````````````````I5`O
  113. MXZ:1GL@```,M```1FX````$```````````'=```"M```"^(```Z65$585$U0
  114. M4R`!``&+!`\```E50FET36%P+F@`````````````````````````````I5`R
  115. MEZ:1G@\```)@```$LX``+U2T&$BPH,&#"!,J7,BPH4.$#:@$F;*D00(A:>B`
  116. M:!(&#H@W8M24&4/'10.+I4!0`8$$1!$03T!(`9$%!$P01FS&A.)2)H@@*D$D
  117. MN>G$HD6@:,*X(<.F#(@T<T"$8</FS9@P=,J0D;H41)TY6D'0>0-B39DR'L.`
  118. M@!-FC-FM8>3("9/GHQD00MZ\::ITC@N<;^2`&//&S1RH6=V,J7LG(YJ-;8/`
  119. M@6.1"A/$'T..I,-"+!JH3Z-.90."3&&G,5J("0.6C,D$E3'2X0C'11"J;^XD
  120. MR=H&18H$P(,#OUWU#@@S@4'(T=OF>'*L(/C.T9AF:9JK6;=6)U,&SVLJLFF[
  121. M&,)7SNXR;>;X%AZ<"IKEQM_4T3CZ*>^H*.24`4M?+EVQ9.E1QG(@'"9@"M^%
  122. MUY$+*!3A1@HH$`%5"F&(T=1YO?T6W!1E4,<;@&+)48=3R9DQ%5@)9B1>$G,X
  123. M6&%39*S''G!4[*?1=%B1>%=&Z*4XVX)&I"''="Y:J)6,PE5!1QIL9%27&74H
  124. MMF1A()Z1AAU.F2'D=!^YX10=25$751ENO*C5:Y5]%A5((I$4FE>M/>6&5`76
  125. M(<88;+"VYEUJ40'%&W#4X1&8T)F%5E1TS.6672"0:29<79$!U:/VH>>744,P
  126. M,=$414P1FXH=@=`""$3D468;UTGE7UUOW)777F7TA6833Q"1A!%)#!$$%4D\
  127. MX01+24Q!Q1-29&%1#C*\`$,,+\P00P)[*#%%'\%)@=X;6&ZUUU9((!98'@T\
  128. M).ZXY)9;K@HOG#0"=UIZ"<(77R@(![SJIF'&4F7<!2\3;X1!!A%UM`$'$K%R
  129. M)P>](U2'9QW<@2`"O_X"++`+:(C0P`AD2FK&Q?;BJV^\H`Y<\(`(*\P&PTZ)
  130. M4(6\%%N,L74;-_#""^;6;//-XUX,QUQGM*$66#V3J5$02;B1T4EVO)'&5N"%
  131. MK(,.2<CKF\PJ1,3:&CI85'1&:4R5AH"EF1H&JF.H.A>KKNK%EV$FH=O`'A;-
  132. MO)9^;.GGG&`F,EF'?A:!"54+/G!(A]1.5,$$$RGLT+>:@`L^A'QNT($"#(D;
  133. ME8#<HUF58]BGIAK7V18AH1133H4A^E)-@=`#"$Z4<0<4`[9Q.NF35YZ`$6$P
  134. MZ4023*!@^NA-V>[W'(UW*/7OJ)=1>1\RTXSS\]!#KS///A=81M"1_T3>&V"=
  135. MQ-8<5Y&6]-(JR?NT$?J5,75`5L^!M45'=*@<^:V"D%3R(#0&)N=C>[XJHZ]:
  136. M6U2T-*22-,!M<$N`A.8`!^Z5(0EFF%U34#`\P,5O<"'SC>TL4ATT#(A'9#A?
  137. M^GRC..;-+'HH3"&YIA>&GOWL>FT0VD^F(*@!66L.2%,:T\RG`^+D!D,H",*J
  138. MBL8=/%2J#2F@6OO>EP`?&D=H<GA2<JR$I3GQJ`U_*57GPL>&NOA+#5^YT==T
  139. M!`(QJ"U6<_H<7=`$A;B,K4,#FD/6$G#%!.@`!"A(@A-2(!1\&1$%J5E-:_A8
  140. M';/]IWX!1..E$!BW%PA%*LW968?H4)<Y[.U+'K1;8ZA21J?@H(P96<N`RIB'
  141. MK,C),UD*#%AB9:3CS.>2%IG"&*4B2["M#@57!($C<<#'%8`@!HI+0"V=(H9A
  142. MJ@X$3[N@!,LP3!2805ZVLQ<>PV!,'Y1QF'Q,H!UU(+AE-O.9(>L,-<=HNXM4
  143. MQ2V"0X$*P/DCC_BRF&,4IS%'!4\!=89RP61>`BH8N`X]+DJ2XP@><,F;SO#S
  144. M@O^,G`:7USP5.O2A"6&A"ZV'O:'1$`XVW$\.R=>T=CZ-/+$RSWW65S4J7&V.
  145. M-Y1?(I5BR#RT+5T)?%HW@<?,,3I37O<4'N/Z28>$2@Z?#3"A\R!*U(=*M'I`
  146. MBV'V)E)#.=QPHSMTF@Z*="'>!'&(?CQB$MEG4O?-47!'/*4:ZS(6$)S`1&P`
  147. MRPG8Z,889F5(<ZSC'?.XQSX6$8^!9(U6")G&_R'RC+(Z($P7]S<?.!&(5[3=
  148. MTV23SG7B5*LE;&A1)YO"H[ZPHC-LZE,;,+ZH>E0'"S03$(5X-B)V1ZM*["H3
  149. MP9K+0HX51"=(U(C6:I0VSL6M<8PK;^R(1SWRT;1_S.L@Q>K7M,$JL(S<YTX/
  150. M:]7$!G.Q&2&/'-3)3MITQKE!E2QEMXLSRU)4J1;5K$8;L-(Y=90V3V,158]$
  151. M6KH`%[5</6EE;/24'7VHD+$541EH"QO;OO&M<N3@;N?J6[N>%I"JT2L9^-I2
  152. M``*6;4:Q%AWV-B<K3&5$<\SO;(5R%T<9B0R=.>N)]OL1,`VH,2@2[-LLHI\)
  153. MRV%.T*4#%:9#W<=B5ZC<S;'-O)M4&3(5HTX=;WOS\-[S=N1\6Z+#>F.TU9+*
  154. M5X%PE`.JW$5`+FF8Q*WMZ]G0)&$*@\#")RO#'(-4P$:5Z<-'O&=]0>"&T[QT
  155. MQ0E`CF"N6MJLIN&8P'P*"'BPNH/Z$W*22]Q35K"";%J$CG>AX$[5>V88X3(%
  156. MA@Y.B[V<AF`F0)_ZG/2+00"#R)Y0QZ#.6<+N$H>B,7`S@>$Q#'T<I#*P@0PX
  157. M;,#WP@>"SI9/JJU^M7IR308H+&<,4$@4J=Y`A3?PNC.V5@$1B&WL-+B:#%^8
  158. M`AVP<IW+N&$-24S@LHO-:Q2(@`MP,#(<1-"9PAVN,V(@CYXZL^UF/SO:TU[2
  159. M&*R-[6"VN]O?AD-U.T)N/`9;#BDPP;[A@.YELIO9O(8WM>==G7I;Y-[.?K6W
  160. MP6T&G_8;!?\.>,4!C6Y^N>$,1>/,L+D=<6A+>^'TCJ8;,@E")#];/1!_]L%)
  161. M_NZ3RSOED7V9QAH````$"`A`0+&``0X&1(,$V!1`,ES\TX<D&*Q`9EPP."+0
  162. MC`$X",`(%`$G@,@`'!14$9*&3I,P<%R,@5.0()4B6*@T@3(%Q,``'@B<(`C@
  163. M9LZ=/7\&'4JTJ=.`I:"\&!<PPJ:``UHT?!CQ'[Z*%\T$Y,7`2,>/`D0"D%52
  164. M+:N2L-QX%0L`%`R)_+8"0G+,%R"ZD.!`4,LHRZ,7#)SH"MCBRS]X?`+XD$@/
  165. M#`K$?%\<4!Q0"0`H3\Q0P'Q,,V<`GD&;(2#$`!@%,`Y(.>)++CR"69*T2O7K
  166. M1SD9,``0>`K`5*13MXQ[0F:\$Q<`2"#Y$@B`@4`*-(:$F4,G21(04.2\45-F
  167. M#!U=4^2,65P`2A@R9/((C`%`)4N7,&72)(X$0((F;[@1QAAO`-#"@0@FJ.""
  168. M"0)@0$U,#;"``'8`P)0`@PB@C'+((!1<08,0-1!!]O@7$`&WG'A,!%3<]Q(<
  169. M.NB0A(LP$61`#P$9H$0#+;;T8HQ&R%%&&0$=8$61:$S0(WXPZA`$&VR\<4<2
  170. M=)31!D$)"!-0`M4H26.30[!11AAR4&GE'`$I4$N:R'CI(TPQ%B&@&&*:>65U
  171. M`@3$@`45+/FC#D2D,4<8=)9A)T$-2!%0`V2XR62,2<PA)Z%BDD&0`\0$Y$`V
  172. M?7X)9!IR<#=IH98"`$$3`4'`Q0-^PJF#$6F4P089:`;D@85835CAA1DJ0QQQ
  173. M(Q:D4$($H1%`"L8@40$K!'$`@!<"(:5HGA*,L48:I0)@PP#M_/,/05T0-<`[
  174. MWA*4BKCPE"O0*`'`,``M``#RJW_AC5<>'6_(`2]4M!A(L*#!@P@3*ES(L*%#
  175. MA`VH!)FRI$$"(6GH@&@2!@Z(-V+4E!E#QT6#!D.83)Q29(I%*ACI</38`@21
  176. M/&["M$DS!D08.7+"Y/EH!H20-V_8E`GC9H[)!`V:/"&2Q$B2(4&H)'GB!`22
  177. M)%.H/)&2Q6(.&2]@Q'@Q(T:"/4JF]$E`5TJ9-F_LE"'SD0U?)&GFT'DC)T^#
  178. MAX@3*UZ\6,6+DR/2F'%#IDS1+U]BSD2RM+(<S)`KFTGCI@P(S)H[<@[C&72#
  179. M,6S"S)D#`F;&F2!T@(!31PP;GK6?A!RI<4\#.'+2V`E#IXP.BTB8DE%*%P0(
  180. M,ZGA[*#[X@4(--*5@B#=7`[R,LWYRO8)5"A1HTB5,IUC,4C[/$DHE\&3P,R0
  181. M-W6X0<=VW'GG1AUMB%&&'.^)D1%M@A&VET7');=<<\\E8,<;:?`U!7K9H1`=
  182. M9>(]F%T*(.R!W6T=@=##>'3,D=T.?>P`77BF'0$BBW"@@.(><J!7AQQN7#=C
  183. MC11JR*&'Z/T7(!THV!<4?OKA`>,<3@KXHW\`"NCBE5D.B"14O/G&4X9VI"$'
  184. M'76$P08(&W8(0A(AIF"CAFJRZ>9NLHVQ9YQ\&1%D&3[>:5&::[;Y)J`@!,$&
  185. M&V_<D41S;41Y7WZ569G1778>FJ>B<"X)PA#RR3'I77,4ZFFB?XI:1$Z^E7%J
  186. MI5(*A>E^,')Z)Z)Z+BHJ$8&%$>NLEDYYJZ:4=HHGJV\>E=12128QQZO"*D5&
  187. ML;96F6L;RO(*:JU49@J"CG2$Z6.*0;))Y'5ATKCKIWN">RP(1J@I&+6Q7MMI
  188. M9$7%D=\<<!!'V*J]\CF'G[[*66\9?J6ZL%]0R/'&&%#0P2`1;U#QQL-DL!"J
  189. MG"I@K#''7TQ!!W,\,4':&ON609ED#2#9P`@NDR$9"-V]QZ]^EV7&XVJM?=$`
  190. M```$""@0'T&#`=$XT04."(`!!`-"H*``@`,*$@`HF"!O(3@5#R,FJ"(D#9TF
  191. M8>"X0".`()4B6*@T@3(%Q,``BP@\B!CP9<R9-6_FW,FS:-%24&1<"DA@5D`!
  192. M8!9^DP:``$\)5)0!@&!%D44KDC1:T2,5%X`H$07X2"!(`(\$0@3@4"!,``T%
  193. MD@2X4*!)``LCV@28R%*7Q`()`D34D"(`A!8Y`C1(D26`HCP!$A:($$!@@8:6
  194. M"K0$\*=`3`!^"M0$T*=`3@!U"A0$\*9`3P!H"90%0*9`40!A![0%`$80"8`$
  195. M3=ZX"3/F#8`6T*-+GTY=.@`#`%K:`>!L@)8!1`"<"!B@F@`[I4A]JO440_N(
  196. M`PE2$$B^$/E&"4!0*7DR940/`&S7W7?AC2>0>=L9I2``;D0ARRO"_%".##!4
  197. MI:`ID9"B`H:>/(!A)R,`@,0@V]`W7P`4T#!$&'/0D402($`AQQMJE#$&';H@
  198. M088<N@!0`!1AD$%&'@+%<!Q))J&D$AH`6#"$'&6$04<9(*C(HHLPPC%CC3<6
  199. M%5]!!Q'$Y!DH\-*`/01Q`(`7`@$E178`2##&&FF009`-`[3SSS\*#O#.G@0Q
  200. ;$=$`\``:D)T1`<*3(0"D$0(6"<A(HXUTO"$'
  201. (IU8%6:=6!5L`
  202. end
  203.