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