
    g
fջ                       d Z dZdZdZdZddl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 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# 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`                        Z0y)&z$Id$z
$Revision$z$Date$znCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2010 Orca Team.Copyright (c) 2014-2015 Igalia, S.L.LGPL    N)Gtk)caret_navigation)cmdnames)keybindings)debug)focus_manager)	guilabels)input_event)liveregions)messages)
orca_state)settings)settings_manager)speech)speechserver)structural_navigation)ACSS)default)
AXDocument)AXObject)AXTable)AXText)AXUtilities   )	BookmarksBrailleGeneratorSoundGeneratorSpeechGenerator	Utilitiesc                   *    e Zd Z fdZ fdZ fdZd Z fdZd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Z fdZdI fd	ZdJ fd	Zd ZdK fd	ZdL fd	Z fdZ fdZd Zd Zd ZdJdZd Z fdZ fdZ  fdZ! fd Z" fd!Z# fd"Z$d# Z%dM fd$	Z&dM fd%	Z'dN fd&	Z(d' Z)d( Z*dOd)Z+dOd*Z,d+ Z-dJd,Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJ xZKS )PScriptc                    t         |   |       g | _        d| _        d| _        d| _        d| _        d| _        d | _        d| _	        d| _
        d| _        d| _        d| _        t        j                         j!                  d      $t        j                         j#                  dd       t        j                         j!                  d      $t        j                         j#                  dd       t        j                         j!                  d      $t        j                         j#                  dd       d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _         d | _!        d | _"        d| jF                  d<   d	| jF                  d
<   d| jF                  d<   y )NFNcaretNavigationEnabledTsayAllOnLoadpageSummaryOnLoadztext-spellinginvalidjustificationz
text-alignindentztext-indent)$super__init___sayAllContents	_inSayAll_sayAllIsInterrupted_loadingDocumentContent_madeFindAnnouncement_lastMouseButtonContext_lastMouseOverObject_preMouseOverContext_inMouseOverObject_inFocusMode_focusModeIsSticky_browseModeIsStickyr   
getManager
getSetting
setSetting_changedLinesOnlyCheckButton"_controlCaretNavigationCheckButton_minimumFindLengthAdjustment_minimumFindLengthLabel_minimumFindLengthSpinButton_pageSummaryOnLoadCheckButton_sayAllOnLoadCheckButton_skipBlankCellsCheckButton _speakCellCoordinatesCheckButton_speakCellHeadersCheckButton_speakCellSpanCheckButton"_speakResultsDuringFindCheckButton _structuralNavigationCheckButton"_autoFocusModeStructNavCheckButton!_autoFocusModeCaretNavCheckButton"_autoFocusModeNativeNavCheckButton_layoutModeCheckButtonattributeNamesDict)selfapp	__class__s     9/usr/lib/python3/dist-packages/orca/scripts/web/script.pyr1   zScript.__init__A   s   !$)!',$%*"'/$$(!$,!"'!"'#( &&(334LMU'')445MtT&&(33NCK'')44^TJ&&(334GHP'')445H$O,0)26/,0)'+$,0)-1*(,%*.'04-,0))-&26/04-26/15.26/&*#-<	*0?-19.    c                    d| j                   g}t        j                  t        j                  |d       | j                  j                         }d| }| j                  j                  | | |       | j                  j                  | | |       | j                  j                  | | |       | j                  j                  | | |       t        | 1          y)z%Called when this script is activated.zWEB: Activating script forTz(script activation, in document content: N)rT   r   printTokens
LEVEL_INFO	utilitiesinDocumentContentcaretNavigationsuspend_commandsstructuralNavigationliveRegionManagertableNavigatorr0   activate)rS   tokensin_docreasonrU   s       rV   rb   zScript.activaten   s     /9%**FD9113;F8D--dJG!!224VVL//&j&I,,Tv:vFrW   c                    g | _         d| _        d| _        d| _        d| _        d| _        d| _        | j                  j                          d}| j                  j                  | d|       | j                  j                  | d|       | j                  j                  | d|       | j                  j                  | d|       t        | =          y)z'Called when this script is deactivated.Fr(   Nzscript deactivation)r2   r5   r6   r7   r8   r9   r:   r[   clearCachedObjectsr]   r^   r_   r`   ra   r0   
deactivate)rS   re   rU   s     rV   rh   zScript.deactivate|   s      "',$%*"'/$$(!$,!"'))+&--dE6B!!224G//eVD,,T5&ArW   c           
      &   t        j                         }t        j                         j	                  d      }|t
        j                  k(  }| j                  j                  d|      }|j                  D ]  }|j                  |        | j                  j                  d|      }|j                  D ]  }|j                  |        | j                  j                  d|      }|j                  D ]  }|j                  |        |j                  t        j                  dt         j                  t         j                  | j                   j#                  d                   |j                  t        j                  dt         j                  t         j                  | j                   j#                  d      d             |j                  t        j                  dt         j                  t         j                  | j                   j#                  d      d	             |j                  t        j                  d
t         j                  t         j$                  | j                   j#                  d                   t        j                         j	                  d      }|t
        j                  k(  rd}nd}|j                  t        j                  |t         j                  t         j                  | j                   j#                  d                   |S )z=Returns the application-specific keybindings for this script.keyboardLayoutT)refresh
is_desktopatogglePresentationModeHandlerenableStickyFocusModeHandler   enableStickyBrowseModeHandler    toggleLayoutModeHandlerKP_Multiply0moveToMouseOverHandler)r   KeyBindingsr   r>   r?   r   GENERAL_KEYBOARD_LAYOUT_DESKTOPr_   get_bindingskeyBindingsaddr]   r`   
KeyBindingdefaultModifierMaskORCA_MODIFIER_MASKinputEventHandlersgetNO_MODIFIER_MASK)	rS   r{   layout	isDesktopstructNavBindings
keyBindingcaretNavBindingsliveRegionBindingskeys	            rV   getAppKeyBindingszScript.getAppKeyBindings   s    "--/!,,.99:JKhFFF	 55BBY C 0+77 	(JOOJ'	(  //<<Y = 0*66 	(JOOJ'	( "33@@Y A 0,88 	(JOOJ'	( 	""//..''++,KL	N	O 	""//..''++,JK	 	""//..''++,KL	 	""//,,''++,EF	H	I ",,.99:JKX===CC""//..''++,DE	G	H rW   c                 N   t         |           | j                  j                  | j                  j                  d             | j                  j                  | j                  j                  d             | j                  j                  | j                  j                  d             t        j                  t        j                  t        j                        | j                  d<   t        j                  t        j                  t        j                  d      | j                  d<   t        j                  t        j                   t        j"                  d      | j                  d<   t        j                  t        j$                  t        j&                        | j                  d<   t        j                  t        j(                  t        j*                        | j                  d<   t        j                  t        j,                  t        j.                        | j                  d<   t        j                  t        j0                  t        j2                        | j                  d	<   t        j                  t        j4                  t        j6                        | j                  d
<   y)z+Defines InputEventHandlers for this script.TsayAllHandlerFpanBrailleLeftHandlerpanBrailleRightHandlerrw   rn   ro   rq   rt   N)r0   setupInputEventHandlersr   updater_   get_handlersr]   r`   r   InputEventHandlerr&   sayAllr   SAY_ALLpanBrailleLeftPAN_BRAILLE_LEFTpanBrailleRightPAN_BRAILLE_RIGHTmoveToMouseOverMOUSE_OVER_MOVEtogglePresentationModeTOGGLE_PRESENTATION_MODEenableStickyFocusModeSET_FOCUS_MODE_STICKYenableStickyBrowseModeSET_BROWSE_MODE_STICKYtoggleLayoutModeTOGGLE_LAYOUT_MODE)rS   rU   s    rV   r   zScript.setupInputEventHandlers   s    	')&&t'@'@'M'Md'ST&&t';';'H'H'NO&&t'='='J'J4'PQ ))  " 	0 ))%%)) 	 78 ))&&** 	 89 ))&&((* 	 89 ))--113 	 ?@ )),,..0 	 >? ))--//1 	 ?@ ))''++- 	 9:rW   c                 r    	 | j                   S # t        $ r t        |       | _         | j                   cY S w xY w)z.Returns the "bookmarks" class for this script.)	bookmarksAttributeErrorr   rS   s    rV   getBookmarkszScript.getBookmarks  s5    	">>! 	"&t_DN>>!	"s    %66c                     t        |       S )z.Returns the braille generator for this script.r   r   s    rV   getBrailleGeneratorzScript.getBrailleGenerator  s      %%rW   c                 *    t        j                         S )z5Returns the caret navigation support for this script.)r   CaretNavigationr   s    rV   getCaretNavigationzScript.getCaretNavigation  s      //11rW   c                    t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j
                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                  t         j                  j                   t         j                  j"                  t         j                  j$                  t         j                  j&                  t         j                  j(                  t         j                  j*                  t         j                  j,                  t         j                  j.                  t         j                  j0                  gS )z?Returns the structural navigation object types for this script.)r   StructuralNavigation
BLOCKQUOTEBUTTON	CHECK_BOXCHUNK	CLICKABLE	COMBO_BOX	CONTAINERENTRY
FORM_FIELDHEADINGIFRAMEIMAGELANDMARKLINKLIST	LIST_ITEMLIVE_REGION	PARAGRAPHRADIO_BUTTON	SEPARATORTABLEUNVISITED_LINKVISITED_LINKr   s    rV   #getEnabledStructuralNavigationTypesz*Script.getEnabledStructuralNavigationTypes  si    &::EE%::AA%::DD%::@@%::DD%::DD%::DD%::@@%::EE%::BB%::AA%::@@%::CC%::??%::??%::DD%::FF%::DD%::GG%::DD%::@@%::II%::GG-I 	IrW   c                 ,    t        j                  |       S )z0Returns the live region support for this script.)r   LiveRegionManagerr   s    rV   getLiveRegionManagerzScript.getLiveRegionManager3  s     ,,T22rW   c                     t        |       S )z,Returns the sound generator for this script.r   r   s    rV   getSoundGeneratorzScript.getSoundGenerator8  s     d##rW   c                     t        |       S )z-Returns the speech generator for this script.r!   r   s    rV   getSpeechGeneratorzScript.getSpeechGenerator=  s     t$$rW   c                     t        |       S )z&Returns the utilities for this script.r#   r   s    rV   getUtilitieszScript.getUtilitiesB  s     rW   c                    t        j                         }|j                  d       t        j                         }|j	                  |dddd       t        j
                  dt        j                   d      }|j                  d       |j                  |       t         j                  j                  dddd      }|j                  dddd       |j                  |       t        j                         }|j                  |       t        j                  }t        j                          j#                  d	      }t         j$                  j'                  |      | _        | j(                  j+                  |       |j	                  | j(                  dddd       t        j,                  }t        j                          j#                  d
      }t         j$                  j'                  |      | _        | j.                  j+                  |       |j	                  | j.                  dddd       t        j0                  }| j2                  j4                  }t         j$                  j'                  |      | _        | j6                  j+                  |       |j	                  | j6                  dddd       t        j8                  }t        j                          j#                  d      }t         j$                  j'                  |      | _        | j:                  j+                  |       |j	                  | j:                  dddd       t        j<                  }t        j                          j#                  d      }t         j$                  j'                  |      | _        | j>                  j+                  |       |j	                  | j>                  dddd       t        j@                  }t        j                          j#                  d      }t         j$                  j'                  |      | _!        | jB                  j+                  |       |j	                  | jB                  dddd       t        jD                  }t        j                          j#                  d      }t         j$                  j'                  |      | _#        | jF                  j+                  |       |j	                  | jF                  dddd       t        jH                  }t        j                          j#                  d      }t         j$                  j'                  |      | _%        | jJ                  j+                  |       |j	                  | jJ                  dddd       t        j                         }|j	                  |dddd       t        j
                  dt        jL                   d      }|j                  d       |j                  |       t         j                  j                  dddd      }|j                  dddd       |j                  |       t        j                         }	|j                  |	       t        jN                  }t        j                          j#                  d      }t         j$                  j'                  |      | _(        | jP                  j+                  |       |	j	                  | jP                  dddd       t        jR                  }t        j                          j#                  d      }t         j$                  j'                  |      | _*        | jT                  j+                  |       |	j	                  | jT                  dddd       t        jV                  }t        j                          j#                  d      }t         j$                  j'                  |      | _,        | jX                  j+                  |       |	j	                  | jX                  dddd       t        jZ                  }t        j                          j#                  d      }t         j$                  j'                  |      | _.        | j\                  j+                  |       |	j	                  | j\                  dddd       t        j                         }
|j	                  |
dddd       t        j
                  dt        j^                   d      }|j                  d       |
j                  |       t         j                  j                  dddd      }|j                  dddd       |
j                  |       t        j                         }|j                  |       t        j                          j#                  d      }t        j`                  }|tb        jd                  k7  }t         j$                  j'                  |      | _3        | jf                  j+                  |       |j	                  | jf                  dddd       t        jh                  }|tb        jj                  k(  }t         j$                  j'                  |      | _6        | jl                  j+                  |       |j	                  | jl                  dddd       t        j                         }|j	                  |dddd       t        j
                  t        jn                        | _8        | jp                  js                  dd       |j	                  | jp                  dddd       t        jt                  t        j                          j#                  d      ddd      | _;        t        jx                         | _=        | jz                  j}                  | jv                         |j	                  | jz                  dddd       | jp                  j                  | jz                         |j                          |S )z;Return a GtkGrid containing app-unique configuration items.   r   r   z<b>z</b>)labelTg      ?r*   caretNavTriggersFocusModerp   structNavTriggersFocusModerr   nativeNavTriggersFocusMode   r+      r,      
layoutMode   speakCellCoordinatesspeakCellSpanspeakCellHeadersskipBlankCellsfindResultsVerbosityfindResultsMinimumLength   )Ar   Gridset_border_widthFrameattachLabelr
   PAGE_NAVIGATIONset_use_markupset_label_widget	Alignmentnewset_paddingr|   USE_CARET_NAVIGATIONr   r>   r?   CheckButtonnew_with_mnemonicrB   
set_activeAUTO_FOCUS_MODE_CARET_NAVrO   USE_STRUCTURAL_NAVIGATIONr_   enabledrM   AUTO_FOCUS_MODE_STRUCT_NAVrN   AUTO_FOCUS_MODE_NATIVE_NAVrP   READ_PAGE_UPON_LOADrG   PAGE_SUMMARY_UPON_LOADrF   CONTENT_LAYOUT_MODErQ   TABLE_NAVIGATIONTABLE_SPEAK_CELL_COORDINATESrI   TABLE_SPEAK_CELL_SPANSrK   TABLE_ANNOUNCE_CELL_HEADERrJ   TABLE_SKIP_BLANK_CELLSrH   FIND_OPTIONSFIND_SPEAK_RESULTSr   FIND_SPEAK_NONErL   FIND_ONLY_SPEAK_CHANGED_LINESFIND_SPEAK_IF_LINE_CHANGEDrA   FIND_MINIMUM_MATCH_LENGTHrD   set_alignment
AdjustmentrC   
SpinButtonrE   set_adjustmentset_mnemonic_widgetshow_all)rS   gridgeneralFramer   generalAlignmentgeneralGridvalue
tableFrametableAlignment	tableGrid	findFramefindAlignmentfindGrid	verbosityhgrids                  rV   getAppPreferencesGUIzScript.getAppPreferencesGUIG  s5	    xxzb!yy{L!Q1-		#i&?&?%@ EFT"%%e,==,,S#q!<$$Q2q1)*hhj[).. ++-889QROO--e4 	///::5A4BBAq!QO33 ++-889TU141R1RSX1Y...99%@4AA1aAN33))11OO--e4 	---88?4@@!Q1M44 ++-889UV25//2S2STY2Z///::5A4BBAq!QO44 ++-889UV25//2S2STY2Z///::5A4BBAq!QO-- ++-88H(+(I(I%(P%%%007488!Q1E00 ++-889LM-0__-N-Nu-U***55e<4==q!QJ-- ++-88F&)oo&G&G&N###..u54661aCYY[
J1a+		#i&@&@%A FGT"##E***3Q:""1aQ/~&HHJ	9%66 ++-889OPOO--e4 	---88?>>1aK00 ++-88IOO--e4 	&&&11%877Aq!D44 ++-889KLOO--e4 	)))44U;::Aq!QG00 ++-889IJOO--e4 	'''225988!Q1EIIK	Iq!Q*		#i&<&<%=T BCT"""5)))#sAq9!!!QA.m$88:(#$//1<<=ST	,,X555OO--e4 	///::5A??Aq!L77X@@@OO--e4 	)))44U;991aAF
q!Q* iiiAAB 	$$$221c:T111aA> NN+668CC*,-.A7 	) -0NN,<)))88--	/T661aC$$88--	/ 	rW   c                 `   | j                   j                         st        j                  }n;| j                  j                         rt        j
                  }nt        j                  }|| j                  j                         | j                  j                         | j                  j                         | j                  j                         | j                  j                         | j                  j                         | j                  j                         | j                  j                         | j                   j                         | j"                  j                         | j$                  j                         | j&                  j                         | j(                  j                         dS )z7Returns a dictionary with the app-specific preferences.)r   r   r+   r,   structuralNavigationEnabledr   r*   r   r   r   r   r   r   r   )rL   
get_activer   r   rA   r  FIND_SPEAK_ALLrE   	get_valuerG   rF   rM   rN   rB   rO   rP   rI   rQ   rK   rJ   rH   )rS   r  s     rV   getPreferencesFromGUIzScript.getPreferencesFromGUI  sB    66AAC 00I..99; ;;I //I %.(,(I(I(S(S(U 99DDF!%!C!C!N!N!P+/+P+P+[+[+]*.*Q*Q*\*\*^&*&M&M&X&X&Z)-)O)O)Z)Z)\*.*Q*Q*\*\*^$($I$I$T$T$V55@@B!;;FFH $ A A L L N"==HHJ
 	
rW   c                 &   |j                   j                  d      r,|j                  r t        j                  |j
                        r<y|j                   j                  d      r t        j                  |j                        ryt        | %  |      S )z4Returns True if this object event should be skipped.object:state-changed:focusedFobject:children-changed)
type
startswithdetail1r   is_linksource	is_dialogany_datar0   skipObjectEvent)rS   eventrU   s     rV   r(  zScript.skipObjectEvent  sk     ::  !?@U]]""5<<0ZZ""#<=$$U^^4w&u--rW   c                     t         |   |       d}t        j                  t        j                  |d       | j
                  j                          y )Nz"WEB: Flushing live region messagesT)r0   presentationInterruptr   printMessagerZ   r`   flushMessages)rS   	killFlashmsgrU   s      rV   r+  zScript.presentationInterrupt  s?    %i025++S$7,,.rW   c              #   .  K   | j                   j                         s:d|g}t        j                  t        j                  |d       t
        |   ||       yd| _        t        j                         j                  d      }|t        j                  k(  }|| j                   j                         \  }}n|}| j                   j                         \  }}fdd| _        d}	|	sb|r| j                   j!                  ||      }
n| j                   j#                  ||      }
|
| _        t'        |
      D ]t  \  }}|\  }}}}d|d|d	|d
|d|dg}t        j                  t        j                  |d       | j                   j)                  ||
      r]||k(  rc| j                   j+                  |      r| j                   j-                  ||
      r| j.                  j1                  |gd|      }|} |      \  }}t3        |      t3        |      k7  rt'        |      D ]  \  }}t5        j6                  ||||      }d|g}t        j                  t        j                  |d       | j8                  j;                  |       | j<                  j?                  |||       |||   g  w |
d   d   |
d   d   }}| j                   jA                  ||dz
        \  }}||k(  r$||k  r| j                   jA                  ||      \  }}||k(  r5||k  r0d|d|d|d|g}t        j                  t        j                  |d       n|du }	|	sbd| _        g | _        g | _        d}t        jB                  t        j                  |d       | jE                          yw)zACreates a generator that can be used to iterate document content.z.WEB: textLines called for non-document contentTNFsayAllStylec                 &   g g }}| D ]  }t        |t              r. |      \  }}|j                  |       |j                  |       At        |t              r|j	                  |       ct        |t
              st|j	                  |        ||fS N)
isinstancelistextendstrappendr   )
utteranceselementsvoicesuev_parseUtterancess         rV   r?  z*Script.textLines.<locals>._parseUtterances,  s    !2fH %a&+A.DAqOOA&MM!$3'OOA&4(MM!$% V##rW   zWEB SAY ALL CONTENT:z. 'z' (-))eliminatePausespriorObjWEBr)   r   rp   r   z5WEB: Cycle within object detected in textLines. Last:, zNext:z0WEB: textLines complete. Verifying SayAll status)#r[   r\   r   rY   rZ   r0   	textLinesr4   r   r>   r?   r   SAYALL_STYLE_SENTENCEgetCaretContextgetPriorContextr3   getSentenceContentsAtOffsetgetLineContentsAtOffsetr2   	enumerateisInferredLabelForContentsisLabellingInteractiveElementisLinkAncestorOfImageInContentsspeechGeneratorgenerateContentslenr   SayAllContext_sayAllContextsr8  eventSynthesizerscroll_into_viewfindNextCaretInOrderr,  inSayAll)rS   objoffsetrc   r1  sayAllBySentencecharacterOffsetrD  priorOffsetdonecontentsicontentstartOffset	endOffsettextr9  r:  r;  elementcontextlastObj
lastOffsetr/  r?  rU   s                           @rV   rG  zScript.textLines  s     ~~//1FLFe..=Gc6*$)!&113>>}M&(*H*HH>#'>>#A#A#C C$O $ > > @+	$ >>EEc?[>>AA#W#+D '1 !/
74;1[)T0T3T5+sIWZ\!!%"2"2FDA>><<WhO)+>>??D>>AA#xP!11BBIth C H
#3J#? &x=CK/"+H"5 /JAw*88Wk9>G#W-F%%e&6&6E((//8))::3YW"F1I../5!/F #+2,q/8B<?ZG#'>>#F#FwPZ]^P^#_ Cg~/Z"?'+~~'J'J7T^'_$_g~/Z"?Q!4Wc4Z!!%"2"2FDA$;Dg j !!@5++S$7s   MNANc                 N   | j                   j                  |      }|syt        j                  |      }|dk  ryt	        ||      }| j                   j                  |      }| j                   j                  |||       t        j                  |      }||z
  t        j                         j                  d      k  ryt        j                         j                  d      }|t        j                  k(  ry| j                  r2|t        j                  k(  r| j                   j                  |||f      ry| j                   j!                  ||      }| j#                  |       | j%                  |       | j                   j'                         }	|	r| j)                  |	       d| _        y)zAUpdates the context and presents the find results if appropriate.Nr   documentFramer   r   T)r[   getDocumentForObjectr   get_selection_start_offsetmaxrI  setCaretContextget_selection_end_offsetr   r>   r?   r   r   r6   r  contextsAreOnSameLinerL  speakContentsupdateBraillegetFindResultsCountpresentMessage)
rS   rZ  r[  documentstartrg  endr  r`  resultsCounts
             rV   presentFindResultszScript.presentFindResultsx  sc    >>66s;11#619VU#..00x0H&&sF(&K--c2;)446AAB\]]$//1<<=ST	000%%H???~~33Gc6]K>>99#vF8$3~~99;-%)"rW   c                    | j                   j                         s:d|g}t        j                  t        j                  |d       t
        |   |||      S |xs" t        j                         j                         }d|g}t        j                  t        j                  |d       t        j                  | j                  ||      | j                         y)zSpeaks the contents of the document beginning with the present
        location.  Overridden in this script because the sayAll could have
        been started on an object without text (such as an image).
        z+WEB: SayAll called for non-document contentTz'WEB: SayAll called for document content)r[   r\   r   rY   rZ   r0   r   r	   r>   get_locus_of_focusr   rG  _Script__sayAllProgressCallback)rS   
inputEventrZ  r[  rc   rU   s        rV   r   zScript.sayAll  s     ~~//1CSIFe..=7>*c6::D]--/BBD;SA%**FD9dnnS&143P3PQrW   c                    | j                   j                         st        	|   ||      S t	        j
                         j                  d      sy	 | j                  d   \  }}}}t        j
                         j                  d |d       | j                   j                  ||       | j                   j                  ||      \  }}| j                  d ||       y# t        $ r Y yw xY w)NrewindAndFastForwardInSayAllFr   notify_scriptT)r[   r\   r0   _rewindSayAllr   r>   r?   r2   
IndexErrorr	   set_locus_of_focusrp  findPreviousCaretInOrderr   )
rS   rg  minCharCountrZ  rx  ry  stringprevObj
prevOffsetrU   s
            rV   r  zScript._rewindSayAll  s    ~~//17(,??**,778VW	&*&:&:1&=#CV 	  "55dCu5U&&sE2"nnEEc5QD':.  		s   C 	C&%C&c                    | j                   j                         st        |   |      S t	        j
                         j                  d      sy	 | j                  d   \  }}}}t        j
                         j                  d |d       | j                   j                  ||       | j                   j                  ||      \  }}| j                  d ||       y# t        $ r Y yw xY w)Nr  Fr)   r  T)r[   r\   r0   _fastForwardSayAllr   r>   r?   r2   r  r	   r  rp  rX  r   )	rS   rg  rZ  rx  ry  r  nextObj
nextOffsetrU   s	           rV   r  zScript._fastForwardSayAll  s    ~~//17-g66**,778VW	&*&:&:2&>#CV 	  "55dCu5U&&sC0"nnAA#sKD':.  		s   C 	C%$C%c                    | j                   j                         st        |   ||       y |t        j
                  j                  k(  rEt        t        j                  t        j                        rd| _        t        j                  j                  }|dk(  r| j                  |      ry |dk(  r| j                  |      ry | j                   j#                         s| j$                  j#                         st'        j(                         j+                  |j,                  |j.                         | j                   j1                  |j,                  |j.                         | j3                  |j,                         d| _        g | _        g | _        y t'        j(                         j;                  d |j,                  d       t'        j(                         j+                  |j,                  |j.                  |j<                  t&        j>                         | j                   jA                  |j,                  |j.                         y )NTDownUpFr  )!r[   r\   r0   r~  r   rT  INTERRUPTEDr4  r   lastInputEventr   KeyboardEventr4   event_stringr  r  r_   'last_input_event_was_navigation_commandra   r	   r>   emit_region_changedrZ  currentOffsetsetCaretPositionrt  r3   r2   rU  r  currentEndOffsetr   rp  )rS   rg  progressTypelastKeyrU   s       rV   __sayAllProgressCallbackzScript.__sayAllProgressCallback  s   ~~//1G,WlC<55AAA*33[5N5NO,0)$33@@f$)@)@)I_););G)D22ZZ\!00XXZ!,,.BBW%:%:<NN33GKKAVAVW&&w{{3"DN#%D #%D   "55dGKKW\5]  "66KK..0H0H!!	# 	&&w{{G4I4IJrW   c                     | j                   S )z% Returns True if we're in focus mode.)r;   r   s    rV   inFocusModezScript.inFocusMode  s        rW   c                     | j                   S )z-Returns True if we're in 'sticky' focus mode.)r<   r   s    rV   focusModeIsStickyzScript.focusModeIsSticky  s     &&&rW   c                     | j                   S )z.Returns True if we're in 'sticky' browse mode.)r=   r   s    rV   browseModeIsStickyzScript.browseModeIsSticky  s     '''rW   c                 8   | j                   r(d}t        j                  t        j                  |d       y| j                  r(d}t        j                  t        j                  |d       y| j                         r(d}t        j                  t        j                  |d       y| j                  j                         xs | j                  j                         }t        j                         j                  d      s*|r(d}t        j                  t        j                  |d       y|rt        j                  |      rd}| j                  j                         }t        j                         j                  d	      sE|rC| j                  j!                  |      s(d
}t        j                  t        j                  |d       yt        j                         j                  d      s7|s5|s3d}t        j                  t        j                  |d       | j"                  S | j                  j%                  |      r+d|dg}t        j&                  t        j                  |d       yt)        j*                  |      xs t)        j,                  |      }| j"                  rF|rD| j                  j/                         r*d|g}t        j&                  t        j                  |d       y| j"                  r| j                  j1                  |      rm| j                  j3                  |      r*d|g}t        j&                  t        j                  |d       yd}t        j                  t        j                  |d       yd|dg}t        j&                  t        j                  |d       y)z0Returns True if we should use focus mode in obj.z2WEB: Using focus mode because focus mode is stickyTz7WEB: Not using focus mode because browse mode is stickyFz2WEB: Not using focus mode because we're in SayAll.r   z4WEB: Not using focus mode due to struct nav settingsNr   z3WEB: Not using focus mode due to caret nav settingsr   z>WEB: Not changing focus/browse mode due to native nav settingszWEB: Using focus mode becausezis a focus mode widgetz5WEB: Staying in focus mode due to arrowing in role ofz/WEB: Forcing browse mode for web app descendantzAWEB: Staying in focus mode because we're inside a web applicationzWEB: Not using focus mode forzdue to lack of cause)r<   r   r,  rZ   r=   rY  r_   r  ra   r   r>   r?   r   is_deadr]   r[   isNavigableToolTipDescendantr;   isFocusModeWidgetrY   r   r$  is_radio_button lastInputEventWasUnmodifiedArrowisWebAppDescendant"forceBrowseModeForWebAppDescendant)rS   rZ  r  r/  lastCommandWasStructNavlastCommandWasCaretNavrc   doNotToggles           rV   useFocusModezScript.useFocusMode  s    ""FCu//d;##KCu//d;==?FCu//d; %%MMO M""JJL 	   **,778TU&HCu//d;x''0G!%!5!5!]!]!_**,778ST&>>>>wGGCu//d;**,778TU+/ERCu//d;$$$>>++C05s<TUFe..=!))#.R+2M2Mc2R1`1`1bMsSFe..=!B!B3!G~~@@EKSQ!!%"2"2FDAUCu//d;138NO%**FD9rW   c                 h     | j                   j                  |fi |}t        j                  |       y)zSpeaks the specified contents.N)rQ  rR  r   speak)rS   r`  argsr9  s       rV   rs  zScript.speakContentsH  s-     ;T))::8LtL
Z rW   c                    | j                   j                         s+| j                  j                  |      st        	|   |       y| j                  j                  |      }| j                  j                  |      \  }}|syd}| j                  j                  ||      rIt        j                  |      r4t        j                  |      d   }|| j                  k(  rd}|||dz   |gg}n| j                  j                  ||      }|sy|d   \  }}}}|dkD  r|xs d}|r$| j                  ||       | j!                  |       n| j#                  |       d| j$                  d<   y)	z3Speaks the character at the current caret position.Nrk  r   rs   r   
charlastTextUnitSpoken)r]   r  r[   $isContentEditableWithEmbeddedObjectsr0   sayCharactergetTopLevelDocumentForObjectrI  treatAsEndOfLiner   supports_textr   get_character_at_offsetEMBEDDED_OBJECT_CHARACTERgetCharacterContentsAtOffsetspeakMisspelledIndicatorspeakCharacterrs  pointOfReference)
rS   rZ  rw  r[  r`  r  rx  ry  r  rU   s
            rV   r  zScript.sayCharacterN  sP    ##KKM>>FFsKG %>>>>sCnn4484LV>>**37H<R<RSV<W11&9!<Dt555ffqj$78H~~BB3OH"*1+UC19^tF))#u5'x(6<23rW   c                 
   | j                   j                  |      }| j                  j                         s|st        |   |       y| j                   j                  |      }| j                   j                  |      \  }}| j                   j                         \  }}|dk(  r|dz  }| j                   j                  ||d      }|d   \  }}	}
}| j                  ||	       | j                  |       d| j                  d	<   y)
z.Speaks the word at the current caret position.Nrk  Rightr   TuseCacher   wordr  )r[   r  r]   r  r0   sayWordr  rI  lastKeyAndModifiersgetWordContentsAtOffsetr  rs  r  )rS   rZ  
isEditablerw  r[  	keyStringmodswordContentstextObjrc  rd  r  rU   s               rV   r  zScript.sayWords  s     ^^HHM
##KKMV`GOC >>>>sCnn4484LV..<<>	4aKF~~==c6TX=Y0<Q-i%%g{;<(6<23rW   c                 F   | j                   j                         }| j                  j                         xs | j                  j                         }| j                  j                  |      }|s|s|st        
|   |       y| j                  j                  |      }d}|s|r| j                  j                  |      \  }}| j                  j                  |      \  }}| j                  j                  ||d      }	| j                  |	|       d| j                  d<   y)z.Speaks the line at the current caret position.Nrk  Tr  )rD  liner  )r]   r  r_   ra   r[   r  r0   sayLiner  rJ  rI  rL  rs  r  )rS   rZ  r  r  r  rw  rD  r^  r[  r`  rU   s             rV   r  zScript.sayLine  s    "&!5!5!]!]!_%%MMO M""JJL 	  ^^HHM
&*A:GOC >>>>sC!Z$(NN$B$BQY$B$Z!Hknn4484LV>>99#vPT9U8h76<23rW   c                 *   | j                   j                  |      rt        j                  |      rt	        
|   |fi | y t        j                  |      rt	        
|   |fi | y |j                  d      }| j                  j                         s&|j                  d      st        j                  |      r"| j                   j                         \  }}||d<   t        j                  |      rt	        
|   |fi | y |j                  dd      }d|d|g}t        j                  t        j                   |d       d}|j                  dd	      }| j                   j#                  |||      }	| j%                  |	        | j&                  |	fi | y )
NrD  includeContext	interruptFzWEB: Presenting objectz. Interrupt:Tr[  r   )r[   r\   r   is_documentr0   presentObjectis_status_barr   r]   r  r   	get_tablerJ  is_entryr   rY   rZ   getObjectContentsAtOffsetdisplayContentsrs  )rS   rZ  r  rD  r^  r  rc   r  r[  r`  rU   s             rV   r  zScript.presentObject  sa   ~~//48O8OPS8TG!#..$$S)G!#..88J'GGIhh'(G,=,=c,B$(NN$B$B$D!Hk'D$G!#..HH[%0	*CK%**FD9
 (A&>>;;CRX&8,t,rW   c                 v    dt        j                  |      v r| j                  |       yt        |   |       y)z@Try to reposition the cursor without having to do a full update.   ￼N)r   get_all_textrt  r0    updateBrailleForNewCaretPosition)rS   rZ  rU   s     rV   r  z'Script.updateBrailleForNewCaretPosition  s6     v**3//s#05rW   c                 .   t        j                         j                  d      sIt        j                         j                  d      s&t        j                  t        j
                  dd       y| j                  rQdt        j                  |      vr:d|g}t        j                  t        j
                  |d       t        | ,  |fi | y|j                  d| j                  j                  |            }|s:d	|g}t        j                  t        j
                  |d       t        | ,  |fi | y| j                  j                  |      }| j                   j#                         s| j$                  j#                         s| j&                  j#                         sk|sit)        j*                  |      sT| j                  j-                         s:d
|g}t        j                  t        j
                  |d       t        | ,  |fi | y| j                  j/                  |d      \  }}|dkD  r<|r:| j                  j1                  |      rt3        |t        j4                  |            }| j                  j7                  ||      }| j9                  ||       y)z5Updates the braille display to show the given object.enableBrailleenableBrailleMonitorBRAILLE: disabledTNr  z#WEB: updating braille in focus moderl  z-WEB: updating braille for non-document objectz3WEB: updating braille for unhandled navigation type)rl  getReplicantr   rk  )r   r>   r?   r   r,  rZ   r;   r   r  rY   r0   rt  r   r[   r  r  r]   r  r_   ra   r   is_plain_text&lastInputEventWasCaretNavWithSelectionrI  treatAsTextObjectminget_character_countrL  r  )	rS   rZ  r  rc   rw  isContentEditabler[  r`  rU   s	           rV   rt  zScript.updateBraille  s     **,77H#..0;;<RSu//1DdK1D1DS1I!I;SAFe..=G!#..88OT^^-X-XY\-]^EsKFe..=G!#.. NNOOPST##KKM,,TTV&&NNP$++H5>>HHJKSQFe..=G!#.. nn448Z^4_VA:+0P0PQT0U!;!;C!@AF>>99#vFXX>rW   c                 x   t        j                         j                  d      sIt        j                         j                  d      s&t        j                  t        j
                  dd       y| j                  dd      }|j                  d      }| j                  j                  ||      }|sy|\  }}|D ]  }| j                  ||        |j                  r:|j                  d	   j                  j                  d
      |j                  d	   _        | j                  |d       | j                  dd       y)zDisplays contents in braille.r  r  r  TN)clearBrailleaddLinerl  rk  r)    F)getLinkMask)panToCursorr  )r   r>   r?   r   r,  rZ   getNewBrailleLiner   brailleGeneratorrR  addBrailleRegionsToLineregionsr  rstripsetBrailleFocusrefreshBraille)rS   r`  r  r  rw  r  focusedRegionregions           rV   r  zScript.displayContents  s     **,77H#..0;;<RSu//1DdK%%4%F88O,((99(RZ9[!) 	7F((6	7 <<&*ll2&6&=&=&D&DS&IDLL#]>%@rW   c                    | j                   j                         s*| j                  j                         r| j	                         st
        |   ||       y| j                  j                         }|sy|d   \  }}}}| j                  j                  ||       | j                  |       | j                  d      r	 | j                  d      r| j                  d       y)zPans braille to the left.Nr   F	panToLeftT)flatReviewPresenter	is_activer[   r\   isBrailleBeginningShowingr0   r   getPreviousLineContentsr  rt  panBrailleInDirectionr  	rS   r  	panAmountr`  rZ  rx  ry  r  rU   s	           rV   r   zScript.panBrailleLeft  s     ##--/..224002G":y9>>99;"*1+UC''U33
 ((5(9 ((5(9 	E"rW   c                    | j                   j                         s*| j                  j                         r| j	                         st
        |   ||       y| j                  j                         }|sy|d   \  }}}}| j                  j                  ||       | j                  |       | j                  d      r	 | j                  d      r| j                  d       y)zPans braille to the right.Nr   Tr  F)r  r  r[   r\   isBrailleEndShowingr0   r   getNextLineContentsr  rt  r  r  r  s	           rV   r   zScript.panBrailleRight&  s     ##--/..224**,G#J	:>>557"*1+UC''U33
 ((4(8 ((4(8 	E"rW   c                    | j                   s6| j                  j                        r| j                  j                        rt        |   |||      S |t        dt        j                              }| j                  j                        r||t        j                  ||      ||fS | j                  j                  d      \  }}|k(  r|}n|}| j                  j                  |      }t        t        fd|            }t        |      dk(  rd}	n| j                  j!                  ||      }	|	dkD  r||	   \  }
}}}| j"                  |vr|||fS y)z<To-be-removed. Returns the string, caretOffset, startOffset.Nr   rk  c                     | d   k(  S Nr    )xrZ  s    rV   <lambda>z+Script.getTextLineAtCaret.<locals>.<lambda>U  s    1 rW   r   r)   )rs   r   r   )r;   r[   r\   r  r0   getTextLineAtCaretro  r   get_caret_offsetr  get_substringrI  rL  r5  filterrS  findObjectInContentsr  )rS   rZ  r[  rc  rd  
contextObjcontextOffsetcaretOffsetr`  index	candidater  rU   s    `          rV   r  zScript.getTextLineAtCaret@  sS    DNN$D$DS$Inn..s37-c6;	RR>F33C89F>>++C0&9+@''[)DfkYY$(NN$B$BQU$B$V!
M'K K>>99#vF4h?@x=AENN77VXNE2:8@5I{Iv--V;{K77rW   c                 ^   | j                   s | j                  t        j                         y| j                  r<| j
                  \  }}| j                  j                  ||       | j                          y| j                   }| j                  j                  |d      \  }}|syt        j                  |      rt        j                  |       | j                  j                  ||      }| j                  j!                  ||       | j#                  |       | j%                  |       d| _        y)z@Moves the context to/from the mouseover which has just appeared.Nr   T)r8   rv  r   MOUSE_OVER_NOT_FOUNDr:   oldMouseCoordinatesrV  route_to_pointrestorePreMouseOverContextr[   findFirstCaretContextr   is_focusabler   
grab_focusr  r  rs  rt  )rS   r  r  yrZ  r[  r`  s          rV   r   zScript.moveToMouseOverb  s     (( = =>""++DAq!!00A6++-''nn::3BV##C($>>;;CH''V48$3"&rW   c                     | j                   \  }}| j                  j                  ||       | j                  | j                  j	                  ||             | j                  |       d| _        d| _        y)z;Cleans things up after a mouse-over object has been hidden.FN)r9   r[   r  rs  r  rt  r:   r8   )rS   rZ  r[  s      rV   r  z!Script.restorePreMouseOverContext}  sd     //V''V44>>CCCPQ3"'$(!rW   c                    | j                   r|r| j                  t        j                         d| _        d| _        d| _         d}| j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                  j                  | | j                  |       y )NFTzenable sticky browse mode)r=   rv  r   MODE_BROWSE_IS_STICKYr;   r<   r]   r^   r_   r`   ra   rS   r  forceMessagere   s       rV   r   zScript.enableStickyBrowseMode  s    ''< > >?!"'#' ,--dD4E4EvN!!2249J9JFS//d6G6GP,,T43D3DfMrW   c                    | j                   r|r| j                  t        j                         d| _        d| _         d| _        d}| j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                  j                  | | j                  |       y )NTFzenable sticky focus mode)r<   rv  r   MODE_FOCUS_IS_STICKYr;   r=   r]   r^   r_   r`   ra   r$  s       rV   r   zScript.enableStickyFocusMode  s    &&, = => "&#( +--dD4E4EvN!!2249J9JFS//d6G6GP,,T43D3DfMrW   c                    t        j                         j                  d       }|r | j                  t        j
                         n| j                  t        j                         t        j                         j                  d|       y )Nr   )r   r>   r?   rv  r   MODE_LAYOUTMODE_OBJECTr@   )rS   r  r   s      rV   r   zScript.toggleLayoutMode  sb    )446AA,OO
 4 45 4 45##%00zJrW   c                    | j                   j                  |      \  }}| j                  rt        j                  |      }t        j                  |      r| j                   j                  |d       nDt        j                  |      r/| j                   j                  t        j                  |      d       | j                  s| j                  t        j                         n| j                   j                  |      se| j                  j                         s6| j                   j                         s| j"                  j                         s|rt        j$                  |       | j                  t        j&                         | j                   | _        d| _        d| _        d}| j                  j-                  | | j                  |       | j                   j-                  | | j                  |       | j.                  j-                  | | j                  |       | j"                  j-                  | | j                  |       y )Nr)   Fztoggling focus/browse mode)r[   rI  r;   r   
get_parentr   is_list_boxrp  is_menur5   rv  r   MODE_BROWSEgrabFocusWhenSettingCaretr]   r  r_   ra   r  
MODE_FOCUSr<   r=   r^   r`   )rS   r  rl  rZ  r]  parentre   s          rV   r   zScript.togglePresentationMode  s   !%!?!?!No((-F&&v...vr:$$V,..x/B/B6/JBO//##H$8$89>>;;C@((PPR00XXZ**RRT!##C( 3 34 $ 1 11"'#( ---dD4E4EvN!!2249J9JFS//d6G6GP,,T43D3DfMrW   c                 l   d|d|g}t        j                  t         j                  |d       |rt        j                  |      sy|rt        j
                  |      ry| j                  j                  |      }|s| j                  j                  |      r|}|s;d}t        j                  t         j                  |d       d| _
        d| _        | j                  j                  |      }|s| j                  j                  |      r|}|r*|s(d}t        j                  t         j                  |d       yd|g}t        j                  t         j                  |d       d}| j                  j                  | d|       | j                  j                  | d|       | j                  j                  | d|       | j                   j                  | d|       y| j"                  j%                         r| j"                  j'                          d	}	| j                  j)                  |      s@| j                  j                  |      r_|t+        j,                         j/                         k(  r:| j                  j1                  |
      \  }
}|
rt        j                  |
      r|
|}	}t3        j4                  |      rFd}t        j                  t         j                  |d       | j                  j7                  |d	      \  }}| j                  j9                  |      r8t;        j<                  |      }d	|cxk  rt;        j>                  |      k  rn n|}	| j                  jA                  ||	|       | jC                  ||
       d}i }| j                  jE                         }| j                  jE                         xs | j                   jE                         }| j                  jG                         rg|re|jH                  jK                  d      rJd}t        j                  t         j                  |d       | j                  jM                  ||	      }||d<   n:| j                  jO                  |      rv|s|rrt3        jP                  |      rt        jR                  |      sHd|dg}t        j                  t         j                  |d       | j                  jM                  ||	      }n| j                  jU                  |      rHd|dg}t        j                  t         j                  |d       | j                  jM                  |d	      }nF| j                  jW                         rxtY        jZ                  |      sc| j                  j]                  |      sHd|dg}t        j                  t         j                  |d       | j                  jM                  ||	      }n| j                  j_                  |      rHd|dg}t        j                  t         j                  |d       | j                  jM                  ||	      }nQt3        j`                  |      rHd|dg}t        j                  t         j                  |d       | j                  jc                  |d	      }n| j                  je                  ||      rRd|jf                  dg}t        j                  t         j                  |d       | j                  jM                  |d	      }n|rb|jH                  jK                  d      rG| j                  ji                  |      r,d|dg}t        j                  t         j                  |d       n"| j                  jk                         rYt        j                  |      sDd}t        j                  t         j                  |d       | j                  jM                  ||	      }n| j                  jk                         rf|rd|jH                  jK                  d      rId}t        j                  t         j                  |d       | j                  jM                  ||	      }||d<   n/d|dg}t        j                  t         j                  |d       ||d<   |rvt        j
                  |      rad}t        j                  t         j                  |d       | jm                  dd      r(d }t        j                  t         j                  |d       y|r | jn                  |fi | n2 | jp                  jr                  |fi |}tu        jv                  |       | jy                  |       | j                  j{                  |      r;| j|                  s/| j                  j                  |       }| j                  d|       y| j                  s=| j|                  s1| j                  ||      | j                  k7  r| j                  d|       | j                  j                  |      sd!}| j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                  j                  | | j                  |       | j                   j                  | | j                  |       y)"z3Handles changes of focus of interest to the script.zWEB: Focus changing fromtoTz/WEB: Locus of focus changed to non-document objFzAWEB: Not refreshing grabs because we weren't in a document beforez.WEB: Refreshing grabs because we left documentz$locus of focus no longer in documentr   rk  z5WEB: Event source has bogus role. Likely browser bug.Nzobject:text-caret-movedz8WEB: Last input event was mouse button. Generating line.rD  zWEB: New focusz"content editable. Generating line.zis anchor. Generating line.z!was scrolled to. Generating line.z has math child. Generating line.zis heading. Generating object.zWEB: Sourcez'is same page fragment. Generating line.zobject:children-changed:removez2is recovery from removed child. Generating speech.zIWEB: Last input event was line nav; oldFocus is invalid. Generating line.r   zIWEB: Last input event was line nav and children changed. Generating line.z)is not a special case. Generating speech.zWEB: New focus has since diedr  z7WEB: Have matching focused event. Not speaking contentszlocus of focus now in document)Dr   rY   rZ   r   is_validr  r[   r  
isDocumentr,  r6   r;   r]   r^   r_   r`   ra   r  r  quitinFindContainerr	   r>   get_active_windowrI  r   is_unknown_or_redundantr  r  r   r  r  rp  rt  r  lastInputEventWasMouseButtonr!  r"  rL  r  is_table_cellget_nameisAnchorlastInputEventWasPageNavr   r  isFeedArticleisFocusedWithMathChild
is_headingr  caretMovedToSamePageFragmentr%  r  lastInputEventWasLineNav_getQueuedEventrs  rQ  generateSpeechr   r  _saveFocusedObjectInfoinTopLevelWebAppr=   r\   r   r<   r  r   )rS   r)  oldFocusnewFocusrc   rw  r/  oldDocumentre   r  r  r  r[  
textOffsetr`  r  r  r  r9  announces                       rV   locusOfFocusChangedzScript.locusOfFocusChanged  s    -hhG%**FD9H--h7((2>>>>xHDNN55h?HCCu//d;).D& %D..EEhOK 9 9( C&Y""5#3#3S$?FTFe..=;F  11$fE%%66tT6J""33D$G00tVD##--/$$))+>>))(3~~((2}779KKMM(,(F(FU](F(^%Jh//
;(2M+..x8ICu//d;#~~CCHaPHf>>++H500:JJF&"<"<X"FF(&&xhG88<!%!5!5!]!]!_%%MMO M""JJL 	  >>668U&&'@ALCu//d;~~==hTH'D^^@@J&*A--h7H<M<Mh<W&2VWFe..=~~==hTH^^$$X.&2OPFe..=~~==hJH^^446&&x0^^11(;&2UVFe..=~~==hTH^^228<&2TUFe..=~~==hTH##H-&2RSFe..=~~??!LH^^88I#U\\3\]Fe..=~~==hJHuzz,,-MN11(;&JLFe..=^^446x?P?PQY?Z]Cu//d;~~==hTH^^4465&&'@A]Cu//d;~~==hTH'D&2]^Fe..='D((21Cu//d;##$BDIO""5#3#3S$?Dx040<--<<XNNJLL$##H->>**84T=U=U>>;;HEEH&&tX6&&++  848I8II''h7~~//95F  11$8I8I6R%%66tT=N=NPVW""33D$:K:KVT00t7H7H&QrW   c                    | j                   j                  |j                        s(d}t        j                  t        j
                  |d       y|j                  s(d}t        j                  t        j
                  |d       yt        j                  |j                        rVd}t        j                  t        j
                  |d       t        j                         j                  ||j                         yy)z>Callback for object:state-changed:active accessibility events.,WEB: Event source is not in document contentTFz2WEB: Ignoring because event source is now inactive8WEB: Event handled: Setting locusOfFocus to event source)r[   r\   r%  r   r,  rZ   r#  r   is_dialog_or_alertr	   r>   r  rS   r)  r/  s      rV   onActiveChangedzScript.onActiveChangedf  s     ~~//=@Cu//d;}}FCu//d;))%,,7LCu//d;$$&99%NrW   c                     | j                   j                  |j                        s(d}t        j                  t        j
                  |d       yy)zCCallback for object:active-descendant-changed accessibility events.rP  TFr[   r\   r%  r   r,  rZ   rS  s      rV   onActiveDescendantChangedz Script.onActiveDescendantChanged{  s=     ~~//=@Cu//d;rW   c                 (   |j                   r4| j                  r(d}t        j                  t        j                  |d       y| j
                  j                  |j                        s(d}t        j                  t        j                  |d       yt        j                         j                         }t        j                  |j                        sN| j
                  j                  ||j                        s(d}t        j                  t        j                  |d       y| j                  j                          | j
                  j!                  t#        j$                  |j                              r(d}t        j                  t        j                  |d       y| j
                  j'                         \  }}t#        j(                  |      s| j
                  j+                          d}t        j,                  |j                        sIt        j.                  |j                        s*d}d}t        j                  t        j                  |d       nt1        j2                  |j                        s*d}d}t        j                  t        j                  |d       nX|j                   sL| j4                  r@t#        j(                  |      r+d}d	|g}t        j6                  t        j                  |d       t9        j                         j;                  d
      s|r|j                   r | j=                  t>        j@                         nt#        jB                  |j                        rDt>        jD                  t#        jB                  |j                        z  }| j=                  |d       n| j=                  t>        jF                         | j
                  jI                         }|r7||j                  k7  r(d}t        j                  t        j                  |d       y|j                   | _        |j                   ry| j
                  jK                          t#        jL                  |      rd}t        j                         jO                         sX| j
                  j                  |      s=t        jP                  |      r(d}t        j                  t        j                  |d       yt9        j                         j;                  d      rg|red|j                  g}t        j6                  t        j                  |d       t1        jR                  |j                        }	|	r| j=                  |	       | j
                  j'                         \  }}t        jT                  |j                        s| j
                  jW                  |j                        rad|dg}t        j6                  t        j                  |d       t        j                         jY                  ||       | j[                  dd       y| j]                  |      | j4                  k7  r| j_                  d       |s(d}t        j                  t        j                  |d       y| j
                  ja                  |      rNd|g}t        j6                  t        j                  |d       t        j                         jY                  ||       y| j
                  jc                  |      rdt        jP                  |      rOd|dg}t        j6                  t        j                  |d       t        j                         jY                  ||       y|dkD  rOd|dg}t        j6                  t        j                  |d       t        j                         jY                  ||       yt        jP                  t        j                         j                               sOd|dg}t        j6                  t        j                  |d       t        j                         jY                  ||d       | je                  |       t1        jf                  |j                        r(d}t        j                  t        j                  |d       yt9        j                         j;                  d      sSd}t        j                  t        j                  |d       | ji                  | j
                  jk                  ||             yt9        j                         j;                  d      r9d}t        j                  t        j                  |d       | jm                  d       yd }t        j                  t        j                  |d       y)!z<Callback for object:state-changed:busy accessibility events.z/WEB: Ignoring: Already loading document contentTrP  Fz6WEB: Ignoring: Not document and not something we're in.WEB: Ignoring: Event source is nested documentz<WEB: Not presenting because source is not showing or visiblez,WEB: Not presenting because source lacks URIz)WEB: Not presenting due to focus mode foronlySpeakDisplayedText)resetStylesz2WEB: Ignoring: Event source is not active documentNz9WEB: Not presenting content, focus is outside of documentr,   zWEB: Getting page summary forzWEB: Setting locusOfFocus tozwith sticky focus modez WEB: Could not get caret contextz.WEB: Setting locus of focus to focusModeWidgetz+WEB: Setting locus of focus to focused linkz. No SayAll.r   z*WEB: Setting locus of focus to context objz. No SayAllz(no notification)z*WEB: Not doing SayAll due to page fragmentr+   z5WEB: Not doing SayAll due to sayAllOnLoad being FalseenableSpeechzWEB: Doing SayAllz5WEB: Not doing SayAll due to enableSpeech being False)7r#  r5   r   r,  rZ   r[   r\   r%  r	   r>   r}  r   is_document_webisOrDescendsFromr_   
clearCacherm  r   r,  rI  r5  clearCaretContext
is_showing
is_visibler   get_urir;   rY   r   r?   rv  r   PAGE_LOADING_STARTr=  PAGE_LOADING_END_NAMEDPAGE_LOADING_ENDactiveDocumentrg   r  focus_is_dead
is_focusedget_document_summaryis_busyisTopLevelWebAppr  r   r  r   r  isLinkrt  get_document_uri_fragmentrs  rL  r   )
rS   r)  r/  focusrZ  r[  shouldPresentrc   rg  summarys
             rV   onBusyChangedzScript.onBusyChanged  s    ==T99CCu//d;~~//=@Cu//d;((*==?**5<<8>>225%,,GJCu//d;!!,,.>>..x/B/B5<</PQBCu//d;nn446V  %NN,,.&&u||48N8Nu||8\!MPCu//d;##ELL1!M@Cu//d;4#4#49J9J39O!MA3GFe..=**,778PQVc}}##H$?$?@""5<<0558I8I%,,8WW##CU#;##H$=$=>668n<FCu//d;',}}$==))+C C'')779>>33E:%%e,MCu//d;&&(334GH]5u||DFe..= 55ellCG##G,nn446V""5<<0~~..u||<4c;STFe..=$$&99%E&&tT2S!T%6%66''-4Cu//d;>>++C0FLFe..=$$&99%E>>  %+*@*@*ECS.YFe..=$$&99%EA:BCWFe..=$$&99%E%%m&>&>&@&S&S&UVBCI\]Fe..=$$&99%eL3//=>Cu//d;  ",,.99.IICu//d;t~~EEc6RS  ((*55nE%Cu//d;KK
  JCu//d;rW   c                    | j                   j                          t        j                  |j                        s(d}t        j                  t
        j                  |d       y| j                   j                  |j                        }|s| j                   j                  |      r(d}t        j                  t
        j                  |d       y| j                   j                  |      r(d}t        j                  t
        j                  |d       yd}t        j                  t
        j                  |d       y| j                   j                  |dd      \  }}d|d|g}t        j                  t
        j                  |d       | j                  j                         r(d	}t        j                  t
        j                  |d       y| j                  j                         r(d
}t        j                  t
        j                  |d       y| j                   j                         r(d}t        j                  t
        j                  |d       y| j                   j#                         rd}t        j                  t
        j                  |d       |j                  |j$                  f||fk(  r(d}t        j                  t
        j                  |d       y|j                  |j$                  f| j&                  k(  r(d}t        j                  t
        j                  |d       y|j                  |j$                  f| _        d}t        j                  t
        j                  |d       | j                   j)                  |j                  |j$                         | j                   j+                  |j                         }t-        j.                         j1                  ||j                  |d       y| j                   j3                         rtd}t        j                  t
        j                  |d       | j                   j5                  |j                        r(d}t        j                  t
        j                  |d       y| j                   j7                         rd}t        j                  t
        j                  |d       | j9                  |j                  |j$                         | j;                  t-        j.                         j=                                y| j                   j?                  |      s(d}t        j                  t
        j                  |d       y| j                   jA                  |      rNd}t        j                  t
        j                  |d       | jC                  |j                  |j$                         y| j                   jE                  |      rNd}t        j                  t
        j                  |d       | jC                  |j                  |j$                         yt-        j.                         j=                         }| j                   jG                  ||j                        r\| j                   jI                         sB| j                   jK                         s(d}t        j                  t
        j                  |d       y| j                   jM                  ||      r(d}t        j                  t
        j                  |d       y| jN                  rC| j                   jQ                  |      r(d}t        j                  t
        j                  |d       y| j                   jS                  |      rTd}t        j                  t
        j                  |d       | jU                  |j                         | jW                  |       y| j                   jY                  |j                        sGt[        j\                  |j                        s(d}t        j                  t
        j                  |d       y| j                   j_                  |j                  |j$                        \  }}dx}x}	}
t        j`                  |j                  dd       | j                   jc                         r/d}t        j                  t
        j                  |d       dx}x}	}
n| j                   je                  |      r.d}t        j                  t
        j                  |d       dx}x}	}
n| j                   jg                         r(d}t        j                  t
        j                  |d       n| j                   ji                  |j                        r[t[        jj                  |j                        r<|j                  |k7  r-d}t        j                  t
        j                  |d       dx}x}	}
d |d|g}t        j                  t
        j                  |d       | j                   j)                  |||       t-        j.                         j1                  ||||	       |
S )!z:Callback for object:text-caret-moved accessibility events.WEB: Event source is not validT3WEB: Ignoring event believed to be browser UI noise@WEB: Ignoring event believed to be browser UI autocomplete noiserP  FzWEB: Context: rF  .WEB: Event ignored: Last command was caret nav/WEB: Event ignored: Last command was struct nav.WEB: Event ignored: Last command was table navz&WEB: Last input event was mouse buttonz(WEB: Event is for current caret context.z,WEB: Event is for last mouse button context.z1WEB: Event handled: Last command was mouse buttonzWEB: Last input event was Tab.z7WEB: Event ignored: Caret moved in document due to Tab.z+WEB: Event handled: Presenting find results4WEB: Event ignored: Not from locus of focus documentz6WEB: Event handled: Updating position due to insertionz5WEB: Event handled: Updating position due to deletionz+WEB: Event ignored: Editable combobox noisez&WEB: Event ignored: Autocomplete noisezEWEB: Event ignored: Caret moved outside active grid during focus modez=WEB: Event handled as the value-change event we wish we'd getzJWEB: Event ignored: Was for non-editable object we're treating as textlessz%Updating state for caret moved event.z"WEB: Caret moved due to scrolling.zWEB: Caret moved to fragment.z0WEB: Caret moved due to native caret navigation.z8WEB: Focused text field is not (yet) the locus of focus.z#WEB: Setting context and focus to: )6r[   sanityCheckActiveWindowr   r5  r%  r   r,  rZ   r  eventIsBrowserUINoise!eventIsBrowserUIAutocompleteNoiserI  rY   r]   r  r_   ra   r;  r#  r7   rp  isEntryDescendantr	   r>   r  lastInputEventWasTabr6  r8  r{  rG  r}  eventIsFromLocusOfFocusDocumenttextEventIsDueToInsertion_saveLastCursorPositiontextEventIsDueToDeletionisItemForEditableComboBoxlastInputEventWasCharNav lastInputEventWasLineBoundaryNaveventIsAutocompleteNoiser;   caretMovedOutsideActiveGridtreatEventAsSpinnerValueChangert  _presentTextAtNewCaretPositionr  r   is_editabler  clear_cacher?  rC  lastInputEventWasCaretNavisTextFieldri  )rS   r)  r/  rw  rZ  r[  rc   notifyro  forcehandleds              rV   onCaretMovedzScript.onCaretMoved  s    	..0  .2Cu//d;>>>>u||L~~33E:K""5#3#3S$?~~??FX""5#3#3S$?@Cu//d;nn44XueLV"Cv6%**FD9GGIBCu//d;$$LLNCCu//d;FFHBCu//d;>>668:Cu//d;emm,f=@""5#3#3S$?emm,0L0LLD""5#3#3S$?+0<<+FD(ECu//d;NN**5<<G99%,,GGF$$&99%vW[\>>..02Cu//d;~~((6O""5#3#3S$?>>))+?Cu//d;##ELL%--@''(@(@(B(U(U(WX~~==eDHCu//d;>>33E:JCu//d;((u}}E>>2259ICu//d;((u}}E((*==?>>33E5<<H>>::<>>BBD?Cu//d;>>225(C:Cu//d;!K!KE!RYCu//d;>>88?QCu//d;u||,//6~~//=**5<<8^Cu//d;nn::5<<WV#(((U\\52YZ>>2246Cu//d;'++F+UW^^88?1Cu//d;'++F+UW^^557DCu//d;^^''5%%ell3||u$LCu//d;'++F+UW7dFK%**FD9&&sFH=  "55eS&%PrW   c                 >   | j                   j                  |j                        s(d}t        j                  t        j
                  |d       y| j                   j                         \  }}||j                  k7  r(d}t        j                  t        j
                  |d       y| j                  j                  dd      \  }}t        |      t        |      k(  r7||j                  k(  r(d}t        j                  t        j
                  |d       y| j                  j                         rt        j                  |      s(d}t        j                  t        j
                  |d       y| j                  |dd	       t        |      |j                  f| j                  d<   y)
z?Callback for object:state-changed:checked accessibility events.rP  TFz'WEB: Event source is not context objectcheckedChanger
  z)WEB: Ignoring event, state hasn't changedz*WEB: Event is something default can handle)alreadyFocusedr  )r[   r\   r%  r   r,  rZ   rI  r  r   hashr#  r]   r  r   r  r  )rS   r)  r/  rZ  r[  oldObjoldStates          rV   onCheckedChangedzScript.onCheckedChanged  sI    ~~//=@Cu//d;nn446V%,,;Cu//d;0044_iP<49$U]])B=Cu//d;$$LLN**3/>Cu//d;3ttD15cEMM1Io.rW   c                 *   t        j                  d       t        j                  j                        rt        j                  d       | j                  j                        r(d}t        j                  t        j                  |d       y| j                  j                  j                        }| j                  j                  j                        }|r|st        j                         j                         }j                  |k(  rFd}t        j                  t        j                  |d       | j                  j!                  |d       nt        j                         j#                         rFd}t        j                  t        j                  |d       | j                  j!                  |d       nPt        j$                  |fd      rEd}t        j                  t        j                  |d       | j                  j!                  |d       nd	}t        j                  t        j                  |d       | j                  j'                          n|r| j                  j)                        rCd
}t        j                  t        j                  |d       | j*                  j-                         yd}t        j                  t        j                  |d       yd}t        j                  t        j                  |d       y| j.                  r(d}t        j                  t        j                  |d       yt        j0                  |      s+d|dg}t        j2                  t        j                  |d       yt        j4                  |      r+d|dg}t        j2                  t        j                  |d       yt        j0                  j6                        s(d}t        j                  t        j                  |d       y| j                  j9                  j6                        r(d}t        j                  t        j                  |d       yt        j:                  j6                        rHj6                  | j                  j=                         k(  r5dj6                  dg}t        j2                  t        j                  |d       yd}t        j                  t        j                  |d       | j?                  j6                  d       t        j@                  j6                        }|r| j                  jC                  |       }d|g}t        j2                  t        j                  |d       t        j                         jE                  ||       | j                  jG                  |d       y| jH                  rdtK        jJ                         | jH                  z
  cxk  rdk  rn yg }	|	jM                  tN        jP                         |	jS                  | jT                  jW                  j6                  d             tY        jZ                  |	       j6                  | _.        | j                  j_                         | _0        yy)z>Callback for object:children-changed:add accessibility events.children-changed event.ru  T#WEB: Dumping cache: source is focuspreserveContextWEB: Dumping cache: dead focusc                 "    | j                   k(  S r3  r%  r  r)  s    rV   r  z(Script.onChildrenAdded.<locals>.<lambda>      ell9J rW   /WEB: Dumping cache: source is ancestor of focusWEB: Not dumping full cache'WEB: Event to be handled as live region:WEB: Ignoring because live region event not to be handled.,WEB: Could not get document for event sourceF7WEB: Ignoring because document content is being loaded.zWEB: Ignoring becausezis not valid.zis busy.z,WEB: Ignoring because any data is not valid.zAWEB: Event handled by updating locusOfFocus and context to child.zWEB: Ignoringz(is last queued live region)zWEB: Presenting event.any_datar  z.WEB: Setting locusOfFocus and caret context tor   r   r  )1r   clear_cache_nowr   is_table_relatedr%  r   r[   r|  r   r,  rZ   isLiveRegionr  r	   r>   r}  	dumpCacherh  find_ancestorrg   handleAsLiveRegionr`   handleEventr5   r5  rY   rk  r'  handleEventFromContextReplicantis_alertlastQueuedLiveRegionr  get_focused_objectr  r  rp  lastMouseRoutingTimetimer8  r   NEW_ITEM_ADDEDr6  rQ  rF  r   r  r8   rI  preMouseOverContext)
rS   r)  r/  r  rw  ro  rc   focusedr  r9  s
    `        rV   onChildrenAddedzScript.onChildrenAdded  s    	  !:;''5##$=>>>//6GCu//d;~~225<<@>>>>u||LL!,,.AACE||u$;""5#3#3S$?((4(H))+99;6""5#3#3S$?((4(H''/JKG""5#3#3S$?((4(H3""5#3#3S$?113~~007?""5#3#3S$?&&2259  S""5#3#3S$?@Cu//d;''KCu//d;  *-xIFe..=x(-xDFe..=  0@Cu//d;>>99%PUCu//d;/~~!D!D!FF)5>>;YZ!!%"2"2FDA2Cu//d;u~~>!44U^^DG!^^==gFFJGT!!%"2"2FDA((*==eWfU..w:$$TYY[4;T;T-T)XWX)X  Jh556d22AA%..X\A]^LL$(-D%'+~~'E'E'GD$rW   c                    t        j                  d       t        j                  j                        rt        j                  d       | j                  j                  j                        s(d}t        j                  t        j                  |d       y| j                  r(d}t        j                  t        j                  |d       y| j                  j                  j                        rk| j                  j                        r(d}t        j                  t        j                  |d       yd}t        j                  t        j                  |d       y| j                  j                  j                        }|r}t        j                          j#                         }j                  |k(  rFd}t        j                  t        j                  |d       | j                  j%                  |d	       nt        j                          j'                         rEd
}t        j                  t        j                  |d       | j                  j%                  |d	       nt        j(                  |fd      rEd}t        j                  t        j                  |d       | j                  j%                  |d	       nAd}t        j                  t        j                  |d       | j                  j+                          | j                  j                        r(d}t        j                  t        j                  |d       yy)zBCallback for object:children-changed:removed accessibility events.r  z-WEB: Event source is not in document content.TFr  z1WEB: Event handled for removed live-region child.z'WEB: Ignoring removal from live region.r  r  r  c                 "    | j                   k(  S r3  r  r  s    rV   r  z*Script.onChildrenRemoved.<locals>.<lambda>]  r  rW   r  r  z%WEB: Event handled for removed child.)r   r  r   r  r%  r   r[   r\   r   r,  rZ   r5   r  handleEventForRemovedChildr  r	   r>   r}  r  rh  r  rg   )rS   r)  r/  rw  ro  s    `   rV   onChildrenRemovedzScript.onChildrenRemoved8  sc    	  !:;''5##$=>~~//=ACu//d;''KCu//d;>>&&u||4~~88?I""5#3#3S$?  @""5#3#3S$?>>>>u||L!,,.AACE||u$;""5#3#3S$?((4(H))+99;6""5#3#3S$?((4(H''/JKG""5#3#3S$?((4(H3""5#3#3S$?113>>44U;9Cu//d;rW   c                    | j                   j                  |j                        s(d}t        j                  t        j
                  |d       yt        j                         j                         }|j                  t        j                  |      k7  r(d}t        j                  t        j
                  |d       yt        j                         | j                  d<   | j                  t        j                         | j                   j!                  |      }|r+| j                  | j                   j#                  |d             y)z:Callback for object:column-reordered accessibility events.rP  TFWEB: focus is not in this tablelast-table-sort-time)r[   r\   r%  r   r,  rZ   r	   r>   r}  r   r  r  r  rv  r   TABLE_REORDERED_COLUMNScontainingTableHeadergetSortOrderDescriptionrS   r)  r/  ro  headers        rV   onColumnReorderedzScript.onColumnReorderedm  s     ~~//=@Cu//d;((*==?<<7,,U333Cu//d;8<		45H<<=55e< F Fvt TUrW   c                 T   | j                   j                  t        j                  |j                              r(d}t        j                  t
        j                  |d       yd}t        j                  t
        j                  |d       d| _        | j                  j                          y)z9Callback for document:load-complete accessibility events.rY  Tz6WEB: Updating loading state and resetting live regionsF)r[   rm  r   r,  r%  r   r,  rZ   r5   r`   resetrS  s      rV   onDocumentLoadCompletezScript.onDocumentLoadComplete  s     >>..x/B/B5<</PQBCu//d;F5++S$7',$$$&rW   c                     | j                   j                  t        j                  |j                              r(d}t        j                  t
        j                  |d       yd}t        j                  t
        j                  |d       d| _        y)z8Callback for document:load-stopped accessibility events.rY  TWEB: Updating loading stateF	r[   rm  r   r,  r%  r   r,  rZ   r5   rS  s      rV   onDocumentLoadStoppedzScript.onDocumentLoadStopped  sm     >>..x/B/B5<</PQBCu//d;+5++S$7',$rW   c                     | j                   j                  t        j                  |j                              r(d}t        j                  t
        j                  |d       yd}t        j                  t
        j                  |d       d| _        y)z2Callback for document:reload accessibility events.rY  Tr  r  rS  s      rV   onDocumentReloadzScript.onDocumentReload  sm     >>..x/B/B5<</PQBCu//d;+5++S$7'+$rW   c                    t        j                  |j                        s(d}t        j                  t        j
                  |d       y| j                  j                  |j                        s(d}t        j                  t        j
                  |d       yt        j                         j                         }| j                  j                  d      \  }}d|d|g}t        j                  t        j
                  |d       t        j                  |      s\|j                  |k(  rMd}t        j                  t        j
                  |d       | j                  j                  |j                  d	       y)
z@Callback for object:state-changed:expanded accessibility events.rt  TrP  F)searchIfNeededWEB: Caret context isrF  z*WEB: Setting caret context to event sourcer   )r   r5  r%  r   r,  rZ   r[   r\   r	   r>   r}  rI  rY   rp  )rS   r)  r/  ro  rZ  r[  rc   s          rV   onExpandedChangedzScript.onExpandedChanged  s      .2Cu//d;~~//=@Cu//d;((*==?nn44E4JV)3f=%**FD9  %%,,%*?>Cu//d;NN**5<<;rW   c                     | j                   j                  |j                        r(d}t        j                  t        j
                  |d       yy)z)Callback for focus: accessibility events.z<WEB: Ignoring because object:state-changed-focused expected.TFrV  rS  s      rV   onFocuszScript.onFocus  s=     >>++ELL9PCu//d;rW   c                    j                   s(d}t        j                  t        j                  |d       yt	        j
                  j                        s(d}t        j                  t        j                  |d       y| j                  j                  j                        }|s(d}t        j                  t        j                  |d       yt        j                         j                         }| j                  j                  |      }||k7  r+d|d|g}t        j                  t        j                  |d       | j                  j                  j                        r| j                  r(d}t        j                  t        j                  |d       nt        j                   j                        rAt	        j"                  |fd	      r(d
}t        j                  t        j                  |d       yd}t        j                  t        j                  |d       t        j                         j%                  j                         yt        j&                  j                        r(d}t        j                  t        j                  |d       yt        j(                  j                        rVd}t        j                  t        j                  |d       t        j                         j%                  j                         y| j                  j+                  j                        r(d}t        j                  t        j                  |d       y| j                  j-                         \  }}d|d|g}t        j                  t        j                  |d       t	        j
                  |      r||k7  rd|dg}t        j                  t        j                  |d       | j                  j/                          | j                  j1                  j                        \  }}|r*| j                  j3                  |      }	d|d|g}t        j                  t        j                  |d       t        j                         j%                  ||	       |	s|d}
| j4                  j7                  | | j8                  |
       | j:                  j7                  | | j8                  |
       | j<                  j7                  | | j8                  |
       | j>                  j7                  | | j8                  |
       | j                  jA                  ||       n'd}t        j                  t        j                  |d       | j4                  jC                         r(d}t        j                  t        j                  |d       y| j:                  jC                         r(d}t        j                  t        j                  |d       y| j>                  jC                         r(d}t        j                  t        j                  |d       yt        jD                  j                        rt        jF                  j                        s(d}t        j                  t        j                  |d       yt        jH                  j                        s(d}t        j                  t        j                  |d       y|s(d}t        j                  t        j                  |d       y| j                  jK                         rhd}t        j                  t        j                  |d       t        j                         j%                  |       | j                  jA                  ||       yt        jF                  |      }t	        jL                  |dd       t        jF                  |      }||k7  r,d|d|g}t        j                  t        j                  |d       y| j                  jO                  |      rd }np| j                  jQ                  |      r|rd!}nP| j                  jS                  |      rd"}n2|j                  k(  r"tU        jV                  j                        rd#}nyd$|d%|d&g}t        j                  t        j                  |d       t        j                         j%                  |       y)'z?Callback for object:state-changed:focused accessibility events.z-WEB: Ignoring because event source lost focusTrt  r  FzWEB: document changed fromr4  z@WEB: Web app descendant claimed focus, but browse mode is stickyc                 "    | j                   k(  S r3  r  r  s    rV   r  z)Script.onFocusedChanged.<locals>.<lambda>  s    !u||:K rW   z<WEB: Event believed to be side effect of tooltip navigation.z>WEB: Event handled: Setting locusOfFocus to web app descendantzWEB: Event source is editablerQ  zBWEB: Event handled by updating locusOfFocus and context to source.r  rF  zWEB: Clearing context - objz is not valid or document changedz"WEB: Updating focus and context toz,updating locus of focus without notificationz$WEB: Search for caret context failedrw  rx  ry  z6WEB: Event ignored: Source is not focusable or focusedz@WEB: Deferring to other scripts for handling non-document source'WEB: Unable to get valid context objectz2WEB: Event handled: Focus changed due to scrollingzSanity-checking focused state.zWEB: Focused state ofz
changed tozContext is anchorz!Context is not a non-focused linkz$Context is child of current fragmentzDocument URI is fragmentz+WEB: Event handled: Setting locusOfFocus to(rB  ),r#  r   r,  rZ   r   r5  r%  r[   rm  r	   r>   r}  rY   r  r=   r   is_tool_tipr  r  r  rR  r  rI  r`  searchForCaretContextr8  r]   r^   r;   r_   r`   ra   rp  r  r  ri  r  r?  r  r>  rm  isChildOfCurrentFragmentr   rn  )rS   r)  r/  rw  ro  prevDocumentrc   rZ  r[  r  re   
wasFocused	isFocusedcauses    `            rV   onFocusedChangedzScript.onFocusedChanged  s    }}ACu//d;  .2Cu//d;>>66u||D@Cu//d;((*==?~~::5A8#2L$QFe..=>>,,U\\:''X""5#3#3S$?((6((0KLT""5#3#3S$?V""5#3#3S$?((*==eU\\R""5<<01Cu//d;))%,,7LCu//d;$$&99%N>>99%NVCu//d;nn446V)3f=%**FD9  %)A3S:\]Fe..=NN,,...>>u||LKC77>>T6R!!%"2"2FDA((*==eS&Q,"6KF((99$@Q@QSYZ-->>tTEVEVX^_**;;D$BSBSU[\''88t?P?PRXY..sF;<""5#3#3S$?GGIBCu//d;$$LLNCCu//d;FFHBCu//d;((6;;Q;QRWR^R^;_JCu//d;&&u||4TCu//d;;Cu//d;>>224FCu//d;$$&99%ENN**37 !++C0
S%)IJ**3/	"-sL)LFe..=>>""3''E..'',Y7E^^44S9:E%**N*Nu||*\.E?c5RUV%**FD9  "55eSArW   c                      y)z/Callback for mouse:button accessibility events.Fr  )rS   r)  s     rV   onMouseButtonzScript.onMouseButton^  s     rW   c                     | j                   j                  |      r(d}t        j                  t        j                  |d       yy)z;Callback for object:property-change:accessible-name events.ru  TF)r[   r|  r   r,  rZ   rS  s      rV   onNameChangedzScript.onNameChangedc  s9     >>//6GCu//d;rW   c                    | j                   j                  |j                        s(d}t        j                  t        j
                  |d       yt        j                         j                         }|j                  t        j                  |      k7  r(d}t        j                  t        j
                  |d       yt        j                         | j                  d<   | j                  t        j                         | j                   j!                  |      }|r+| j                  | j                   j#                  |d             y)z7Callback for object:row-reordered accessibility events.rP  TFr  r  )r[   r\   r%  r   r,  rZ   r	   r>   r}  r   r  r  r  rv  r   TABLE_REORDERED_ROWSr  r  r  s        rV   onRowReorderedzScript.onRowReorderedm  s     ~~//=@Cu//d;((*==?<<7,,U333Cu//d;8<		45H99:55e< F Fvt TUrW   c                    | j                   j                  |      r(d}t        j                  t        j                  |d       yt        j                         j                         }| j                   j                  |      rRd}t        j                  t        j                  |d       |j                  r| j                  |j                  |d       y| j                   j                  |j                        s(d}t        j                  t        j                  |d       y||j                  k7  r(d}t        j                  t        j                  |d       yy)z@Callback for object:state-changed:selected accessibility events.rv  Tz0WEB: Event believed to be browser UI page switch)rD  r  rP  Fz6WEB: Ignoring because event source is not locusOfFocus)r[   r}  r   r,  rZ   r	   r>   r}  eventIsBrowserUIPageSwitchr#  r  r%  r\   )rS   r)  r/  ro  s       rV   onSelectedChangedzScript.onSelectedChanged  s    >>;;EBTCu//d;((*==?>>44U;DCu//d;}}""5<<%4"P~~//=@Cu//d;ELL JCu//d;rW   c                    | j                   j                  |      r(d}t        j                  t        j                  |d       y| j                   j                  |      r(d}t        j                  t        j                  |d       y| j                   j                  |j                        s(d}t        j                  t        j                  |d       y| j                   j                  t        j                         j                               s(d}t        j                  t        j                  |d       y| j                   j                  |      s(d}t        j                  t        j                  |d       y| j                   j                  |j                        r}| j                  rIt        j                  |j                  dd       d	}t        j                  t        j                  |d       yd
}t        j                  t        j                  |d       y| j                   j!                  |      r(d}t        j                  t        j                  |d       y| j                   j#                         \  }}| j                   j%                  ||j                        }|rC| j                   j'                  |      r(d}t        j                  t        j                  |d       yy)z;Callback for object:selection-changed accessibility events.rv  Tz9WEB: Ignoring event believed to be browser UI page switchrP  Fz;WEB: Event ignored: locusOfFocus is not in document contentrz  z-Workaround for missing events on descendants.z?WEB: Event source is web app descendant and we're in focus modez@WEB: Event source is web app descendant and we're in browse modezWEB: Event ignored: IrrelevantzHWEB: Ignoring: Common ancestor of context and event source is text block)r[   r}  r   r,  rZ   r  r\   r%  r	   r>   r}  r  r  r;   r   r  &eventIsIrrelevantSelectionChangedEventrI  commonAncestorisTextBlockElement)rS   r)  r/  rZ  r[  ancestors         rV   onSelectionChangedzScript.onSelectionChanged  s,    >>;;EBTCu//d;>>44U;MCu//d;~~//=@Cu//d;~~//0H0H0J0]0]0_`OCu//d;~~==eDHCu//d;>>,,U\\:   $$U\\%)%TV X""5#3#3S$?TCu//d;>>@@G2Cu//d;nn446V>>00ellC99(C\Cu//d;rW   c                    |j                   rj| j                  j                  |j                        rEd}t	        j
                  t        j                  |d       | j                  |j                  d       y| j                  j                  |j                        s(d}t	        j
                  t        j                  |d       yy)z?Callback for object:state-changed:showing accessibility events.z+WEB: Event handled: Presenting event sourceTr  rP  F)	r#  r[   isTopLevelBrowserUIAlertr%  r   r,  rZ   r  r\   rS  s      rV   onShowingChangedzScript.onShowingChanged  s     ==T^^DDU\\R?Cu//d;u||t<~~//=@Cu//d;rW   c                 `    d}t        j                  t         j                  |d       i | _        y)zACallback for object:text-attributes-changed accessibility events.z$WEB: Clearing cached text attributesTF)r   r,  rZ   _currentTextAttrsrS  s      rV   onTextAttributesChangedzScript.onTextAttributesChanged  s,     55++S$7!#rW   c                 |
   t        j                  j                        s(d}t        j                  t        j
                  |d       y| j                  j                         r(d}t        j                  t        j
                  |d       y| j                  j                  j                        r(d}t        j                  t        j
                  |d       y| j                  j                        r(d}t        j                  t        j
                  |d       y| j                  j                  j                        s(d}t        j                  t        j
                  |d       y| j                  j                        r(d}t        j                  t        j
                  |d       y| j                  j                        r(d	}t        j                  t        j
                  |d       yd
}t        j                  t        j
                  |d       | j                  j                          | j                  j                        r(d}t        j                  t        j
                  |d       y| j                  j                        r(d}t        j                  t        j
                  |d       y| j                  j!                  d      \  }}|rS|j                  k7  rDt        j"                  |fd      s+d|dg}t        j$                  t        j
                  |d       yt        j                  |      s| j                  j'                  |      r(d}t        j                  t        j
                  |d       y| j                  j!                  d      \  }}|r&t)        j*                         j-                  |d       t        j                  |      s'd}t        j                  t        j
                  |d       | j                  j/                  j                        }|rDd|g}t        j$                  t        j
                  |d       | j0                  j3                  |       t5        j6                  j                        s| j                  j9                  j                        s| j:                  rVt        j                  | j<                        s7d}t        j                  t        j
                  |d       | j?                          d}t        j                  t        j
                  |d       yy)z=Callback for object:text-changed:delete accessibility events.rt  Tz2WEB: Deletion is believed to be due to page switchz'WEB: Ignoring deletion from live regionru  rP  F1WEB: Ignoring: Event believed to be spinner noisez5WEB: Ignoring event believed to be autocomplete noisez0WEB: Clearing content cache due to text deletionz7WEB: Event believed to be due to editable text deletionz8WEB: Ignoring event believed to be due to text insertion)r  c                 "    | j                   k(  S r3  r  r  s    rV   r  z&Script.onTextDeleted.<locals>.<lambda>&	  r  rW   z$WEB: Ignoring event because it isn'tzor its ancestorz4WEB: Focused link deleted. Taking no further action.r  r  -WEB: Clearing structural navigation cache forz$WEB: Restoring pre-mouseover contextz(WEB: Done processing non-editable source) r   r5  r%  r   r,  rZ   r[   lastInputEventWasPageSwitchr  r|  r\   eventIsSpinnerNoiser  clearContentCacher  r  rI  r  rY   rm  r	   r>   r  rm  r_   r_  r   r  r  r:   r8   r  )rS   r)  r/  rZ  r[  rc   rw  s    `     rV   onTextDeletedzScript.onTextDeleted  s      .2Cu//d;>>557FCu//d;>>&&u||4;Cu//d;>>//6GCu//d;~~//=@Cu//d;>>--e4ECu//d;>>2259ICu//d;@5++S$7((*>>2259KCu//d;>>33E:LCu//d;nn44%4HV3%,,&))#/JK<cCTUFe..=  %~~$$S)L""5#3#3S$?..88d8KKC((*==eSX]=^  %;Cu//d;>>66u||DExPFe..=%%00:&&u||4>>FFu||T&&x/@/@AZAZ/[<""5#3#3S$?//1<Cu//d;rW   c                    t        j                  |j                        s(d}t        j                  t        j
                  |d       y| j                  j                         r(d}t        j                  t        j
                  |d       y| j                  j                  |      rCd}t        j                  t        j
                  |d       | j                  j                  |       y| j                  j                  |j                        r(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d}t        j                  t        j
                  |d       y| j                  j                  |j                        s(d}t        j                  t        j
                  |d       y	| j                  j                  |      r(d
}t        j                  t        j
                  |d       y| j                  j!                  |      r(d}t        j                  t        j
                  |d       yd}t        j                  t        j
                  |d       | j                  j#                          | j                  j%                  |j                        }t'        j(                         j+                         rd}t        j                  t        j
                  |d       | j                  j-                  |d       t/        j0                  |j                        rd}t        j                  t        j
                  |d       t'        j(                         j3                  d|j                  d       yd|g}t        j4                  t        j
                  |d       | j6                  j9                  |       | j                  j;                  |j                        s(d}t        j                  t        j
                  |d       y|j                  t'        j(                         j=                         k(  }t/        j>                  |j                        s|s(d}t        j                  t        j
                  |d       y| j                  jA                  |j                        rXd}t        j                  t        j
                  |d       t'        j(                         j3                  d|j                  d       y|sft/        jB                  |j                        rGt/        j0                  |j                        r(d}t        j                  t        j
                  |d       yy	)z=Callback for object:text-changed:insert accessibility events.rt  Tz3WEB: Insertion is believed to be due to page switchr  r  z1WEB: Ignoring: Event was for embedded object charru  rP  Fr  6WEB: Ignoring: Event believed to be autocomplete noisez1WEB: Clearing content cache due to text insertionr  r  rQ  Nr  r  0WEB: Ignoring: Event source is not a text objectz:WEB: Done processing non-editable, non-locusOfFocus sourcez@WEB: Event handled: Re-setting locusOfFocus to changed clickableFWEB: Focused entry is not the locus of focus. Waiting for focus event.)"r   r5  r%  r   r,  rZ   r[   r  r  r`   r  r  eventIsEOCAddedr|  r\   r   r  r  r  r	   r>   rh  r  r   ri  r  rY   r_   r_  r  r}  r  isClickableElementis_text_input)rS   r)  r/  rw  rc   sourceIsFocuss         rV   onTextInsertedzScript.onTextInsertedL	  s)      .2Cu//d;>>557GCu//d;>>,,U3;Cu//d;""..u5>>&&u||4NCu//d;>>))%0ECu//d;>>//6GCu//d;~~//=@Cu//d;>>--e4ECu//d;>>2259JCu//d;A5++S$7((*>>>>u||L##%3352Cu//d;NN$$Xt$D%%ell3P""5#3#3S$?((*==dELLX\=] FxPFe..=%%00:~~//=DCu//d;(@(@(B(U(U(WW&&u||4 R""5#3#3S$?~~00>X""5#3#3S$?((*==dELLX\=]!:!:5<<!H%%ell3ZCu//d;rW   c                 F   t        j                  |j                        s(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d}t        j                  t        j
                  |d       y| j                  j                  |j                        s(d}t        j                  t        j
                  |d       yt        j                         j                         }| j                  j                  |      s(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d}t        j                  t        j
                  |d       y| j                  j                  |      r(d	}t        j                  t        j
                  |d       y| j                  j                  |j                        s(d
}t        j                  t        j
                  |d       y|j                  |k7  rft!        j"                  |j                        rGt!        j$                  |j                        r(d}t        j                  t        j
                  |d       y| j                  j'                  |j                        r(d}t        j                  t        j
                  |d       yt)        j*                  |j                        d   }|| j,                  k(  r\| j                  j/                         sB| j                  j1                         s(d}t        j                  t        j
                  |d       yy)z@Callback for object:text-selection-changed accessibility events.rt  Tru  rP  Fz.WEB: Locus of focus is not in document contentr  r  z1WEB: Ignoring event for non-navigable text objectr  r  z.WEB: In content editable with embedded objectsr   zCWEB: Ignoring: Not selecting and event offset is at embedded object)r   r5  r%  r   r,  rZ   r[   r|  r\   r	   r>   r}  r  r   $textEventIsForNonNavigableTextObjectr  r   r	  ri  r  r   r  r  r  lastInputEventWasCommand)rS   r)  r/  ro  r  s        rV   onTextSelectionChangedzScript.onTextSelectionChanged	  s      .2Cu//d;>>//6GCu//d;~~//=@Cu//d;((*==?~~//6BCu//d;>>2259JCu//d;>>--e4ECu//d;>>>>uEECu//d;~~//=DCu//d;<<5 [%>%>u||%L%%ell3ZCu//d;>>>>u||LBCu//d;--ell;A>4111>>HHJ>>::<WCu//d;rW   c                 R    d}t        j                  t         j                  |d       y)z2Callback for window:activate accessibility events.z$WEB: Deferring to app/toolkit scriptTF)r   r,  rZ   rS  s      rV   onWindowActivatedzScript.onWindowActivated	  s$     55++S$7rW   c                 `    d}t        j                  t         j                  |d       d| _        y)z4Callback for window:deactivate accessibility events.zWEB: Clearing command stateTr(   F)r   r,  rZ   r7   rS  s      rV   onWindowDeactivatedzScript.onWindowDeactivated	  s,     ,5++S$7'/$rW   c                 J    | j                   | j                  | j                  dS )Nr;   r<   r=   r  r   s    rV   getTransferableAttributesz Script.getTransferableAttributes	  s'     $ 1 1&*&=&='+'?'?
 	
rW   )Tr3  )NN)
   r
  )NNN)F)L__name__
__module____qualname__r1   rb   rh   r   r   r   r   r   r   r   r   r   r   r  r  r(  r+  rG  r{  r   r  r  r~  r  r  r  r  rs  r  r  r  r  r  rt  r  r   r   r  r   r  r   r   r   r   rN  rT  rW  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__)rU   s   @rV   r&   r&   ?   s   +:Z$CJ0-d"&
2
I63
$
%

^@
6
./aF$*L"&&K>!
'
(
CJ!#=J=(=.-@6+?ZA044 D'6)NNKN:^@*JXaF<dL3j,0	N`
,87r Zx^@?B
rW   r&   )1__id____version____date____copyright____license__r  gi.repositoryr   orcar   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   	orca.acssr   orca.scriptsr   orca.ax_documentr   orca.ax_objectr   orca.ax_tabler   orca.ax_textr   orca.ax_utilitiesr   r   r   braille_generatorr   sound_generatorr    speech_generatorr"   script_utilitiesr$   r&   r  rW   rV   <module>r.     s   , 7    !           !   &    ' # !  )   / + - 'A'
W^^ A'
rW   