a „oe€ã@sÂddlZddlZddlZddlZddlmZmZmZddlm Z ej dZ Gdd„dej ƒZ Gdd„dejƒZGd d „d e ƒZGd d „d ejƒZd d„Zdd„Zedkr¾ddlZe ¡r¾eƒdS)éN)ÚdocviewÚthreadÚwindow)Ú WinThreadé c@sVeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)Ú FontWindowú Python Rules!cCs6tj |¡||_d|_d|_d|_|_| ¡dS)Nré) rÚWndÚ__init__ÚtextÚindexÚincrÚwidthÚheightÚChangeAttributes)Úselfr ©rúBC:\Program Files\Certbot\pkgs\pythonwin\pywin\Demos\threadedgui.pyr s   zFontWindow.__init__cCsštjtjB}t |dtjdd¡}t ¡|_|j |¡|j  |||||tj ¡|  |j tj ¡|  |jt¡|  |jtj¡t d|j¡|_| ¡dS)Nrr éd)Úwin32conZ CS_HREDRAWZ CS_VREDRAWÚwin32uiZRegisterWndClassÚ COLOR_WINDOWZ CreateWndÚ_obj_Ú AttachObjectÚ CreateWindowZAFX_IDW_PANE_FIRSTÚ HookMessageÚOnSizeÚWM_SIZEÚOnPrepareToCloseÚWM_USER_PREPARE_TO_CLOSEÚ OnDestroyÚ WM_DESTROYÚtimerZ set_timerÚOnTimerÚtimeridÚInvalidateRect)rÚtitleÚstyleÚrectÚparentZ classStyleZ classNamerrrÚCreate"s ÿ  ÿzFontWindow.CreatecCst |j¡dS©N)r#Z kill_timerr%©rÚmsgrrrr!2szFontWindow.OnDestroycCsT|j|j|_|jt|jƒkr2d|_t|jƒ|_n|jdkrHd|_d|_| ¡dS)Néÿÿÿÿrr )r rÚlenr r&)rÚidZtimeValrrrr$5s zFontWindow.OnTimerc CsŽ| ¡\}}| |d¡|jdkrP|jdkrP| ¡\}}}}|||_|||_|jd|jd}}| |||jd|j…¡| |¡dS)Nré) Z BeginPaintÚ OnPrepareDCrrÚ GetClientRectZTextOutr r ZEndPaint) rÚdcZ paintStructÚleftÚtopÚrightZbottomÚxÚyrrrÚOnPaint?s    zFontWindow.OnPaintcCsdddœ}t |¡|_dS)NZArialé*)Únamer)rZ CreateFontÚfont)rZ font_specrrrrLs zFontWindow.ChangeAttributescCs | ¡dSr,)Z DestroyWindow)rÚparamsrrrrPszFontWindow.OnPrepareToClosecCs$|d}t |¡|_t |¡|_dS)Né)Úwin32apiZLOWORDrZHIWORDr)rr?ZlParamrrrrSs zFontWindow.OnSizecCsH| t ddd¡¡| t tj¡¡| |j¡|  tj tj B¡dS)Nréÿ) Z SetTextColorrAZRGBZ SetBkColorZ GetSysColorrrZ SelectObjectr>Z SetTextAlignZ TA_CENTERZ TA_BASELINE)rr5Z printinforrrr3Xs zFontWindow.OnPrepareDCN)r) Ú__name__Ú __module__Ú __qualname__r r+r!r$r;rrrr3rrrrrs   rc@seZdZdd„Zddd„ZdS)Ú FontFramecCsdSr,r©rrrrr aszFontFrame.__init__NcCstjtjBtjB}t ¡|_|j |¡|j d||||¡|  ¡}dd|d|d|d|df}t dƒ|_ |j   dtjtjB||¡dS)Nrr2r@r ú Not threadedÚFontDemo) rÚWS_CHILDÚ WS_VISIBLEÚWS_OVERLAPPEDWINDOWrÚCreateMDIChildrrrr4rÚchildr+©rr'r)r*r(rrrr+ds  $ ÿzFontFrame.Create)NN)rCrDrEr r+rrrrrF`srFc@s$eZdZdd„Zdd„Zdd„ZdS)Ú TestThreadcCs||_d|_t |¡dSr,)Ú parentWindowrNrr )rrQrrrr sszTestThread.__init__cCsh|j ¡}dd|d|d|d|df}tƒ|_|j dtjtjB||j¡| |j¡t   |¡S)Nrr2r@r rI) rQr4rrNr+rrJrKZ SetMainFramerÚ InitInstance)rr)rrrrRxs $ÿ zTestThread.InitInstancecCsdS)NrrrGrrrÚ ExitInstanceƒszTestThread.ExitInstanceN)rCrDrEr rRrSrrrrrPrs rPc@s.eZdZdd„Zd dd„Zdd„Zdd „ZdS) ÚThreadedFontFramecCs d|_dSr,)rrGrrrr ˆszThreadedFontFrame.__init__NcCsltjtjBtjB}t ¡|_|j d||||¡|j |j tj ¡|j |j tj ¡t |ƒ|_|j ¡dSr,)rrJrKrLrrMrrrr!r"rrrPrZ CreateThreadrOrrrr+Œs  zThreadedFontFrame.CreatecCsdSr,rr-rrrr–szThreadedFontFrame.OnSizecCs<t d¡|jr8|jjr8|jj}| tdd¡t d¡dS)Nz OnDestroy rz Destroyed )rZOutputDebugStringrrNZ SendMessager )rr.rNrrrr!™s  zThreadedFontFrame.OnDestroy)NN)rCrDrEr r+rr!rrrrrT‡s rTcCstƒ}| d¡dS)Nz Font Demo)rFr+)ÚfrrrÚDemo¡srVcCsºt ¡ ¡ ¡}|dt|dddƒt|ddƒ|df}|d}tdƒD]R}|dkrhtƒ}d}n tƒ}d}| ||¡|d||d|d||df}qPt   d¡t  ¡dS) Nrr@ér2rHzThreaded GUI Demor r) rZ GetMainFrameZ GetMDIClientr4ÚintÚrangerFrTr+rAZSleepZPumpWaitingMessages)r)rÚirUr'rrrÚ ThreadedDemo¦s0  & r[Ú__main__)r#rArrZ pywin.mfcrrrZpywin.mfc.threadrZWM_USERr r rZ MDIChildWndrFrPrTrVr[rCZ demoutilsZ NeedGoodGUIrrrrÚs   H