Article View: comp.sys.mac.oop.macapp3
Article #182Re: TPopup Testing
From: Euro Tech Svcs, OOP Spec
Date: Thu, 17 Dec 1992 10:23
Date: Thu, 17 Dec 1992 10:23
192 lines
8554 bytes
8554 bytes
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@(
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
;$=$`\``:D)T1`<*3(0"D$0(6"<A(HXUTO"$'
(IU8%6:=6!5L`
end
Technical Details
Message-ID:
<724591933.1915627@AppleLink.Apple.COM>Path:
arc1-ca.pugleaf.net!sparky!uunet!stanford.edu!apple!applelink.apple.comShow Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!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