ANN: FoldPanelBar For wxPython

Hello NG,

    after some hard work, I (probably) succeded in converting the C++ code
(from Jorgen Bodde) of wxFoldPanelBar to a pure wxPython/Python implementation.
To know what a "FoldPanelBar" can do, please refer to this page:

http://www.solidsteel.nl/jorg/components/foldpanel/wxFoldPanelBar.php

And, for a snapshot on different platforms:

http://www.solidsteel.nl/jorg/components/foldpanel/wxFoldPanelBar.php#screenshots

In my hope, this implementation should be platform-independent: in fact,
this is not a SWIG wrap (or whatever it is its name :wink: ) of a C++ implementation,
but a port to Python. Anyway, I only have this configuration:

- Windows XP
- Python 2.3.4
- wxPython 2.5.4.1

And I don't know how it works (if it works...) on other platforms. If someone
of you will try the module, he/she may post some comments on it. Also patches/enhancements/general
comments are REALLY welcome.

At the beginning of the module, there are some TODO things and CAVEATS (problems),
so you may want to take a look at them and (maybe) propose a solution.
I include also an epydoc-generated documentation, if someone care.

I really really really welcome any comment.

Andrea.

FoldPanelBar.zip (20 KB)

FoldPanelBarDoc.zip (252 KB)

Hello Andrea,

splendid work :slight_smile:

I like this coding style also (it is exemplary and very clear presented)
and also the source documentation.

2 little things:
(also win xp, py 2.4, wxpy 2.5.4.1)

(I attach 2 screenshots)
both with refresh problems.

one: the "misc stuff" appeared two times.

Cheers,

···

On Wed, 23 Mar 2005 22:23:49 +0100, andrea_gavana@tin.it wrote:

Hello NG,

   after some hard work, I (probably) succeded in converting the C++ code
(from Jorgen Bodde) of wxFoldPanelBar to a pure wxPython/Python implementation.
To know what a "FoldPanelBar" can do, please refer to this page:
[...]

--
Franz Steinhaeusler

begin 644 ClipBoard-2.jpg
M_]C_X``02D9)1@`!`0$```````#_VP!#``,"`@,"`@,#`P,$`P,$!0@%!00$
M!0H'!P8(#`H,#`L*"PL-#A(0#0X1#@L+$!80$1,4%145#`\7&!84&!(4%13_
MVP!#`0,$!`4$!0D%!0D4#0L-%!04%!04%!04%!04%!04%!04%!04%!04%!04
M%!04%!04%!04%!04%!04%!04%!04%!3_P``1"`%*`,\#`2(``A$!`Q$!_\0`
M'P```04!`0$!`0$```````````$"`P0%!@<("0H+_\0`M1```@$#`P($`P4%
M!`0```%]`0(#``01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T?`D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0`'P$``P$!`0$!
M`0$!`0````````$"`P0%!@<("0H+_\0`M1$``@$"!`0#!`<%!`0``0)W``$"
M`Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O`58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H`#`,!``(1`Q$`/P#[E\0_\A_4
MO^OF7_T,UGUF>*TOM3^)&O6<6KW>G6]ND<JI:QPG<SS7`8DR1L>D:],=ZY2'
MQ%IT_@_1O%*>-M5;0=8^P_8;O[)!^^^V211VWR?9MR[WFB'S`;=V6P`<<;6I
MNCOJ*YNPTVZU*!IH?$FN(BRRPD7%G;PMNC=D8A7M@2I*DJP&UEPRDJP)L?\`
M"/7_`/T,^J_]^K3_`.,4AFY17G%AXQTG4_%+>'[?QIKC7XEEMXYGTV-+.>>,
M,98(;IK4033)LEW11NSKY,N5'E/MZ/3;"36=.M=0T_QC?WUA=Q)/;W5L+.2*
M:-@&5T98"&4@@@C@@T6$=)17`V?B+3M0UB/2[7QMJMS?2W5Q9I'#:0.'DMU!
MN"&%MM,<3,L3RYV+,PA9A*=E=%_PCU__`-#/JO\`WZM/_C%`S<HK#_X1Z_\`
M^AGU7_OU:?\`QBC_`(1Z_P#^AGU7_OU:?_&*`-RBL/\`X1Z__P"AGU7_`+]6
MG_QBC_A'K_\`Z&?5?^_5I_\`&*`-RBL/_A'K_P#Z&?5?^_5I_P#&*/\`A'K_
M`/Z&?5?^_5I_\8H`W**P_P#A'K__`*&?5?\`OU:?_&*/^$>O_P#H9]5_6G
M_P`8H`W**P_^$>O_`/H9]5_6G_`,8H_P"$>O\`_H9]5_6G_QB@#<HK#_
M`.$>O_\`H9]5_P"_5I_\8K.\26&J:/X=U6_A\2ZDTUK:2SHLD5J5+*A8`X@'
M&10`Z^_Y.^F_[%+5O_2E*Z_]DG_CR^*7_8[7?_I):5R%]_R=]-_V*6K?^E*5
MU_[)/_'E\4O^QVN__22TKICN8L]ZKR7]H#_D2_$G_8/'_HNZKUJO)?V@/^1+
M\2?]@\?^B[JJEL"-K]GK_D@7PT_[%G3/_26.O0*\_P#V>O\`D@7PT_[%G3/_
M`$ECKT"J)/G75?\`DJWBC_KA;_\`H^[KX[\&_`KQ/I?PI^%FG7.G7HT'P]=>
M%_$%CI)MB)[74I[VR%^'7/G#[,%U&9_,&S&J,*+12/L'Q99ZO:_$'7+^PMK
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

<&D+JC'RU:8M$60:G5WOQ$\3WOB;Q!9>&?"EEK>G>'KJ.RU%[G6#:7LDQMH

M;IEM83`T4G[JYB"F6>$&3<K%%`D/1W'Q(\)6FL:MI,_BG18=5TBU:^U&QDU"
M%9[*V559IID+;HXPKH2[`##*<\BN3?PWXY\,>+?%EQX9MO#U[8>)M0BU%]0U
M:^GBETZ06=M:$"UCA87*J+59<>?"6+E,IM\P\'X\^`'BWQ;X3UCPE!-HL&E)
M=>(=6T[5)+N8SW%SJ=OJ,:P36XAVPQQMJCYE664L+=3Y8\PB-Z`>OV'Q:\#:
MK`T]EXS\/7D*Z?+JS26^J0.HLHW:.2Y)#_ZE71D:3[H92"00:L^'OB1X2\77
M5O;:%XIT76KFXM6OH8=.U"&=Y;993"TRA&),8D5HRXX#`KG(Q7C_`,6OV?/$
M7CRP\9P:?>Z7"^M:U>ZC;FYED4+'-X6?2%#[8SAA<,&(&1Y?.2WR59^)'[/.
MK_$%O%-K_:=E86>N:_=:AY^'DDAMIO"[:1G9@!I%F;?MW`%!]X-\M%D&IZ=8
M?%KP-JNB-K-EXS\/7FD+++`VH6^J0/;B2.%IY$,@?;N6%&E89R$4L<`$U6@^
M,7A*?Q%?:3_;5E']ET"W\3_;I+N$6LVG2O,OVB-]_P`T:>3EWQL42Q'<=W'F
M.@?L\W\WBWP[K^LZ7I<+V&M6U_<6UWXCU+Q%*\=M9ZBD#K<7RC#)<7Z.D:QH
M$,;R>8[,JI9TKX#Z[H[>,)"=%U3^WO/D%O<SW$0B9-<O]1MMDL:AXY&CU$CS
MTPUM-!'(BS]%+(-3W'3=2M-9TZUU#3[J"^L+N))[>ZMI!)%-&P#*Z,I(92""
M"."#5BN=^'FAZAX<\'Z?8ZLUD^JCS)KN2PA6..2:21I'<[417D9G)>41QB1R
M[B.+?Y:]%4C"BBB@#E+[_D[Z;_L4M6_]*4KK_P!DG_CR^*7_`&.UW_Z26E<A
M??\`)WTW_8I:M_Z4I77_`+)/_'E\4O\`L=KO_P!)+2NF.YBSWJO)?V@/^1+\
M2?\`8/'_`*+NJ]:KR7]H#_D2_$G_`&#Q_P"B[JJEL"-K]GK_`)(%\-/^Q9TS
M_P!)8Z]`KS_]GK_D@7PT_P"Q9TS_`-)8Z]`JB3Q'Q#_R']2_Z^9?_0S6+J.J
MV6D0+-?WEO90LVP27$JQJ6P3C)(YP#^5;7B'_D/ZE_U\R_\`H9KRSXR:=:ZN
MO@2QOK:&]L;KQCH\$]M<1B2.:-KI0R.IR&4@D$'@@UR)7=C:]D=3_P`)QX<_
MZ#^E_P#@;'_\51_PG'AS_H/Z7_X&Q_\`Q5/\->#O#?C#6)KW2/V?_A_=^!X=
M:N]%>_\`]&35@]M>264\WV)K,0^4L\,C?\?6\PKO"&0B`]!+I/[,T%MXDN);
M/X3QV_AJ9+;7)7BTP+I4K2&)([HXQ"QD5D"O@EE(ZC%:^S1/.<Y_PG'AS_H/
MZ7_X&Q__`!5'_"<>'/\`H/Z7_P"!L?\`\571MI/[,R:5JFIM9_"<:;I4-I<Z

&+3/)LXKI5:TDF?&(UF5E,;,0'#`KG-6].\)_LZ:Q9ZO=V&C?"^]M-'LH=

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
M**`"BBB@`HHHH`****`"BBB@#YT_:open_mouth:\`^2^VG_8,N_\`TJ6O-:]*_:O_`.2^
MVG_8,N__`$J6O-:ZX[&#W"BBBJ$%%%%`'W+XA_Y#^I?]?,O_`*&:SZT/$/\`
MR']2_P"OF7_T,UGUQ/<W6P4444#"BBB@`HHHH`****`"BBB@`HHHH`****`"
MBBB@`HHHH`^=/VK_`/DOMI_V#+O_`-*EKS6O2OVK_P#DOMI_V#+O_P!*EKS6
MNN.Q@]PHHHJA!1110!]R^(?^0_J7_7S+_P"AFL^M#Q#_`,A_4O\`KYE_]#-9
M]<3W-UL%%%%`PHHHH`****`"BBB@`HHHH`****`"BBB@`HHHH`****`/G3]J
M_P#Y+[:?]@R[_P#2I:\UKTK]J_\`Y+[:?]@R[_\`2I:\UKKCL8/<****H044
M44`?<OB'_D/ZE_U\R_\`H9K/K0\0_P#(?U+_`*^9?_0S6?7$]S=;!1110,**
M**`"BBB@`HHHH`****`"BBB@`HHHH`****`"BBB@#YT_:open_mouth:\`^2^VG_8,N_\`
MTJ6O-:]*_:O_`.2^VG_8,N__`$J6O-:ZX[&#W"BBBJ$%%%%`'W+XA_Y#^I?]
M?,O_`*&:SZT/$/\`R']2_P"OF7_T,UGUQ/<W6P4444#"BBB@`HHHH`****`"
MBBB@`HHHH`****`"BBB@`HHHH`^=/VK_`/DOMI_V#+O_`-*EKS6O2OVK_P#D
MOMI_V#+O_P!*EKS6NN.Q@]PHHHJA!1110!]R^(?^0_J7_7S+_P"AFL^M#Q#_
M`,A_4O\`KYE_]#-9]<3W-UL%%%%`PHHHH`****`"BBB@`HHHH`****`"BBB@
M`HHHH`****`/G3]J_P#Y+[:?]@R[_P#2I:\UKTK]J_\`Y+[:?]@R[_\`2I:\
MUKKCL8/<****H04444`?47[47Q$U+X4>`/&/BK2(+6XU"PN4\J*]1FB.^Z2,
M[@K*>CG&".<5\2?\/#_B/_T!?"W_`("7/_R17U=^WPH;X`?$A6B\]3/"#%@'

/MT/'/'/3GBOR-L-&8:?>+'9OI]X?.\B5G4;0Y?:H*,<*,@[>F>0">:VPU.

M,HMRC?4_1^'L)0Q&&;JT%-W>KOT4=-FM;NUVC[$_X>'_`!'_`.@+X6_\!+G_
M`.2*@M?^"C?Q%NVEV:#X9$:,4$C6EQM<@D,!_I&>"".0/;-?(6DZ-]EU"*5+
M6YM@N=S2+;1JPP1C]T,MR0<'`XSU`!GT6Q6TL;R-]*\@NTC&/;%^^4LQ5>&(
MX4@8.!SZ5TJC3?V3Z2EEN$JRC?"J*]Z^CZ)6Z=;OMMI?8^O?^'A_Q'_Z`OA;
M_P`!+G_Y(H_X>'_$?_H"^%O_``$N?_DBOCNPT9AI]XL=F^GWA\[R)6=1M#E]
MJ@HQPHR#MZ9Y`)YJ.QT1H;@/%:7-N0K`F0V\"L"I&-T*[NI!]!C/4`$]E3T]
MP2P&$]R^#7O>NGKI?3T/L:3_`(*)?$A(V8:%X8D(!(1;6XRWL,W`'YUZ!^SC
M^VKXR^,GQ2\->'M3TK0K72]52:1Y+2WF290MM)*N"TS*.4`/!XS]:_/W2].>
MQN_,CTYT159BSI!'(3C[H,3`,#Q\K`#/.[@"O;OV$["?3_VF?AZOV*2$"UO8
M[F0NAS(+.7;N^8DX"MCK@,`,<@9U*4%!M1Z,\_&8+#1PU2I'"\ONRZ/1Z6>W
MFWZ*Y^LE%%%>.?EH4444`%%%%`!1110`4444`%%%%`'SI^U?_P`E]M/^P9=_
M^E2UYK7I7[5__)?;3_L&7?\`Z5+7FM=<=C![A1115""BBB@#[4\9>)-(T?Q-
MJ,-_JME8S-/(XCN;A(V*[V&<$CC(//M6)_PG7AK_`*&'2O\`P-B_^*K0U7_D
MJWBC_KA;_P#H^[KP'0/VKO[<^#_PRU]-.QXJ\4:KI.EWVE^1_P`>/G7%LES<
MO%YI>.`QW$312,6S]LLBP(F&>2VIM?0]N_X3KPU_T,.E?^!L7_Q5'_"=>&O^
MAATK_P`#8O\`XJN?TOXP>&GO8-.NM>@N[^XU"ZLU>VT^>*&!DO9K6..=CN6%

!'D9%N)8G\D'(0:/A/XI>&O&VHR66D7L\TPB-Q"T]E/;Q7L`(!GM9)45

M+J$%X\RP%TQ+$=V)$+(9?_X3KPU_T,.E?^!L7_Q5'_"=>&O^AATK_P`#8O\`
MXJN%\#_$S5_%?Q$U/2I-7\,0_8[J]@N/"+;L;:&9XHKYSYK>9'-MAD5#!
M$!'=HPE?8/.L>!/V@?#7B[X:1^+[QI]$2#PW;^)]4L[BVG+6-K*LYW`F)3*N
M;6X"LB_.L8=1M="Q8#LO^$Z\-?\`0PZ5_P"!L7_Q5'_"=>&O^AATK_P-B_\`
MBJ\S\(?':]\5?$33?#WV+[+!>:KXAMM_]FW3[(M+FBMMGF\(?-DE\[[1_JDV
M_9L-*?,'M%&P&'_PG7AK_H8=*_\``V+_`.*H_P"$Z\-?]##I7_@;%_\`%5N4
M4AF'_P`)UX:_Z&'2O_`V+_XJC_A.O#7_`$,.E?\`@;%_\56Y10!A_P#"=>&O
M^AATK_P-B_\`BJ/^$Z\-?]##I7_@;%_\56Y10!A_\)UX:_Z&'2O_``-B_P#B
MJ/\`A.O#7_0PZ5_X&Q?_`!5;E%`&'_PG7AK_`*&'2O\`P-B_^*JWI7B32==O
MXK'3=4LM0O9<^7;6EPDLCX!)PJDDX`)^@-:-7-)O_P"S-0BN<XV9Y^H(_K36
MKL(D_P"$>U3_`*!MY_WX?_"C_A'M4_Z!MY_WX?\`PJEJ/[17A[2OB5HO@2YU
M.&/Q'JVGW.HVUL9XP3'"T:D%2V_<X>1D`4@K;SG(\LUU?_"=_P#33]:U]FNY
M',SY&_:O_P"2^VG_`&#+O_TJ6O-:]*_:O_Y+[:?]@R[_`/2I:\UK6.Q#W"BB
MBJ$%%%%`'V3JO_)5O%'_`%PM_P#T?=UY'HW[,>D:+X9\/V,.H9U73+7P]:R7
M_P!D0)+_`&9<VTSR+&#N22Y6TMXI&+M\MM;`[O)4'TSQ_#:7/Q`U=$TS5[R^
M0`RRZ;?&V7RS+-L#?OX]QR).QQGK6+_9H_Z`7BG_`,'A_P#DNN7J;(Y_2?@G
MJ&C:]H]];>*?+@L]5U/4I$73U$^V\OI[MX(I0_RQOYR1S+*LRN+>%XUMY460
M;7PO^'VM_#W3M/T6X\2P:EX;T;3X]+TFQ@TT6\H@C")&]U*TDGG3*D:@-$L"
M$O*3&<H(YO[-'_0"\4_^#P__`"71_9H_Z`7BG_P>'_Y+I#(9?A]K>I^-])U3
M5_$L&H:)HNH3:II=DFFB&\2>2">#9-<"39)"D=U,JJL*/\L1:1RKF3@M5_9D
MU"7P+>>%=(\:?V39WWA6/P?=W+:4L\[6%L+E;+83(%60)=.D[%6\T#,0M6P5
M]#_LT?\`0"\4_P#@\/\`\ET?V:/^@%XI_P#!X?\`Y+H$4/"'PA_X17Q1INL?
MVM]J^Q_\)#^Y^S;-_P#:FIQ7_P![><>5Y7E]/GW;OEQM/HM<3_9H_P"@%XI_
M\'A_^2Z/[-'_`$`O%/\`X/#_`/)=*PSMJ*XG^S1_T`O%/_@\/_R71_9H_P"@
M%XI_\'A_^2Z+!<[:BN)_LT?]`+Q3_P"#P_\`R71_9H_Z`7BG_P`'A_\`DNBP
M7.VHKB?[-'_0"\4_^#P__)=']FC_`*`7BG_P>'_Y+HL%SMJ*XG^S1_T`O%/_
M`(/#_P#)=']FC_H!>*?_``>'_P"2Z+!<[:LCQ;?_`-F>'KNYSC9LY^KJ/ZU@
M?V:/^@%XI_\`!X?_`)+JIJOAR/5K"6UDT3Q2B28RW]KI)C!!^[)<LIZ=P?SY
MIK1@?#'Q#^"OQC\4?M&'XJ:;XI\-V]U87J-I-O-?7JK%:1G"0.JQG"R)N\U$
M8*QEEQ@,:^RO^$\_Z:?K4?\`PJFR_P"@7XI_\"K#_P"+H_X539?]`OQ3_P"!
M5A_\76O,9V.6_:O_`.2^VG_8,N__`$J6O-:^M-3GL-=UJ?5]6^&PU;4905%Q

BW=HT+%BB?Z3A1N))QR>,DX&(_)T+_HDMG_`-^;;_Y)IJ:2#E/D^BOK#R="

M_P"B2V?_`'YMO_DFCR="_P"B2V?_`'YMO_DFGSH.4^3Z*^L/)T+_`*)+9_\`
M?FV_^2:/)T+_`*)+9_\`?FV_^2:.=!RG*?M)_$6#X9W?C"^;7++PY>:C)IVC
MV6J7TL2)9S75[<0_:0LGRR>0CO<&,X#+`X)5<L.-^'?Q_P!;\9:5X7T?PNGA
M[Q[K;Q:Q!J&L7&N"RMYFTRZM[4W`%O;3A6N1<Q7*Q@!42089@5)[+XS_`/)Q
M?@;_`+&/_P!Q>OUPO@K_`)/`\5?]Q?\`]-_A.LF4@\0_'35_B/X9TC5?"&F?
MV?X9_M_PM#>ZE>:F]MJ*?;+G3+KRDMXXG22-H+V&-RTZ9W3+M95!DL?\-0ZS
M+X,\$:M%X!G35/%VGOJ]CIIGN[P1V4<=L7DD:QLKEU8R72;!Y>TQX9WBD;R!
M\<>)_$FKZ'\9OV4M`TW5+W3]!UG0/!E]J>EVMP\5K?7*W"(LT\2D+)($MX%#
ML"0(8QG"+CT7]J3Q)J_@C]A'X$Z_X<U2]T#7DM='L5U32[A[:Z6VETMGEA$J
M$-Y;O!"S)G!,49()48+(+GTYJG[2":=XB\+VX\-WO]E:M_9L%ZTL%X+[2+N]

-(;:Y1;5K:&1?/MV=);J.0+)E4;,8ETOB%XKU"Y\6:QH<&MZUX8T[0M*L=6

MN;WPUI:ZGJ-VUW<7,$<20M;W&(T^RNS;8F9O,0[HUB?S/DG]J;4KOP5^V[\&
MO"'AVZGT'PG?2^'I[O0=,D-M87$D>I&*-Y($(1V6.VMT4D$A8(@.$4#T[_@I
MIXDU?P1\&?#>O^'-4O=`UY-?CL5U32[A[:Z6VEMYWEA$J$-Y;O!"S)G!,49(
M)485EH.YZ<W[1MCI>H^#;73EG\8>&]4BTNWE\1QQ77VE9[TQI;F=([);2)G$
M]M*R23P.$FRL/,:R:-A^T'%J&E-,-*@MK^RT66[U>VN+Q]NGZG]J:SATX%(6
M:X:6Z@OH5>!)"6MAM1_.B#?"OB?Q)J^A_&;]E+0--U2]T_0=9T#P9?:GI=K<
M/%:WURMPB+-/$I"R2!+>!0[`D"&,9PBX^O\`QY^[^'/[4MRORW-E=37UK,.'
M@N8/#NFS03(>JR1R(DB.,%616!!`-%D"9H^&/VB_$GCK6+30=!\$V0\0K]O_
M`+0@UO4[S38(/LRZ>X\LRZ?Y[[TU.`_O((L%'QN78[66_:BL;G4?!L^G:+/?

&_$$6E^;>1I=/<Z=/J!C%O#.([9[2-@+BV=EDNT<)+E4?,8E^:_^"</B35_

M%VL66K:[JE[K6JW'_"2^=?:C<///+M7PTJ[G<ECA54#)X``[5YUXG\2:OH?Q
MF_92T#3=4O=/T'6=`\&7VIZ7:W#Q6M]<K<(BS3Q*0LD@2W@4.P)`AC&<(N'9
M"NS[9^,/Q`\2R_$&S\"^&+Z?1]2FBLY+:XMY8(C=3W":C((Y9I[:Y6&&.'2K
MECM@D>226$`Q*KE]']GWXC:KXQTZVM-5N9]2>?PWH_B>"^O/*%R(]0%P?LTO
MDQQ1NT36SXE2.,DB*4W(SR6?&_AO2/$GQP\/:3J^EV6JZ5JWA75?[1L;VW2
M:"]^S7NF-;><C`K)Y33SE-P.PS2%<;VSWGA/P3X=\!Z=)I_AG0-+\.V$DIG>
MUTFSCM8FD("ERL:@%B%49ZX4>E3T'U/.O#<7C76];UJST_QU/J6FB)[:^UJ?
M2[98;/4%F020Z6B*-RQI]I1S<M<".46Z[IFBNHZQ3\0_%.E_`7XO:C/J%[%X
MC\*6NH?8Y-7AM#J5K(FFQW4?VL6Z_9'D#2[U\D,GE-"'_>"4#\^_V2OB1XM\
M0:/\6-)U3Q3K6I:5H?PVU*^TJQN]0FE@T^YM6MVM9H$9BL4D+*IC=`"A4%2,
M5];?!S4KOQ!_P36\3Z[JEU/J6MZKX;\0SZAJ5Y(9;F\D074*/+(Q+2,L4,48
M+$D)&BCA0!35@N=I;_%7QKI?COP38>(-:@TK1-`U"ZT'Q7?7*VRQ:M<+IE[>
M)=.<#[(JV]I9W9"'9C4?++9MW!T='_:AUG5=5M/#Z^`9_P#A*;K4+>SCLWGN
M[*W$<]K?S13,]]96TNU6TZ82;86`0AHS-(##7:?&33;36?$_PIT_4+6"^L+O
MQ)=07%K<QB2*:-M"U561U8$,I!((/!!KX-_8#\;>(O'GQ)L]0\3:_JGB*_C\
M2:?`EUJUY)=2K&-%\1,$#2,2%!9CCIECZTM&KBV9^@GQ;N;ZTTZP:T\3ZIH!
MEE:""S\/V=K/J>IW3#,5O";I)(@NU9F?*#`42-+%'%*6\Y_X3CQW;3ZAJNKZ
MY!;W^@>)-`\,7FAZ5;Q'2KMKU-+^U3;I8S<[E?4IC&5E10(8=R-^\W^#?\%3
MO&WB+P'J/PKU#PSK^J>';^2+5X'NM)O)+65HR;%BA:-@2I*J<=,J/2JW@WQ)
MJ^I?M4?LVZ3=ZI>W6E>(?`.G:[K-C-<.\&IZBEC<M'>7*$[9IU:VMB)7!<&"
M(@_(N!+0;/8(_''Q.UKPEX*N=#US5-6U?QOX;@\3RV=I;Z;'+IBI>:4;F'3S
M-&D>W[/?W0`NVE;,4/SYW%_:/@]J\^I:)JEO?ZIXAU#5]/U`VU_;^)HK!+RQ
MD,4JPDV*+`RF*6*4%2Y_?89@043XO\`AEJ5WJ,'[9$%U=3W,/@J*]@\+QS2
M%UT&.)[Z2)+$$_Z,J/9VCJ(MH5K:$C!C3'T5^P9J5WX@_9>\*:[JEU/J6MZK
M+>SZAJ5Y(9;F\D2[EA1Y9&):1EBABC!8DA(T4<*`!K0$?05%%%04%%%%`!11
%10!__]EY
`
end

begin 644 ClipBoard-1.jpg
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

B7&KQWVL3V\.EQ7,MQ>MI]U]C<VZ/)<1PW`C\J>:-8IBT,3/(/)E!7,;A=K

MPA\??#_CO[7_`&'J?VS[-L9MT,D7F1/N\N>+>J^;!)M?RYX]T4FQ]CMM./C/
MQ5\-IO%6BZIH$OB6&#P_++J]]8Q+IY-U;W>HPWD<SRR^=MEB7^T+DK&L<;?Z
MH%SM8OZ-9:@+/Q[K/B;[;N;4=,L=.-MLQY?V>6[DW[L\[OM>,8&-G4YX?(P/
M3?AM\</&FO\`A;0O'WB#6/"MKX+U?2DUB:Q^R36=QH]O);^>K27CW$D=QY8V
MQN3%;@@M)E-GE._5_P!KC2%U/PJMC>?8+&YU:2VUK_A(["YTR>SLUTR_NUN/
M+N5B9$+V6/-93&0DP!W(2OSS9>%=5/@5O`6H>+(G\#QZ/)H<-M8::(+][4V[
M6R":XDEE1V6-MQ,<,>9$4\)NC;/\3_#:;XB7<][XM\2PW-[=1&QN6T;3S9QM
M:?8M2M51%DFF*R@ZK.YD+,I"(NP<L3D8'UUHG[3GA;7KVRL8;Z]M-1O+H6<%
MAJFEW=A=-(8)YU)AGB1UC:.UN"LI4(QA=0Q92M5Q^U;X+:]U.U76)WFTV)Y;
MG9I]TRJ5O9;$1JPCP\SW,$T4<*DR2LA\M7!!/R[=>&]:U+7X_%=[XHTY_&5K
M);&SN8-)D33TCABO8E62V-RTCL5U*[RPG09\GC",)*WAGX?2^&M/\40'Q1_:
ML^N6QMY9M1TV&5)<ZCJ%ZXN(N(Y4D_M!HI$58\JK%#&778<C`^UO#WQ<T_Q5
MH]OJFEWGVBSGW!69&C=&5BKQNC`-'(CJR/&X#(RLK`,"!H_\)W_TT_6OE_PE
MXANO#OAO3]-O-7FUBYMH@CWDY.Y^>F69G*J/E!=W<A07>1]SMK_\)W_TT_6G
MR`?1/_"=_P#33]:/^$[_`.FGZU\[?\)W_P!-/UH_X3O_`*:?K1R`?1/_``G?
M_33]:/\`A._^FGZU\[?\)W_TT_6C_A._^FGZT<@'T3_PG?\`TT_6H[GQNTMO
M*B2E79"JE3@@D=J^>O\`A._^FGZU;T?QI]JU:RA\S/F3HF,^K`4G#0:/7?[<
MU'_H(77_`'^;_&C^W-1_Z"%U_P!_F_QJC17F79O8Y;XA.TO[17P3=V+NU](6
M9CDD_P!FGDUN_L[?\ET^+_\`UY:%_P"@7E8'C_\`Y.'^"/\`U^R?^FTUO_L[
M?\ET^+__`%Y:%_Z!>5T1W,GL?15<A\0_^/)O^O9__1T%=?7(?$/_`(\F_P"O
M9_\`T=!53^%DK<X3]C?_`)-X\/\`_7[JO_IRNJ]JKQ7]C?\`Y-X\/_\`7[JO
M_IRNJ]JJQ!1110!\W?$OP-9>-+VP^V7%U;_9K:+9]F=5SNABSG<I_NBN-_X4
M;HO_`$$=5_[^Q_\`QNO5=<_X_8_^O:W_`/1*5F3SQVL$DTTB10QJ7>1V"JJ@
M9))/0`5S*I*.B9M9'GO_``HW1?\`H(ZK_P!_8_\`XW1_PHW1?^@CJO\`W]C_
M`/C=,TWQAXU\5'1;W1]-\-:9::W]I?1-$\1:R+76?$$-N-\DMC"%*,K1E2I9
M@`"'8B-E<^CPQ7L=E9OJ%FVGWDUO'-+:.X<P.R@M&6'!*-N0D<94U;G46[$N
M5GG?_"C=%_Z".J_]_8__`(W1_P`*-T7_`*".J_\`?V/_`.-UHVGQ7TB\\'^'
M-?CM[T_V[=6UC;Z7L3[=%<R2;)89(MW$EMMF:=`28EMIR0?+-=I4^UGW'9'G
M7_"C=%_Z".J_]_8__C='_"C=%_Z".J_]_8__`(W75Z)XLM/$CJ^EQSWM@);V
MVEOU4)%#<6MQ]GEA97(<L9%E`*J4(A8EAE-^U1[6?<+(\Z_X4;HO_01U7_O[
M'_\`&Z/^%&Z+_P!!'5?^_L?_`,;K:E^)NB6=EXXO;V2>QL/!LK1ZK<RQ%E55
MLH;QY$";F91%<+VW;E8`'@D\)^.+[Q#J,EEJ7@WQ#X4F$1FA;5A:RQ3JI`<"
M2UGF1&!=/ED*,P)*!PDA0]K4[A9&+_PHW1?^@CJO_?V/_P"-T?\`"C=%_P"@
MCJO_`']C_P#C=>BUSNM>-H-'\6:1X=73[V_U'4[6>]B%MY01(8;BTAE9R[K]
MW[8CX&25CDP"VU6/:S[A9'.?\*-T7_H(ZK_W]C_^-UR^M:#\,/#>IS:=J_Q`
MM=+U"';YMI>ZQ:0RQY4,-R,`1D$$9'0@U[;7Y6?MP7]S9_M/>*(XK5)TG:SC
M4^;M8-]AB;D;<;<+R<Y]`>^]%RJRLY'MY3@*./KRIUI.*2OHKZW26GS/MC;\
M'O\`HJ&E_P#@_LO\*-OP>_Z*AI?_`(/[+_"ORQN]=GMIE@%D6G"!Y%_>,HR6
M`P41LYVD\A>,=\@,OKVZO;?3A%`8A<3,DD<DKP-\JN0`0NX`E<YP#@`$<G'9
M[+^^SZB7#F`5U&M)M=.7NTNW=J_7R/U1V_![_HJ&E_\`@_LO\*LZ;>_"+2]1
MM;R+XG:0\EO*DRK)KUD5)4@@'&..*_++4+^YL[BVCBM4G2=O+4^;M8-M9N1M
MQMPO)SGT![U;O79[:98!9%IP@>1?WC*,E@,%$;.=I/(7C'?(#='O-FL^&<!2
M;4ZTE;3X>OK8_9/_`(7A\./^B@>%O_!S;?\`Q='_``O#X<?]%`\+?^#FV_\`
MBZ_&R779T@@D%D8PX)=KCS$5,'!R0A('&<N%X(/KAKWER^HV,L$6]Y[:7,?V
MC]SPT>'R,C&"<$+D[AD#G&/U2'\Q#X=P7V:TGM]GHVDNGFC]D?$/B#2_%/QR
M^!>IZ+J5GJ^FS7TZQWEA.D\+E=/9&"NI(.&5E.#P01U%==^SM_R73XO_`/7E
MH7_H%Y7R_P#LC727OAC]EZX0$)-J>KR*&Z@'[41FOJ#]G;_DNGQ?_P"O+0O_
M`$"\KFMRRLO/\SX#%TXT:U2E!W49-)]TNI]%5R'Q#_X\F_Z]G_\`1T%=?7(?
M$/\`X\F_Z]G_`/1T%$_A9R+<X3]C?_DWCP__`-?NJ_\`IRNJ]JKQ7]C?_DWC
MP_\`]?NJ_P#IRNJ]JJQ!1110!XCKG_'['_U[6_\`Z)2L75=.CU?2[RPF9UAN
MH7@=D(#!64J<9SS@UM:Y_P`?L?\`U[6__HE*SZXGN;K8X&S_`&5/A]XHU_X1

-_&`EO_`!E\.-/M[&RETZ^-M9W"6Q+V8N(G/F,T#G?NBVB1BVY64B)?4->U

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

T?\+(\)?\`"8?\(G_PE.B_\)5_T`_[0A^W?ZOS?]1NW_ZOY^GW>>G-;5_J

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

PV=SJ%K;W<V/+MY9E61\G`VJ3DY/`QWJ[5.3>X))'R38:9X.TJP;5++PM

MJEGX\;Q?+KC>)+?X>:TEX;*36VNI(3<C3_-W-9.T#+G:=Q0DH2:Z/5?V6;_7
MI_$VEW-Q!%INHRZ[=6VM2ZYJ5TT,FI)>*0FDETM(6C%](OFAW+K&QV(TY:+Z
M3HHY@L>4R^"?%OB?Q-X>\4:SI?AC1]5T;5;><6FFW4UT]U;"VO;9_,O&@B;Y
M%U"22.'R2`T3`R?Z06A\QU+]F7Q?XK\0V,OB232]8M(8H;?4;K4O$%]J"ZR!
MJ^EWD\GV":'R+)9(K"?-O"S1[I4CSL0,/J2BE>P6/G7QMIFM_";XK:EX\L[#
M_A(+G5KJ]2UTR"RU.9%MI;+1HGDEFL[*Z,4BR:60L;)AUFW!P8V4\GX%_9@\
M7Z'X>\-:E<PP2:O::?!:R:-%XHOM$:,-I&C6TI>\L5=F9)M*D'E`-&ZRJ^\%
M`I^MJ*?,%CQ?X@?!*?5/A_\`#3P[8:!X8\3V?A*Z@>;1==>6WTZZACTZYM%5
M=\=VPVO-&ZB3S#\G+EOF)H_PO\6^"H_"6JZ-%HNJZKI-KJ]B=%N]0FL[*UMK
MZ\@NDA@G6WE8QVJVT=M&GDH&CPP$6P1GVBBE<+'@WPW_`&>=7^'WBKPMJ']I
MV5_9Z':VNC?9L/'!-;0Z6MO_`&EY&"%U-IE\CS=Y`LSY>2U>\T44F[CV"BBB
M@`HHHH`****`.4\?_P#)P_P1_P"OV3_TVFL^X^&7B;_A+?$FOZ!X\TGPS_;D
M5I;S6]UH\M[)Y=N&V_-N55RSDD`$X5?F&6%:'C__`).'^"/_`%^R?^FTT6'A
MS2=7USQ'-?Z797LRWR()+BW21@OV6`XR0>,D_G6M[(A*YG_\*Y^(O_18-#_\
M)9__`(Y6Q\-OAKJ?@[5?&FMZQXLL_%.H:S8VD3O9Z:]FL0@F^7(9B"2)<<8^
M[[U9_P"$'\.?]`#2_P#P"C_^)K=\-:'IVC66M?V?I]K8^9;)O^S0K'OQ-'C.
MT#.,G\ZGF'8T?V-_^3>/#_\`U^ZK_P"G*ZKVJOF#]EWQ/<Z-\!M$`EG*'4]6
MC1(FC4*!?2M_%&Q.2Y[UVWAOX[:9XOGUJ'1=4EU)]%U!]*OS;S0LL%TB([Q%
MO(P642H&P3M;*G#*P&[FD9\K/::*^?O@M\7?$'BWX76&OZY>RW5_=ZCJ4)^S
MI#"B)%=.B*!Y39PNU<GGY>222:[+_A8=Q_>O/^_L/_QFDYI:,.5F!KG_`!^Q
M_P#7M;_^B4K"URZN;'1=0N;.'[1=PV\DD,6TMO<*2JX')R<#`YK=US_C]C_Z
M]K?_`-$I6?7/U-5L5/@1\"/ASXO^"V@ZOJ^@V'B?6-=L_MNI:MJ&+F\BNY1F

**?_60>3)OC5496C9"2?,W,=C4-$L/#D5CINF`I9VMLEO$AD,A$<9,<9+$D

ML6C1&+$DL6W=ZFT[79=+TU+&W@@BMXT$:1QAHT50``-B$(W`_B4YZ'(XJA<7
M$EU*TLC;G/M@`=``!P`!P`.`*N4N9$I6/E?1-3:P\)?%#QEK&C>.]#E\5W
M2ZC)XQN(-,O([>\O(DMH(8[UFA98E"*_V90ABWJ=P0G-\.?'76?`_BOQ8MPN

*KJ\U"33M+TZ22[GBCD&M^)F)*P0W$JJ+:P5`8H7.(H5(5%+I[!H?PG\2+

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
M&?AZ\\2+++`VCV^J0/>"2,9$,(??N4(VX8R-ISC!H`Q?[=^+?\`T)/@O_PL
M;O\`^55']N_%O_H2?!?_`(6-W_\`*JNT3Q)I$FCV6K+JEDVE7OD?9;X7"&"?
MSV58-CYVMYC.@3!.XNH&<BM&@#SK^W?BW_T)/@O_`,+&[_\`E51_;OQ;_P"A
M)\%_^%C=_P#RJKH]%^)'A+Q'XBOM`TGQ3HNJ:]8>9]KTNRU"&:ZM]CA'\R)6
M+)M<A3D#!(!YKHJ`/.O[=^+?_0D^"_\`PL;O_P"55']N_%O_`*$GP7_X6-W_
M`/*JN]O]2M-*@6>]NH+.%I8H%DN)`BF21UCC0$G[S.ZHHZEF`&215B@#SK^W
M?BW_`-"3X+_\+&[_`/E51_;OQ;_Z$GP7_P"%C=__`"JKT6BE<9YU_;OQ;_Z$
MGP7_`.%C=_\`RJH_MWXM_P#0D^"__"QN_P#Y55Z+11<#SK^W?BW_`-"3X+_\
M+&[_`/E55G3=9^)\NHVJ:AX/\(VU@TJ"XGMO%=U-+''D;F2-M-0.P&2%+*">
M-PZCO**`/#_VQO\`D/?#O_??_P!(%KQJO9?VQO\`D/?#O_??_P!(%KQJNJ&Q
M@]PKWK]EO_CR\<?]>UK_`.CJ\%KWK]EO_CR\<?\`7M:_^CJ)_"P6YZ#X'_Y$
MO0/^P?;_`/HM:VJ@\'>%]9M?".B0S:3?131V,"/&]LZLK"-0001P0:U_^$>U
M3_H&WG_?A_\`"N9IW-D9]%:'_"/:I_T#;S_OP_\`A1_PCVJ?]`V\_P"_#_X4
MK,=PUS_C]C_Z]K?_`-$I7DO[2?\`R0OQC_UY?^SK7K6N?\?L?_7M;_\`HE*H
M+M#HS113;&#A9XED7<#D':P(R"`1QP0".13O9W%T/?:\A\9_\A)/^VW_`*4S
M5G_VY<?\\[/_`,`H?_B*KWE]-?M&TQ3]VNQ1'&J*!DG&%`'4D_C5RFI(E1L?
M+?\`PDFD?\(;_P`(-_:EE_PFW_"R?MW_``C7VA/[2^S?\)9]L\[[-GS/+^R_
MZ1OVX\K]YG;S7._%WQKXP;X,^,+_`%/Q%_:6GZY=>,_#2:5]AABAMK2UM]9>
M&3>J^8\X-@D>_<(S$V#$9`9F]Y_X4+X9_P"@GXT_\+K6_P#Y,KT6IN.QY!\.
M/&/BO7OB/>Z-?RSRVNA2ZY!K(:U1(HY);Z";1D64*%D;^SG9B(V8J'7SL.RY
MVM"_Y.(\;_\`8JZ!_P"E>L5U?A/P=I7@K3I+/2HIU2:4SSSWEU+=W-Q(0%WR
MSS,\DK!51`78D(B*,*J@;5*XSY!^'_C7QA\/?AG\$K"/Q%]MMO$.@:%-Y!L8
M4CL(5U+0[/R8?E+GS+?491*TC.2ZAXO('R5[1\!_&NH>+_\`A)%O_$7_``D,
MEG=*K,EBL,=O(VXM$A55:+:OEAK.X4W5LX<2R3))#(WJU%#=PL?/OP@^)O@W
M2/@MX"T>:2#Q)XU\*^&X))O#&DQ+?:Q875MIQ2>,VZY>WF`\VW_>>7\\HB)#
M2!6\QTKX_P"N2:Y:Z#J_Q>T6RT'^U;'[5XOT?6]+U+R(Y['6'-N]RVGP6T?[
MW3[8A3`7'FG]X1(JI]H5G:IX>T_6K[1[R]M_.N=(NFO;)][+Y4S02P%L`@-^
M[GE7#9'S9QD`AW06/EK2/''B6'QC<^)9-<GCFU"+P]H]C.UO`(M=L%\675HU
MXN8\2,UG<6SEX-L8&HJX50\&TA^-'C6\T;06T?QI!?\`B#5HM+?7[.YLK:XB
M\)ZE/JVEVYT]X85CDC5EN#%<R-.1:_+(C1R,?K:BBX6.#^%>KZK<7?C30]
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

.-\'(W(IZ@44541,K?MB_\CQXH_P"Q53_TR>,:/C1_R;O+_P!C5\0/_23Q

M/115]B3T;Q[_`*7^U1IFDS_OM*U>UTFQU&QD^:"]MFL?%3-#,A^62,LB$HP(
MRJG'`KB_@UXDU>3X'W&K-JEZVJWOBKP-]JOC<.9Y_/LO#:S[WSN;S%=P^2=P
M=@<Y-%%2,]6T/X;^$OB7\0OBA<^+_"VB^*KG3M?@L;*;6]/AO'M;;^R=/F\F
M,R*Q2/S)II-BX&Z5VQEB3Y!^R9J5WK/Q)T'4-0NI[Z_N_#<T]Q=7,ADEFD;1
M?!S,[LQ)9B222>23113Z"ZGV/1116984444`%>:_'3_D'>#?^QMTG_TH6BBG
I'<3V.9_;&_Y#WP[_`-]__2!:\:HHKIAL8O<****L04444`%%%%`'_]DH
`
end

···

M%%%%`!1110!Q>O:E::1^UG<75]=0V5LGA/5%::XD$:`M=1JH+$@<D@#U)`K: MT/Q!X*TNP,GBZU=WGFN&VF#`,DK2%1^^YQOQGC.,X'2O!OVO=.M=3^/%E%>

Hm, something is wrong (?)

I use Gmane and forte agent.
maybe the files don't get over gmane (?)

All the same, i put it on:

http://mitglied.lycos.de/drpython/ClipBoard-2.jpg
http://mitglied.lycos.de/drpython/ClipBoard-1.jpg

···

On Thu, 24 Mar 2005 10:24:02 +0100, Franz Steinhäusler <franz.steinhaeusler@gmx.at> wrote:

(I attach 2 screenshots)
both with refresh problems.

--
Franz Steinhaeusler

Hello Franz,

splendid work :slight_smile:

I like this coding style also (it is exemplary and very clear presented)
and also the source documentation.

Thank you a lot! I am really happy!
Thanks to have tried the module!

2 little things:
(also win xp, py 2.4, wxpy 2.5.4.1)
(I attach 2 screenshots)
both with refresh problems.

I didn't get the screenshots... or did I misunderstand you? Anyway, I get
exactly the same weird refresh behavior as you get, in the 2 simpler demos.
I also am on a Win XP machine, but I can see the refresh problem also on
a Win 2000 machine.
Toni Brkic has not reported any refresh problems on Linux Suse9.2... so
probably it is Windows related (and it is surely my programming fault).
The problem is that I am not able to find which window/panel should be refreshed
and WHEN it should be refreshed... I have 2 OnPaint event and 3 OnSize event,
and I'm becoming crazy in order to find the problem.

If someone (more smart than me in Python/wxPython programming) can find/suggest
a solution/workaround, could please post some comment?

Thank you a lot.

Andrea.

Ok, I've seen the screenshots. I got the same behavior On XP and 2000. Maybe
some kind soul (and EVT_PAINT/EVT_SIZE guru) could take a look and find
the problem (or a workaround)?

Thanks Franz!

Andrea.

···

(I attach 2 screenshots)
both with refresh problems.

Hm, something is wrong (?)

I use Gmane and forte agent.
maybe the files don't get over gmane (?)

http://mitglied.lycos.de/drpython/ClipBoard-2.jpg
http://mitglied.lycos.de/drpython/ClipBoard-1.jpg

Hello Andrea,

frankly, I'm not versed with EVT_PAINT, ...

to reproduce the redraw bug easily; it happens, when:

- Start
- Menu Foldpanel => Create with wxFPB....
- Expand "misc stuff"
- Collapse "caption style"

if no redraw bug happen on wxGTK, then I consider this as wxMSW failure.

On :

there is a grayed out link for "download demo.zip", which is not
accessible (its not downloadable for me).

So I could verify with this original demo
(I have already compiled the foldpanel library and the "foldtest"),
if the same effect happen on wxwidgets.

···

On Thu, 24 Mar 2005 10:47:43 +0100, andrea_gavana@tin.it wrote:

Ok, I've seen the screenshots. I got the same behavior On XP and 2000. Maybe
some kind soul (and EVT_PAINT/EVT_SIZE guru) could take a look and find
the problem (or a workaround)?

Thanks Franz!

--
Franz Steinhaeusler

Hello Franz,

frankly, I'm not versed with EVT_PAINT, ...

I honestly tend to agree with you, but keep in mind that Jorgen (the author
of wxFoldPanelBar) has proficuosly used methods like Freeze() and Thaw()
in its OnSize methods, while I was NOT able to use them in wxPython. They
do not work as expected (at least not as I was expecting).

to reproduce the redraw bug easily; it happens, when:

- Start
- Menu Foldpanel => Create with wxFPB....
- Expand "misc stuff"
- Collapse "caption style"

Yes, I got exactly the same behavior this morning, doing the same actions
as yours.

if no redraw bug happen on wxGTK, then I consider this as wxMSW failure.

Probably, but it is also possible that my code is not very clean/correct.
I have started to doubt it, but it can be, of course.

On :
Dovendi - solidsteel.nl is nu te koop
there is a grayed out link for "download demo.zip", which is not
accessible (its not downloadable for me).

Yes, I tried to download it 1 week ago, but it has never been there.

So I could verify with this original demo
(I have already compiled the foldpanel library and the "foldtest"),
if the same effect happen on wxwidgets.

How did you do that? I have wxWidgets at home and VC 6 (also Borland and
VC .NET), but I don't know how to put everything together in order to build
the demo...

Thanks for your interest!

Andrea.

Hm, it is longer time ago.

I downloaded Dev-CPP (with the gcc compiler) and followed the
instructions "Cygwin/MinGW compilation".

in:
wxWindows-2.5.1\docs\msw\install.txt

there is also described, how to compile in MS VC++.
if after compilation of wxwidgets, the minimal program
can be compiled and the exe started, all should be fine.

···

On Thu, 24 Mar 2005 16:58:30 +0100, andrea_gavana@tin.it wrote:

[...]
How did you do that? I have wxWidgets at home and VC 6 (also Borland and
VC .NET), but I don't know how to put everything together in order to build
the demo...

Thanks for your interest!

--
Franz Steinhaeusler

Franz Steinhäusler wrote:

Ok, I've seen the screenshots. I got the same behavior On XP and 2000. Maybe
some kind soul (and EVT_PAINT/EVT_SIZE guru) could take a look and find
the problem (or a workaround)?

Thanks Franz!

Hello Andrea,

frankly, I'm not versed with EVT_PAINT, ...

to reproduce the redraw bug easily; it happens, when:

- Start
- Menu Foldpanel => Create with wxFPB....
- Expand "misc stuff"
- Collapse "caption style"

if no redraw bug happen on wxGTK, then I consider this as wxMSW failure.

Ok, I also see this now on XP when following these steps. To me it looks like the "Caption Style" CaptionBar window is drawing itself with the "Misc Stuff" attributes. What may actually be happening (just a total guess at this point) is when the CaptionBar windows are moved that it there is a time when they overlap and so the "Caption Style" window is snagging the image of the other one, and since Windows doesn't think they need refreshed it doesn't do it automatically. Anyway calling refresh on the CaptionBar windows whenever they collapse or expand may help.

···

On Thu, 24 Mar 2005 10:47:43 +0100, andrea_gavana@tin.it wrote:

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

andrea_gavana@tin.it wrote:

Hello Franz,

frankly, I'm not versed with EVT_PAINT, ...

I honestly tend to agree with you, but keep in mind that Jorgen (the author
of wxFoldPanelBar) has proficuosly used methods like Freeze() and Thaw()
in its OnSize methods, while I was NOT able to use them in wxPython. They
do not work as expected (at least not as I was expecting).

Ah Ha! This was a good hint. I put in a self.Refresh wherever you had commented out self.Thaw, including the one in FoldPanelItem.ResizePanel that you apparently forgot, and now there is no refresh issue. You might want to try putting the Freeze/Thaw calls back in, and add a Thaw call in FoldPanelItem.ResizePanel and see if that helps. If not then just putting Refresh calls where the Thaw's are should do it.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Hello Robin & NG,

Ah Ha! This was a good hint. I put in a self.Refresh wherever you had

commented out self.Thaw, including the one in FoldPanelItem.ResizePanel

that you apparently forgot, and now there is no refresh issue. You
might want to try putting the Freeze/Thaw calls back in, and add a Thaw

call in FoldPanelItem.ResizePanel and see if that helps. If not then
just putting Refresh calls where the Thaw's are should do it.

The calls to Thaw() and Freeze() do not work anyway. The item (on which
I call Freeze() and Thaw()) are not correctly repainted. I left them commented.
Your suggestion to add a Refresh() where there were Freeze() and Thaw()
worked well, but unfortunately ONLY for the Extended demo. For the other
2 demos I still get the weird repainting behavior.

Curiously, it happens ONLY when you expand and then collapse the FIRST (at
the top) CaptionBar (or you push the button "Collapse Me"). I don't get
ANY weird repainting behavior if I collapse/expand the other 3 CaptionBar,
no matter the order I choose to collapse/expand them. So, in summary:

- To see the refresh problem:
1) Expand/collapse the TOP CaptionBar by double-clicking on it OR single-clicking
on the CaptionBar icon OR clicking the "Collapse Me" Button
2) When re-expanded, the panel associated to the top CaptionBar is not correctly
refreshed.

- Otherwise, if you DO NOT click on the top CaptionBar and do not click
on the "Collapse Me" button and do not click on the "Expand First One" big
button, you can not see the refresh behavior. In other words, if you leave
the top CaptionBar as it is (no expanding/collapsing) there is no refresh
problem.

Does this make any sense to anyone? Could I retrieve some indications from
this fact?

The Extended demo seems to work fine now.

I re-uploaded the files here:

http://xoomer.virgilio.it/infinity77/FoldPanelBar.zip

If anyone will try it (on whatever platform, and especially on MAC, where
Robin reported that nothing can be seen in the demos...), could please help
me find out where the Window$$$$ problem may reside?

Thanks to you all for your interest!

Andrea.

[...]

Hello Andrea,

- To see the refresh problem:
1) Expand/collapse the TOP CaptionBar by double-clicking on it OR single-clicking
on the CaptionBar icon OR clicking the "Collapse Me" Button
2) When re-expanded, the panel associated to the top CaptionBar is not correctly
refreshed.

I downloaded your new version

I tried it with the new 2.5.5.0 prerelease, and it seems to work fine.
Also with 2.5.4.1 in WinXP.

BUT: with 2.5.3 I get a LOT of refresh problems.
For what I saw, you use 2.5.4.1.

For double check: open the demo =>
Collapse top foldpanel ("Caption Colors"), then expand it again.

I cannot see any dislay problems.

BTW: what looks funny:

The sliders (for adjust first and second color) 5.3.1 are much smaller
(7x14 pixels) as in 2.5.4.1 and 2.5.5.0 (11x21) pixels.

Cheers,

···

On Thu, 24 Mar 2005 21:46:19 +0100, andrea_gavana@tin.it wrote:
--
Franz Steinhaeusler

Hello Franz,

- To see the refresh problem:
1) Expand/collapse the TOP CaptionBar by double-clicking on it OR single-clicking
on the CaptionBar icon OR clicking the "Collapse Me" Button
2) When re-expanded, the panel associated to the top CaptionBar is not

correctly

refreshed.

I downloaded your new version

I tried it with the new 2.5.5.0 prerelease, and it seems to work fine.
Also with 2.5.4.1 in WinXP.

BUT: with 2.5.3 I get a LOT of refresh problems.

This is probably due to the fact that before Freeze() and Thaw() worked
differently than now, and in 2.5.3 I could use them to avoid refresh/flickering
problems. Now I can not, at least on Windows. Something has been changed
somewhere (between 2.5.3 and 2.5.4) and it has had some unpredictable consequence
on other things (like this one, or, for example, wx.GetApp().Exit() not
working on my other main application...)

For double check: open the demo =>
Collapse top foldpanel ("Caption Colors"), then expand it again.

I cannot see any dislay problems.

For the extended demo, there are not refresh problems (for all the tests
I made). BUT for the 2 other smaller demos, collapsing and expanding the
Top CaptionBar causes problems. This is with WinXP, Win2000 and wxPython
2.5.4.1.
Anyway, I will also try as soon as possible the 2.5.5.1 prerelease... I
am really curious.

BTW: what looks funny:

The sliders (for adjust first and second color) 5.3.1 are much smaller
(7x14 pixels) as in 2.5.4.1 and 2.5.5.0 (11x21) pixels.

No idea on that... I did not noticed it, but now I can remember that in
2.5.3 they were smaller... that was a change in wxWidgets, I suppose, though
I don't see a specific reason, if not purely cosmetic, maybe?

Thanks you!

Andrea.

Hello Andrea,

[...]

For double check: open the demo =>
Collapse top foldpanel ("Caption Colors"), then expand it again.

I cannot see any dislay problems.

For the extended demo, there are not refresh problems (for all the tests
I made). BUT for the 2 other smaller demos, collapsing and expanding the
Top CaptionBar causes problems. This is with WinXP, Win2000 and wxPython
2.5.4.1.

Sorry, now I see, what you meant with the two other demos :slight_smile:
I haven't looked so close to the source.
Ok, I commented out the first demo, and got the behaviour, you
described.

To include two additional demos underlines this the thorough work, you
did.

Anyway, I will also try as soon as possible the 2.5.5.1 prerelease... I
am really curious.

Cheers,

···

On Fri, 25 Mar 2005 11:47:12 +0100, andrea_gavana@tin.it wrote:

--

Franz Steinhäusler

Project Member of DrPython

http://drpython.sourceforge.net/
http://mitglied.lycos.de/drpython/

Hi again,

I forgot one question in my last mail... Robin has pointed out that on Mac
the demos do not work very well... should I change the Extended demo in
something different (without MDI things, omly a frame and something else)?
Would it make any difference on Mac or there is no chance to get FoldPanelBar
working on this platform?

Thanks for every suggestions.

Andrea.

andrea_gavana@tin.it wrote:

Hi again,

I forgot one question in my last mail... Robin has pointed out that on Mac
the demos do not work very well... should I change the Extended demo in
something different (without MDI things, omly a frame and something else)?
Would it make any difference on Mac or there is no chance to get FoldPanelBar
working on this platform?

Start by making the main demo not use MDI, just put the FoldPanelBar in a frame by itself like the others. You may also want to move the demos out of the main module and just make them each be standalone test apps. That will make it easier to test the different things.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Hello NG,

    by following Robin's suggestions, I have updated the FoldPanelBar module
in this way:

1) I moved the demos out of the main module. Now there are 3 separate files
(called Collapsed.py, NotCollapsed.py and Extended.py) that performs 3 different
demos.

2) The Extended demo now does not use MDI things: is just a Frame, with
a SashWindow that contains the FoldPanelBar and a Blue panel (a dummy panel).
I modified the Extended demo to show how to use custom icons in FoldPanelBar
(I used the standard XP icons for Expanded and Collapsed states, I hope
the *.ico files will work on other platforms...);

3) As Robin correctly remember, the flickering is not so bad, but I welcome
every idea for improvements you may have;

If is there any kind soul that will try the demos with Mac, I will be really
grateful. Anyway, I welcome every "user experience" of FoldPanelBar users.
If you try it, please let me know what you think (I only have wxMSW here...).

You can get the source and the docs here:

http://xoomer.virgilio.it/infinity77/FoldPanelBar.zip
http://xoomer.virgilio.it/infinity77/FoldPanelBarDoc.zip

Thanks to you all.

Andrea.

andrea_gavana@tin.it wrote:

3) As Robin correctly remember, the flickering is not so bad, but I welcome
every idea for improvements you may have;

Try putting the calls to Freeze/Thaw back in and removing the Refresh calls. That gets rid of the rest of the flicker for me.

If is there any kind soul that will try the demos with Mac, I will be really
grateful. Anyway, I welcome every "user experience" of FoldPanelBar users.
If you try it, please let me know what you think (I only have wxMSW here...).

I found out the problem on the Mac. For some reason the CaptionBar windows were ending up with a height of zero, so they are effectivly invisible. Passing a size=(20,20) to the wxWindow.__init__ from CaptionBar.__init__ fixed it for me.

wxGTK had a problem with the .ico files (although it should work... maybe these are in an obscure format or something.) Changing them to .png files fixed that.

If you would like to contribute this to the wxPython lib there are a few more things I would like to see done in addition to the above.

1. Shorten the long lines where possible to be closer to 80 characters.

2. Embed the default images in the .py module rather than as separate files. The img2py tool can help you with this.

3. Remove the rest of the 'wx' prefixes from the identifiers, except for wxEVT_CAPTIONBAR since it is an EventType.

···

--
Robin Dunn
Software Craftsman
http://wxPython.org Java give you jitters? Relax with wxPython!

Hello Robin & NG,

Try putting the calls to Freeze/Thaw back in and removing the Refresh
calls. That gets rid of the rest of the flicker for me.

Done. I commented out self.Refresh() and restored the 3 calls to self.Freeze()
and self.Thaw()

I found out the problem on the Mac. For some reason the CaptionBar
windows were ending up with a height of zero, so they are effectivly
invisible. Passing a size=(20,20) to the wxWindow.__init__ from
CaptionBar.__init__ fixed it for me.

Done. I added size=(20,20) in wxWindow.__init__ from CaptionBar.__init__

wxGTK had a problem with the .ico files (although it should work...
maybe these are in an obscure format or something.) Changing them to
.png files fixed that.

Done.

If you would like to contribute this to the wxPython lib there are a few

more things I would like to see done in addition to the above.

1. Shorten the long lines where possible to be closer to 80 characters.

Done. Now the maximum length of lines is around 90 (only for the docstrings).
Others are below this maximum.

2. Embed the default images in the .py module rather than as separate
files. The img2py tool can help you with this.

Done. Now the 2 images (collapsed and expanded) are embedded at the beginning
of FoldPanelBar.py, and used if no other icons/images are supplied by the
user. Regrading the demos, I also converted the mondrian.ico and the other
2 problematic icons (collapsed.ico and expanded.ico) with img2py, and embedded
them in the respective demos.

3. Remove the rest of the 'wx' prefixes from the identifiers, except for

wxEVT_CAPTIONBAR since it is an EventType.

Done. Now the only wxTHING is the wxEVT_CAPTIONBAR.

I put the file at the same place:

http://xoomer.virgilio.it/infinity77/FoldPanelBar.zip

Thanks for your assistance and your help, Robin. And thanks to everyone
has tried the code and posted some comment!!!

Andrea.