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] |
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 |
"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 > > "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 |
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 > > "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 |
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] |
Free forum by Nabble | Edit this page |