Mini Shell

Direktori : /lib/python3.6/site-packages/orca/scripts/web/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/orca/scripts/web/__pycache__/script.cpython-36.pyc

3

�p5[�J�@szdZdZdZdZdZddlmZddlZddlZddl	m
Z
dd	l	mZdd
l	mZddl	m
Z
ddl	mZdd
l	mZddl	mZddl	mZddl	mZddl	mZddl	m	Z	ddl	mZddl	mZddl	mZddl	mZddl	mZddl	mZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddl$m%Z%dd l&m'Z'dd!l(m)Z)ej*�Z+Gd"d#�d#ej,�Z,dS)$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.ZLGPL�)�GtkN)�caret_navigation)�cmdnames)�keybindings)�debug)�eventsynthesizer)�	guilabels)�input_event)�liveregions)�messages)�object_properties)�orca)�
orca_state)�settings)�settings_manager)�speech)�speechserver)�structural_navigation)�ACSS)�default�)�	Bookmarks)�BrailleGenerator)�SoundGenerator)�SpeechGenerator)�TutorialGenerator)�	Utilitiescs�eZdZ�fdd�Zdd�Zdd�Z�fdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�fdd �Z�fd!d"�Zd��fd$d%�	Zd&d'�Zd��fd(d)�	Zd��fd+d,�	Z�fd-d.�Z�fd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Z�fd;d<�Z�fd=d>�Z �fd?d@�Z!dAdB�Z"�fdCdD�Z#�fdEdF�Z$dGdH�Z%d��fdJdK�	Z&d��fdLdM�	Z'dNdO�Z(dPdQ�Z)d��fdRdS�	Z*dTdU�Z+dVdW�Z,d�dYdZ�Z-d�d[d\�Z.d]d^�Z/d_d`�Z0dadb�Z1dcdd�Z2dedf�Z3dgdh�Z4didj�Z5dkdl�Z6dmdn�Z7dodp�Z8dqdr�Z9dsdt�Z:dudv�Z;dwdx�Z<dydz�Z=d{d|�Z>d}d~�Z?dd��Z@d�d��ZAd�d��ZB�fd�d��ZCd�d��ZDd�d��ZE�ZFS)��Scriptcst�j|�g|_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_d|_
d|_d|_tjd�dkrztjdd�tjd�dkr�tjdd�tjd�dkr�tjdd�d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"dS)	NFr�caretNavigationEnabledT�sayAllOnLoad�pageSummaryOnLoad���)Nr!)#�super�__init__�_sayAllContents�	_inSayAll�_sayAllIsInterrupted�_loadingDocumentContent�_madeFindAnnouncement�_lastCommandWasCaretNav�_lastCommandWasStructNav�_lastCommandWasMouseButton�_lastMouseOverObject�_preMouseOverContext�_inMouseOverObject�_inFocusMode�_focusModeIsSticky�_browseModeIsSticky�_settingsManager�
getSettingZ
setSetting�_changedLinesOnlyCheckButton�"_controlCaretNavigationCheckButton�_minimumFindLengthAdjustment�_minimumFindLengthLabel�_minimumFindLengthSpinButton�_pageSummaryOnLoadCheckButton�_sayAllOnLoadCheckButton�_skipBlankCellsCheckButton� _speakCellCoordinatesCheckButton�_speakCellHeadersCheckButton�_speakCellSpanCheckButton�"_speakResultsDuringFindCheckButton� _structuralNavigationCheckButton�"_autoFocusModeStructNavCheckButton�!_autoFocusModeCaretNavCheckButton�_layoutModeCheckButton)�selfZapp)�	__class__��/usr/lib/python3.6/script.pyr#BsJzScript.__init__cCsPg|_d|_d|_d|_d|_d|_d|_d|_d|_d|_	d|_
|jj�dS)z'Called when this script is deactivated.FNrr!)Nr!)
r$r%r&r'r(r)r*r+r,r-r.�	utilities�clearCachedObjects)rDrFrFrG�
deactivatelszScript.deactivatecCstj�}|jj}x|jD]}|j|�qW|jj�}x|jD]}|j|�q<W|jj}x|jD]}|j|�q^W|jtjdtj	tj
|jjd���|jtjdtj	tj
|jjd�d��|jtjdtj	tj
|jjd�d��t
jd�}|tjkr�d}nd	}|jtj|tj	tj
|jjd
���|S)z=Returns the application-specific keybindings for this script.�a�togglePresentationModeHandler�enableStickyFocusModeHandler��enableStickyBrowseModeHandler�ZkeyboardLayoutZKP_Multiply�0�moveToMouseOverHandler)rZKeyBindings�structuralNavigation�keyBindings�add�caretNavigationZget_bindings�liveRegionManagerZ
KeyBindingZdefaultModifierMaskZORCA_MODIFIER_MASK�inputEventHandlers�getr2r3rZGENERAL_KEYBOARD_LAYOUT_DESKTOP)rDrTZstructNavBindingsZ
keyBindingZcaretNavBindingsZliveRegionBindingsZlayout�keyrFrFrG�getAppKeyBindings|sR




zScript.getAppKeyBindingscs�t�j�|jj|jj�|jj|jj��|jj|jj�tj	t
jtj
�|jd<tj	t
jtjd�|jd<tj	t
jtjd�|jd<tj	t
jtj�|jd<tj	t
jtj�|jd<tj	t
jtj�|jd<tj	t
jtj�|jd<d	S)
z+Defines InputEventHandlers for this script.Z
sayAllHandlerFZpanBrailleLeftHandlerZpanBrailleRightHandlerrRrLrMrON)r"�setupInputEventHandlersrX�updaterSrVZget_handlersrWr	ZInputEventHandlerr�sayAllrZSAY_ALL�panBrailleLeftZPAN_BRAILLE_LEFT�panBrailleRightZPAN_BRAILLE_RIGHT�moveToMouseOverZMOUSE_OVER_MOVE�togglePresentationModeZTOGGLE_PRESENTATION_MODE�enableStickyFocusModeZSET_FOCUS_MODE_STICKY�enableStickyBrowseModeZSET_BROWSE_MODE_STICKY)rD)rErFrGr\�s<


zScript.setupInputEventHandlerscCs,y|jStk
r&t|�|_|jSXdS)z.Returns the "bookmarks" class for this script.N)�	bookmarks�AttributeErrorr)rDrFrFrG�getBookmarks�s

zScript.getBookmarkscCst|�S)z.Returns the braille generator for this script.)r)rDrFrFrG�getBrailleGenerator�szScript.getBrailleGeneratorcCs
tj|�S)z5Returns the caret navigation support for this script.)rZCaretNavigation)rDrFrFrG�getCaretNavigation�szScript.getCaretNavigationcCs�tjjtjjtjjtjjtjjtjjtjjtjj	tjj
tjjtjjtjj
tjjtjjtjjtjjtjjtjjtjjtjjtjjtjjtjjgS)z?Returns the structural navigation object types for this script.)rZStructuralNavigationZ
BLOCKQUOTEZBUTTONZ	CHECK_BOXZCHUNKZ	CLICKABLEZ	COMBO_BOXZ	CONTAINERZENTRYZ
FORM_FIELDZHEADINGZIMAGEZLANDMARKZLINKZLISTZ	LIST_ITEMZLIVE_REGIONZ	PARAGRAPHZRADIO_BUTTONZ	SEPARATORZTABLEZ
TABLE_CELLZUNVISITED_LINKZVISITED_LINK)rDrFrFrG�#getEnabledStructuralNavigationTypes�s.z*Script.getEnabledStructuralNavigationTypescCs
tj|�S)z0Returns the live region support for this script.)r
ZLiveRegionManager)rDrFrFrG�getLiveRegionManagerszScript.getLiveRegionManagercCst|�S)z,Returns the sound generator for this script.)r)rDrFrFrG�getSoundGeneratorszScript.getSoundGeneratorcCst|�S)z-Returns the speech generator for this script.)r)rDrFrFrG�getSpeechGeneratorszScript.getSpeechGeneratorcCst|�S)z/Returns the tutorial generator for this script.)r)rDrFrFrG�getTutorialGenerator"szScript.getTutorialGeneratorcCst|�S)z%Returns the utilites for this script.)r)rDrFrFrG�getUtilities'szScript.getUtilitiescCsdtj�}|jd�tj�}|j|dddd�tjdtjd�}|jd�|j	|�tj
jdddd�}|jdddd�|j
|�tj�}|j
|�tj}tjd�}tjj|�|_|jj|�|j|jdddd�tj}tjd	�}tjj|�|_|jj|�|j|jdddd�tj}|jj}tjj|�|_|jj|�|j|jdd
dd�tj}tjd�}tjj|�|_|jj|�|j|jdddd�tj}tjd
�}tjj|�|_|jj|�|j|jdddd�tj}tjd�}tjj|�|_ |j j|�|j|j dddd�tj!}tjd�}tjj|�|_"|j"j|�|j|j"dddd�tj�}|j|dddd�tjdtj#d�}|jd�|j	|�tj
jdddd�}|jdddd�|j
|�tj�}	|j
|	�tj$}tjd�}tjj|�|_%|j%j|�|	j|j%dddd�tj&}tjd�}tjj|�|_'|j'j|�|	j|j'dddd�tj(}tjd�}tjj|�|_)|j)j|�|	j|j)dd
dd�tj*}tjd�}tjj|�|_+|j+j|�|	j|j+dddd�tj�}
|j|
dd
dd�tjdtj,d�}|jd�|
j	|�tj
jdddd�}|jdddd�|
j
|�tj�}|j
|�tjd�}
tj-}|
t.j/k}tjj|�|_0|j0j|�|j|j0dddd�tj1}|
t.j2k}tjj|�|_3|j3j|�|j|j3dddd�tj�}|j|dd
dd�tjtj4d�|_5|j5j6dd�|j|j5dddd�tj7tjd�ddd�|_8tj9�|_:|j:j;|j8�|j|j:dddd�|j5j<|j:�|j=�|S)z;Return a GtkGrid containing app-unique configuration items.�rrz	<b>%s</b>)�labelTg�?r�caretNavTriggersFocusModerN�structNavTriggersFocusModerPr�r ��
layoutMode��speakCellCoordinates�
speakCellSpan�speakCellHeaders�skipBlankCells�findResultsVerbosity�findResultsMinimumLength�)>rZGridZset_border_widthZFrameZattachZLabelrZPAGE_NAVIGATIONZset_use_markupZset_label_widgetZ	Alignment�newZset_paddingrUZUSE_CARET_NAVIGATIONr2r3ZCheckButtonZnew_with_mnemonicr5Z
set_activeZAUTO_FOCUS_MODE_CARET_NAVrBZUSE_STRUCTURAL_NAVIGATIONrS�enabledr@ZAUTO_FOCUS_MODE_STRUCT_NAVrAZREAD_PAGE_UPON_LOADr:ZPAGE_SUMMARY_UPON_LOADr9ZCONTENT_LAYOUT_MODErCZTABLE_NAVIGATIONZTABLE_SPEAK_CELL_COORDINATESr<ZTABLE_SPEAK_CELL_SPANSr>ZTABLE_ANNOUNCE_CELL_HEADERr=ZTABLE_SKIP_BLANK_CELLSr;ZFIND_OPTIONSZFIND_SPEAK_RESULTSr�FIND_SPEAK_NONEr?ZFIND_ONLY_SPEAK_CHANGED_LINES�FIND_SPEAK_IF_LINE_CHANGEDr4ZFIND_MINIMUM_MATCH_LENGTHr7Z
set_alignmentZ
Adjustmentr6Z
SpinButtonr8Zset_adjustmentZset_mnemonic_widgetZshow_all)rDZgridZgeneralFramerqZgeneralAlignmentZgeneralGrid�valueZ
tableFrameZtableAlignmentZ	tableGridZ	findFrameZ
findAlignmentZfindGrid�	verbosityZhgridrFrFrG�getAppPreferencesGUI,s�


























zScript.getAppPreferencesGUIcCs�|jj�stj}n|jj�r$tj}ntj}||jj�|j	j�|j
j�|jj�|jj�|j
j�|jj�|jj�|jj�|jj�|jj�|jj�d�
S)z7Returns a dictionary with the app-specific preferences.)
r|r}rr ZstructuralNavigationEnabledrsrrrrxrvryrzr{)r?Z
get_activerr�r4r�ZFIND_SPEAK_ALLr8Z	get_valuer:r9r@rAr5rBr<rCr>r=r;)rDr�rFrFrG�getPreferencesFromGUI�s$

zScript.getPreferencesFromGUIc	sh|jjd�r&|jr&|jj�tjkr&dS|jjd�r\y|jj�}WnYnX|tjkr\dSt	�j
|�S)z4Returns True if this object event should be skipped.zobject:state-changed:focusedFzobject:children-changed)�type�
startswith�detail1�source�getRole�pyatspi�	ROLE_LINK�any_data�ROLE_DIALOGr"�skipObjectEvent)rD�event�role)rErFrGr��s
zScript.skipObjectEventcs�i|_|jj|�}|rB|jj|�rB|j|�}||_d|_d|_|S|rr|j	|j
jkrr|j�}d|_||_d|_|S|r�|j	|j
jkr�|j�}d|_||_d|_|Sd|_d|_d|_t�j|�S)z<Returns True if the script will consume this keyboard event.F)ZgeneratorCacherTZgetInputHandlerrVZhandles_navigation�useCaretNavigationModelr)r*r+ZfunctionrSZ	functions�useStructuralNavigationModelrWr"�consumesKeyboardEvent)rD�
keyboardEventZhandlerZconsumes)rErFrGr��s0
zScript.consumesKeyboardEventNc#s�|jj�s4d|}tjtj|d�t�j||�dSd|_tj	d�}|t
jk}|dkrf|jj�\}}n|}|jj
�\}}�fdd��d|_d}	�x2|	�s�|r�|jj||�}
n|jj||�}
|
|_x�|
D]�}|jj||
�r�q�|\}}}
}|jj|gd|d�}|}�|�\}}t|�t|�k�rq�x@t|�D]4\}}tj||||
�}|jj|�|||gV�q(Wq�W|
d
d
|
dd}}|jj||d	�\}}||f||fk�r�|jj||�\}}|dk}	q�Wd|_g|_g|_d}tjtj|d�|j�dS)zACreates a generator that can be used to iterate document content.z1WEB: textLines called for non-document content %sTNF�sayAllStylecsvgg}}xb|D]Z}t|t�r@�|�\}}|j|�|j|�qt|t�rV|j|�qt|t�r|j|�qW||fS)N)�
isinstance�list�extend�str�appendr)�
utterances�elements�voices�u�e�v)�_parseUtterancesrFrGr�0s





z*Script.textLines.<locals>._parseUtterances)ZeliminatePauses�priorObjrrrNz0WEB: textLines complete. Verifying SayAll statusr!r!)rH�inDocumentContentr�println�
LEVEL_INFOr"�	textLinesr&r2r3rZSAYALL_STYLE_SENTENCE�getCaretContext�getPriorContextr%ZgetSentenceContentsAtOffset�getLineContentsAtOffsetr$ZisInferredLabelForContents�speechGenerator�generateContents�len�	enumerater�
SayAllContext�_sayAllContextsr��findNextCaretInOrderZinSayAll)rD�obj�offset�msgr�ZsayAllBySentence�characterOffsetr��priorOffset�done�contentsZcontent�startOffset�	endOffset�textr�r�r��i�element�contextZlastObjZ
lastOffset)rE)r�rGr�s\





zScript.textLinesc
Cs�|jj|�}|o|j�sdS|jj|�}|s0dS|jj|d�}|jd�\}}t||�}|jj|||d�||tj	d�kr~dStj	d�}|t
jkr�dS|jr�|t
j
kr�|jj|||f�r�dS|jj||�}	|j|	�|j|�d|_dS)zAUpdates the context and presents the find results if appropriate.N)�
documentFramerr}r|T)rH�queryNonEmptyTextZgetNSelections�getDocumentForObjectr�ZgetSelection�max�setCaretContextr2r3rr�r(r�ZcontextsAreOnSameLiner��
speakContents�
updateBraille)
rDr�r�r��documentr��start�endr�r�rFrFrG�presentFindResultsgs.





zScript.presentFindResultscsn|jj�s2d|}tjtj|d�t�j|||�S|p:tj}d|}tjtj|d�t	j|j
||�|j�dS)z�Speaks 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 content %sTz*WEB: SayAll called for document content %s)rHr�rr�r�r"r^r�locusOfFocusrr��_Script__sayAllProgressCallback)rD�
inputEventr�r�r�)rErFrGr^�s

z
Script.sayAll�
c	
s�|jj�st�j||�Stjd�s&dSy|jd\}}}}Wntk
rPdSXtj	d|dd�|jj
||�|jj||�\}}|jd||�dS)N�rewindAndFastForwardInSayAllFr)�notifyScriptT)
rHr�r"�
_rewindSayAllr2r3r$�
IndexErrorr
�setLocusOfFocusr�ZfindPreviousCaretInOrderr^)	rDr�ZminCharCountr�r�r��stringZprevObjZ
prevOffset)rErFrGr��s

zScript._rewindSayAllc
s�|jj�st�j|�Stjd�s$dSy|jd\}}}}Wntk
rNdSXtj	d|dd�|jj
||�|jj||�\}}|jd||�dS)Nr�Fr)r�Tr!)
rHr�r"�_fastForwardSayAllr2r3r$r�r
r�r�r�r^)rDr�r�r�r�r�ZnextObjZ
nextOffset)rErFrGr��s

zScript._fastForwardSayAllcs�|jj�s|jr$t�j||�dS|tjjkr�tt	j
tj�r�d|_
t	j
j}|dkrb|j|�rbdS|dkrx|j|�rxdS|js�|jj|j|j�|j|j�d|_g|_g|_dStjd|jdd�|jj|j|j�dS)NTZDownZUpF)r�)rHr�r/r"r�rr�ZINTERRUPTEDr�rZlastInputEventr	Z
KeyboardEventr&Zevent_stringr�r�r*�setCaretPositionr�Z
currentOffsetr�r%r$r�r
r�r�)rDr�ZprogressTypeZlastKey)rErFrGZ__sayAllProgressCallback�s(zScript.__sayAllProgressCallbackcCs|jS)z% Returns True if we're in focus mode.)r/)rDrFrFrG�inFocusMode�szScript.inFocusModecCs|jS)z-Returns True if we're in 'sticky' focus mode.)r0)rDrFrFrG�focusModeIsSticky�szScript.focusModeIsStickycCs|jS)z.Returns True if we're in 'sticky' browse mode.)r1)rDrFrFrG�browseModeIsSticky�szScript.browseModeIsStickycCs�|jrd}tjtj|d�dS|jr<d}tjtj|d�dStjd�rf|jrfd}tjtj|d�dStjd�r�|jr�d}tjtj|d�dS|j	j
|�r�d	|}tjtj|d�dSd
|}tjtj|d�dS)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 stickyFrsz4WEB: Not using focus mode due to struct nav settingsrrz3WEB: Not using focus mode due to caret nav settingsz7WEB: Using focus mode because %s is a focus mode widgetz5WEB: Not using focus mode for %s due to lack of cause)r0rr�r�r1r2r3r*r)rH�isFocusModeWidget)rDr�r�rFrFrG�useFocusMode�s2zScript.useFocusModecKs|jj|f|�}tj|�dS)zSpeaks the specified contents.N)r�r�r�speak)rDr��argsr�rFrFrGr�szScript.speakContentscs�|jr&|jj|�r&t�j|�dS|jjdd�\}}|s@dS|jj||�}|sVdS|d\}}}}|dkrv|ptd}|r�|j||�|j|�n
|j	|�dS)z3Speaks the character at the current caret position.N)r�r�
)
r)rH�$isContentEditableWithEmbeddedObjectsr"�sayCharacterr�ZgetCharacterContentsAtOffset�speakMisspelledIndicatorZspeakCharacterr�)rDr�r�r�r�r�r�)rErFrGr�s"zScript.sayCharactercsp|jr&|jj|�r&t�j|�dS|jjdd�\}}|jj||�}|d\}}}}|j||�|j|�dS)z.Speaks the word at the current caret position.N)r�r)	r)rHr�r"�sayWordr�ZgetWordContentsAtOffsetr�r�)rDr�r�ZwordContentsZtextObjr�r�Zword)rErFrGr�(szScript.sayWordcsv|jp
|jr,|jj|�r,t�j|�dSd}|jrD|jj�\}}|jjdd�\}}|jj||�}|j	||d�dS)z.Speaks the line at the current caret position.N)r�)r�)
r)r*rHr�r"�sayLiner�r�r�r�)rDr�r�r�r�r�)rErFrGr�6szScript.sayLinecKs�d}|js|jd�r"|jj�\}}|j�tjkrX|jj||d�}t	j
|�|j|�dS|jdd�}|jj||�}|j
|�|j||d�dS)NZincludeContext)r�r�r)r)rYrHr�r�r�Z
ROLE_ENTRYr��generateSpeechrr�r��getObjectContentsAtOffset�displayContentsr�)rDr�r�r�r�r�r�r�rFrFrG�
presentObjectFs


zScript.presentObjectcs@|jj|�}|r0|j|jdd�kr0|j|�dSt�j|�dS)z@Try to reposition the cursor without having to do a full update.rrNr!)rHr��EMBEDDED_OBJECT_CHARACTER�getTextr�r"� updateBrailleForNewCaretPosition)rDr�r�)rErFrGr�Vs

z'Script.updateBrailleForNewCaretPositioncs$tjd�r,tjd�r,tjtjdd�dS|jj|�sdd|}tjtj|d�t�j|f|�dS|jj	|�}|j
r�|jr�|r�|jj�r�|jj
�r�d|}tjtj|d�t�j|f|�dS|jjdd�\}}|d	ko�|�r|jj|�}|�rt||j�}|jj||�}|j|�dS)
z5Updates the braille display to show the given object.�
enableBraille�enableBrailleMonitorzBRAILLE: disabledTNz0WEB: updating braille for non-document object %sz6WEB: updating braille for unhandled navigation type %s)r�r)r2r3rr�r�rHr�r"r�r�r)r*�isPlainText�&lastInputEventWasCaretNavWithSelectionr�r��min�characterCountr�r�)rDr�r�r�ZisContentEditabler�r�r�)rErFrGr�`s4zScript.updateBraillecCs�tjd�r,tjd�r,tjtjdd�dS|jddd�}|jj|�}|sNdS|\}}x|D]}|j||�q\W|j	r�|j	dj
jd�|j	d
_
|j|d	d
�|j
dd	d�dS)zDisplays contents in braille.r�r�zBRAILLE: disabledTN)ZclearBrailleZaddLiner� F)�getLinkMask)ZpanToCursorr�r!r!)r2r3rr�r�ZgetNewBrailleLineZbrailleGeneratorr�ZaddBrailleRegionsToLine�regionsr��rstripZsetBrailleFocus�refreshBraille)rDr��liner�Z
focusedRegionZregionrFrFrGr��s
zScript.displayContentsrcs�|js|jj�s|j�r.t�j||�dS|jj�}|s@dS|d\}}}}|jj||�|j|�x|j	dd�rxqjW|j
d�dS)zPans braille to the left.NrF)�	panToLeftT)�flatReviewContextrHr�ZisBrailleBeginningShowingr"r_ZgetPreviousLineContentsr�r��panBrailleInDirectionr�)rDr��	panAmountr�r�r�r�r�)rErFrGr_�s



zScript.panBrailleLeftcs�|js|jj�s|j�r.t�j||�dS|jj�}|s@dS|d\}}}}|jj||�|j|�x|j	dd�rxqjW|j
d�dS)zPans braille to the right.NrT)r�F)r�rHr�ZisBrailleEndShowingr"r`ZgetNextLineContentsr�r�r�r�)rDr�r�r�r�r�r�r�)rErFrGr`�s



zScript.panBrailleRightcCs8tjd�s|jrdS|jj�s$dS|jtj@r4dSdS)z0Returns True if caret navigation should be used.rFT)r2r3r/rHr�Z	modifiersrZSHIFT_MODIFIER_MASK)rDr�rFrFrGr��s
zScript.useCaretNavigationModelcCs&|jjs|jrdS|jj�s"dSdS)z5Returns True if structural navigation should be used.FT)rSr�r/rHr�)rDrFrFrGr��s

z#Script.useStructuralNavigationModelc
s0|js$|jj��s$�j�jtj�r6t�j�|||�S|jj	��}|dkrlyt
d|j�}Wnd}YnX|r�|dk	r�|dk	r�|j||�||fS|jj
dd�\}}|�kr�|}n|}|jj�|�}	tt�fdd�|	��}	t|	�dkr�d}
n|jj�||	�}
|
dk�r,|	|
\}}}}|j|k�r,|||fSd	S)
z<To-be-removed. Returns the string, caretOffset, startOffset.Nr)r�cs|d�kS)NrrF)�x)r�rFrG�<lambda>sz+Script.getTextLineAtCaret.<locals>.<lambda>r�r!)r�rr)r/rHr��getState�containsr��STATE_EDITABLEr"�getTextLineAtCaretr�r��caretOffsetr�r�r�r��filterr�ZfindObjectInContentsr�)
rDr�r�r�r�r��
contextObj�
contextOffsetrr��index�	candidater�)rE)r�rGr�s2


zScript.getTextLineAtCaretcCs�|js|jtj�dS|jr>|j\}}tj||�|j�dS|j}|j	j
|d�\}}|s^dS|j�jt
j�rz|j�j�|j	j||�}|j	j||�|j|�|j|�d|_dS)z@Moves the context to/from the mouseover which has just appeared.NrT)r,�presentMessagerZMOUSE_OVER_NOT_FOUNDr.ZoldMouseCoordinatesrZrouteToPoint�restorePreMouseOverContextrH�findFirstCaretContextr�r�r��STATE_FOCUSABLEZqueryComponent�	grabFocusr�r�r�r�)rDr�r��yr�r�r�rFrFrGra
s&


zScript.moveToMouseOvercCsF|j\}}|jj||�|j|jj||��|j|�d|_d|_dS)z;Cleans things up after a mouse-over object has been hidden.FN)r-rHr�r�r�r�r.r,)rDr�r�rFrFrGr	(s

z!Script.restorePreMouseOverContextFcCs.|js|r|jtj�d|_d|_d|_dS)NFT)r1rrZMODE_BROWSE_IS_STICKYr/r0)rDr��forceMessagerFrFrGrd2s
zScript.enableStickyBrowseModecCs.|js|r|jtj�d|_d|_d|_dS)NTF)r0rrZMODE_FOCUS_IS_STICKYr/r1)rDr�rrFrFrGrc:s
zScript.enableStickyFocusModec	Cs�|jj�\}}|jrzy|jj�}Wnd}YnX|tjkrP|jj|jd�n|tjkrl|jj|jjd�|j	t
j�n6|jj|�r�|j
s�|js�|r�|jj|�|j	t
j�|j|_d|_d|_dS)NrFr!r!)rHr�r/�parentr�r�Z
ROLE_LIST_BOXr�Z	ROLE_MENUrrZMODE_BROWSEZgrabFocusWhenSettingCaretr)r*rZ
MODE_FOCUSr0r1)rDr�r�r�Z
parentRolerFrFrGrbBs(



zScript.togglePresentationModec
Cs�|r,|jj|�r,d|}tjtj|d�dS|jj|�s\d}d|_d|_tjtj|d�dSd}|sr|jj|�r�|jj	�\}}|r�|jj|�r�||}}|j
�tjkr�d}tjtj|d�|jj
|d�\}}|jj|�}	|	o�d|	jko�|	jkn�r|	j}|jj||�|j|�|jj|��r^d|}tjtj|d�|jj||�}
|jj|
�}n�|jj|��r�d|}tjtj|d�|jj|d�}
|jj|
�}n�|jj��r�d	|}tjtj|d�|jj||�}
|jj|
�}nl|j
�tjk�r$d
|}tjtj|d�|jj|d�}
|jj|
�}n(d|}tjtj|d�|jj||d�}tj|�|j|�|jj|��r�|jj|�}|j d
|�dS|j!�r�|j"�r�|j#|�|jk�r�|j$d
�dS)z3Handles changes of focus of interest to the script.zWEB: New focus is Zombie: %sTz/WEB: Locus of focus changed to non-document objFrz5WEB: Event source has bogus role. Likely browser bug.z=WEB: New focus %s content editable. Generating line contents.z6WEB: New focus %s is anchor. Generating line contents.z<WEB: New focus %s was scrolled to. Generating line contents.z9WEB: New focus %s is heading. Generating object contents.z;WEB: New focus %s is not a special case. Generating speech.)r�N)%rH�isZombierr�r�r�r(r/�
inFindToolbarr�r�r�ZROLE_UNKNOWNr
r�rr�r�r�r�r�r�r��isAnchor�lastInputEventWasPageNavZROLE_HEADINGr�r�rr��_saveFocusedObjectInfoZinTopLevelWebApprcr0r1r�rb)
rDr�ZoldFocusZnewFocusr�rrrr�r�r�r�ZannouncerFrFrG�locusOfFocusChanged[st
"





zScript.locusOfFocusChangedcCs�|jj|j�s&d}tjtj|d�dS|jsDd}tjtj|d�dS|jj�}|tj	tj
gkr�d}tjtj|d�tj||j�dSdS)z>Callback for object:state-changed:active accessibility events.z,WEB: Event source is not in document contentTFz2WEB: Ignoring because event source is now inactivez8WEB: Event handled: Setting locusOfFocus to event source)
rHr�r�rr�r�r�r�r�r��
ROLE_ALERTr
r�)rDr�r�r�rFrFrG�onActiveChanged�s
zScript.onActiveChangedcCs*|jj|j�s&d}tjtj|d�dSdS)zCCallback for object:active-descendant-changed accessibility events.z,WEB: Event source is not in document contentTF)rHr�r�rr�r�)rDr�r�rFrFrG�onActiveDescendantChanged�s
z Script.onActiveDescendantChangedcCs.|jr$|jr$d}tjtj|d�dS|jj|j�sJd}tjtj|d�dS|jj	�|jj
|jj�r|d}tjtj|d�dS|j|_|jj�\}}|s�|jj
|�r�|jj�|jj|j�}tjd�o�|�r|jr�|jtj�n4|jj�r
tj|jj}|j|dd�n|jtj�|j�r"dS|jj�tjd��rr|�rrd	|}tjtj|d�|jj|�}|�rr|j|�|jj�\}}y|jj�jtj�}Wnd}YnX|�r�|jj|j��r�d
|}tjtj|d�t j!||�|j"dd�dS|j#|�|j$k�r|j%d�|�s.d}tjtj|d�dS|jj&|��rdd
|}tjtj|d�t j!||�dS|j�}|jj'|��r�|jtj(��r�d|}tjtj|d�t j!||�dS|dk�r�d|}tjtj|d�t j!||�dSyt)j*j�}	Wnd}
YnX|	jtj(�}
|
�s:d|}tjtj|d�t j!||d�|j+|�|jtj,��r�|jj-|��r�d|}tjtj|d�t.j/|j0j1|��n�|jj2|j��r�d}tjtj|d�nvtjd��s�d}tjtj|d�|j3|jj4||��n@tjd��rd}tjtj|d�|j5d�nd}tjtj|d�dS)z<Callback for object:state-changed:busy accessibility events.z/WEB: Ignoring: Already loading document contentTz,WEB: Event source is not in document contentFz.WEB: Ignoring: Event source is nested documentZonlySpeakDisplayedText)ZresetStylesr z$WEB: Getting page summary for obj %sz6WEB: Setting locusOfFocus to %s with sticky focus modeNz WEB: Could not get caret contextz1WEB: Setting locus of focus to focusModeWidget %sz.WEB: Setting locus of focus to focused link %srz-WEB: Setting locus of focus to context obj %sz?WEB: Setting locus of focus to context obj %s (no notification)z5WEB: Not doing SayAll due to focusable context obj %sz*WEB: Not doing SayAll due to page fragmentrz5WEB: Not doing SayAll due to sayAllOnLoad being FalseZenableSpeechzWEB: Doing SayAllz5WEB: Not doing SayAll due to enableSpeech being False)6r�r'rr�r�rHr�r�rS�
clearCacher�rr�r�clearCaretContextZisShowingOrVisibler2r3rrZPAGE_LOADING_START�nameZPAGE_LOADING_END_NAMEDZPAGE_LOADING_ENDrIZgetPageSummaryZsoucer�r�r��
STATE_BUSY�isTopLevelWebAppr
r�rcr�r/rbr��isLink�
STATE_FOCUSEDrr�r�rZ
isDocumentrr�r�r��documentFragmentr�r�r^)rDr�r�r�r�Z
shouldPresentZsummaryZsourceIsBusy�stateZ
focusStateZinFocusedObjectrFrFrG�
onBusyChanged�s�









zScript.onBusyChangedc	
Cs�|jj�|jj|j�r0d}tjtj|d�dS|jj|j�sVd}tjtj|d�dS|jrtd}tjtj|d�dS|j	r�d}tjtj|d�dS|j
r�d}tjtj|d�|jj|j|j�|jj
|j�}tj||j|�dS|jj��r"d}tjtj|d�|j|j|j�|jtj�dS|jj|��rHd	}tjtj|d�dS|jj|��rnd
}tjtj|d�dS|jj|��r�d}tjtj|d�|j|j|j�dS|jj|j|j�\}}|jj|��r�d}tjtj|d�|jj||�tj||�dS|jj��rT|jj|j��rTd
}tjtj|d�|jj||�tj|||jj�d�dS|jj|j��r�d}tjtj|d�|jj||�|jj��o�|jj
|�}tj||j|�dS|jj |j�}|�s*|jj!�t"j#k�rd}tjtj|d�|jj|j|j�tj||j�nd}tjtj|d�dS|j$|j|jd�}y|j%�j&t"j'�}Wnd}YnX|�r�|�r�d}tjtj|d�dS||j(k�r�|jj)|��s�d}tjtj|d�dSd||f}tjtj|d�|jj||�tj||�dS|jj*|��r4d}tjtj|d�|j+|j�|j,|�dSt-j.d��sP|j/�sP|�r�|jj|j|j�tj||jd�d|j|jf}tjtj|d�dS|jj||�d||f}tjtj|d�dS)z:Callback for object:text-caret-moved accessibility events.zWEB: Event source is ZombieTz,WEB: Event source is not in document contentFz.WEB: Event ignored: Last command was caret navz/WEB: Event ignored: Last command was struct navz1WEB: Event handled: Last command was mouse buttonz+WEB: Event handled: Presenting find resultsz&WEB: Event ignored: Autocomplete noisez=WEB: Event ignored: Event source is non-navigable text objectz6WEB: Event handled: Updating position due to insertionz+WEB: Event handled: Caret moved to fragmentz0WEB: Event handled: Caret moved due to scrolling)�forcez.WEB: In content editable with embedded objectsz)WEB: Event handled: Was for non-text linkz-WEB: Event ignored: Was for non-text non-linkrz;WEB: Event ignored: Was for empty char in non-editable textz2WEB: Event ignored: Was for embedded non-textblockz-WEB: Setting locusOfFocus, context to: %s, %iz=WEB: Event handled as the value-change event we wish we'd getrzWEB: Setting context to: %s, %i)0rHZsanityCheckActiveWindowrr�rr�r�r�r)r*r+r�r�ZisEntryDescendantr
r�rr�rrr��eventIsAutocompleteNoise�$textEventIsForNonNavigableTextObject�textEventIsDueToInsertionZ_saveLastCursorPositionr
ZcaretMovedToSamePageFragmentrrr�r�ZlastInputEventWasCharNavr�r�r�r�r�r�r�rr��isTextBlockElementZtreatEventAsSpinnerValueChanger�Z_presentTextAtNewCaretPositionr2r3r/)	rDr�r��notifyr�r�r��charZ
isEditablerFrFrG�onCaretMoved?s�


zScript.onCaretMovedcCs|jj|j�s&d}tjtj|d�dS|jj�\}}||jkrVd}tjtj|d�dS|jjdd�\}}t	|�t	|�kr�||j
kr�d}tjtj|d�dS|j�}|jo�|t
jks�d	}tjtj|d�dS|j|�tj|jj|dd
��t	|�|j
f|jd<dS)z?Callback for object:state-changed:checked accessibility events.z,WEB: Event source is not in document contentTFz'WEB: Event source is not context objectZ
checkedChangeNrz)WEB: Ignoring event, state hasn't changedz*WEB: Event is something default can handle)ZalreadyFocused)Nr)rHr�r�rr�r�r�ZpointOfReferencerY�hashr�r�r)r�ZROLE_RADIO_BUTTONr�rr�r�r�)rDr�r�r�r�ZoldObjZoldStater�rFrFrG�onCheckedChanged�s.

zScript.onCheckedChangedc	Cs$|jj|�r$d}tjtj|d�dS|jj|j�}|r\d|}tjtj|d�|jj|�nd}tjtj|d�dS|jj	|�r�d}tjtj|d�|j
j|�dS|jr�d}tjtj|d�dS|jj
|�r�d|}tjtj|d�dSy|j�jtj�}Wn(d}d	|}tjtj|d�YnX|�rJd
|}tjtj|d�dS|j�sd|jj
|j��r|d}tjtj|d�dS|jjdd�\}}d
||tjf}tjtj|d�|jj
|��r>|jjdd�\}}|�s>|j�r�d}tjtj|d�dS|jj|j|�}|�r>d}tjtj|d�tj||d�|jj||�dS|jj�}|tjk�rxd}tjtj|d�|j|j�dS|tjk�r�d}tjtj|d�tj||j�dS|j�r dt j �|jk�o�dkn�r g}|j!t"j#�|j$|j%j&t'dd��t(j)|�|j|_*|jj�|_+dSdS)z:Callback for object:children-changed accessibility events.z/WEB: Ignoring event believed to be chrome noiseTz0WEB: Clearing structural navigation cache for %sz,WEB: Could not get document for event sourceFz'WEB: Event to be handled as live regionz7WEB: Ignoring because document content is being loaded.z&WEB: Ignoring because %s is zombified.z"WEB: Exception getting state of %sz!WEB: Ignoring because %s is busy.z4WEB: Ignoring because any data is null or zombified.)�getZombieReplicantz WEB: Context: %s, %i (focus: %s)z1WEB: Not looking for replicant due to focus mode.z7WEB: Event handled by updating locusOfFocus and contextzWEB: Presenting event.any_dataz+WEB: Setting locusOfFocus to event.any_datarr)r#),rH�eventIsChromeNoiserr�r�r�r�rSr�handleAsLiveRegionrW�handleEventr'rr�r�r�rr�r�rr�r/Z
findReplicantr
r�r�r�rr�r�ZlastMouseRoutingTime�timer�rZNEW_ITEM_ADDEDr�r�r�Zchildrr�r,ZpreMouseOverContext)	rDr�r�r�Z	docIsBusyr�r�Z	childRoler�rFrFrG�onChildrenChanged�s�
.
zScript.onChildrenChangedcCs(d}tjtj|d�d|_|jj�dS)z9Callback for document:load-complete accessibility events.z6WEB: Updating loading state and resetting live regionsTF)rr�r�r'rW�reset)rDr�r�rFrFrG�onDocumentLoadCompleteIs

zScript.onDocumentLoadCompletecCsd}tjtj|d�d|_dS)z8Callback for document:load-stopped accessibility events.zWEB: Updating loading stateTF)rr�r�r')rDr�r�rFrFrG�onDocumentLoadStoppedRszScript.onDocumentLoadStoppedcCsd}tjtj|d�d|_dS)z2Callback for document:reload accessibility events.zWEB: Updating loading stateT)rr�r�r')rDr�r�rFrFrG�onDocumentReloadZszScript.onDocumentReloadcCs�|jsd}tjtj|d�dS|jj|j�rDd}tjtj|d�dS|jj|j�}|snd}tjtj|d�dS|jj|�r�|j	r�d}tjtj|d�n&d}tjtj|d�t
j||j�dS|jj�}|j
tj�r�d}tjtj|d�dS|jj�}|tjtjgk�r,d}tjtj|d�t
j||j�dS|jj�\}}d	||tjf}tjtj|d�|�sp|jj|��rd
}tjtj|d�|jj�|jj|j�\}}|�r�|jjtj�}d||f}tjtj|d�t
j|||�|jj||�nd}tjtj|d�|j�r"d
}tjtj|d�dS|j�rBd}tjtj|d�dS|j
tj��rz|j
tj��rzd}tjtj|d�dS|tjtjgk�r�d}tjtj|d�dS|�s�d}tjtj|d�dS|jj ��rd}tjtj|d�t
j||�|jj||�dS|j�j
tj�}	|j!�|j�j
tj�}
|	|
k�rRd||
f}tjtj|d�dS|jj"|��rfd}nV|jj#|��ox|
�s�d}n:|jj$|��r�d}n&||jk�r�|jj%|j��r�d}ndSd||f}tjtj|d�t
j||�dS)z?Callback for object:state-changed:focused accessibility events.z-WEB: Ignoring because event source lost focusTzWEB: Event source is Zombiez,WEB: Could not get document for event sourceFz5WEB: Web app claimed focus, but browse mode is stickyz8WEB: Event handled: Setting locusOfFocus to event sourcezWEB: Event source is editablez(WEB: Caret context is %s, %i (focus: %s)z-WEB: Clearing context - obj is null or zombiez)WEB: Updating focus and context to %s, %iz$WEB: Search for caret context failedz.WEB: Event ignored: Last command was caret navz/WEB: Event ignored: Last command was struct navz6WEB: Event ignored: Source is not focusable or focusedz@WEB: Deferring to other scripts for handling non-document sourcez6WEB: Unable to get non-null, non-zombie context objectz2WEB: Event handled: Focus changed due to scrollingz&WEB: Focused state of %s changed to %szContext is anchorz!Context is not a non-focused linkz$Context is child of current fragmentzDocument URI is fragmentz3WEB: Event handled: Setting locusOfFocus to %s (%s))&r�rr�r�rHrr�r�rr1r
r�r�r�r�rr�r�rr�rr�rZsearchForCaretContextrr�r)r*rrZROLE_DOCUMENT_FRAMEZROLE_DOCUMENT_WEBrrrrZisChildOfCurrentFragmentr )rDr�r�r�r!r�r�r�r(Z
wasFocusedZ	isFocused�causerFrFrG�onFocusedChangedbs�



zScript.onFocusedChangedcCsd|_d|_d|_dS)z/Callback for mouse:button accessibility events.FT)r)r*r+)rDr�rFrFrG�
onMouseButton�szScript.onMouseButtoncCsV|jj|�r$d}tjtj|d�dS|jj�tjkrRd}tjtj|d�|j	j
�dS)z;Callback for object:property-change:accessible-name events.z/WEB: Ignoring event believed to be chrome noiseTz.WEB: Flusing messages from live region manager)rHr.rr�r�r�r�r�Z
ROLE_FRAMErWZ
flushMessages)rDr�r�rFrFrG�
onNameChanged�s
zScript.onNameChangedcCs�|jj|�r$d}tjtj|d�dS|jj|�rZd}tjtj|d�|jrV|j|j�dS|jj	|j�s�d}tjtj|d�dSt
j|jkr�d}tjtj|d�dSdS)z@Callback for object:state-changed:selected accessibility events.z<WEB: Ignoring event believed to be chrome autocomplete noiseTz,WEB: Event believed to be chrome page switchz,WEB: Event source is not in document contentFz6WEB: Ignoring because event source is not locusOfFocus)rH�eventIsChromeAutocompleteNoiserr�r��eventIsChromePageSwitchNoiser�r�r�r�rr�)rDr�r�rFrFrG�onSelectedChanged�s&zScript.onSelectedChangedcCs�|jj|�r$d}tjtj|d�dS|jj|�rHd}tjtj|d�dS|jj|j�snd}tjtj|d�dS|jjtj	�s�dtj	}tjtj|d�dS|jj
�\}}|jj||j�}|r�|jj|�r�d}tjtj|d�dSdS)z;Callback for object:selection-changed accessibility events.z<WEB: Ignoring event believed to be chrome autocomplete noiseTz;WEB: Ignoring event believed to be chrome page switch noisez,WEB: Event source is not in document contentFz@WEB: Event ignored: locusOfFocus (%s) is not in document contentzHWEB: Ignoring: Common ancestor of context and event source is text block)
rHr;rr�r�r<r�r�rr�r�ZcommonAncestorr')rDr�r�r�r�ZancestorrFrFrG�onSelectionChangeds0zScript.onSelectionChangedcCs*|jj|j�s&d}tjtj|d�dSdS)z?Callback for object:state-changed:showing accessibility events.z,WEB: Event source is not in document contentTF)rHr�r�rr�r�)rDr�r�rFrFrG�onShowingChanged-s
zScript.onShowingChangedcCs:|jj|j�r&d}tjtj|d�dS|jj|�rJd}tjtj|d�dS|jj|j�spd}tjtj|d�dS|jj|�r�d}tjtj|d�dS|jj	|�r�d}tjtj|d�dS|jj
|�r�d}tjtj|d�dS|jjdd	�\}}|jj|��rJ|jj|��r"d
}tjtj|d�dS|jjdd	�\}}|�rJt
j||dd�|jj|��rld}tjtj|d�d
}tjtj|d�|jj�|jj|j�}|�r�d|}tjtj|d�|jj|�|jj�jtj��r6|jj|j��r6|j�r|jj|j��rd}tjtj|d�|j�d}tjtj|d�dSdS)z=Callback for object:text-changed:delete accessibility events.zWEB: Event source is ZombieTz/WEB: Ignoring event believed to be chrome noisez,WEB: Event source is not in document contentFz5WEB: Ignoring event believed to be autocomplete noisez1WEB: Ignoring: Event believed to be spinner noisez8WEB: Ignoring event believed to be due to text insertion)r-z4WEB: Focused link deleted. Taking no further action.)r�z6WEB: Unable to get non-null, non-zombie context objectz0WEB: Clearing content cache due to text deletionz0WEB: Clearing structural navigation cache for %sz$WEB: Restoring pre-mouseover contextz(WEB: Done processing non-editable source)rHrr�rr�r�r.r�r$�eventIsSpinnerNoiser&r�rr
r��clearContentCacher�rSrr�r�r�rr�r.r,r	)rDr�r�r�r�r�rFrFrG�
onTextDeleted7sn
zScript.onTextDeletedcCs|jj|j�r&d}tjtj|d�dS|jj|�rJd}tjtj|d�dS|jj|j�spd}tjtj|d�dS|jj|�r�d}tjtj|d�dS|jj	|�r�d}tjtj|d�dS|jj
|�r�d}tjtj|d�dSd	}tjtj|d�|jj�|jj|��r,d
}tjtj|d�|j
j|�dS|jj|j�}|�rdd|}tjtj|d�|jj|�|jj|j�}|�s�d}tjtj|d�dS|jj�}|jtj��s|jtjk�r�d
}tjtj|d�dS|jj|j��rd}tjtj|d�tjd|jdd�dSdS)z=Callback for object:text-changed:insert accessibility events.zWEB: Event source is ZombieTz/WEB: Ignoring event believed to be chrome noisez,WEB: Event source is not in document contentFz6WEB: Ignoring: Event believed to be autocomplete noisez1WEB: Ignoring: Event believed to be spinner noisez1WEB: Ignoring: Event was for embedded object charz1WEB: Clearing content cache due to text insertionz'WEB: Event to be handled as live regionz0WEB: Clearing structural navigation cache for %sz0WEB: Ignoring: Event source is not a text objectz:WEB: Done processing non-editable, non-locusOfFocus sourcez@WEB: Event handled: Re-setting locusOfFocus to changed clickableN)r#)rHrr�rr�r�r.r�r$r@ZeventIsEOCAddedrAr/rWr0r�rSrr�r�r�r�rrr�ZisClickableElementr
r�)rDr�r�r�r�r!rFrFrG�onTextInsertedsl

zScript.onTextInsertedcCsl|jj|j�r&d}tjtj|d�dS|jj|j�sLd}tjtj|d�dS|jjtj�sxdtj}tjtj|d�dS|jj	|�r�d}tjtj|d�dS|jj
|�r�d}tjtj|d�dS|jj|j�}|s�d}tjtj|d�dS|jj|j��rd	}tjtj|d�dS|j
}|j||d
�}||jk�rh|jj��rh|jj��rhd}tjtj|d�dSdS)z@Callback for object:text-selection-changed accessibility events.zWEB: Event source is ZombieTz,WEB: Event source is not in document contentFz@WEB: Event ignored: locusOfFocus (%s) is not in document contentz6WEB: Ignoring: Event believed to be autocomplete noisez1WEB: Ignoring event for non-navigable text objectz0WEB: Ignoring: Event source is not a text objectz.WEB: In content editable with embedded objectsrzCWEB: Ignoring: Not selecting and event offset is at embedded object)rHrr�rr�r�r�rr�r$r%r�r�rr�r�r�ZlastInputEventWasCommand)rDr�r�r�r�r)rFrFrG�onTextSelectionChanged�sNzScript.onTextSelectionChangedcs$d}tjtj|d�t�j|�dS)z2Callback for window:activate accessibility events.z&WEB: Calling default onWindowActivatedT)rr�r�r"�onWindowActivated)rDr�r�)rErFrGrE�szScript.onWindowActivatedcCs*d}tjtj|d�d|_d|_d|_dS)z4Callback for window:deactivate accessibility events.zWEB: Clearing command stateTF)rr�r�r)r*r+)rDr�r�rFrFrG�onWindowDeactivatedszScript.onWindowDeactivatedcCs|j|j|j|j|j|jd�S)N)r)r*r+r/r0r1)r)r*r+r/r0r1)rDrFrFrG�getTransferableAttributessz Script.getTransferableAttributes)N)NN)r�)Nr)Nr)NNN)F)F)G�__name__�
__module__�__qualname__r#rJr[r\rgrhrirjrkrlrmrnror�r�r�r�r�r�r^r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r_r`r�r�rrar	rdrcrbrrrr"r*r,r2r4r5r6r8r9r:r=r>r?rBrCrDrErFrG�
__classcell__rFrF)rErGr@s�*72	&N "
#%


I
{a	x!
HH3
r)-Z__id__�__version__Z__date__Z
__copyright__Z__license__Z
gi.repositoryrr�r1r
rrrrrrr	r
rrrrrrrrZ	orca.acssrZorca.scriptsrrerZbraille_generatorrZsound_generatorrZspeech_generatorrZtutorial_generatorrZscript_utilitiesrZ
getManagerr2rrFrFrFrG�<module>sD