
    g
f~                         d Z dZdZdZdZddlmZ ddlmZ ddlm	Z	 dd	l
mZ d
dlmZ d
dlmZ d
dlmZ  G d de	j$                        Zy)z$Id$z
$Revision$z$Date$zCopyright (c) 2016 Igalia, S.L.LGPL    )debug)focus_manager)default)AXText   BrailleGeneratorSpeechGenerator	Utilitiesc                   h     e Zd Z fdZ fdZd Zd Zd Zd Z fdZ	 fdZ
 fd	Z fd
Z xZS )Scriptc                 2    t         |   |       d| _        y )NF)super__init__presentIfInactive)selfapp	__class__s     >/usr/lib/python3/dist-packages/orca/scripts/terminal/script.pyr   zScript.__init__'   s    !&    c                 V    | j                   j                          t        |           y)z'Called when this script is deactivated.N)	utilities
clearCacher   
deactivate)r   r   s    r   r   zScript.deactivate+   s      	!!#r   c                     t        |       S )z.Returns the braille generator for this script.r	   r   s    r   getBrailleGeneratorzScript.getBrailleGenerator1   s      %%r   c                     t        |       S )z-Returns the speech generator for this script.r   r   s    r   getSpeechGeneratorzScript.getSpeechGenerator6   s     t$$r   c                     t        |       S )z&Returns the utilities for this script.r   r   s    r   getUtilitieszScript.getUtilities;   s     r   c                 `    t        j                         j                  ||j                         y)z)Callback for focus: accessibility events.N)r   
getManagerset_locus_of_focussource)r   events     r   onFocuszScript.onFocus@   s!     	  "55eU\\Jr   c                     | j                   j                  |      r(d}t        j                  t        j                  |d       yt
        |   |       y)z=Callback for object:text-changed:delete accessibility events.z*TERMINAL: Deletion is believed to be noiseTN)r   treatEventAsNoiser   printMessage
LEVEL_INFOr   onTextDeleted)r   r)   msgr   s      r   r/   zScript.onTextDeletedF   sD     >>++E2>Cu//d;e$r   c                 \   | j                   j                  |      s7d}t        j                  t        j                  |d       t
        |   |       yd}t        j                  t        j                  |d       | j                  |j                         | j                   j                  |      }t        |      dk(  r| j                  |       n:| j                  j                  |j                  |      }| j                  ||       | j                  j!                         r(d}t        j                  t        j                  |d       yt#        j$                  |j                        }| j'                  |j                  |       | j                   j)                  |j                         y)	z=Callback for object:text-changed:insert accessibility events.z0TERMINAL: Passing along event to default script.TNz=TERMINAL: Insertion is believed to be due to terminal commandr   )objstring)voicez=TERMINAL: Flat review presenter is active. Ignoring insertion)r   treatEventAsCommandr   r-   r.   r   onTextInsertedupdateBrailler(   insertedTextlenspeakCharacterspeechGeneratorr4   speakMessageflatReviewPresenter	is_activer   get_caret_offset_saveLastCursorPositionupdateCachedTextSelection)r   r)   r0   	newStringr4   offsetr   s         r   r6   zScript.onTextInsertedP   sC    ~~11%8DCu//d;G"5)M5++S$75<<(NN//6	y>Q	*((..5<<	.REiu5##--/QCu//d;((6$$U\\6:00>r   c                 D   |j                         st        | 	  |      S |j                         ryd| _        | j
                  j                          |j                  r |j                         s|j                         ryt        j                  |j                               dd \  }}t        j                  |j                         |dz
        d   }|j                  }||d|fvryd|g}t        j                  t        j                   |d       | j#                  |       y)NFr      r   spacez#TERMINAL: Presenting keyboard eventT)isPrintableKeyr   presentKeyboardEventisPressedKey_sayAllIsInterruptedr   clearCachedCommandState
shouldEchoisOrcaModifiedisCharacterEchoabler   get_character_at_offset	getObjectevent_stringr   printTokensr.   speakKeyEvent)r   r)   charstartprevCharr3   tokensr   s          r   rH   zScript.presentKeyboardEventn   s    ##%7/66$)!..05#7#7#9U=V=V=X 44U__5FG!Le11%//2CUQYOPQR##(GT227@%**FD95!r   c                    |j                   dk(  ryd\  }}|j                   dk(  r=| j                  j                  |      ry| j                  j	                  dd dg      \  }}||j
                  |j
                  k7  rt        |   |      S |j                  |j                  k7  ryddt        |      j                  dd      }d	|g}t        j                  t        j                  |d
       y
)Nzobject:text-changed:insertF)Nr   zobject:text-changed:deleter   
z           	z5TERMINAL: Skipping due to more recent event at offsetT)typer   #isBackSpaceCommandTextDeletionEvent
eventCachegetr(   r   skipObjectEventdetail1strreplacer   rR   r.   )r   r)   newEventnewTimedatarW   r   s         r   r_   zScript.skipObjectEvent   s    ::55#'::55~~AA%H $ 3 34PSWYZR[ \Hgx%,,>7*511==H,,, - $S]%:%:4%JKI4P%**FD9r   )__name__
__module____qualname__r   r   r    r"   r$   r*   r/   r6   rH   r_   __classcell__)r   s   @r   r   r   %   s;    '&
%

K%?<2 r   r   N)__id____version____date____copyright____license__orcar   r   orca.scriptsr   orca.ax_textr   braille_generatorr
   speech_generatorr   script_utilitiesr   r    r   r   <module>rv      sG   * 1      / - 'vW^^ vr   