ó
    Ö›‘h•  ã                   óÂ   • S r SSKJrJr   SSKJrJrJ	r
  SSKJr  SSKJrJr   " S S\
5      r " S	 S
\R&                  5      rS rS/rg! \ a    SSKJrJrJ
r
   NGf = f)aa  
This module provides wxPython event loop support for Twisted.

In order to use this support, simply do the following::

    |  from twisted.internet import wxreactor
    |  wxreactor.install()

Then, when your root wxApp has been created::

    | from twisted.internet import reactor
    | reactor.registerWxApp(yourApp)
    | reactor.run()

Then use twisted.internet APIs as usual. Stop the event loop using
reactor.stop(), not yourApp.ExitMainLoop().

IMPORTANT: tests will fail when run under this reactor. This is
expected and probably does not reflect on the reactor's ability to run
real applications.
é    )ÚEmptyÚQueue)Ú	CallAfterÚPySimpleAppÚTimer)ÚwxPySimpleAppÚwxCallAfterÚwxTimer)Ú_threadedselect)ÚlogÚruntimec                   ó$   • \ rS rSrSrS rS rSrg)ÚProcessEventsTimeré*   z»
Timer that tells wx to process pending events.

This is necessary on macOS, probably due to a bug in wx, if we want
wxCallAfters to be handled when modal dialogs, menus, etc.  are open.
c                 ó<   • [         R                  " U 5        Xl        g ©N)r
   Ú__init__Úwxapp©Úselfr   s     Ú^C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/wxreactor.pyr   ÚProcessEventsTimer.__init__2   s   € Ü×Ò˜ÔØ�
ó    c                 ó8   • U R                   R                  5         g)z%
Called repeatedly by wx event loop.
N)r   ÚProcessPendingEvents©r   s    r   ÚNotifyÚProcessEventsTimer.Notify6   s   € ð 	�
‰
×'Ñ'Õ)r   ©r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__© r   r   r   r   *   s   † ñòõ*r   r   c                   óD   • \ 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g)Ú	WxReactoré=   zO
wxPython reactor.

wxPython drives the event loop, select() runs in a thread.
Fc                 ó   • Xl         g)z+
Register wxApp instance with the reactor.
Nr   r   s     r   ÚregisterWxAppÚWxReactor.registerWxAppF   s	   € ð �
r   c                 ó®   •  SSK nUR                  UR                  UR                  5        U R                  R                  5         g! [         a     gf = f)z?
wx sometimes removes our own signal handlers, so re-add them.
r   N)ÚsignalÚSIGINTÚdefault_int_handlerÚImportErrorÚ_signalsÚinstall)r   r.   s     r   Ú_installSignalHandlersAgainÚ%WxReactor._installSignalHandlersAgainL   sH   € ð	ãà�M‰M˜&Ÿ-™-¨×)CÑ)CÔDð 	�‰×ÑÕøô ó 	Ùð	ús   ‚*A Á
AÁAc                 ót   • U R                   (       a  gSU l         [        R                  R                  U 5        g)z
Stop the reactor.
NT)Ú	_stoppingr   ÚThreadedSelectReactorÚstopr   s    r   r9   ÚWxReactor.stopY   s)   € ð �>�>ØØˆŒÜ×-Ñ-×2Ñ2°4Õ8r   c                 ót   • [        U S5      (       a  [        U5        gU R                  R                  U5        g)zU
Schedule function to run in main wx/Twisted thread.

Called by the select() thread.
r   N)Úhasattrr	   Ú
_postQueueÚput)r   Úfs     r   Ú_runInMainThreadÚWxReactor._runInMainThreadb   s,   € ô �4˜×!Ñ!Ü˜�Nð �O‰O×Ñ Õ"r   c                 ó\   • [        U S5      (       a  U R                  R                  5         gg)zg
Stop the wx event loop if it hasn't already been stopped.

Called during Twisted event loop shutdown.
r   N)r<   r   ÚExitMainLoopr   s    r   Ú_stopWxÚWxReactor._stopWxn   s&   € ô �4˜×!Ñ!Ø�J‰J×#Ñ#Õ%ð "r   c                 óˆ  ^ • [        5       T l        [        T S5      (       d/  [        R                  " S5        T R                  [        5       5        T R                  T R                  US9  U(       a  T R                  ST R                  5        T R                  SST R                  5        T R                  SSU 4S j5        [        R                  R                  5       (       a&  [!        T R"                  5      nUR%                  S5        T R"                  R'                  5         T R"                  nT ?T R(                  (       dI  T R+                  5         UR-                  5           T R                  R/                  S	S
9nUc  g U" 5         M(  g! [0         a    [        R2                  " 5          N$f = f! [4         a     M\  f = f)z
Start the reactor.
r   zMregisterWxApp() was not called on reactor, registering my own wxApp instance.)ÚinstallSignalHandlersr   ÚafterÚshutdownc                  ó:   >• T R                   R                  S 5      $ r   )r=   r>   r   s   €r   Ú<lambda>ÚWxReactor.run.<locals>.<lambda>�   s   ø€ ¨¯©×)<Ñ)<¸TÔ)Br   é   g{®Gáz„?)ÚtimeoutN)r   r=   r<   r   Úmsgr+   r   Ú
interleaver@   Ú	callLaterr4   ÚaddSystemEventTriggerrD   r   ÚplatformÚisMacOSXr   r   ÚStartÚMainLoopr7   r9   r   ÚgetÚBaseExceptionÚerrr   )r   rG   Útr   r?   s   `    r   ÚrunÚWxReactor.runw   sz  ø€ ô  ›'ˆŒÜ�t˜W×%Ñ%Ü�GŠGð5ôð ×Ñœ}›Ô/ð 	�‰Ø×!Ñ!Ð9Nð 	ñ 	
ö !Ø�N‰N˜1˜d×>Ñ>Ô?ð 	×"Ñ" 7¨J¸¿¹ÔEØ×"Ñ"Ø�ZÔ!Bô	
ô ×Ñ×$Ñ$×&Ñ&Ü" 4§:¡:Ó.ˆAØ�G‰G�AŒJà�
‰
×ÑÔØ—
‘
ˆØˆJà�~�~ð �I‰IŒKØ×&Ñ&Ô(Øð
"ØŸ™×+Ñ+°DÐ+Ð9�Að ‘yØð"Ùœñ ð øô$ )ó "ÜŸšž	ð"ûô ó Úðús$   Å&F3 ÆF ÆF0Æ/F0Æ3
GÇ G)r=   r7   r   N)T)r    r!   r"   r#   r$   r7   r+   r4   r9   r@   rD   r[   r%   r&   r   r   r(   r(   =   s,   † ñð €Iòò ò9ò
#ò&÷7"r   r(   c                  ó6   • [        5       n SSKJn  U" U 5        U $ )zH
Configure the twisted mainloop to be run inside the wxPython mainloop.
r   )ÚinstallReactor)r(   Útwisted.internet.mainr^   )Úreactorr^   s     r   r3   r3   ±   s   € ô ‹k€GÝ4á�7ÔØ€Nr   r3   N)r$   Úqueuer   r   Úwxr   r	   r   r   r   r
   r1   ÚwxPython.wxÚtwisted.internetr   Útwisted.pythonr   r   r   r8   r(   r3   Ú__all__r&   r   r   Ú<module>rg      sp   ðñ÷, ð@÷ñ õ -ß 'ô*˜ô *ô&q"�×5Ñ5ô q"òhð ˆ+�øðu ó @ç?Ó?ð@ús   Œ
A ÁAÁA