
    Ui                     L    S SK r S SKrS SKJr    " S S\R                  5      rg)    N)glcanvasc                       \ rS rSrSrSrSrSrSrSr	Sr
SrSS jrS rS rS rS	 rS
 rS rS rS rS rS rS rS rSrg)WxApp   zcHelloApp uses wxPython library to create an opengl context, listen to keyboard events, and clean upNFc                 t    Xl         X l        SU l        SU l        [        R
                  R                  U SS9  g)zECreates an OpenGL context and a window, and acquires OpenGL resourcesFN)redirect)renderertitle_is_initializedwindowwxApp__init__)selfr	   r
   s      S/home/james-whalen/.local/lib/python3.13/site-packages/openvr/glframework/wx_app.pyr   WxApp.__init__   s/    -*$$+&&//$5/)    c                 $    U R                  5         g)NT)init_glr   s    r   OnInitWxApp.OnInit"   s    ,,.	r   c                 Z    U R                   R                  S5        UR                  5         g )NF)r   RefreshRequestMore)r   evts     r   OnIdleWxApp.OnIdle&   s    ++e//r   c                     U $ )z#setup for RAII using 'with' keyword r   s    r   	__enter__WxApp.__enter__*   s    	+r   c                 $    U R                  5         g)z%cleanup for RAII using 'with' keywordN)
dispose_gl)r   type_argvalue	tracebacks       r   __exit__WxApp.__exit__.   s    //r   c                 f   [        S5        [        R                  " S [        R                  U R                  [        R
                  [        R                  -  S9U l        [        S5        [        R                  " U R                  [        R                  5      U l        [        S5        [        R                  " U R                  5      U l        U R                  R                  5         U R                  R                  U R                   R"                  S   U R                   R"                  S   45        [        S5        U R                  R%                  S5        [        S	5        U R'                  U R                  5        U R)                  [        R*                  U R,                  5        U R                  R)                  [        R.                  U R0                  5        U R                  R)                  [        R2                  U R4                  5        [        R6                  R9                  [        R:                  5        U R)                  [        R<                  U R>                  5        [        S
5        U R                  RA                  U R                  5        U R                   RC                  5         g )Nzcreating Frame)parentidr
   stylezcreating GLCanvaszcreating GLContextr      zshowing FrameTzcalling SetTopWindowzmaking context current)"printr   FrameID_ANYr
   DEFAULT_FRAME_STYLEWS_EX_PROCESS_IDLEr   r   GLCanvas
WX_GL_RGBAcanvas	GLContextcontextSetFocusSetSizer	   window_sizeShowSetTopWindowBindEVT_CHAROnCharEVT_SIZEOnCanvasSize	EVT_PAINTOnCanvasPaint	IdleEventSetModeIDLE_PROCESS_SPECIFIEDEVT_IDLEr   
SetCurrentr   r   s    r   r   WxApp.init_gl2   s   $299DJJ			 5 5	58$+!!DKK1D1DF$+##DKK0$,++++2215t}}7P7PQR7STV++4DKK ))bkk4;;(++R[[$"3"35++R\\4#5#57,,224))bkk4;;( !++4<<)--r   c                 $    U R                  5         g N)render_scener   events     r   rD   WxApp.OnCanvasPaintM   s    r   c                 B   U R                   R                  U R                  5        U R                  R	                  5         U R                   R                  5       (       a&  U R                   R                  5         [        S5        g U R                   R                  5         g)zrender scene one timezdouble bufferedN)r6   rI   r8   r	   rM   IsDoubleBufferedSwapBuffersr/   r   s    r   rM   WxApp.render_sceneP   sk    ++4<<)-- 
[[!!##;;
 ;;r   c                     g rL   r    r   s    r   r$   WxApp.dispose_gl_   s    r   c                 d    [         R                  " U R                  5        UR                  5         g rL   )r   	CallAfterDoSetViewportSkiprN   s     r   rB   WxApp.OnCanvasSizeb   s    ,,t!!"**,r   c                     U R                   R                  5       nU R                   R                  U R                  5        U R                  R                  U R                  UR                  UR                  5        g rL   )	r6   GetClientSizerI   r8   r	   size_callbackr   widthheight)r   sizes     r   rY   WxApp.DoSetViewportf   sL    		"	"	$$++4<<)--TZZFr   c                 
   UR                  5       nU[        S5      :X  d#  U[        S5      :X  d  U[        R                  :X  a1  U R                  R                  5         [        R                  " S5        g UR                  5         g )NqQr   )	
GetKeyCodeordr   
WXK_ESCAPEr   ClosesysexitrZ   )r   rO   keys      r   r@   WxApp.OnCharl   sW    #CH_s3x3"--+?;;88A;	**,r   c                 $    U R                  5         g rL   )MainLoopr   s    r   run_loopWxApp.run_loopw   s    --/r   )r   r6   r8   r	   r
   r   )zwx test)__name__
__module____qualname____firstlineno____doc__r	   r
   r   r   r6   r8   runningr   r   r   r!   r(   r   rD   rM   r$   rB   rY   r@   rp   __static_attributes__r    r   r   r   r      sj    f	

*6G	r   r   )rj   r   r   r   r   r    r   r   <module>ry      s'   
  	 iBFF ir   