
    g
f>                         d Z 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 ddlmZ ddlmZ ddlmZ ddlmZ  G d dej4                        Zy)zCustom script for Chromium.z$Id$z
$Revision$z$Date$z$Copyright (c) 2018-2019 Igalia, S.L.LGPL    )debug)focus_manager)AXComponent)
AXDocument)AXObject)AXUtilities)default)web   BrailleGenerator	UtilitiesSpeechGeneratorc                   >    e Zd Z fdZd Zd Zd Z fdZ fdZ fdZ	 fdZ
 fd	Z fd
Z fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ fdZ f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     G/usr/lib/python3/dist-packages/orca/scripts/toolkits/Chromium/script.pyr   zScript.__init__-   s    !&    c                     t        |       S )z.Returns the braille generator for this script.r   r   s    r   getBrailleGeneratorzScript.getBrailleGenerator2   s      %%r   c                     t        |       S )z-Returns the speech generator for this script.r   r   s    r   getSpeechGeneratorzScript.getSpeechGenerator7   s     t$$r   c                     t        |       S )z&Returns the utilities for this script.r   r   s    r   getUtilitieszScript.getUtilities<   s     r   c                     t         |   |||      ryd}t        j                  t        j                  |d       t
        j                  j                  | |||       y)z3Handles changes of focus of interest to the script.N/CHROMIUM: Passing along event to default scriptT)r   locusOfFocusChangedr   printMessage
LEVEL_INFOr
   r   )r   eventoldFocusnewFocusmsgr   s        r   r'   zScript.locusOfFocusChangedA   sN     7&uhA?5++S$7**4(Kr   c                 f   t         |   |      ry|j                  rMt        j                  |j
                        r.t        j                         j                  |j
                        syd}t        j                  t        j                  |d       t        j                  j                  | |       y)z>Callback for object:state-changed:active accessibility events.Nr&   T)r   onActiveChangeddetail1r	   is_framesourcer   
getManagercan_be_active_windowr   r(   r)   r
   r   r   r*   r-   r   s      r   r/   zScript.onActiveChangedK   s|     7"5)==[11%,,? ++-BB5<<P?5++S$7&&tU3r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)zCCallback for object:active-descendant-changed accessibility events.Nr&   T)r   onActiveDescendantChangedr   r(   r)   r
   r   r5   s      r   r7   z Script.onActiveDescendantChangedY   sF     7,U3?5++S$700u=r   c                    t        j                  |j                        r(d}t        j                  t        j
                  |d       yt        j                  |j                        s(d}t        j                  t        j
                  |d       yt        | %  |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z<Callback for object:state-changed:busy accessibility events.z0CHROMIUM: Ignoring event from page with no size.TN/CHROMIUM: Ignoring event from page with no URI.r&   )r   has_no_sizer2   r   r(   r)   r   get_urir   onBusyChangedr
   r   r5   s      r   r<   zScript.onBusyChangedc   s     ""5<<0DCu//d;!!%,,/CCu//d;7 '?5++S$7$$T51r   c                    | j                   j                  |j                        r(d}t        j                  t        j
                  |d       y| j                   j                  |      r(d}t        j                  t        j
                  |d       yt        | !  |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z:Callback for object:text-caret-moved accessibility events..CHROMIUM: Ignoring event from static-text leafTNz/CHROMIUM: Ignoring redundant autocomplete eventr&   )	utilitiesisStaticTextLeafr2   r   r(   r)   isRedundantAutocompleteEventr   onCaretMovedr
   r   r5   s      r   rB   zScript.onCaretMovedw   s     >>**5<<8BCu//d;>>66u=CCu//d;7&?5++S$7##D%0r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z?Callback for object:state-changed:checked accessibility events.Nr&   T)r   onCheckedChangedr   r(   r)   r
   r   r5   s      r   rD   zScript.onCheckedChanged   F     7#E*?5++S$7''e4r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z:Callback for object:column-reordered accessibility events.Nr&   T)r   onColumnReorderedr   r(   r)   r
   r   r5   s      r   rG   zScript.onColumnReordered   F     7$U+?5++S$7((u5r   c                 N   | j                   j                  |j                        r(d}t        j                  t        j
                  |d       yt        |   |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z>Callback for object:children-changed:add accessibility events.4CHROMIUM: Ignoring because child is static text leafTNr&   )
r?   r@   any_datar   r(   r)   r   onChildrenAddedr
   r   r5   s      r   rL   zScript.onChildrenAdded   s|     >>**5>>:HCu//d;7"5)?5++S$7&&tU3r   c                 N   | j                   j                  |j                        r(d}t        j                  t        j
                  |d       yt        |   |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)zBCallback for object:children-changed:removed accessibility events.rJ   TNz/Chromium: Passing along event to default script)
r?   r@   rK   r   r(   r)   r   onChildrenRemovedr
   r   r5   s      r   rN   zScript.onChildrenRemoved   s|     >>**5>>:HCu//d;7$U+?5++S$7((u5r   c                 B   t        j                  |j                        s(d}t        j                  t        j
                  |d       yt        |   |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z9Callback for document:load-complete accessibility events.r9   TNr&   )
r   r;   r2   r   r(   r)   r   onDocumentLoadCompleter
   r   r5   s      r   rP   zScript.onDocumentLoadComplete   sx     !!%,,/CCu//d;7)%0?5++S$7--dE:r   c                 B   t        j                  |j                        s(d}t        j                  t        j
                  |d       yt        |   |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z8Callback for document:load-stopped accessibility events.r9   TNr&   )
r   r;   r2   r   r(   r)   r   onDocumentLoadStoppedr
   r   r5   s      r   rR   zScript.onDocumentLoadStopped   sx     !!%,,/CCu//d;7(/?5++S$7,,T59r   c                 B   t        j                  |j                        s(d}t        j                  t        j
                  |d       yt        |   |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z2Callback for document:reload accessibility events.r9   TNr&   )
r   r;   r2   r   r(   r)   r   onDocumentReloadr
   r   r5   s      r   rT   zScript.onDocumentReload   sx     !!%,,/CCu//d;7#E*?5++S$7''e4r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z@Callback for object:state-changed:expanded accessibility events.Nr&   T)r   onExpandedChangedr   r(   r)   r
   r   r5   s      r   rV   zScript.onExpandedChanged   rH   r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z)Callback for focus: accessibility events.Nr&   T)r   onFocusr   r(   r)   r
   r   r5   s      r   rX   zScript.onFocus   sE     7?5!?5++S$7tU+r   c                    | j                   j                  |j                        rGt        j                  |j                        s(d}t        j                  t
        j                  |d       yt        | %  |      ryd}t        j                  t
        j                  |d       t        j                  j                  | |       y)z?Callback for object:state-changed:focused accessibility events.z3CHROMIUM: Ignoring event from document with no URI.TNr&   )r?   
isDocumentr2   r   r;   r   r(   r)   r   onFocusedChangedr
   r   r5   s      r   r[   zScript.onFocusedChanged  s     >>$$U\\2%%ell3GCu//d;7#E*?5++S$7''e4r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z/Callback for mouse:button accessibility events.Nr&   T)r   onMouseButtonr   r(   r)   r
   r   r5   s      r   r]   zScript.onMouseButton  F     7 '?5++S$7$$T51r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z;Callback for object:property-change:accessible-name events.Nr&   T)r   onNameChangedr   r(   r)   r
   r   r5   s      r   r`   zScript.onNameChanged  r^   r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z7Callback for object:row-reordered accessibility events.Nr&   T)r   onRowReorderedr   r(   r)   r
   r   r5   s      r   rb   zScript.onRowReordered%  F     7!%(?5++S$7%%dE2r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z@Callback for object:state-changed:selected accessibility events.Nr&   T)r   onSelectedChangedr   r(   r)   r
   r   r5   s      r   re   zScript.onSelectedChanged/  rH   r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z;Callback for object:selection-changed accessibility events.Nr&   T)r   onSelectionChangedr   r(   r)   r
   r   r5   s      r   rg   zScript.onSelectionChanged9  sF     7%e,?5++S$7))$6r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z?Callback for object:state-changed:showing accessibility events.Nr&   T)r   onShowingChangedr   r(   r)   r
   r   r5   s      r   ri   zScript.onShowingChangedC  rE   r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)zACallback for object:text-attributes-changed accessibility events.Nr&   T)r   onTextAttributesChangedr   r(   r)   r
   r   r5   s      r   rk   zScript.onTextAttributesChangedM  sF     7*51?5++S$7..tU;r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z=Callback for object:text-changed:delete accessibility events.Nr&   T)r   onTextDeletedr   r(   r)   r
   r   r5   s      r   rm   zScript.onTextDeletedW  r^   r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z=Callback for object:text-changed:insert accessibility events.Nr&   T)r   onTextInsertedr   r(   r)   r
   r   r5   s      r   ro   zScript.onTextInserteda  rc   r   c                    | j                   j                  |j                        r(d}t        j                  t        j
                  |d       y| j                   j                  |j                        r(d}t        j                  t        j
                  |d       yt        | !  |      ryd}t        j                  t        j
                  |d       t        j                  j                  | |       y)z@Callback for object:text-selection-changed accessibility events.r>   TNz.CHROMIUM: Ignoring event from list item markerr&   )r?   r@   r2   r   r(   r)   isListItemMarkerr   onTextSelectionChangedr
   r   r5   s      r   rr   zScript.onTextSelectionChangedk  s     >>**5<<8BCu//d;>>**5<<8BCu//d;7)%0?5++S$7--dE:r   c                 j   t        j                         j                  |j                        sy| j                  j                  |j                        }|r:t        j                         j                  |j                         d}| j                  j                  |      }t        |      dk(  r|d   }|r| j                  j                  |      r%t        j                         j                  ||d       d|g}t        j                  t        j                  |d       t        j                         j                  ||       yd|g}t        j                  t        j                  |d       t        j                         j                  ||       t        | =  |      ryd}t        j                   t        j                  |d       t"        j$                  j                  | |       t'        j(                  |j                        D ])  }t+        j,                  |      s| j/                  |       + y)	z2Callback for window:activate accessibility events.Nr   r   Fz-CHROMIUM: Setting locusOfFocus to active itemTz,CHROMIUM: Setting locusOfFocus to popup menur&   )r   r3   r4   r2   r?   popupMenuForFrameset_active_windowselectedChildrenlenisPopupMenuForCurrentItemset_locus_of_focusr   printTokensr)   r   onWindowActivatedr(   r
   r   r   iter_childrenr	   is_alertpresentObject)	r   r*   menu
activeItemselectedtokensr-   childr   s	           r   r{   zScript.onWindowActivated  s    '')>>u||L
 ~~//=$$&88FJ~~66t<H8}!%a[
 >>;;DA!,,.AA%uUI:V!!%"2"2FDA((*==eZPDdKFe..=$$&99%F7$U+?5++S$7((u5
 ++ELL9 	*E##E*""5)	*r   c                     t         |   |      ryd}t        j                  t        j                  |d       t
        j                  j                  | |       y)z4Callback for window:deactivate accessibility events.Nr&   T)r   onWindowDeactivatedr   r(   r)   r
   r   r5   s      r   r   zScript.onWindowDeactivated  sF     7&u-?5++S$7**47r   )#__name__
__module____qualname__r   r    r"   r$   r'   r/   r7   r<   rB   rD   rG   rL   rN   rP   rR   rT   rV   rX   r[   r]   r`   rb   re   rg   ri   rk   rm   ro   rr   r{   r   __classcell__)r   s   @r   r   r   +   s    '
&
%

L4>2(1(5646;:56,5 223675<23;(-*^8 8r   r   N)__doc____id____version____date____copyright____license__orcar   r   orca.ax_componentr   orca.ax_documentr   orca.ax_objectr   orca.ax_utilitiesr	   orca.scriptsr
   r   braille_generatorr   script_utilitiesr   speech_generatorr   r    r   r   <module>r      sV   , "6   ) ' # )    / ' -K8SZZ K8r   