PAI changes from D4

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

PAI changes from D4

Bill Schwab
Blair,

My Wizardry package contains some view resources and loose methods that help
with making wizard interfaces.  For example, there is a wizard card panel
that already has the forward/back buttons with framing layouts so they keep
their bottom corner positions when the view is resized.  The loose methods
include #frameAsButtonBottom[Left/Right] and #frameAsOverButtons which can
be sent to a view and simply tweak its arrangement; the parent view is
assumed to have a framing layout.

Enough of the "sales pitch" :)  In D4, load Wizardry and do the following:

(1) open a VC, create a new shell
(2) give the shell a framing layout
(3) drag/drop a button somewhere near the middle of the view
(4) send #frameAsButtonBottomRight to the button
(5) select the button's arrangement
(6) set rightOffset to -100

In D4, the button will move a little further to the left, appropriate for
"the next right-most button".  Repeat this in D5, and you should find that
the arrangement's aspects are not updated and the button will jump and/or
get mangled.  This is probably related to Ian's (??) menu problem.

I also have a relatively new tool which is a PAI embedded in a wizard; the
PAI provides a quick way to edit the model, and then the wizard turns the
model loose in steps.  It works fairly well in D4; the exception being that
list aspects seem to get captured once and never updated for the life of the
PAI instance.  Hopefully I posted something on that when I first noticed it.
I hacked around it with an Aspect class method that took a block to
re-evaluate the list each time, and IIRC, it worked.  D5 beta 1 seemed to
resolve the list problem, so I didn't give it much more thought.

In beta 4 this particular app appears to struggle with updating the tree
(click an item, it blanks for a fraction of a second, then comes back, then
other items flash), where editing the model in D4 is smooth (other than the
forementioned problem with lists).  The machine in question is a 1.8GHz
P4/win2k/256MB.

I see from your replies to other posts that the PAI is due for lots of
attention.  Give it hell :)

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: PAI changes from D4

Bill Schwab-2
Hi Blair,

> In D4, load Wizardry and do the following:
>
> (1) open a VC, create a new shell
> (2) give the shell a framing layout
> (3) drag/drop a button somewhere near the middle of the view
> (4) send #frameAsButtonBottomRight to the button
> (5) select the button's arrangement
> (6) set rightOffset to -100
>
> In D4, the button will move a little further to the left, appropriate for
> "the next right-most button".  Repeat this in D5, and you should find that
> the arrangement's aspects are not updated and the button will jump and/or
> get mangled.

I tried again with the latest (I think) patches and still see the problem.
Wizardry is attached.

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]



begin 666 Wizardry.pac
M?"!P86-K86=E('P-"G!A8VMA9V4@.CT@4&%C:V%G92!N86UE.B G5VEZ87)D
M<GDG+@T*<&%C:V%G92!P87A697)S:6]N.B P.PT*"6)A<VEC0V]M;65N=#H@
M)SQH,CY);G1R;V1U8W1I;VX\+V@R/@T*/' ^5VEZ87)D<GD@:7,@<&5R:&%P
M<R!M;W-T(&YO=&5W;W)T:'D@9F]R('1H92!F86-T('1H870@:70@8V]N=&%I
M;G,@;F\@8VQA<V5S(2$@($ET(&ES(&UO<W1L>2!A(&-O;&QE8W1I;VX@;V8@
M=FEE=R!R97-O=7)C97,@9F]R(&-R96%T:6YG(%=I>F%R9"!I;G1E<F9A8V5S
M("AH96YC92!T:&4@;F%M92DN("!/;F4@9&%Y+"!)('=A<R!G<F]W:6YG('!A
M<G1I8W5L87)L>2!T:7)E9"!O9B!S971T:6YG(&)A8VMG<F]U;F0@8V]L;W)S
M+"!L87EO=70@;6%N86=E<G,L(&9O<G=A<F0O;F5X="!B=71T;VX@=&5X="P@
M8V]M;6%N9',L(&%N9"!A<G)A;F5M96YT<RP@971C+BP@86YD('1H96X@<F5A
M;&EZ960@=&AA="!T:&5R92!W87,@86X@96%S:65R('=A>3L@5VEZ87)D<GD@
M:7,@=&AE(')E<W5L="X\+W ^#0H-"CQP/DUO<W0@;V8@=&AE(&-O9&4@*&QO
M;W-E(&UE=&AO9',I(&EN(%=I>F%R9')Y(&9O8W5S97,@;VX@;6%K:6YG($9R
M86UI;F=,87EO=70@82!L:71T;&4@96%S:65R('1O('5S92X@(%-E92!6:65W
M/CYF<F%M94%S*B M('EO=2<G;&P@;F5E9"!T;R!H879E(&-R96%T960@82!&
M<F%M:6YG3&%Y;W5T(&9O<B!T:&4@<&%R96YT(&]F('1H92!V:65W<R!Y;W4@
M87)E(&UA;G5I<'5L871I;F<N/"]P/@T*#0H-"CQH,CY,96=A;&5S93PO:#(^
M#0I#;W!Y<FEG:'0@,C P,"TR,# R(&)Y(%=I;&AE;&T@2RX@4V-H=V%B+"!0
M:"Y$+B!A;F0@=&AE(%5N:79E<G-I='D@;V8@1FQO<FED82X@($%L;"!R:6=H
M=',@<F5S97)V960N("!5<V4@870@>6]U<B!O=VX@<FES:RX@($EN('5S:6YG
M('1H:7,@<&%C:V%G92P@>6]U(&%S<W5M92!A;GD@86YD(&%L;"!R97-P;VYS
M:6)I;&ET>2!F;W(@9&ER96-T(&]R(&EN9&ER96-T(&1A;6%G97,@<F5S=6QT
M:6YG(&9R;VT@:71S('5S93L@:68@>6]U(&1O(&YO="!L:6ME('1H97-E('1E
M<FUS+"!D;R!N;W0@=7-E('1H92!S;V9T=V%R92X@(%EO=2!M87D@=7-E(&%N
M9"!E>'1E;F0@=&AI<R!P86-K86=E(&%S('EO=2!S964@9FET(&%T(&YO(&-O
M<W0[(&AO=V5V97(L('EO=2!M87D@;F]T('-E;&P@:70@=VET:&]U="!W<FET
M=&5N('!E<FUI<W-I;VX@9G)O;2!T:&4@875T:&]R+@T*#0HG+@T*#0IP86-K
M86=E(&)A<VEC4&%C:V%G959E<G-I;VXZ("<G+@T*#0HB061D('1H92!P86-K
M86=E('-C<FEP=',B#0H-"B)!9&0@=&AE(&-L87-S(&YA;65S+"!L;V]S92!M
M971H;V0@;F%M97,L(&=L;V)A;"!N86UE<RP@<F5S;W5R8V4@;F%M97,B#0IP
M86-K86=E(&-L87-S3F%M97,-"@EY;W5R<V5L9BX-"@T*<&%C:V%G92!M971H
M;V1.86UE<PT*"6%D9#H@(U9I97<@+3X@(V9R86UE07-"=71T;VY";W1T;VU,
M969T.PT*"6%D9#H@(U9I97<@+3X@(V9R86UE07-"=71T;VY";W1T;VU2:6=H
M=#L-"@EA9&0Z("-6:65W("T^("-F<F%M94%S1FEX960Z.PT*"6%D9#H@(U9I
M97<@+3X@(V9R86UE07-&:7AE9#IT;TEN<V5T0GDZ.PT*"6%D9#H@(U9I97<@
M+3X@(V9R86UE07-);G-E=$)Y.CL-"@EA9&0Z("-6:65W("T^("-F<F%M94%S
M3W9E<D)U='1O;G,[#0H)861D.B G1G)A;6EN9T-O;G-T<F%I;G1S(&-L87-S
M)R M/B C8G5T=&]N0F]T=&]M3&5F=#L-"@EA9&0Z("=&<F%M:6YG0V]N<W1R
M86EN=',@8VQA<W,G("T^("-B=71T;VY";W1T;VU2:6=H=#L-"@EA9&0Z("=&
M<F%M:6YG0V]N<W1R86EN=',@8VQA<W,G("T^("-F;W)&:7AE9%)E8W1A;F=L
M93H[#0H)861D.B G1G)A;6EN9T-O;G-T<F%I;G1S(&-L87-S)R M/B C9F]R
M26YS971">3H[#0H)861D.B G1G)A;6EN9T-O;G-T<F%I;G1S(&-L87-S)R M
M/B C9G)O;49I>&5D.G1O26YS971">3H[#0H)>6]U<G-E;&8N#0H-"G!A8VMA
M9V4@9VQO8F%L3F%M97,-"@EY;W5R<V5L9BX-"@T*<&%C:V%G92!R97-O=7)C
M94YA;65S#0H)861D.B C0V]M<&]S:71E4')E<V5N=&5R("T^("=7:7IA<F0@
M<&%N96PG.PT*"6%D9#H@(U!U<VA"=71T;VX@+3X@)T-A<F0@8F%C:R<[#0H)
M861D.B C4'5S:$)U='1O;B M/B G0V%R9"!N97AT)SL-"@EY;W5R<V5L9BX-
M"@T*(D)I;F%R>2!';&]B86P@3F%M97,B#0IP86-K86=E(&)I;F%R>4=L;V)A
M;$YA;65S.B H4V5T(&YE=PT*"7EO=7)S96QF*2X-"B)297-O=7)C92!.86UE
M<R(-"G!A8VMA9V4@86QL4F5S;W5R8V5.86UE<SH@*%-E="!N97<-"@EA9&0Z
M("-#;VUP;W-I=&50<F5S96YT97(@+3X@)U=I>F%R9"!P86YE;"<[#0H)861D
M.B C4'5S:$)U='1O;B M/B G0V%R9"!B86-K)SL-"@EA9&0Z("-0=7-H0G5T
M=&]N("T^("=#87)D(&YE>'0G.PT*"7EO=7)S96QF*2X-"@T*(D%D9"!T:&4@
M<')E<F5Q=6ES:71E(&YA;65S(@T*<&%C:V%G92!S9710<F5R97%U:7-I=&5S
M.B H261E;G1I='E3970@;F5W#0H)861D.B G1&]L<&AI;B<[#0H)>6]U<G-E
M;&8I+@T*#0IP86-K86=E(0T*#0HB0VQA<W,@1&5F:6YI=&EO;G,B(0T*#0HB
M3&]O<V4@365T:&]D<R(A#0H-"B%&<F%M:6YG0V]N<W1R86EN=',@8VQA<W,@
M;65T:&]D<T9O<B$-"@T*8G5T=&]N0F]T=&]M3&5F= T*"2)!;G-W97(@8V]N
M<W1R86EN=',@9F]R(&$@8G5T=&]N(&%T(&)O='1O;2!L969T(&]F(&ET<R!P
M87)E;G0B#0H-"@DB#0H)"49R86UI;F=#;VYS=')A:6YT<R!B=71T;VY";W1T
M;VU,969T#0H)(@T*#0H)7G-E;&8@;F5W#0H)"6QE9G1&<F%M:6YG.B-F:7AE
M9%!A<F5N=$QE9G0[#0H)"6QE9G1/9F9S970Z,3 [#0H)"71O<$9R86UI;F<Z
M(V9I>&5D5FEE=T)O='1O;3L-"@D)=&]P3V9F<V5T.C,P(&YE9V%T960[#0H)
M"2(Q,2TP," M(')I9VAT1G)A;6EN9SHC9FEX9616:65W4FEG:'0[(@T*"0ER
M:6=H=$9R86UI;F<Z(V9I>&5D5FEE=TQE9G0[#0H)"7)I9VAT3V9F<V5T.C@U
M.PT*"0EB;W1T;VU&<F%M:6YG.B-F:7AE9%!A<F5N=$)O='1O;3L-"@D)8F]T
M=&]M3V9F<V5T.C$P(&YE9V%T960[#0H)"7EO=7)S96QF(0T*#0IB=71T;VY"
M;W1T;VU2:6=H= T*"2)!;G-W97(@8V]N<W1R86EN=',@9F]R(&$@8G5T=&]N
M(&%T(&)O='1O;2!R:6=H="!O9B!I=',@<&%R96YT(@T*#0H)(@T*"0E&<F%M
M:6YG0V]N<W1R86EN=',@8G5T=&]N0F]T=&]M4FEG:'0-"@DB#0H-"@E><V5L
M9B!N97<-"@D);&5F=$9R86UI;F<Z(V9I>&5D5FEE=U)I9VAT.PT*"0EL969T
M3V9F<V5T.C@U(&YE9V%T960[#0H)"71O<$9R86UI;F<Z(V9I>&5D5FEE=T)O
M='1O;3L-"@D)=&]P3V9F<V5T.C,P(&YE9V%T960[#0H)"7)I9VAT1G)A;6EN
M9SHC9FEX961087)E;G12:6=H=#L-"@D)<FEG:'1/9F9S970Z,3 @;F5G871E
M9#L-"@D)8F]T=&]M1G)A;6EN9SHC9FEX961087)E;G1";W1T;VT[#0H)"6)O
M='1O;4]F9G-E=#HQ,"!N96=A=&5D.PT*"0EY;W5R<V5L9B$-"@T*9F]R1FEX
M961296-T86YG;&4Z85)E8W1A;F=L90T*"2)!;G-W97(@8V]N<W1R86EN=',@
M9F]R(&$@=FEE=R!A="!T:&4@9FEX960@;&]C871I;VX@*&%S<W5M92!F<F]M
M('1O<"!L969T*2XB#0H-"@DB#0H)"49R86UI;F=#;VYS=')A:6YT<R!F;W)&
M:7AE9%)E8W1A;F=L93HH(#5 -B!E>'1E;G0Z,3 P0#(P("D-"@DB#0H-"@E>
M<V5L9B!N97<-"@D);&5F=$9R86UI;F<Z(V9I>&5D4&%R96YT3&5F=#L-"@D)
M;&5F=$]F9G-E=#IA4F5C=&%N9VQE(&QE9G0[#0H)"71O<$9R86UI;F<Z(V9I
M>&5D4&%R96YT5&]P.PT*"0ET;W!/9F9S970Z85)E8W1A;F=L92!T;W [#0H)
M"7)I9VAT1G)A;6EN9SHC9FEX961087)E;G1,969T.PT*"0ER:6=H=$]F9G-E
M=#IA4F5C=&%N9VQE(')I9VAT.PT*"0EB;W1T;VU&<F%M:6YG.B-F:7AE9%!A
M<F5N=%1O<#L-"@D)8F]T=&]M3V9F<V5T.F%296-T86YG;&4@8F]T=&]M.PT*
M"0EY;W5R<V5L9@T*(0T*#0IF;W));G-E=$)Y.F%296-T86YG;&50;VEN=$]R
M3G5M8F5R#0H)(D%N<W=E<B!C;VYS=')A:6YT<R!F;W(@:6YS971T:6YG(&$@
M=FEE=R!R96QA=&EV92!T;R!I=',@<&%R96YT+@T*"5=H96X@<')O=FED:6YG
M(&$@4F5C=&%N9VQE+"!I="=S(&]R:6=I;B H9G)O;2!P87)E;G0@=&]P(&QE
M9G0I( T*"6%N9"!E>'1E;G0@*&9R;VT@<&%R96YT(&)O='1O;2!R:6=H="D@
M87)E(')E;&5V86YT+B(-"@T*"2(-"@D)1G)A;6EN9T-O;G-T<F%I;G1S(&9O
M<DEN<V5T0GDZ,3 N#0H)"49R86UI;F=#;VYS=')A:6YT<R!F;W));G-E=$)Y
M.C$P0#(P+@T*"0E&<F%M:6YG0V]N<W1R86EN=',@9F]R26YS971">3HH(#$P
M0#(P(&5X=&5N=#HS,$ T," I+@T*"2(-"@T*"0E\(&EN<V5T('P-"@T*"6EN
M<V5T(#H]("@@85)E8W1A;F=L95!O:6YT3W).=6UB97(@:7-+:6YD3V8Z4F5C
M=&%N9VQE("D-"@D)"0EI9E1R=64Z6R!A4F5C=&%N9VQE4&]I;G1/<DYU;6)E
M<B!=#0H)"0D):69&86QS93I;(&%296-T86YG;&50;VEN=$]R3G5M8F5R(&%S
M4&]I;[hidden email]%296-T86YG;&50;VEN=$]R3G5M8F5R(&%S4&]I;G0@
M72X-"@T*"5YS96QF(&YE=PT*"0EL969T1G)A;6EN9SHC9FEX961087)E;G1,
M969T.PT*"0EL969T3V9F<V5T.FEN<V5T(&QE9G0[#0H)"71O<$9R86UI;F<Z
M(V9I>&5D4&%R96YT5&]P.PT*"0ET;W!/9F9S970Z:6YS970@=&]P.PT*"0ER
M:6=H=$9R86UI;F<Z(V9I>&5D4&%R96YT4FEG:'0[#0H)"7)I9VAT3V9F<V5T
M.FEN<V5T('=I9'1H(&YE9V%T960[#0H)"6)O='1O;49R86UI;F<Z(V9I>&5D
M4&%R96YT0F]T=&]M.PT*"0EB;W1T;VU/9F9S970Z:6YS970@:&5I9VAT(&YE
M9V%T960[#0H)"7EO=7)S96QF#0H-"B$-"@T*9G)O;49I>&5D.G1O<$QE9G0@
M=&]);G-E=$)Y.FEN<V5T#0H)(D%N<W=E<B!C;VYS=')A:6YT<R!F;W(@82!V
M:65W(&%T('1H92!F:7AE9"!T;W @;&5F="!A;F0@:6YS970@=&\@=&AE(&)O
M='1O;0T*"7)I9VAT(&EN<V5T(&9R;VT@:71S('!A<F5N="!V:65W+B(-"@T*
M"2(-"@D)1G)A;6EN9T-O;G-T<F%I;G1S(&9R;VU&:7AE9#HU0#8@=&]);G-E
M=$)Y.C1 ,@T*"2(-"@T*"5YS96QF(&YE=PT*"0EL969T1G)A;6EN9SHC9FEX
M961087)E;G1,969T.PT*"0EL969T3V9F<V5T.G1O<$QE9G0@>#L-"@D)=&]P
M1G)A;6EN9SHC9FEX961087)E;G14;W [#0H)"71O<$]F9G-E=#IT;W!,969T
M('D[#0H)"7)I9VAT1G)A;6EN9SHC9FEX961087)E;G12:6=H=#L-"@D)<FEG
M:'1/9F9S970Z:6YS970@>"!N96=A=&5D.PT*"0EB;W1T;VU&<F%M:6YG.B-F
M:7AE9%!A<F5N=$)O='1O;3L-"@D)8F]T=&]M3V9F<V5T.FEN<V5T('D@;F5G
M871E9#L-"@D)>6]U<G-E;&8-"B$@(0T*(49R86UI;F=#;VYS=')A:6YT<R!C
M;&%S<R!C871E9V]R:65S1F]R.B C8G5T=&]N0F]T=&]M3&5F="%I;G-T86YC
M92!C<F5A=&EO;B%P=6)L:6,A("$-"B%&<F%M:6YG0V]N<W1R86EN=',@8VQA
M<W,@8V%T96=O<FEE<T9O<CH@(V)U='1O;D)O='1O;5)I9VAT(6EN<W1A;F-E
M(&-R96%T:6]N(7!U8FQI8R$@(0T*(49R86UI;F=#;VYS=')A:6YT<R!C;&%S
M<R!C871E9V]R:65S1F]R.B C9F]R1FEX961296-T86YG;&4Z(6EN<W1A;F-E
M(&-R96%T:6]N(7!U8FQI8R$@(0T*(49R86UI;F=#;VYS=')A:6YT<R!C;&%S
M<R!C871E9V]R:65S1F]R.B C9F]R26YS971">3HA:6YS=&%N8V4@8W)E871I
M;VXA<'5B;&EC(2 A#0HA1G)A;6EN9T-O;G-T<F%I;G1S(&-L87-S(&-A=&5G
M;W)I97-&;W(Z("-F<F]M1FEX960Z=&]);G-E=$)Y.B%I;G-T86YC92!C<F5A
M=&EO;B%P=6)L:6,A("$-"@T*(59I97<@;65T:&]D<T9O<B$-"@T*9G)A;65!
M<T)U='1O;D)O='1O;4QE9G0-"@DB36%K92!T:&4@<F5C96EV97(@9FET(&EN
M('1H92!B;W1T;VT@;&5F=" M(&%S<W5M97,@82!P=7-H(&)U='1O;@T*"6EN
M(&$@9G)A;6EN9R!L87EO=70@<&%R96YT+B(-"@T*"7-E;&8@87)R86YG96UE
M;G0Z1G)A;6EN9T-O;G-T<F%I;G1S(&)U='1O;D)O='1O;4QE9G0A#0H-"F9R
M86UE07-"=71T;VY";W1T;VU2:6=H= T*"2)-86ME('1H92!R96-E:79E<B!F
M:70@:6X@=&AE(&)O='1O;2!R:6=H=" M(&%S<W5M97,@82!P=7-H(&)U='1O
M;@T*"6EN(&$@9G)A;6EN9R!L87EO=70@<&%R96YT+B(-"@T*"7-E;&8@87)R
M86YG96UE;G0Z1G)A;6EN9T-O;G-T<F%I;G1S(&)U='1O;D)O='1O;5)I9VAT
M(0T*#0IF<F%M94%S1FEX960Z85)E8W1A;F=L90T*"2)3:7IE('1H92!R96-E
M:79E<B!T;R!O8V-U<'D@82!F:7AE9"!R96-T86YG;&4N(@T*#0H)<V5L9B!A
M<G)A;F=E;65N=#HH($9R86UI;F=#;VYS=')A:6YT<R!F;W)&:7AE9%)E8W1A
M;F=L93IA4F5C=&%N9VQE("D-"B$-"@T*9G)A;65!<T9I>&5D.G!O<VET:6]N
M4&]I;G0@=&]);G-E=$)Y.FEN<V5T4&]I;G0-"@DB4VEZ92!T:&4@<F5C96EV
M97(@=&\@<W1A<G0@870@9FEX960@<&]S:71I;VY0;VEN="!A;F0@8F4@:6YS
M970-"@EB>2!I;G-E=%!O:6YT(&9R;VT@=&AE('!A<F5N="=S(')E8W1A;F=L
M92XB#0H-"@ES96QF(&%R<F%N9V5M96YT.B@@1G)A;6EN9T-O;G-T<F%I;G1S
M(&9R;VU&:7AE9#IP;W-I=&EO;E!O:6YT('1O26YS971">3II;G-E=%!O:6YT
M("D-"@T*(0T*#0IF<F%M94%S26YS971">3IA4F5C=&%N9VQE4&]I;G1/<DYU
M;6)E<@T*"2)3:7IE('1H92!R96-E:79E<B!T;R!H879E(&9I>&5D(&EN<V5T
M<R!F<F]M('1H92!P87)E;G0N("!!<W-U;65S(&$@<&%R96YT#0H)=VET:"!A
M($9R86UI;F=,87EO=70@;&%Y;W5T36%N86=E<BX-"@T*"0EA5FEE=R!F<F%M
M94%S26YS971">3HH(#$U0#DP(&5X=&5N=#HQ-4 V," I#0H)(@T*#0H)<V5L
M9B!A<G)A;F=E;65N=#HH($9R86UI;F=#;VYS=')A:6YT<R!F;W));G-E=$)Y
M.F%296-T86YG;&50;VEN=$]R3G5M8F5R("DA#0H-"F9R86UE07-/=F5R0G5T
M=&]N<PT*"2).;W1H:6YG(&UA9VEC(&%B;W5T('1H:7,L(&5X8V5P="!T:&%T
M(&ET)W,@=F5R>2!U<V5F=6P@9F]R('1H:6YG<R!T:&%T#0H)87)E(&EN<V5T
M(&%B;W9E(&$@<F]W(&]F(&)U='1O;G,@86QO;F<@=&AE(&)O='1O;2!O9B!A
M(&-A<F0N(@T*#0H)<V5L9B!F<F%M94%S26YS971">3HH#0H)"35 -2!E>'1E
M;G0Z-4 U, T*"2DN#0H-"B$@(0T*(59I97<@8V%T96=O<FEE<T9O<CH@(V9R
M86UE07-"=71T;VY";W1T;VU,969T(6=E;VUE=')Y(7!U8FQI8R$@(0T*(59I
M97<@8V%T96=O<FEE<T9O<CH@(V9R86UE07-"=71T;VY";W1T;VU2:6=H="%G
M96]M971R>2%P=6)L:6,A("$-"B%6:65W(&-A=&5G;W)I97-&;W(Z("-F<F%M
M94%S1FEX960Z(6=E;VUE=')Y(7!U8FQI8R$@(0T*(59I97<@8V%T96=O<FEE
M<T9O<CH@(V9R86UE07-&:7AE9#IT;TEN<V5T0GDZ(6=E;VUE=')Y(7!U8FQI
M8R$@(0T*(59I97<@8V%T96=O<FEE<T9O<CH@(V9R86UE07-);G-E=$)Y.B%G
M96]M971R>2%P=6)L:6,A("$-"B%6:65W(&-A=&5G;W)I97-&;W(Z("-F<F%M
M94%S3W9E<D)U='1O;G,A9V5O;65T<GDA<'5B;&EC(2 A#0H-"B)%;F0@;V8@
M<&%C:V%G92!D969I;FET:6]N(B$-"@T*( T*(D)I;F%R>2!';&]B86QS(B$-
M"@T*(E)E<V]U<F-E<R(A#0H-"BA297-O=7)C94ED96YT:69I97(@8VQA<W,Z
M($-O;7!O<VET95!R97-E;G1E<B!N86UE.B G5VEZ87)D('!A;F5L)RD@87-S
M:6=N.B H3V)J96-T(&9R;VU":6YA<GE3=&]R94)Y=&5S.@T**$)Y=&5!<G)A
M>2!F<F]M2&5X4W1R:6YG.B G,C$U,S4T-#(R,#,P,C T-C R,$,P,# Q,# P
M,# P-38V.38U-S<U,C8U-S,V1C<U-S(V,S8U,# P,# P,# P13 Q,C0P,#4S
M-30T,C4R-C4W,S9&-S4W,C8S-C4U,S4T-#(T,C<Y-S0V-30Q-S(W,C8Q-SDT
M,38S-C,V-3<S-S,V1C<R-3 W,C9&-S@W.3 P,# P,# P,S8P,# Y,# T,C<Y
M-S0V-30Q-S(W,C8Q-SDU.3 W,# P,#(Q-3,U-#0R,C S,#(P-$4P.#!#,# P
M03 P,# P,#4S-30T,C4V-CDV-3<W-3 W,C9&-S@W.3 P,# P,# P-$4P,C!$
M,# P,3 P,# P,#4S-30T,C0S-D,V,3<S-S,U,#<R-D8W.#<Y,# P,# P,# S
M-C P,#8P,#4S-S0W,C8Y-D4V-S W,# P,# P-#0V1C9#-S V.#8Y-D4Y,C P
M,# P,#!$,# P,# P-#,V1C9%-S0V,38Y-D4V-3<R-38V.38U-S<R-C P,#4P
M,#0Q-S(W,C8Q-SDP1C P,# P,# P,# P,# P,# P,# P,#!#,C P,# P,# R
M,# P,# P,S8P,#!#,# T0S8Q-S(V-S8U-#DV13<T-C4V-S8U-S(P-# P,# P
M,# P,# P,#0T,#$P,# R,# V,# P,# P,# P,# P,# P,#8P,S S,# U,C0W
M-#(P,# P,# P,#@Q,#$P,# P.#$P,3 P,# X,3 Q,# P,# P,# P,# P,#<P
M,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# V,#$P1# P
M-#8W,C8Q-D0V.39%-C<T0S8Q-SDV1C<U-S0P,# P,# P,#!%,#(Q03 P-3,U
M-#0R-#DV-#8U-D4W-#8Y-S0W.30T-CDV,S<T-CDV1C9%-C$W,C<Y-3 W,C9&
M-S@W.3 P,# P,# P-T$P,# P,# P,# P,# P,$$P,# P,# P.3(P,# P,# P
M0C P,# P,#1#-D8V1C9"-S4W,#4T-C$V,C9#-C5#,C P,# P,# T,# P,# P
M-4$P,# P,# P,# P,# P,#=!,# P,# P,# P,# P,#!!,# P,# P,#DR,# P
M,# P,$$P,# P,# U,#<U-S,V.#0R-S4W-#<T-D8V14,R,# P,# P,3$P,# P
M,# P,# P,# P,#8P,# P,# P0S(P,# P,# P,C P,# P,$8R,# P,# P,#0P
M,# P,# P,#(P,#$T-# Q,# P,# P03 P,3 P,# P,# P,# P,# P,# P,# P
M,# P,# P,# P-S P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M,# P,# P,# P,#!&,C P,# P,# X,# P,# P1C(Y1#)".# P,# P,# P,#0V
M,#0Q,C P,#(P,# P,# T,S9&-D0V1#8Q-D4V-#0T-C4W,S8S-S(V.3<P-S0V
M.39&-D4P,# P,# P,#!%,#$P13 P-3,U-#0R-3,W.39$-C(V1C9#-3 W,C9&
M-S@W.3 P,# P,# P.3(P,# P,# P0S P,# P,#<P-S(V-3<V-CDV1C<U-S,T
M,S8Q-S(V-#DR,# P,# P,#<P,# P,# S0S-#,C T,C8Q-C,V0C Q,# P,# P
M,# P,# P,# P,# P,# P,# Q,# P,# P,#8P,3!&,# T1#8U-S,W,S8Q-C<V
M-34S-C4W,3<U-C4V138S-C4P,# P,# P,#!%,#(Q,C P-3,U-#0R-#,V1C9#
M-D,V-38S-S0V.39&-D4U,#<R-D8W.#<Y,# P,# P,# W03 P,# P,# P,# P
M,# P03 P,# P,# Y,C P,# P,#$Q,# P,# P-$8W,C8T-C4W,C8U-C0T,S9&
M-D,V0S8U-C,W-#8Y-D8V14,R,# P,# P,#,P,# P,# P-C S,$(P,#1$-C4W
M,S<S-C$V-S8U-3,V-39%-C0P,# P,# P,#-!,#(P,# P,# P,# P,# Y,C P
M,# P,#$P,# P,# P-C,W,C8U-C$W-#8U-#$W-#-!-C4W.#<T-C4V13<T,T%#
M,C P,# P,# R,# P,# P,#8P,C U,# U,#9&-CDV13<T,# P,# P,# Q-3 P
M,# P,$$U,#$P,# P,S(P,S P,# P,# P,# P,$%",# P,# P,T0P,# P,#!!
M,# Q,# P,$4R,#(P,# P,# P,# P,# S03 R,# P,# P,# P,# P.3(P,# P
M,# P03 P,# P,#8Y-S,T-39%-C$V,C9#-C4V-#-!0S(P,# P,# P,3 P,# P
M,#(P,# P,# P03 P,3 P,#!%,C R,# P,# P,# P,# P,T$P,C P,# P,# P
M,# P,#DR,# P,# P,#4P,# P,# W-#8U-S@W-#-!0S(P,# P,# P,3 P,# P
M,#DR,# P,# P,#<P,# P,# S0S-#,C T,C8Q-C,V0D$P,#$P,# P,#8P,3!&
M,# U-S0Y-$4T-#1&-3<U,#1#-#$T,S0U-$0T-31%-30P,# P,# P,#,V,# P
M.3 P-#(W.3<T-C4T,3<R-S(V,3<Y,D,P,# P,# R0S P,# P,# P,# P,# P
M,#$P,# P,#!&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1C!!,# P
M,# P1#(P,# P,# U1C P,# P,$8P,# P,# P.4$P,C P,# P,# P,# P,$(P
M,#(P,# P0S(P,# P,# P,# P,# P,#,R,#,P,# P,# P,# P,#!#,3 P,# P
M,$,Q,# P,# P,# P,# P,# Q,S P,# P,#0V,#@Q,C P,#$P,# P,# T-C<R
M-C$V1#8Y-D4V-S0S-D8V13<S-S0W,C8Q-CDV13<T-S,P,# P,# P,#-!,#(P
M,# P,# P,# P,# Y,C P,# P,#!&,# P,# P-C8V.3<X-C4V-#4P-C$W,C8U
M-D4W-#1#-C4V-C<T,34P,# P,# S03 R,# P,# P,# P,# P.3(P,# P,# P
M1# P,# P,#8V-CDW.#8U-C0U-C8Y-C4W-S1#-C4V-C<T04(P,# P,# S03 R
M,# P,# P,# P,# P.3(P,# P,# P1C P,# P,#8V-CDW.#8U-C0U-C8Y-C4W
M-S0R-D8W-#<T-D8V1$,U1D9&1D9&,T$P,C P,# P,# P,# P,#DR,# P,# P
M,3$P,# P,# V-C8Y-S@V-38T-3 V,3<R-C4V13<T-#(V1C<T-S0V1C9$141&
M1D9&1D8U03 P,# P,# P,# P,# P0C P,3 P,#!#,C P,# P,#$Q,# P,# P
M,# P,# P,# V,# P,# P,$,R,# P,# P,#(P,# P,#!&,C P,# P,# T,# P
M,# P,# R,# Q-#0P,3 P,# P,# P,#4P,# P,# P,# P,# P,# P,# P,# P
M,# P,# P,#<P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M,# P,# P,# P1C(P,# P,# P.# P,# P,$8R.40R0C@P,# P,# P,# Q,C R
M,# P,# P,# P,# P,T$P,C P,# P,# P,# P,#DR,# P,# P,#@P,# P,# V
M138U-S@W-#0S-C$W,C8T.3(P,# P,# P-S P,# P,#1%-C4W.#<T,C S13-%
M,#$P,# P,# P,# P,# P,# P,# P,# P,#$P,# P,# W,C R,# P,# P,# P
M,# P.4$P,C P,# P,# P,# P,$(P,#(P,# P0S(P,# P,# P,S P,# P,$4R
M,#(P,# P,# P,# P,# P,# S,# P,$,R,# P,# P,#(P,# P,# S,C S,# P
M,# P,# P,# P1D8P,3 P,#!!-3 Q,# P,#,R,#,P,# P,# P,# P,#!!0C P
M,# P,#-$,# P,# P,# P-3 P,#!%,C R,# P,# P,# P,# P-S P,S P,#!#
M,C P,# P,# Q,# P,# P,C P,# P,# P,# U,# P,$4R,#(P,# P,# P,# P
M,#!",# S,# P,$,R,# P,# P,#$P,# P,# Y,C P,# P,# W,# P,# P-$4V
M-3<X-S0R,#-%,T4P,# U,# P,$8R,#,P,# P,# P,# P,# Q,C T,# P,#)#
M,# P,# P,D,P,# P,# P,# P,# P,# Q,# P,# P1D9&1D9&1D9&1D9&1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1C P,# P,$0R,# P,# P-30P,3 P,#!&,# P
M,# P,#E!,#(P,# P,# P,# P,#!",# R,# P,#0P,#0P,# P-3 P-# P,# P
M,# P,# P,#$S,# P,# P-C(P-# P,# P,# P,# P,#-!,#(P,# P,# P,# P
M,# Y,C P,# P,#!%,# P,# P-C8V.3<X-C4V-#4V-CDV-3<W-3(V.38W-C@W
M-#4W1D9&1D9&,T$P,C P,# P,# P,# P,#DR,# P,# P,3 P,# P,# V-C8Y
M-S@V-38T-3 V,3<R-C4V13<T-3(V.38W-C@W-$5$1D9&1D9&0S P-# P,#!#
M-49&1D9&1D4P,#0P,# P141&1D9&1D8U03 Q,# P,# P,# P,# P-T$P,# P
M,# P,# P,# P,$$P,# P,# P.3(P,# P,# Q,C P,# P,#0Y-C0V-39%-S0V
M.3<T-SDT-#8Y-C,W-#8Y-D8V138Q-S(W.30P,#0P,# P,# P,# P,# W,C R
M,# P,# P,# P,# P.4$P,C P,# P,# P,# P,$(P,#(P,# P0S(P,# P,# P
M,3 P,# P,$4R,#(P,# P,# P,# P,# P,# S,# P,$,R,# P,# P,#(P,# P
M,# S,C S,# P,# P,# P,# P,$(P,# P,# P0C P,# P,#,R,#,P,# P,# P
M,# P,#!"1# R,# P,$8U,#$P,# P-C P,# P,#!&,C S,# P,# P,# P,# P
M,3(P-# P,# R0S P,# P,#)#,# P,# P,# P,# P,# P,# P,# P,$9&1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&,#4P,# P,# P-3 P,# P,#8S
M,#$P,# P1D8P,# P,# Y03 R,# P,# P,# P,# P0C P,C P,#!#,C P,# P
M,# R,# P,# P03 P,3 P,# P,# U,# P,#4P,#0P,# P,# P,# P,# Q,S P
M,# P,#0V,#4P-# P,#,P,# P,# T.38S-D8V13 P,# P,# P,# P,# P,# Q
M,# P,# P,#!%,#(Q,3 P-3,U-#0R-3,V.39%-C<V0S8U-S0V1C9%-3 W,C9&
M-S@W.3 P,# P,# P-$4P,C!$,# P,3 P,# P,#4S-30T,C0S-D,V,3<S-S,U
M,#<R-D8W.#<Y,# P,# P,# S-C P,#8P,#4S-S0W,C8Y-D4V-S W,# P,# P
M-#0V1C9#-S V.#8Y-D4Q,C Q,# P,#$X,# P,# P-#DV1#8Q-C<V-34R-C4V
M0S8Q-S0V.3<V-C4T-C8Y-D,V-31#-D8V,S8Q-S0V1C<R,$4P,3!%,# U,S4T
M-#(U,S<Y-D0V,C9&-D,U,#<R-D8W.#<Y,# P,# P,# Q,C Q,# P,# W,# P
M,# P-C,W-3<R-S(V-39%-S0Q,C Q,# P,#$Q,# P,# P-#,V1C9%-S0V,38Y
M-D4V-3<R-38V.38U-S<R138Y-C,V1C!%,#(Q1C P-3,U-#0R-#4W.#<T-C4W
M,C9%-C$V0S4R-C4W,S9&-S4W,C8S-C4T0S8Y-C(W,C8Q-S(W.34P-S(V1C<X
M-SDP,# P,# P,#$R,#$P,# P,3 P,# P,# V-#9&-D,W,#8X-CDV138T-S(S
M,#,P,S0R138T-D,V0S P,# P,# P)RDI(0T*#0HH4F5S;W5R8V5)9&5N=&EF
M:65R(&-L87-S.B!0=7-H0G5T=&]N(&YA;64Z("=#87)D(&)A8VLG*2!A<W-I
M9VXZ("A/8FIE8W0@9G)O;4)I;F%R>5-T;W)E0GET97,Z#0HH0GET94%R<F%Y
M(&9R;VU(97A3=')I;F<Z("<R,34S-30T,C(P,S R,#0V,#(P0S P,#$P,# P
M,# U-C8Y-C4W-S4R-C4W,S9&-S4W,C8S-C4P,# P,# P,#!%,#$R-# P-3,U
M-#0R-3(V-3<S-D8W-3<R-C,V-34S-30T,C0R-SDW-#8U-#$W,C<R-C$W.30Q
M-C,V,S8U-S,W,S9&-S(U,#<R-D8W.#<Y,# P,# P,# S-C P,#DP,#0R-SDW
M-#8U-#$W,C<R-C$W.44S,#(P,# P,C$U,S4T-#(R,#,P,C T13 X,$,P,#!!
M,# P,# P-3,U-#0R-38V.38U-S<U,#<R-D8W.#<Y,# P,# P,# T13 R,$0P
M,# Q,# P,# P-3,U-#0R-#,V0S8Q-S,W,S4P-S(V1C<X-SDP,# P,# P,#,V
M,# P-C P-3,W-#<R-CDV138W,#<P,# P,# T-#9&-D,W,#8X-CDV13DR,# P
M,# P,$$P,# P,# U,#<U-S,V.#0R-S4W-#<T-D8V13(V,# P-3 P-#$W,C<R
M-C$W.3$Q,# P,# P,# P,# P,# P,# P,# P,$,R,# P,# P,#(P,# P,# S
M-C P,$,P,#1#-C$W,C8W-C4T.39%-S0V-38W-C4W,C T,# P,# P,# R,# Q
M-#0P,3 P,# P,#8P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,#<P
M,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M1C(P,# P,# P.# P,# P,#<P-T$R-C@P,# P,# P,# T-C T,3(P,# R,# P
M,# P-#,V1C9$-D0V,39%-C0T-#8U-S,V,S<R-CDW,#<T-CDV1C9%,# P,# P
M,# P13 Q,$4P,#4S-30T,C4S-SDV1#8R-D8V0S4P-S(V1C<X-SDP,# P,# P
M,#DR,# P,# P,$,P,# P,# W,#<R-C4W-C8Y-D8W-3<S-#,V,3<R-C0Y,C P
M,# P,# W,# P,# P,T,S0S(P-#(V,38S-D(P,3 P,# P,# P,# P,# P,# P
M,# P,# P,3 P,# P,# V,#$P1C P-$0V-3<S-S,V,38W-C4U,S8U-S$W-38U
M-D4V,S8U,# P,# P,# P13 R,3(P,#4S-30T,C0S-D8V0S9#-C4V,S<T-CDV
M1C9%-3 W,C9&-S@W.3 P,# P,# P-T$P,# P,# P,# P,# P,$$P,# P,# P
M.3(P,# P,# Q,3 P,# P,#1&-S(V-#8U-S(V-38T-#,V1C9#-D,V-38S-S0V
M.39&-D5#,C P,# P,# S,# P,# P,#8P,S!",# T1#8U-S,W,S8Q-C<V-34S
M-C4V138T,# P,# P,# T03 Q,# P,# P,# P,# P.3(P,# P,# Q,# P,# P
M,#8S-S(V-38Q-S0V-30Q-S0S038U-S@W-#8U-D4W-#-!0S(P,# P,# P,C P
M,# P,# V,#(P-3 P-3 V1C8Y-D4W-# P,# P,# P,$(P,# P,# P0C P,# P
M,#0R,#(P,# P,# P,# P,#!!0C P,# P,#-$,# P,# P-C P,# P,#!&,C Q
M,# P,# P,# P,# P-$$P,3 P,# P,# P,# P,#DR,# P,# P,$$P,# P,# V
M.3<S-#4V138Q-C(V0S8U-C0S04,R,# P,# P,#$P,# P,# R,# P,# P,#8P
M,# P,# P1C(P,3 P,# P,# P,# P,#1!,#$P,# P,# P,# P,# Y,C P,# P
M,# U,# P,# P-S0V-3<X-S0S04,R,# P,# P,#$P,# P,# Y,C P,# P,# W
M,# P,# P,T,S0S(P-#(V,38S-D(V,# P,# P,# V,#$P1C P-3<T.31%-#0T
M1C4W-3 T0S0Q-#,T-31$-#4T134T,# P,# P,# S-C P,#DP,#0R-SDW-#8U
M-#$W,C<R-C$W.3)#,# P,# P,D,P,# P,# P,# P,# P,# P,# P,# P1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D8P-3 P,# P,# U,# P,# P
M-4$P,# P,# R,S P,# P,$%!,#$P,# P,# P,# P,#!#,# Q,# P,$,R,# P
M,# P,# P,# P,# T,C R,# P,# P,# P,# P0S$P,# P,#!#,3 P,# P,# P
M,# P,# P,3,P,# P,# T-C U,#0P,# S,# P,# P-#DV,S9&-D4P,# P,# P
M,# P,# P,# P,3 P,# P,# P13 R,3$P,#4S-30T,C4S-CDV138W-D,V-3<T
M-D8V134P-S(V1C<X-SDP,# P,# P,#1%,#(P1# P,#$P,# P,# U,S4T-#(T
M,S9#-C$W,S<S-3 W,C9&-S@W.3 P,# P,# P,S8P,# V,# U,S<T-S(V.39%
M-C<P-S P,# P,#0T-D8V0S<P-C@V.39%,3(P,3 P,# Q.# P,# P,#0Y-D0V
M,38W-C4U,C8U-D,V,3<T-CDW-C8U-#8V.39#-C4T0S9&-C,V,3<T-D8W,C!%
M,#$P13 P-3,U-#0R-3,W.39$-C(V1C9#-3 W,C9&-S@W.3 P,# P,# P,3(P
M,3 P,# P-S P,# P,#8S-S4W,C<R-C4V13<T,3(P,3 P,# P13 P,# P,#4P
M-S4W,S8X-#(W-3<T-S0V1C9%,D4V.38S-D8P13 R,48P,#4S-30T,C0U-S@W
M-#8U-S(V138Q-D,U,C8U-S,V1C<U-S(V,S8U-$,V.38R-S(V,3<R-SDU,#<R
M-D8W.#<Y,# P,# P,# Q,C Q,# P,#$P,# P,# P-C0V1C9#-S V.#8Y-D4V
M-#<R,S S,#,T,D4V-#9#-D,P,# P,# P,"<I*2$-"@T**%)E<V]U<F-E261E
M;G1I9FEE<B!C;&%S<SH@4'5S:$)U='1O;B!N86UE.B G0V%R9"!N97AT)RD@
M87-S:6=N.B H3V)J96-T(&9R;VU":6YA<GE3=&]R94)Y=&5S.@T**$)Y=&5!
M<G)A>2!F<F]M2&5X4W1R:6YG.B G,C$U,S4T-#(R,#,P,C T-C R,$,P,# Q
M,# P,# P-38V.38U-S<U,C8U-S,V1C<U-S(V,S8U,# P,# P,# P13 Q,C0P
M,#4S-30T,C4R-C4W,S9&-S4W,C8S-C4U,S4T-#(T,C<Y-S0V-30Q-S(W,C8Q
M-SDT,38S-C,V-3<S-S,V1C<R-3 W,C9&-S@W.3 P,# P,# P,S8P,# Y,# T
M,C<Y-S0V-30Q-S(W,C8Q-SE$1C R,# P,#(Q-3,U-#0R,C S,#(P-$4P.#!#
M,# P03 P,# P,#4S-30T,C4V-CDV-3<W-3 W,C9&-S@W.3 P,# P,# P-$4P
M,C!$,# P,3 P,# P,#4S-30T,C0S-D,V,3<S-S,U,#<R-D8W.#<Y,# P,# P
M,# S-C P,#8P,#4S-S0W,C8Y-D4V-S W,# P,# P-#0V1C9#-S V.#8Y-D4Y
M,C P,# P,#!!,# P,# P-3 W-3<S-C@T,C<U-S0W-#9&-D4R-C P,#4P,#0Q
M-S(W,C8Q-SDQ,3 P,# P,# P,# P,# P,# P,# P,#!#,C P,# P,# R,# P
M,# P,S8P,#!#,# T0S8Q-S(V-S8U-#DV13<T-C4V-S8U-S(P-# P,# P,# P
M,C P,30T,#$P,# P,# V,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M,# W,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P,# P
M,# P,$8R,# P,# P,#@P,# P,# W,#=!,C8X,# P,# P,# P-#8P-#$R,# P
M,C P,# P,#0S-D8V1#9$-C$V138T-#0V-3<S-C,W,C8Y-S W-#8Y-D8V13 P
M,# P,# P,$4P,3!%,# U,S4T-#(U,S<Y-D0V,C9&-D,U,#<R-D8W.#<Y,# P
M,# P,# Y,C P,# P,# X,# P,# P-D4V-3<X-S0T,S8Q-S(V-#DR,# P,# P
M,#<P,# P,# T138U-S@W-#(P,T4S13 Q,# P,# P,# P,# P,# P,# P,# P
M,# Q,# P,# P,#8P,3!&,# T1#8U-S,W,S8Q-C<V-34S-C4W,3<U-C4V138S
M-C4P,# P,# P,#!%,#(Q,C P-3,U-#0R-#,V1C9#-D,V-38S-S0V.39&-D4U
M,#<R-D8W.#<Y,# P,# P,# W03 P,# P,# P,# P,# P03 P,# P,# Y,C P
M,# P,#$Q,# P,# P-$8W,C8T-C4W,C8U-C0T,S9&-D,V0S8U-C,W-#8Y-D8V
M14,R,# P,# P,#,P,# P,# P-C S,$(P,#1$-C4W,S<S-C$V-S8U-3,V-39%
M-C0P,# P,# P,#1!,#$P,# P,# P,# P,# Y,C P,# P,#$P,# P,# P-C,W
M,C8U-C$W-#8U-#$W-#-!-C4W.#<T-C4V13<T,T%#,C P,# P,# R,# P,# P
M,#8P,C U,# U,#9&-CDV13<T,# P,# P,# P0C P,# P,#!",# P,# P-#(P
M,C P,# P,# P,# P,$%",# P,# P,T0P,# P,# V,# P,# P,$8R,#$P,# P
M,# P,# P,# T03 Q,# P,# P,# P,# P.3(P,# P,# P03 P,# P,#8Y-S,T
M-39%-C$V,C9#-C4V-#-!0S(P,# P,# P,3 P,# P,#(P,# P,# P-C P,# P
M,#!&,C Q,# P,# P,# P,# P-$$P,3 P,# P,# P,# P,#DR,# P,# P,#4P
M,# P,# W-#8U-S@W-#-!0S(P,# P,# P,3 P,# P,#DR,# P,# P,#<P,# P
M,# T138U-S@W-#(P,T4S138P,# P,# P,#8P,3!&,# U-S0Y-$4T-#1&-3<U
M,#1#-#$T,S0U-$0T-31%-30P,# P,# P,#,V,# P.3 P-#(W.3<T-C4T,3<R
M-S(V,3<Y,D,P,# P,# R0S P,# P,# P,# P,# P,# P,# P,#!&1D9&1D9&
M1D9&1D9&1D9&1D9&1D9&1D9&1D9&1D9&1C U,# P,# P,#4P,# P,# U03 P
M,# P,#(S,# P,# P04$P,3 P,# P,# P,# P,$,P,#$P,# P0S(P,# P,# P
M,# P,# P,#0R,#(P,# P,# P,# P,#!#,3 P,# P,$,Q,# P,# P,# P,# P
M,# Q,S P,# P,#0V,#4P-# P,#,P,# P,# T.38S-D8V13 P,# P,# P,# P
M,# P,# Q,# P,# P,#!%,#(Q,3 P-3,U-#0R-3,V.39%-C<V0S8U-S0V1C9%
M-3 W,C9&-S@W.3 P,# P,# P-$4P,C!$,# P,3 P,# P,#4S-30T,C0S-D,V
M,3<S-S,U,#<R-D8W.#<Y,# P,# P,# S-C P,#8P,#4S-S0W,C8Y-D4V-S W
M,# P,# P-#0V1C9#-S V.#8Y-D4Q,C Q,# P,#$X,# P,# P-#DV1#8Q-C<V
M-34R-C4V0S8Q-S0V.3<V-C4T-C8Y-D,V-31#-D8V,S8Q-S0V1C<R,$4P,3!%
M,# U,S4T-#(U,S<Y-D0V,C9&-D,U,#<R-D8W.#<Y,# P,# P,# Q,C Q,# P
M,# W,# P,# P-C,W-3<R-S(V-39%-S0Q,C Q,# P,#!%,# P,# P-3 W-3<S
M-C@T,C<U-S0W-#9&-D4R138Y-C,V1C!%,#(Q1C P-3,U-#0R-#4W.#<T-C4W
M,C9%-C$V0S4R-C4W,S9&-S4W,C8S-C4T0S8Y-C(W,C8Q-S(W.34P-S(V1C<X
M-SDP,# P,# P,#$R,#$P,# P,3 P,# P,# V-#9&-D,W,#8X-CDV138T-S(S
=,#,P,S0R138T-D,V0S P,# P,# P)RDI(0T*#0H`
`
end


Reply | Threaded
Open this post in threaded view
|

Re: PAI changes from D4

Blair McGlashan
"Bill Schwab" <[hidden email]> wrote in message
news:[hidden email]...

> Hi Blair,
>
> > In D4, load Wizardry and do the following:
> >
> > (1) open a VC, create a new shell
> > (2) give the shell a framing layout
> > (3) drag/drop a button somewhere near the middle of the view
> > (4) send #frameAsButtonBottomRight to the button
> > (5) select the button's arrangement
> > (6) set rightOffset to -100
> >
> > In D4, the button will move a little further to the left, appropriate
for
> > "the next right-most button".  Repeat this in D5, and you should find
that
> > the arrangement's aspects are not updated and the button will jump
and/or
> > get mangled.
>
> I tried again with the latest (I think) patches and still see the problem.
> Wizardry is attached.

Thanks Bill, #866.

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: PAI changes from D4

Blair McGlashan
In reply to this post by Bill Schwab-2
"Bill Schwab" <[hidden email]> wrote in message
news:[hidden email]...

> Hi Blair,
>
> > In D4, load Wizardry and do the following:
> >
> > (1) open a VC, create a new shell
> > (2) give the shell a framing layout
> > (3) drag/drop a button somewhere near the middle of the view
> > (4) send #frameAsButtonBottomRight to the button
> > (5) select the button's arrangement
> > (6) set rightOffset to -100
> >
> > In D4, the button will move a little further to the left, appropriate
for
> > "the next right-most button".  Repeat this in D5, and you should find
that
> > the arrangement's aspects are not updated and the button will jump
and/or
> > get mangled.
>
> I tried again with the latest (I think) patches and still see the problem.
> Wizardry is attached.

This is a bit difficult to explain, so I hope you will bear with me.

The executive is that one just "gets away with it" a bit more in D4. Gets
away with what? Well, evaluating expressions in the workspace that change
the 'structure' of the object (by which I mean replacing its non-scalar
values) without informing the PAI by sending it either an
#aspectChanged:[of:] message, or by manually refreshing it.

Let me explain what is happening in D5: At (3) you place the button on the
form, and the PAI tree is populated with the top-level aspect accessors for
the button (the "subject"). The PAI uses an ExpandingTreeModel to represent
the aspects. One of the top-level aspects is the "arrangement", which
happens to be a composite, i.e. it has children. The treeview needs to know
whether to display an expansion button for the node, and this actually
causes the ExpandingTreeModel to "expand" because it enumerates the children
to determine whether there are any. So at this point the model is fully
populated to include 'PushButton' and all its sub-aspects, *and* the
children of those aspects. The actual values in the tree are
"AspectAccessor" instances, and these hold an Aspect (which is
"meta-information" describing how to access the value, edit it, etc, for any
subject) and the subject to access. An AspectAccessor is, in effect, a
"closed" form of Aspect.

So even having just added the PushButton, the PAI aspect tree model has now
got nodes down two levels below the push button - obviously the first level
is already displayed since the PAI automatically expands to those, and the
others were expanded into the model behind the scenes in order to answer the
TreeView's enquiries about whether it needs to display expand buttons for
those.

At point (4), you evaluate your expression which sets up the framing
arrangement in a convenient form. The PAI does not know this has happened,
and remember that it still has an aspect tree built from the object in its
original form with its original constiuents. The AspectAccessor for
#arrangement has a subject of the PushButton, which has not changed, but
that for the sub-aspects of the framing constraints have a subject that now
refers to the original FramingConstraints, rather than the one that is
currently installed for the PushButton - i.e. the tree now has an outdated
idea of the object being inspected.

Now at point (5) you select the arrangement, but don't notice that it is
still displaying the original framing details, in particular the view's
right edge is bound to its left edge, not the parents right edge. Now you
update the right edge's offset, but not to the parent, but its own left
edge. Setting this negative will result in a button with negative width, and
because the FramingConstraints are an "immutable" aspect (that is they must
be set back into the object as a whole, rather than permitting the
modifications to be made directly inside the original), the
FramingConstraints are updated back to their original values (before (4)),
with the exception of the new rightOffset. Thus the button jumps back to the
middle of the shell, and disappears leaving only the grabbers as a visible
sign.

Now, what was different in 4.0? Well in that case the apsect tree was a
virtual tree model (I won't go into the detailed reasons for the difference,
you'll have ot ask Andy :-)). What this meant was that the model itself kept
no record of anything but the root object. The view on the other hand holds
all the objects that have been inserted into it. Initially the tree view
only needs the root (PushButton) and its immediate sub-nodes (the
PushButtons aspects), and these are placed into the TreeViews own map of
objects to handles that it uses to get display information, etc. The
TreeView still needs to know if there are any children at the next level in
order to display the expand buttons where needed, however because the model
is virtual, it does not retain any information about the children when
asked, so the next-level of children are not yet tied down to a particular
"subject". Consequently if you proceed with your sequence of steps as above,
then all will be well in D4. However if you had, between steps (3) and (4),
expanded the arrangment in the PAI, then you would get exactly the same
effect.

So, as I say, you get away with it more in D4, and the real solution is to
let the tree know about any change made by evaluations, etc, by either
sending it #aspectChanged:[of:] (which is what the ViewComposer itself now
does - see the recent patches for an example of this in connection with the
editing of menus with the WYSIWYG editor), or by manually refreshing the
tree. It is now possible to extend the system tools without having to
repaint the views (see the 'Dolphin IDE Extension Example' package), so
stuff like your wizardry package would probably be best implemented as
extensions to the ViewComposer so that you can send off the necessary
#aspectChanged: messages.

I hope I have managed to explain what is happening in a reasonably
understandable way, and why this is different. What is clear is that this is
likely to cause problems because a lot of the power of Smalltalk and the
ViewComposer is that one can evaluate expressions to update the view, but
one must now refresh manually whereas in the past one could sometimes get
away with not doing so (is that better? I'm not so sure). Refreshing the
ViewComposer PAI in D4 was only achievable by selecting another view and
then changing the selection back. In D5 there is an explicit refresh
command, and we will be changing the VC so that it is bound to the normal F5
accelerator. We can also achieve something similar to the D4 behaviour by
not expanding the model in response to the "has children" enquiry from the
view, but that will be done mainly to improve performance rather than revert
to that behaviour which differed depending on whether one had expanded the
tree or not. Actually I'd rather catch all evaluations in the workspace and
automatically refresh the tree, but at the moment this would delete and
recreate the workspace, which would not be pleasant to use.

Regards

Blair


Reply | Threaded
Open this post in threaded view
|

Re: PAI changes from D4

Bill Schwab-2
Hi Blair,

> This is a bit difficult to explain, so I hope you will bear with me.
>
> The executive is that one just "gets away with it" a bit more in D4. Gets
> away with what? Well, evaluating expressions in the workspace that change
> the 'structure' of the object (by which I mean replacing its non-scalar
> values) without informing the PAI by sending it either an
> #aspectChanged:[of:] message, or by manually refreshing it.

I figured it would be something along those lines.


> Now at point (5) you select the arrangement, but don't notice that it is
> still displaying the original framing details,

Well, not the first couple of times anyway :)


> So, as I say, you get away with it more in D4, and the real solution is to
> let the tree know about any change made by evaluations, etc, by either
> sending it #aspectChanged:[of:] (which is what the ViewComposer itself now
> does - see the recent patches for an example of this in connection with
the
> editing of menus with the WYSIWYG editor), or by manually refreshing the
> tree. It is now possible to extend the system tools without having to
> repaint the views (see the 'Dolphin IDE Extension Example' package),

Thanks for adding that!


> so
> stuff like your wizardry package would probably be best implemented as
> extensions to the ViewComposer so that you can send off the necessary
> #aspectChanged: messages.

This will also give me a place (in the CHB) to hang a UI for my code
generator.  The part that's still not clear is how to make it obvious that a
particular presenter/view was generated, because in that case one should
modify the meta data and then rerun the generation.  It should be possible
to use the VC, but it should also be obvious that there's a better way for
this particular class.  I use the generator for one app now, so it's easy to
remember, and there's a class method that looks at method categories and
opens a workspace with the code required to do the job.

Making a long story short, is there anything to stop me from hooking into
the #aboutToDisplayMenu: events?  So far, I don't see anything that would.
The answer might be to "statically" add a submenu, and then populate it
dynamically depending on the selection.


> Actually I'd rather catch all evaluations in the workspace and
> automatically refresh the tree, but at the moment this would delete and
> recreate the workspace, which would not be pleasant to use.

If you grabbed and restored the text, it might not be too bad.  Looking at
it another way, the resulting flicker would be the source of bug reports
rather than potentially random problems (probably up to and including system
crashes).  I think I detect an enhancement request for changing the tree w/o
changing the workspace, but, either way, the answer could be "why not write
an IDE extension?".  For infrequent tasks, the flicker would be ok, and
there's now a mechanism to formalize the frequent stuff where it would be
annoying.  Does that seem reasonable?

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]