%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/orca/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/orca/__pycache__/structural_navigation.cpython-312.pyc

�

g
f�F��n�dZdZdZdZdZdZddlZejdd	�dd
lm	Z	ddl
mZdd
l
mZddl
m
Z
ddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&Gd �d!�Z'Gd"�d#�Z(y)$z!Implements structural navigation.z$Id$z
$Revision$z$Date$zRCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2010-2013 The Orca Team�LGPL�N�Atspiz2.0)r�)�cmdnames)�debug)�
focus_manager)�	guilabels)�input_event)�keybindings)�messages)�object_properties)�orca_gui_navlist)�
orca_state)�settings)�settings_manager)�AXCollection)�AXEventSynthesizer)�AXHypertext)�AXObject)�AXSelection)�AXTable)�AXText)�AXUtilitiesc�F�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zy)�StructuralNavigationObjectatRepresents a document object which has identifiable characteristics
    which can be used for the purpose of navigation to and among instances
    of that object. These characteristics may be something as simple as a
    role and/or a state of interest. Or they may be something more complex
    such as character counts, text attributes, and other object attributes.
    c	���||_||_||_||_||_||_||_||_i|_tj�|_g|_|j�y)apCreates a new structural navigation object.

        Arguments:
        - structuralNavigation: the StructuralNavigation class associated
          with this object.
        - objType: the type (e.g. BLOCKQUOTE) associated with this object.
        - bindings: a dictionary of all of the possible bindings for this
          object.  In the case of all but the "atLevel" bindings, each
          binding takes the form of [keysymstring, modifiers, description].
          The goPreviousAtLevel and goNextAtLevel bindings are each a list
          of bindings in that form.
        - predicate: the method to use to verify if a given accessible
          matches this structural navigation object. Used only when the
          collection interface does not provide a way for us to specify
          needed condition(s).
        - criteria: a method which returns a MatchRule object which is used
          to find all matching objects via AtspiCollection.
        - presentation: the method which should be called after performing
          the search for the structural navigation object.
        - dialogData: the method which returns the title, column headers,
          and row data which should be included in the "list of" dialog for
          the structural navigation object.
        - getter: The function which should be used instead of the criteria
          and predicate.
        N)�structuralNavigation�objType�bindings�	predicate�criteria�present�_dialogData�getter�inputEventHandlersr�KeyBindings�keyBindings�	functions�_setUpHandlersAndBindings)	�selfrrrr r!�presentation�
dialogDatar$s	         �</usr/lib/python3/dist-packages/orca/structural_navigation.py�__init__z#StructuralNavigationObject.__init__Dsj��8%9��!���� ��
�"��� ��
�#���%������"$���&�2�2�4�������&�&�(�c
��
�|jjd�}|r�|\}}}|j�d�}tj|j
|�|j|<|jjtj|tj||j|��|jj|j
�|jjd�}|r�|\}}}|j�d�}tj|j|�|j|<|jjtj|tj||j|��|jj|j�|jjd�}|r�|\}}}|j�d�}tj|j|�|j|<|jjtj|tj||j|��|jj|j�|jjd�xsg}t!|�D]�\}	}
|	dz}|j#|�}d	|j|fz}|
\}}}tj||�|j|<|jjtj|tj||j|��|jj|���|jjd
�xsg}
t!|
�D]�\}	}
|	dz}|j%|�}d|j|fz}|
\}}}tj||�|j|<|jjtj|tj||j|��|jj|���|jjd�xsg}t!|�D]�\}	}
|	dz}|j'|�}d
|j|fz}|
\}}}tj||�|j|<|jjtj|tj||j|��|jj|���i}|jjd�|d<|jjd�|d<|jjd�|d<|jjd�|d<|jjd�|d<|jjd�|d<|jjd�|d<|jjd�|d<|D]�}|j|�}
|
s�|j)|�}|j�d|��}|
\}}}tj||�|j|<|jjtj|tj||j|��|jj|���y) z<Adds the inputEventHandlers and keyBindings for this object.�previous�
GoPrevious�next�GoNext�list�ShowList�previousAtLevelrz%sGoPreviousLevel%dHandler�nextAtLevelz%sGoNextLevel%dHandler�listAtLevelz%sShowListAtLevel%dHandler�left�Left�right�Right�up�Up�down�Down�first�First�last�Last�start�Start�end�End�GoN)r�getrr
�InputEventHandler�
goPreviousr%r'�addr�
KeyBinding�defaultModifierMaskr(�append�goNext�showList�	enumerate�goPreviousAtLevelFactory�goNextAtLevelFactory�showListAtLevelFactory�goDirectionFactory)r*�previousBinding�keysymstring�	modifiers�description�handlerName�nextBinding�listBindingr7�i�binding�level�handlerr8r9�
directions�	directions                 r-r)z4StructuralNavigationObject._setUpHandlersAndBindingsnsT���-�-�+�+�J�7���5D�2�\�9�k�!�\�\�N�*�5�K��-�-�d�o�o�{�K�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�$�/�/�2��m�m�'�'��/���5@�2�\�9�k�!�\�\�N�&�1�K��-�-�d�k�k�;�G�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�$�+�+�.��m�m�'�'��/���5@�2�\�9�k�!�\�\�N�(�3�K��-�-�d�m�m�[�I�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�$�-�-�0�
�-�-�+�+�,=�>�D�"��#�O�4�	+�J�A�w���E�E��3�3�E�:�G�6�$�,�,��9N�N�K�3:�0�L�)�[��-�-�g�{�C�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�'�*�!	+�$�m�m�'�'�
�6�<�"��#�K�0�	+�J�A�w���E�E��/�/��6�G�2�d�l�l�E�5J�J�K�3:�0�L�)�[��-�-�g�{�C�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�'�*�!	+�$�m�m�'�'�
�6�<�"��#�K�0�	+�J�A�w���E�E��1�1�%�8�G�6�$�,�,��9N�N�K�3:�0�L�)�[��-�-�g�{�C�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�'�*�!	+�,�
�"�m�m�/�/��7�
�6��"�m�m�/�/��8�
�7��"�m�m�/�/��5�
�4��"�m�m�/�/��7�
�6��"�m�m�/�/��8�
�7��"�m�m�/�/��7�
�6��#�}�}�0�0��9�
�7��!�]�]�.�.�u�5�
�5��#�	+�I� �n�n�Y�/�G����-�-�i�8�G�!�\�\�N�"�Y�K�8�K�3:�0�L�)�[��-�-�g�{�C�
�#�#�K�0�
��� � ��&�&� ��3�3���+�+�K�8�	:�
;�
�N�N�!�!�'�*�'	+r/c�>�|jj|d|�y)zGo to the previous object.FN�r�goObject�r*�script�
inputEvents   r-rMz%StructuralNavigationObject.goPreviouss���!�!�*�*�4��
�Cr/c�>�|jj|d|�y)zGo to the next object.TNrgris   r-rRz!StructuralNavigationObject.goNexts���!�!�*�*�4��z�Br/c���|jj|�}�fd�}tt||��}|j�tt|j|��}|j
�(d}t
jtj|d�y|j�\}}}t|�}	|�dtj|	���}|	s�j|�y�jj�\}
}	|j|
�}|D�
cgc]}
|
dg||
�z��}}
t#j$||||�y#t $rd}Y�@wxYwcc}
w)z3Show a list of all the items with this object type.c���tj|�ry�jj|�xs�jj	|�S�NF)r�is_dead�	utilities�isHidden�isEmpty��xrjs �r-�
_isValidMatchz:StructuralNavigationObject.showList.<locals>._isValidMatchsE�������"���(�(�1�1�!�4�S��8H�8H�8P�8P�QR�8S�T�Tr/Nz;STRUCTURAL NAVIGATION: Cannot show list without dialog dataT�: r���)r�_getAllr5�filterr r#r�printMessage�
LEVEL_INFO�lenr�
itemsFound�presentMessagerq�getCaretContext�index�	Exceptionr�showUI)r*rjrk�objectsrv�msg�title�
columnHeaders�rowData�count�
currentObject�offsetr��obj�rowss `             r-rSz#StructuralNavigationObject.showListsI����+�+�3�3�D�9��	U�
�v�m�W�5�6���>�>�%��6�$�.�.�'�:�;�G����#�O�C����u�/�/��d�;��(,�(8�(8�(:�%��}�g��G����'��H�/�/��6�7�8����!�!�%�(�� &� 0� 0� @� @� B��
�v�	��M�M�-�0�E�5<�<�S��b�	�G�C�L�(�<��<�����}�d�E�B��	�	��E�	��=s�E�E�E�Ec������fd�}|S)a[Generates a goPrevious method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.
        c�D���jj�d|���y)NF��argrg�rjrkrbr*s  ��r-�goPreviousAtLevelzNStructuralNavigationObject.goPreviousAtLevelFactory.<locals>.goPreviousAtLevel9s ����%�%�.�.�t�U�J�E�.�Rr/�)r*rbr�s`` r-rUz3StructuralNavigationObject.goPreviousAtLevelFactory/s���	S� � r/c������fd�}|S)aXGenerates a goNext method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.

        c�D���jj�d|���y)NTr�rgr�s  ��r-�
goNextAtLevelzFStructuralNavigationObject.goNextAtLevelFactory.<locals>.goNextAtLevelHs ����%�%�.�.�t�T�:�5�.�Qr/r�)r*rbr�s`` r-rVz/StructuralNavigationObject.goNextAtLevelFactory=s���	R��r/c������fd�}|S)aYGenerates a showList method for the specified level. Right
        now, this is just for headings, but it may have applicability
        for other objects such as list items (i.e. for level-based
        navigation in an outline or other multi-tiered list.

        Arguments:
        - level: the desired level of the object as an int.
        c�X����jj��
��}�fd�}tt||��}�j�tt�j|��}�j�
��\}}}t
|�}|�dtj|���}|s�j|�y�jj�\}}		|j|�}
|D�cgc]}|dg||�z��}}tj||||
�y#t$rd}
Y�@wxYwcc}w)Nr�c�v���jj|�xs�jj|�S�N)rqrrrsrts �r-rvzaStructuralNavigationObject.showListAtLevelFactory.<locals>.showListAtLevel.<locals>._isValidMatchYs4���"�,�,�5�5�a�8�W�F�<L�<L�<T�<T�UV�<W�X�Xr/rwrrx)rryr5rzr r#r}rr~rrqr�r�r�rr�)rjrkr�rvr�r�r�r�r�r�r�r�r�rbr*s`            ��r-�showListAtLevelzJStructuralNavigationObject.showListAtLevelFactory.<locals>.showListAtLevelVs'����/�/�7�7��%�7�H�G�
Y��6�-��9�:�G��~�~�)��v�d�n�n�g�>�?��,0�,<�,<��,<�,G�)�E�=�'���L�E��g�R�� 3� 3�E� :�;�<�E���%�%�e�,��$*�$4�$4�$D�$D�$F�!�M�6�
��
�
�m�4��9@�@��S�"�I����,�@�D�@��#�#�E�=�$��F��	�
���
��As�D�'D'�D$�#D$r�)r*rbr�s`` r-rWz1StructuralNavigationObject.showListAtLevelFactoryLs���	G�4�r/c����d�}��fd�}�jtjk(r|S�jtjk(r�dk(r|Syy)z?Generates the methods for navigation in a particular direction.c��tjr|jj�y|j	t
j�y)zGo to the last liveRegion.N)r�inferLiveRegions�liveRegionManager�goLastLiveRegionrr�LIVE_REGIONS_OFF)rjrks  r-r�zGStructuralNavigationObject.goDirectionFactory.<locals>.goLastLiveRegionus1���(�(��(�(�9�9�;��%�%�h�&?�&?�@r/c�J���dk(}�jj�||�y)NrG)r�goEdge)rjrk�isStartrer*s   ��r-�goContainerEdgezFStructuralNavigationObject.goDirectionFactory.<locals>.goContainerEdge|s%����7�*�G��%�%�,�,�T�7�J�Gr/rEN)r�StructuralNavigation�	CONTAINER�LIVE_REGION)r*rer�r�s``  r-rXz-StructuralNavigationObject.goDirectionFactoryrsU���	A�	H��<�<�/�9�9�9�"�"�
�\�\�1�=�=�
=��f�$�#�#�%�>r/N)
�__name__�
__module__�__qualname__�__doc__r.r)rMrRrSrUrVrWrXr�r/r-rr=s<���()�TS+�jD�C�"C�H!�
�$�L$r/rc�d	�eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZej8jej8j&ej8j:ej8j*ej8j<ej8j>ej8j@ej8jBej8jDej8jFej8jHej8jJej8jLej8jNej8jPej8jRej8jTej8jVej8jXej8jZgZ.ej8j^ej8j`ej8jbej8jdej8jfej8j ej8jhej8j$ej8jjej8jlej8jHej8j0ej8jnej8jpgZ9d�d�Z:d�d�Z;d�Z<d�Z=d�d�Z>d�Z?d�d �Z@d!�ZAd"�ZBd�d#�ZCd�d$�ZDd�d%�ZEd�d&�ZFd�d'�ZGd�d(�ZHd)�ZId*�ZJd+�ZKd,�ZLd-�ZMd.�ZNd/�ZOd�d0�ZPd1�ZQd2�ZRd3�ZSd4�ZTd5�ZUd6�ZVd7�ZWd8�ZXd�d9�ZYd�d:�ZZd;�Z[d<�Z\d�d=�Z]d�d>�Z^d?�Z_d@�Z`d�dA�Zad�dB�ZbdC�ZcdD�Zdd�dE�Zed�dF�Zfd�dG�ZgdH�ZhdI�Zid�dJ�Zjd�dK�ZkdL�ZldM�Zmd�dN�Znd�dO�ZodP�ZpdQ�Zqd�dR�Zrd�dS�ZsdT�ZtdU�ZudV�Zvd�dW�Zwd�dX�Zxd�dY�ZydZ�Zzd�d[�Z{d�d\�Z|d]�Z}d^�Z~d�d_�Zd�d`�Z�da�Z�db�Z�d�dc�Z�d�dd�Z�de�Z�df�Z�d�dg�Z�d�dh�Z�di�Z�dj�Z�d�dk�Z�d�dl�Z�dm�Z�dn�Z�d�do�Z�d�dp�Z�dq�Z�d�dr�Z�d�ds�Z�dt�Z�du�Z�d�dv�Z�d�dw�Z�dx�Z�dy�Z�d�dz�Z�d�d{�Z�d|�Z�d�d}�Z�d�d~�Z�d�Z�d��Z�d�d��Z�d�d��Z�d��Z�d��Z�d�d��Z�d�d��Z�d��Z�d��Z�d�d��Z�d�d��Z�d��Z�d��Z�d�d��Z�d�d��Z�d�d��Z�d��Z�d��Z�d�d��Z�d�d��Z�d�d��Z�y)�r�a1This class implements the structural navigation functionality which
    is available to scripts. Scripts interested in implementing structural
    navigation need to override getEnabledStructuralNavigationTypes() and
    return a list of StructuralNavigation object types which should be
    enabled.
    �
blockquote�button�checkBox�chunk�	clickable�comboBox�	container�entry�	formField�heading�image�iframe�landmark�linkr5�listItem�
liveRegion�	paragraph�radioButton�	separator�table�
unvisitedLink�visitedLinkc�.�||_||_d|_i|_|D] }|j	|�|j|<�"g|_d|_|jd�|_tj�|_ddg|_i|_
d|_y)a4Creates an instance of the StructuralNavigation class.

        Arguments:
        - script: the script which which this instance is associated.
        - enabledTypes: a list of StructuralNavigation object types
          which the script is interested in supporting.
        - enabled: Whether structural navigation should start out
          enabled.  For instance, in Gecko by default we do what it
          enabled; in soffice, we would want to start out with it
          disabled and have the user enable it via a keystroke when
          desired.
        FNTrx)�_script�enabled�
_suspended�enabledObjects�!structuralNavigationObjectCreatorr(�_last_input_event�get_handlers�	_handlersrr&�	_bindings�
lastTableCell�_objectCache�_inModalDialog)r*rj�enabledTypesr�rs     r-r.zStructuralNavigation.__init__�s��������� ���
!���#�	@�G��6�6�w�?�
����(�	@����!%����*�*�4�0���$�0�0�2���!�"�X������#��r/Nc�H�|ri|jt|�<yi|_yr�)r��hash)r*�documents  r-�
clearCachezStructuralNavigation.clearCaches!���02�D���d�8�n�-� "�D�r/c
�j�td|�d��}td|�d��}	td|�d��}	td|�d��}	td|�d��}	td|�d��}t||||||||�S#t$rd}Y�OwxYw#t$rd}Y�PwxYw#t$rd}Y�QwxYw#t$rd}Y�RwxYw)	a�This convenience method creates a StructuralNavigationObject
        with the specified name and associated characteristics. (See the
        "Objects" section of code near the end of this class. Creators
        of StructuralNavigationObject's can still do things the old
        fashioned way should they so choose, by creating the instance
        and then adding it via addObject().

        Arguments:
        - name: the name/objType associated with this object.
        zself._z
Bindings()�Presentation�	PredicateN�
DialogData�Criteria�Getter)�evalr�r)r*�namerr+r r,r!r$s        r-r�z6StructuralNavigation.structuralNavigationObjectCreators���&���j�1�2���f�T�F�,�7�8��	��v�d�V�9�5�6�I�
	���t�f�J�7�8�J�
	��f�T�F�(�3�4�H�
	��F�4�&��/�0�F�*�$��h�	�*2�L�*�f�V�	V��+�	��I�	���	��J�	���	��H�	���	��F�	�sF�A1�B�B�B$�1A?�>A?�B�B�B!� B!�$B2�1B2c�"�||j|<y)aAdds structuralNavigationObject to the dictionary of enabled
        objects.

        Arguments:
        - objType: the name/object type of the StructuralNavigationObject.
        - structuralNavigationObject: the StructuralNavigationObject to
          add.
        N)r�)r*r�structuralNavigationObjects   r-�	addObjectzStructuralNavigation.addObjectAs��(B����G�$r/c��|r7d}tjtj|d�|j�|jS)z7Returns the structural navigation input event handlers.z+STRUCTURAL NAVIGATION: Refreshing handlers.T)rr{r|�_setup_handlersr�)r*�refreshr�s   r-r�z!StructuralNavigation.get_handlersMs:���?�C����u�/�/��d�;�� � �"��~�~�r/c��i|_g|_t|j�syt	j
|jtj|j��|jd<|jj�D]�}|j}|D]/}||j|jxr|j��1|jj|�|jj|j���d|j��}t!j"t j$|d�y)z7Sets up the structural navigation input event handlers.N)r��!toggleStructuralNavigationHandlerz3STRUCTURAL NAVIGATION: Handlers set up. Suspended: T)r�r(r}r�r
rL�toggleStructuralNavigationr�STRUCTURAL_NAVIGATION_TOGGLEr��valuesr%�set_enabledr��update�extendrr{r|)r*r��handlers�keyr�s     r-r�z$StructuralNavigation._setup_handlersWs���������4�&�&�'��
�)�)��/�/��6�6�#���.�
0�	
���:�;�+/�*=�*=�*D�*D�*F�	H�&�1�D�D�H��
P����
�)�)�d�o�o�*=�*N�$�,�,�O�
P��N�N�!�!�(�+��N�N�!�!�"<�"F�"F�G�	H�D�D�O�O�CT�U��
���5�+�+�S�$�7r/c��|rCd}tjtj|d�|j�|jS|jj�r|j�|jS)z.Returns the structural navigation keybindings.z+STRUCTURAL NAVIGATION: Refreshing bindings.T)rr{r|�_setup_bindingsr�rs)r*r��
is_desktopr�s    r-�get_bindingsz!StructuralNavigation.get_bindingsosd���?�C����u�/�/��d�;�� � �"��~�~���^�^�
#�
#�
%�� � �"��~�~�r/c
�z�tj�|_t|j�sy|jjtjdtjtj|jdd|j��|jj�D]d}|jj}|D]G}|j|jxr
|j�|jj|��I�ftj �j#|j|jd�|_d|j��}t%j&t$j(|d�|jg}t%j*t$j(|d�y)z.Sets up the structural navigation keybindings.N�zr�rFz3STRUCTURAL NAVIGATION: Bindings set up. Suspended: T)rr&r�r}r�rNrOrP�ORCA_MODIFIER_MASKr�r�r�r'r�r�r�
getManager�overrideKeyBindingsrr{r|�printTokens)r*r�r�
keybindingr��tokenss      r-r�z$StructuralNavigation._setup_bindings{sa��%�0�0�2����4�&�&�'��������"�"���/�/��.�.����B�C���O�O�#�

%�	&�+/�*=�*=�*D�*D�*F�	/�&�1�=�=�I�I�H�&�
/�
��&�&�t�|�|�'K�D�O�O�8K�L����"�"�:�.�
/�	/�*�4�4�6�J�J��N�N�D�N�N�E�3���D�D�O�O�CT�U��
���5�+�+�S�$�7��.�.�!��
���%�*�*�F�D�9r/c�b�|jduxrH|jtjk(xs)tjj|j�}|j�|jj	�}nd}d|�d|��}tjt
j|d�|S)z>Returns true if the last input event was a navigation command.N�Nonez.STRUCTURAL NAVIGATION: Last navigation event (z) is last key event: T)r�r�lastNonModifierKeyEvent�isReleaseFor�asSingleLineStringrr{r|)r*�result�stringr�s    r-�'last_input_event_was_navigation_commandz<StructuralNavigation.last_input_event_was_navigation_command�s����'�'�t�3�\��'�'�:�+M�+M�M�[��5�5�B�B�4�CY�CY�Z�	��!�!�-��+�+�>�>�@�F��F�>�v�h�F[�\b�[c�d��
���5�+�+�S�$�7��
r/c��d}|r|d|��z
}tjtj|d�|jjD]}|jj|d���!|j
d�|_|jd�|_|jjD]*}|jj||j���,y)z>Refreshes structural navigation bindings and grabs for script.z4STRUCTURAL NAVIGATION: Refreshing bindings and grabsrwT)�includeGrabsN)rr{r|r�r'�remover�r�r�rNr�)r*rj�reasonr�ras     r-�refresh_bindings_and_grabsz/StructuralNavigation.refresh_bindings_and_grabs�s���E����R��x�=� �C�
���5�+�+�S�$�7��~�~�1�1�	B�G����%�%�g�D�%�A�	B��*�*�4�0����*�*�4�0����~�~�1�1�	N�G����"�"�7�T�_�_�9L�"�M�	Nr/c�8�|j|_|jrtj}ntj}|j	d�|_|j
d�|_|j|d�|r|jj|�y)z#Toggles structural navigation keys.Tztoggling structural navigation)r�r�STRUCTURAL_NAVIGATION_KEYS_ON�STRUCTURAL_NAVIGATION_KEYS_OFFr�r�r�r�rr�r)r*rjrkrrs     r-r�z/StructuralNavigation.toggleStructuralNavigation�s|�� �<�<�'����<�<��;�;�F��<�<�F��*�*�4�0����*�*�4�0����'�'��0P�Q���L�L�'�'��/�r/c��||jk(ryd|��}|r|d|��z
}tjtj|d�tjtj|d�||_|j	|d|���y)zBSuspends structural navigation independent of the enabled setting.Nz"STRUCTURAL NAVIGATION: Suspended: rwTzSuspended changed to )r�rr{r|r)r*rj�	suspendedrr�s     r-�suspend_commandsz%StructuralNavigation.suspend_commands�s�������'��2�9�+�>����R��x�=� �C�
���5�+�+�S�$�7�
���5�+�+�S�$�7�#����'�'��2G�	�{�0S�Tr/c�.��|jjjtj�j���t
��}|j|k7rNd|j�d|��}tjtj|d�|j�||_|jjj�}|jjt|�i�}|j �d|��}|j|g�}|rCdt#|�dg}	tj$tj|	d�|j'�S|j(r|j)||�}nv|j*sgSt-j.|�s,d|dg}	tj$tj|	d�gS|j+|�}
t1j2||
�}|rlt#|�}|D�cgc]}t-j4|�fd	��s�|�� }}d
|t#|�z
hd�g}	tj$tj|	d�|j'�}
|||<||jt|�<|
Scc}w)z8Returns all the instances of structuralNavigationObject.z8STRUCTURAL NAVIGATION: in modal dialog has changed from z to T�:z STRUCTURAL NAVIGATION: Returningzmatches from cache�STRUCTURAL NAVIGATION:zdoes not support collectionc���|�k(Sr�r�)ru�modalDialogs �r-�<lambda>z.StructuralNavigation._getAll.<locals>.<lambda>	s���QR�Va�Qa�r/zSTRUCTURAL NAVIGATION: Removedzobjects outside of modal dialog)r�rq�getModalDialogrr��get_locus_of_focus�boolr�rr{r|r��
documentFramer�rKr�rr}r��copyr$r!r�supports_collectionr�get_all_matches�
find_ancestor)r*r�r��
inModalDialogr�r��cacher��matchesr��rule�originalSize�m�rvrs              @r-ryzStructuralNavigation._getAll�sE����l�l�,�,�;�;��$�$�&�9�9�;�=���[�)�
����-�/�J��&�&�'�t�M�?�<�
�
���u�/�/��d�;��O�O��"/�D���<�<�)�)�7�7�9���!�!�%�%�d�8�n�b�9��+�3�3�4�A�c�U�;���)�)�C��$���8�#�g�,�H\�]�F����e�.�.���=��<�<�>�!�%�,�,�0�7�7��#�F�G�+�4�4��I��-�-�h�7�.��:W�X�F����e�.�.���=��I�-�6�6�s�;�D�"�2�2�8�T�B�G���w�<�L�")�c�Q�X�-C�-C�A�Ga�-b�q�c�G�c�6���G��9T�8U�7��F�F����e�.�.���=�
�\�\�^����c�
�,1����$�x�.�)��	��ds�J�%Jc�D�||_|�8|jjj�\}}|j	|�}|�tj|�r|jd|�y|r<|jjj|d�\}}|j||�y|jjj|�\}}|jjj||�\}}	|sK|jjj|�}
|jjj||
�}|j	|�}|r||k7r|j||	�y||k(rtj|d�}|j|d��y)NrxT)�
sameContainer)
r�r�rqr��getContainerForObjectrrpr"�nextContext�lastContext�getDocumentForObject�getNextObjectInDocument�	get_child)r*r�r��eventr�r�r�r��newObj�	newOffsetr��newContainers            r-r�zStructuralNavigation.goEdgesl��!&������,�,�0�0�@�@�B�K�C���2�2�3�7�I���� 0� 0�� ;�&�.�.�t�S�9����,�,�0�0�<�<�Y��K�K�C��&�.�.�s�F�;���l�l�,�,�8�8��C���V� �L�L�2�2�>�>�s�F�K���	���|�|�-�-�B�B�3�G�H��\�\�+�+�C�C�C��R�F��1�1�&�9���l�i�/�&�.�.�v�y�A���)���$�$�S�"�-�C�"�*�*�3�d�*�Cr/c�@����|�_�j�|���s�jd|�y|s�j���fd�}�fd�}d}|s'�jj
j
�\}}||�\}	}
|	r�|
d�|	}tj|�}t��D]�\}}
||
�s�tj|
�|k(rtj|
�|z
}n;tj|
�}�jj
j||�}|dkDr|s	|dks��|r���j|
|�ytjs�jd|�y|s*�jj!t"j$�n)�jj!t"j&��j�|��|s�j��D]}
||
�s��j|
|�y�jd|�y)aLThe method used for navigation among StructuralNavigationObjects
        which are not table cells.

        Arguments:
        - structuralNavigationObject: the StructuralNavigationObject which
          represents the object of interest.
        - isNext: If True, we're interested in the next accessible object
          which matches structuralNavigationObject.  If False, we're
          interested in the previous accessible object which matches.
        - event: The input event triggering this navigation
        - obj: the current object (typically the locusOfFocus).
        - arg: optional arguments which may need to be passed along to
          the predicate, presentation method, etc. For instance, in the
          case of navigating amongst headings at a given level, the level
          is needed and passed in as arg.
        Nc���tj|�ry�jjj	|�s%�jjj|�ry�j�y�j
|�S)NFT)rrpr�rqrrrsr )r�r*r�s ��r-rvz4StructuralNavigation.goObject.<locals>._isValidMatchOsg�������$���|�|�%�%�.�.�s�3�t�|�|�7M�7M�7U�7U�VY�7Z��)�3�3�;��-�7�7��<�<r/c�h��|r/|�vr|�j|�fStj|�}|r�/y)N)Nrx)r�r�
get_parent)r�rs �r-�_getMatchingObjAndIndexz>StructuralNavigation.goObject.<locals>._getMatchingObjAndIndexXs;�����'�>���
�
�c� 2�2�2��)�)�#�.���
r/r)r�ryr"�reverser�rqr�r�get_pathrTr2r�get_character_offset_in_parent�pathComparisonr�wrappedStructuralNavigationrr�WRAPPING_TO_BOTTOM�WRAPPING_TO_TOP)r*r��isNextr+r�r�rvr3r��thisObjr��currentPathr`�match�
comparison�pathrs``              @r-rhzStructuralNavigation.goObject4s����$"'����,�,�9�3�?���&�.�.�t�S�9����O�O��	=�	�����,�,�0�0�@�@�B�K�C��0��5������e�f�o�G��C��'�'��,��!�'�*�	�H�A�u� ��'���"�"�5�)�S�0�(�G�G��N�QW�W�
��(�(��/��!�\�\�3�3�B�B�4��U�
��Q��6�z�A�~�f�*�2�2�5�#�>��	��3�3�&�.�.�t�S�9����L�L�'�'��(C�(C�D��L�L�'�'��(@�(@�A��,�,�9�3�?����O�O���	�E��U�#�*�2�2�5�#�>��	�
	#�*�*�4��5r/c��tj|�r�tj|tj�D�cgc]}|��}}|ra|j
jj|�rtjt|��Stjt|��Sytj|�r5tj|�}|rtjt|��Sycc}w�N�)r�is_listr�
iter_children�is_list_itemr�rq�nestingLevelr�nestedListItemCountr}�
listItemCount�is_description_list�find_all_description_terms�descriptionListTermCount)r*r�ru�childrens    r-�_getListDescriptionz(StructuralNavigation._getListDescription�s������s�#�#+�#9�#9�#�{�?W�?W�#X�Y�a��Y�H�Y���<�<�)�)�6�6�s�;�#�7�7��H�
�F�F�#�1�1�#�h�-�@�@���
,�
,�S�
1�"�=�=�c�B�H���8�8��X��G�G���Zs�	C6c�d�tj|�}||jvry|tjj
k(rK|jjj|�s&|jjj|�sy|jjj|�Sro)r�get_role�CONTAINER_ROLESr�Role�SECTIONr�rq�
isLandmark�isBlockquote�inDocumentContent)r*r��roles   r-�_isContainerz!StructuralNavigation._isContainer�s���� � ��%���t�+�+�+���5�:�:�%�%�%��<�<�)�)�4�4�S�9��<�<�)�)�6�6�s�;���|�|�%�%�7�7��<�<r/c�n�|sy|j|�r|Stj||j�Sr�)rXrr�r*r�s  r-r%z*StructuralNavigation.getContainerForObject�s4�������S�!��J��%�%�c�4�+<�+<�=�=r/c�|�|r9tj|�s$tj|tj�}|S)z�Looks for a table in the ancestry of obj, if obj is not a table.

        Arguments:
        - obj: the accessible object of interest.
        )r�is_tablerrrZs  r-�getTableForCellz$StructuralNavigation.getTableForCell�s1���{�+�+�C�0��(�(��k�.B�.B�C�C��
r/c�L�|jjj|�S)a@Returns the [obj, characterOffset] where the caret should be
        positioned. For most scripts, the object should not change and
        the offset should be 0.  That's not always the case with Gecko.

        Arguments:
        - obj: the accessible object in which the caret should be
          positioned.
        )r�rq�getFirstCaretPositionrZs  r-�_getCaretPositionz&StructuralNavigation._getCaretPosition�s���|�|�%�%�;�;�C�@�@r/c�t�tj|�}tj|�}|tjj
k(r||fS|jjj||�tj|dd�tj|�s||fSd|dg}tjtj|d�|jjj|�}|rCtj|�|k(r+d|g}tjtj|d�|}||fS)z2Sets the caret at the specified offset within obj.FzKStructural navigation workaround for object destruction when setting caret.rz+became defunct after setting caret positionTz0STRUCTURAL NAVIGATION: Updating obj to replicant)rr5rPrrR�INVALIDr�rq�setCaretPosition�clear_cacher�
is_defunctrr�r|�getObjectFromPath)r*r��characterOffset�objPath�objRoler��	replicants       r-�_setCaretPositionz&StructuralNavigation._setCaretPosition�s���#�#�C�(���#�#�C�(���e�j�j�(�(�(���'�'������/�/��_�E������Y�	[��%�%�c�*���'�'�*�C�1^�_��
���%�*�*�F�D�9��L�L�*�*�<�<�W�E�	���*�*�9�5��@�H�)�T�F����e�.�.���=��C��O�#�#r/c��|sy|j||�ry|jj|�|jj|�y)z�Presents the first line of the object to the user.

        Arguments:
        - obj: the accessible object to be presented.
        - offset: the character offset within obj.
        N)�_presentWithSayAllr��
updateBraille�sayLine�r*r�r�s   r-�_presentLinez!StructuralNavigation._presentLine�sA�����"�"�3��/�����"�"�3�'������S�!r/c��|sy|j||�rytj|�|jj	|||d��y)z�Presents the entire object to the user.

        Arguments:
        - obj: the accessible object to be presented.
        - offset: the character offset within obj.
        NT)r��priorObj�	interrupt)rmr�scroll_to_top_edger��
presentObject)r*r�r�rss    r-�_presentObjectz#StructuralNavigation._presentObject�sG�����"�"�3��/���-�-�c�2����"�"�3�v��TX�"�Yr/c��|jj�r@tj�j	d�r|jj||�yy)N�structNavInSayAllTF)r��inSayAllrr��
getSetting�sayAllrps   r-rmz'StructuralNavigation._presentWithSayAll	sD���<�<� � �"��*�*�,�7�7�8K�L��L�L����V�,��r/c�L�|jjj|�Sr�)r��speechGenerator�getLocalizedRoleNamerZs  r-�_getRoleNamez!StructuralNavigation._getRoleNames���|�|�+�+�@�@��E�Er/c��tj|�rtj|d�}tj|�sytj|d�S�Nr)r�is_combo_boxrr*�supports_selectionr�get_selected_childrZs  r-�_getSelectedItemz%StructuralNavigation._getSelectedItemsH���#�#�C�(��$�$�S�!�,�C��*�*�3�/���-�-�c�1�5�5r/c���|jjj|�}|s%|jjj|�}|s(|j	|�}|rtj|�}|s�tj|�rmtj|�xstj|�}|s?tj|�}tj|�rtj|�}|sttj|�r_tj |tj"�D�cgc]}|��}}dj%t't)|j*|���}|Scc}w)N� )r�rq�
displayedText�
expandEOCsr�r�get_namer�is_image�get_image_description�get_descriptionr2�is_linkr�get_link_basenamerDrErF�joinr5�map�_getText)r*r��text�item�parentrurMs       r-r�zStructuralNavigation._getText!s"���|�|�%�%�3�3�C�8����<�<�)�)�4�4�S�9�D���(�(��-�D���(�(��.����,�,�S�1��1�1�#�6�W�(�:R�:R�SV�:W�D��!�,�,�S�1���&�&�v�.�&�8�8��@�D���+�+�C�0�#+�#9�#9�#�{�?W�?W�#X�Y�a��Y�H�Y��8�8�D��T�]�]�H�!=�>�?�D����Zs�8	E3c��|jjj|�}|s*|jjj	|d��\}}|S)NF)�focusedOnly)r�rq�displayedLabel�labelInference�infer)r*r��labelr�s    r-�	_getLabelzStructuralNavigation._getLabel7sP�����&�&�5�5�c�:���!�\�\�8�8�>�>���?�(�N�E�7��r/c���tj|�rDtj\}}}tj|�r|Stj
|�r|S|Stj|�r,tj\}}tj
|�r|S|Stj|�r5tj|�rtjStjSyrB)r�is_check_boxr
�CHECK_BOX_INDICATORS_SPEECH�is_indeterminate�
is_checked�is_radio_button�RADIO_BUTTON_INDICATORS_SPEECHr��
is_visited�
STATE_VISITED�STATE_UNVISITED)r*r��	unchecked�checked�	partially�
unselected�selecteds       r-�	_getStatezStructuralNavigation._getStateAs����#�#�C�(�,=�,Y�,Y�)�I�w�	��+�+�C�0� � ��%�%�c�*������&�&�s�+�#4�#S�#S� �J���%�%�c�*��������s�#��%�%�c�*�(�6�6�6�(�8�8�8�r/c�J�|j|�xs|j|�Sr�)r�r�rZs  r-�	_getValuezStructuralNavigation._getValue]s!���~�~�c�"�8�d�m�m�C�&8�8r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�qr1r3r5)r�BLOCKQUOTE_PREVr�SHIFT_MODIFIER_MASK�BLOCKQUOTE_NEXT�NO_MODIFIER_MASK�BLOCKQUOTE_LIST�SHIFT_ALT_MODIFIER_MASK�r*r�prevDesc�nextDesc�listDescs     r-�_blockquoteBindingsz(StructuralNavigation._blockquoteBindings��r�����+�+�� #�[�%D�%D�h�O�����+�+����!=�!=�x�H�����+�+����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_block_quotes�r*r�r�s   r-�_blockquoteGetterz&StructuralNavigation._blockquoteGetter�����0�0��:�:r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_BLOCKQUOTES�STRUCTURAL_NAVIGATION_NOT_FOUNDr�r�r*r�r�rg�full�briefs      r-�_blockquotePresentationz,StructuralNavigation._blockquotePresentation��m���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��/�/�D��<�<�E��L�L�'�'��e�4r/c�V��tjg}�fd�}tj||fS)Nc�(���j|�gSr��r��r�r*s �r-r�z;StructuralNavigation._blockquoteDialogData.<locals>.rowData������M�M�#�&�'�'r/)r	�SN_HEADER_BLOCKQUOTE�SN_TITLE_BLOCKQUOTE�r*r�r�s`  r-�_blockquoteDialogDataz*StructuralNavigation._blockquoteDialogData�s+���"�7�7�8�
�	(��,�,�m�W�D�Dr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�br1r3r5)r�BUTTON_PREVrr��BUTTON_NEXTr��BUTTON_LISTr�r�s     r-�_buttonBindingsz$StructuralNavigation._buttonBindings�sr�����'�'�� #�[�%D�%D�h�O�����'�'����!=�!=�x�H�����'�'����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_buttonsr�s   r-�
_buttonGetterz"StructuralNavigation._buttonGetter�s���+�+�H�5�5r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_BUTTONSr�r�rr�s      r-�_buttonPresentationz(StructuralNavigation._buttonPresentation��m���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��+�+�D��<�<�E��L�L�'�'��e�4r/c�V��tjg}�fd�}tj||fS)Nc�(���j|�gSr�r�r�s �r-r�z7StructuralNavigation._buttonDialogData.<locals>.rowData�r�r/)r	�SN_HEADER_BUTTON�SN_TITLE_BUTTONr�s`  r-�_buttonDialogDataz&StructuralNavigation._buttonDialogData�s+���"�3�3�4�
�	(��(�(�-��@�@r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)Nrur1r3r5)r�CHECK_BOX_PREVrr��CHECK_BOX_NEXTr��CHECK_BOX_LISTr�r�s     r-�_checkBoxBindingsz&StructuralNavigation._checkBoxBindings��r�����*�*�� #�[�%D�%D�h�O�����*�*����!=�!=�x�H�����*�*����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_check_boxesr�s   r-�_checkBoxGetterz$StructuralNavigation._checkBoxGetter�����/�/��9�9r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_CHECK_BOXESr�r�rr�s      r-�_checkBoxPresentationz*StructuralNavigation._checkBoxPresentation�r�r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr��r�r�r�s �r-r�z9StructuralNavigation._checkBoxDialogData.<locals>.rowData�� ����N�N�3�'�����)<�=�=r/)r	�SN_HEADER_CHECK_BOXrQ�SN_HEADER_STATE�SN_TITLE_CHECK_BOXr�s`  r-�_checkBoxDialogDataz(StructuralNavigation._checkBoxDialogData�s?���"�6�6�7�
����Y�6�6�7�	>��+�+�]�G�C�Cr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�or1r3r5)r�LARGE_OBJECT_PREVrr��LARGE_OBJECT_NEXTr��LARGE_OBJECT_LISTr�r�s     r-�_chunkBindingsz#StructuralNavigation._chunkBindings�r�����-�-�� #�[�%D�%D�h�O�����-�-����!=�!=�x�H�����-�-����!D�!D�h�O�����r/c�\�tj|j|jz��S�N)�roles)r�create_match_rule�OBJECT_ROLESrQ�r*r�s  r-�_chunkCriteriaz#StructuralNavigation._chunkCriterias$���-�-�D�4E�4E��H\�H\�4\�]�]r/c��tj|�rytj|�}|tj
krytj|�}|j|jj�}||zdkryy)NTFg�������?)
r�
is_headingr�get_character_countr�largeObjectTextLength�get_all_textr�r��EMBEDDED_OBJECT_CHARACTER)r*r�r��lengthr�eocss      r-�_chunkPredicatez$StructuralNavigation._chunkPredicatesn���!�!�#�&���+�+�C�0���H�2�2�2���$�$�S�)���|�|�D�L�L�B�B�C����;����r/c���|�9|j|�\}}|j||�|j|d�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_CHUNKSr�r�r�r*r�r�r,rgr�r�s       r-�_chunkPresentationz'StructuralNavigation._chunkPresentation!�f���?�(,�(>�(>�s�(C�%�V�_��"�"�6�?�;�����Q�'��*�*�D��<�<�E��L�L�'�'��e�4r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr��r�r�r�s �r-r�z6StructuralNavigation._chunkDialogData.<locals>.rowData/�"����M�M�#�&��(9�(9�#�(>�?�?r/)r	�SN_HEADER_OBJECTrQ�SN_HEADER_ROLE�SN_TITLE_LARGE_OBJECTr�s`  r-�_chunkDialogDataz%StructuralNavigation._chunkDialogData+s@���"�3�3�4�
����Y�5�5�6�	@��.�.�
�w�F�Fr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�cr1r3r5)r�COMBO_BOX_PREVrr��COMBO_BOX_NEXTr��COMBO_BOX_LISTr�r�s     r-�_comboBoxBindingsz&StructuralNavigation._comboBoxBindings:r�r/c�,�tj|�Sr�)r�find_all_combo_boxesr�s   r-�_comboBoxGetterz$StructuralNavigation._comboBoxGetterFr�r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_COMBO_BOXESr�r�rr�s      r-�_comboBoxPresentationz*StructuralNavigation._comboBoxPresentationIr�r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr��r�r�r�s �r-r�z9StructuralNavigation._comboBoxDialogData.<locals>.rowDataW� ����N�N�3�'����s�);�<�<r/)r	�SN_HEADER_COMBO_BOXrQ�SN_HEADER_SELECTED_ITEM�SN_TITLE_COMBO_BOXr�s`  r-�_comboBoxDialogDataz(StructuralNavigation._comboBoxDialogDataSs?���"�6�6�7�
����Y�>�>�?�	=��+�+�]�G�C�Cr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�er1r3r5)r�
ENTRY_PREVrr��
ENTRY_NEXTr��
ENTRY_LISTr�r�s     r-�_entryBindingsz#StructuralNavigation._entryBindingsb�r�����&�&�� #�[�%D�%D�h�O�����&�&����!=�!=�x�H�����&�&����!D�!D�h�O�����r/c�6�d�}tj||��S)Nc�d�tj|�}|duxrtj|�Sr�)rr2r�is_editable)r�r�s  r-�parent_is_not_editablezAStructuralNavigation._entryGetter.<locals>.parent_is_not_editableos0���(�(��-�F���%�M�k�.E�.E�f�.M�*M�Mr/��pred)r�find_all_editable_objects)r*r�r�r=s    r-�_entryGetterz!StructuralNavigation._entryGetterns��	N��4�4�X�DZ�[�[r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_ENTRIESr�r�rr�s      r-�_entryPresentationz'StructuralNavigation._entryPresentationtr�r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr�r-r�s �r-r�z6StructuralNavigation._entryDialogData.<locals>.rowData�r.r/)r	�SN_HEADER_LABELrQ�SN_HEADER_TEXT�SN_TITLE_ENTRYr�s`  r-�_entryDialogDataz%StructuralNavigation._entryDialogData~s?���"�2�2�3�
����Y�5�5�6�	=��'�'���?�?r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�fr1r3r5)r�FORM_FIELD_PREVrr��FORM_FIELD_NEXTr��FORM_FIELD_LISTr�r�s     r-�_formFieldBindingsz'StructuralNavigation._formFieldBindings�r�r/c�6�d�}tj||��S)Nc�X�tj|�rtj|�Sy)NT)r�is_document_framer<�r�s r-�is_not_noneditable_doc_framezKStructuralNavigation._formFieldGetter.<locals>.is_not_noneditable_doc_frame�s$���,�,�S�1�"�.�.�s�3�3�r/r>)r�find_all_form_fields)r*r�r�rUs    r-�_formFieldGetterz%StructuralNavigation._formFieldGetter�s��	��/�/��?[�\�\r/c�x�|�|tj|�r+tj|�rtj|d�}|j|�\}}|j
||�\}}|j||�ytj}tj}|jj||�yr�)
r�is_textr�get_child_countr*r`rkrwr�NO_MORE_FORM_FIELDSr�r�rr�s      r-�_formFieldPresentationz+StructuralNavigation._formFieldPresentation�s����?��"�"�3�'�H�,D�,D�S�,I��(�(��a�0��%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��/�/�D��<�<�E��L�L�'�'��e�4r/c����tjg}|jtj�|jtj��fd�}tj
||fS)Nc�h���j|��j|��j|�gSr�)r�r�r�r�s �r-r�z:StructuralNavigation._formFieldDialogData.<locals>.rowData�s3����N�N�3�'��%�%�c�*��N�N�3�'�)�
)r/)r	rGrQr�SN_HEADER_VALUE�SN_TITLE_FORM_FIELDr�s`  r-�_formFieldDialogDataz)StructuralNavigation._formFieldDialogData�sS���"�2�2�3�
����Y�5�5�6����Y�6�6�7�	)�
�,�,�m�W�D�Dr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<g}g}g}|j�\}}	t||	dz�D]�}
tj|
z}|jt|
�tj|g�tj|
z}|jt|
�tj
|g�tj|
z}|jt|
�tj|g���||d<||d<||d<|S)	N�hr1r3r5rr7r8r9)r�HEADING_PREVrr��HEADING_NEXTr��HEADING_LISTr��_headingLevels�range�HEADING_AT_LEVEL_PREVrQ�str�HEADING_AT_LEVEL_NEXT�HEADING_AT_LEVEL_LIST)r*rr�r�r��prevAtLevelBindings�nextAtLevelBindings�listAtLevelBindings�minLevel�maxLevelr`s           r-�_headingBindingsz%StructuralNavigation._headingBindings�su�����(�(�� #�[�%D�%D�h�O�����(�(����!=�!=�x�H�����(�(����!D�!D�h�O���� �� �� ��!�0�0�2���(��x��A��.�	3�A��5�5��9�H��&�&��A��(3�(G�(G�(0�(2�
3� �5�5��9�H��&�&��A��(3�(D�(D�(0�(2�
3� �5�5�q�8�H��&�&��A��(3�(K�(K�(0�(2�
3�	3� ':��"�#�"5����"5�����r/c�
�ddgS)Nr�r�)r*s r-rgz#StructuralNavigation._headingLevels�s���1�v�
r/c�^�|�tj||��Stj|�S)N)rb)r�find_all_headings_at_level�find_all_headingsr�s   r-�_headingGetterz#StructuralNavigation._headingGetter�s+���?��9�9�(�#�N�N��,�,�X�6�6r/c�|�|�<|j|�\}}|j||�\}}|j||�y|�=tj}tj
}|jj||�ytj|z}tj
}|jj||�yr�)	r`rkrwr�NO_MORE_HEADINGSr�r�r�NO_MORE_HEADINGS_AT_LEVELr�s      r-�_headingPresentationz)StructuralNavigation._headingPresentation�s����?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5�
�[��,�,�D��<�<�E��L�L�'�'��e�4��5�5��;�D��<�<�E��L�L�'�'��e�4r/c����tjg}|s5tj}|jtj��fd�}ntj
|z}�fd�}|||fS)Nc����j|�t�jjj	|��gSr�)r�rjr�rq�headingLevelr�s �r-r�z8StructuralNavigation._headingDialogData.<locals>.rowDatas8����
�
�c�*��D�L�L�2�2�?�?��D�E�G�Gr/c�(���j|�gSr�r�r�s �r-r�z8StructuralNavigation._headingDialogData.<locals>.rowDatas����
�
�c�*�+�+r/)r	�SN_HEADER_HEADING�SN_TITLE_HEADINGrQ�SN_HEADER_LEVEL�SN_TITLE_HEADING_AT_LEVEL)r*r�r�r�r�s`    r-�_headingDialogDataz'StructuralNavigation._headingDialogData�s_���"�4�4�5�
���.�.�E�� � ��!:�!:�;�
G�
�7�7�#�=�E�
,��m�W�,�,r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)NrCr1r3r5)r�IFRAME_PREVrr��IFRAME_NEXTr��IFRAME_LISTr�r�s     r-�_iframeBindingsz$StructuralNavigation._iframeBindingssr�����'�'�� "�K�$C�$C�X�N�����'�'���� <� <�h�G�����'�'���� C� C�X�N�����r/c�,�tj|�Sr�)r�find_all_internal_framesr�s   r-�
_iframeGetterz"StructuralNavigation._iframeGetter����3�3�H�=�=r/c���|�9|j|�\}}|j||�|j|d�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_IFRAMESr�r�rrs       r-�_iframePresentationz(StructuralNavigation._iframePresentation!sf���?�(,�(>�(>�s�(C�%�V�_��"�"�6�?�;�����Q�'��+�+�D��<�<�E��L�L�'�'��e�4r/c�V��tjg}�fd�}tj||fS)Nc����tj|�}|s>tj|�r)tjtj|d��}|xs�j	|�gSr�)rr�rZr*r�)r�r�r*s  �r-r�z7StructuralNavigation._iframeDialogData.<locals>.rowData.sY����$�$�S�)�D��H�4�4�S�9��(�(��);�);�C��)C�D���2�D�-�-�c�2�3�3r/)r	�SN_HEADER_IFRAME�SN_TITLE_IFRAMEr�s`  r-�_iframeDialogDataz&StructuralNavigation._iframeDialogData+s+���"�3�3�4�
�	4��(�(�-��@�@r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�gr1r3r5)r�
IMAGE_PREVrr��
IMAGE_NEXTr��
IMAGE_LISTr�r�s     r-�_imageBindingsz#StructuralNavigation._imageBindings<r9r/c�,�tj|�Sr�)r�find_all_images_and_image_mapsr�s   r-�_imageGetterz!StructuralNavigation._imageGetterHs���9�9�(�C�Cr/c���|�9|j|�\}}|j||�|j|d�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_IMAGESr�r�rrs       r-�_imagePresentationz'StructuralNavigation._imagePresentationKrr/c�V��tjg}�fd�}tj||fS)Nc�N���j|�xs�j|�gSr�rr�s �r-r�z6StructuralNavigation._imageDialogData.<locals>.rowDataXs%����M�M�#�&�@�$�*;�*;�C�*@�A�Ar/)r	�SN_HEADER_IMAGE�SN_TITLE_IMAGEr�s`  r-�_imageDialogDataz%StructuralNavigation._imageDialogDataUs,���"�2�2�3�
�	B��'�'���?�?r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)Nr!r1r3r5)r�
LANDMARK_PREVrr��
LANDMARK_NEXTr��
LANDMARK_LISTr�r�s     r-�_landmarkBindingsz&StructuralNavigation._landmarkBindingscsr�����)�)�� #�[�%D�%D�h�O�����)�)����!=�!=�x�H�����)�)����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_landmarksr�s   r-�_landmarkGetterz$StructuralNavigation._landmarkGetteros���-�-�h�7�7r/c�T�|�j|j|�\}}|j||�\}}|jjt	j
|��|j
||�ytj}tj}|jj||�yr�)
r`rkr�rrr�rqr�NO_LANDMARK_FOUNDr�r�s      r-�_landmarkPresentationz*StructuralNavigation._landmarkPresentationrs����?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C���L�L�'�'��(9�(9�#�(>�?����c�?�3��-�-�D��<�<�E��L�L�'�'��e�4r/c���tjg}|jtj��fd�}tj||fS)Nc�P��tj|��j|�gSr�)rr�r�r�s �r-r�z9StructuralNavigation._landmarkDialogData.<locals>.rowData�s$����%�%�c�*�D�,=�,=�c�,B�C�Cr/)r	�SN_HEADER_LANDMARKrQr�SN_TITLE_LANDMARKr�s`  r-�_landmarkDialogDataz(StructuralNavigation._landmarkDialogData}s@���"�5�5�6�
����Y�5�5�6�	D��*�*�M�7�B�Br/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�lr1r3r5)r�	LIST_PREVrr��	LIST_NEXTr��	LIST_LISTr�r�s     r-�
_listBindingsz"StructuralNavigation._listBindings��r�����%�%�� #�[�%D�%D�h�O�����%�%����!=�!=�x�H�����%�%����!D�!D�h�O�����r/c�x�tj|�}|jtj|��|Sr�)r�find_all_listsr��find_all_description_lists�r*r�r��resultss    r-�_listGetterz StructuralNavigation._listGetter�s.���,�,�X�6�����{�=�=�h�G�H��r/c�L�|�f|jj|j|��|j|�\}}|j	||�\}}|j||�ytj}tj}|jj||�yr�)
r��speakMessagerNr`rkrqr�
NO_MORE_LISTSr�rr�s      r-�_listPresentationz&StructuralNavigation._listPresentation�s����?��L�L�%�%�d�&>�&>�s�&C�D�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C�����c�?�3��)�)�D��<�<�E��L�L�'�'��e�4r/c�V��tjg}�fd�}tj||fS)Nc�(���j|�gSr�r�r�s �r-r�z5StructuralNavigation._listDialogData.<locals>.rowData�r�r/)r	�SN_HEADER_LIST�
SN_TITLE_LISTr�s`  r-�_listDialogDataz$StructuralNavigation._listDialogData�s+���"�1�1�2�
�	(��&�&�
�w�>�>r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)Nr`r1r3r5)r�LIST_ITEM_PREVrr��LIST_ITEM_NEXTr��LIST_ITEM_LISTr�r�s     r-�_listItemBindingsz&StructuralNavigation._listItemBindings�r�r/c�x�tj|�}|jtj|��|Sr�)r�find_all_list_itemsr�rKr�s    r-�_listItemGetterz$StructuralNavigation._listItemGetter�s.���1�1�(�;�����{�=�=�h�G�H��r/c���|�=tj}tj}|jj	||�yd}d}tj�j�}tj|�rItj|tj�}tj|tj�}nHtj|tj�}tj|tj�}|�/||k7r*|jj|j|��|j!|�\}}|j#||�\}}|j%||�yr�)r�NO_MORE_LIST_ITEMSr�r�rrr�rrrFrrrDrJr�rNr`rkrq)	r*r�r�r�r��thisList�	priorList�focusrgs	         r-�_listItemPresentationz*StructuralNavigation._listItemPresentation�s)���;��.�.�D��<�<�E��L�L�'�'��e�4�����	��(�(�*�=�=�?���#�#�C�(��-�-�c�;�3F�3F�G�H� �.�.�u�k�6I�6I�J�I��-�-�c�;�3R�3R�S�H� �.�.�u�k�6U�6U�V�I���I��$9��L�L�%�%�d�&>�&>�x�&H�I�!%�!7�!7��!<���o�#�5�5�c�?�K���_����#��/r/c�V��tjg}�fd�}tj||fS)Nc�(���j|�gSr�r�r�s �r-r�z9StructuralNavigation._listItemDialogData.<locals>.rowData�r�r/)r	�SN_HEADER_LIST_ITEM�SN_TITLE_LIST_ITEMr�s`  r-�_listItemDialogDataz(StructuralNavigation._listItemDialogData��+���"�6�6�7�
�	(��+�+�]�G�C�Cr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj
|g|d<|S)N�dr1r3�yrD)r�LIVE_REGION_PREVrr��LIVE_REGION_NEXTr��LIVE_REGION_LAST)r*rr�r��descs     r-�_liveRegionBindingsz(StructuralNavigation._liveRegionBindings�sr�����,�,�� #�[�%D�%D�h�O�����,�,����!=�!=�x�H�����(�(����!=�!=�t�D�����r/c�,�tj|�Sr�)r�find_all_live_regionsr�s   r-�_liveRegionGetterz&StructuralNavigation._liveRegionGetter�r�r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_LIVE_REGIONSr�r�rr�s      r-�_liveRegionPresentationz,StructuralNavigation._liveRegionPresentation�sm���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��0�0�D��<�<�E��L�L�'�'��e�4r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�pr1r3r5)r�PARAGRAPH_PREVrr��PARAGRAPH_NEXTr��PARAGRAPH_LISTr�r�s     r-�_paragraphBindingsz'StructuralNavigation._paragraphBindingsr�r/c�6�d�}tj|d|�S)Nc�^�tj|�rytj|�dkDS)NT�)rr
rrrTs r-�has_at_least_three_characterszLStructuralNavigation._paragraphGetter.<locals>.has_at_least_three_characterss+���%�%�c�*��
�-�-�c�2�Q�6�6r/T)r�find_all_paragraphs)r*r�r�r�s    r-�_paragraphGetterz%StructuralNavigation._paragraphGetters��	7��.�.�x��?\�]�]r/c���|�9|j|�\}}|j||�|j|d�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_PARAGRAPHSr�r�rrs       r-�_paragraphPresentationz+StructuralNavigation._paragraphPresentation#�f���?�(,�(>�(>�s�(C�%�V�_��"�"�6�?�;�����Q�'��.�.�D��<�<�E��L�L�'�'��e�4r/c�V��tjg}�fd�}tj||fS)Nc�(���j|�gSr�r�r�s �r-r�z:StructuralNavigation._paragraphDialogData.<locals>.rowData0r�r/)r	�SN_HEADER_PARAGRAPH�SN_TITLE_PARAGRAPHr�s`  r-�_paragraphDialogDataz)StructuralNavigation._paragraphDialogData-r�r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�rr1r3r5)r�RADIO_BUTTON_PREVrr��RADIO_BUTTON_NEXTr��RADIO_BUTTON_LISTr�r�s     r-�_radioButtonBindingsz)StructuralNavigation._radioButtonBindings;rr/c�,�tj|�Sr�)r�find_all_radio_buttonsr�s   r-�_radioButtonGetterz'StructuralNavigation._radioButtonGetterG����1�1�(�;�;r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_RADIO_BUTTONSr�r�rr�s      r-�_radioButtonPresentationz-StructuralNavigation._radioButtonPresentationJ�m���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��1�1�D��<�<�E��L�L�'�'��e�4r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr�r�r�s �r-r�z<StructuralNavigation._radioButtonDialogData.<locals>.rowDataXr�r/)r	�SN_HEADER_RADIO_BUTTONrQr��SN_TITLE_RADIO_BUTTONr�s`  r-�_radioButtonDialogDataz+StructuralNavigation._radioButtonDialogDataTs?���"�9�9�:�
����Y�6�6�7�	>��.�.�
�w�F�Fr/c��i}tj}dtj|g|d<tj}dtj
|g|d<|S)N�sr1r3)r�SEPARATOR_PREVrr��SEPARATOR_NEXTr�)r*rr�r�s    r-�_separatorBindingsz'StructuralNavigation._separatorBindingscsP�����*�*�� #�[�%D�%D�h�O�����*�*����!=�!=�x�H�����r/c�,�tj|�Sr�)r�find_all_separatorsr�s   r-�_separatorGetterz%StructuralNavigation._separatorGetterls���.�.�x�8�8r/c���|�9|j|�\}}|j||�|j|d�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_SEPARATORSr�r�rrs       r-�_separatorPresentationz+StructuralNavigation._separatorPresentationor�r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�tr1r3r5)r�
TABLE_PREVrr��
TABLE_NEXTr��
TABLE_LISTr�r�s     r-�_tableBindingsz#StructuralNavigation._tableBindingsr9r/c�,�tj|�Sr�)r�find_all_tablesr�s   r-�_tableGetterz!StructuralNavigation._tableGetter�s���*�*�8�4�4r/c�4�|��Ytj|�}|r>|jj|jjj|��|jjtj|��tj|dd�}|syd|g}tjtj|d�tj|tj�}|r*d|dg}tjtj|d�ddg|_|j!|d|��|j#|�\}}|j%||�yt&j(}t&j*}|jj||�y)Nrz1STRUCTURAL NAVIGATION: Broken table interface forTzSTRUCTURAL NAVIGATION: Locatedzfor first cell)rs)r�get_captionr�rrqr��&get_table_description_for_presentation�get_cell_atrr�r|r�find_descendantr�
is_table_cellr�rwr`rkr�NO_MORE_TABLESr�)	r*r�r��caption�cellr�rgr�r�s	         r-�_tablePresentationz'StructuralNavigation._tablePresentation�sI���?��)�)�#�.�G�����+�+�D�L�L�,B�,B�,P�,P�QX�,Y�Z��L�L�'�'��(V�(V�WZ�([�\��&�&�s�A�q�1�D��M�s�S���!�!�%�"2�"2�F�D�A��/�/��[�5N�5N�O���>��FV�W�F��%�%�e�&6�&6���E�"#�Q��D������a�#��6�&*�&<�&<�T�&B�#�T�?��"�"�4��9��*�*�D��<�<�E��L�L�'�'��e�4r/c���tjg}|jtj��fd�}tj||fS)Nc����tj|�}|r&�jjj	|�}ntj|�}|tj|�gSr�)rr-r�rqr�rr�r.)r�r3r�r*s   �r-r�z6StructuralNavigation._tableDialogData.<locals>.rowData�sV����)�)�#�.�G���|�|�-�-�;�;�G�D���(�(��-���'�H�H��M�N�Nr/)r	�SN_HEADER_CAPTIONrQ�SN_HEADER_DESCRIPTION�SN_TITLE_TABLEr�s`  r-�_tableDialogDataz%StructuralNavigation._tableDialogData�s@���"�4�4�5�
����Y�<�<�=�	O��'�'���?�?r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�ur1r3r5)r�UNVISITED_LINK_PREVrr��UNVISITED_LINK_NEXTr��UNVISITED_LINK_LISTr�r�s     r-�_unvisitedLinkBindingsz+StructuralNavigation._unvisitedLinkBindings�sr�����/�/�� #�[�%D�%D�h�O�����/�/����!=�!=�x�H�����/�/����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_unvisited_linksr�s   r-�_unvisitedLinkGetterz)StructuralNavigation._unvisitedLinkGetter�r�r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_UNVISITED_LINKSr�r�rr�s      r-�_unvisitedLinkPresentationz/StructuralNavigation._unvisitedLinkPresentation�sm���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��3�3�D��<�<�E��L�L�'�'��e�4r/c���tjg}|jtj��fd�}tj||fS)Nc�P���j|�tj|�gSr��r�r�get_link_urir�s �r-r�z>StructuralNavigation._unvisitedLinkDialogData.<locals>.rowData��"����M�M�#�&��(@�(@��(E�F�Fr/)r	�SN_HEADER_LINKrQ�
SN_HEADER_URI�SN_TITLE_UNVISITED_LINKr�s`  r-�_unvisitedLinkDialogDataz-StructuralNavigation._unvisitedLinkDialogData�s@���"�1�1�2�
����Y�4�4�5�	G��0�0�-��H�Hr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�vr1r3r5)r�VISITED_LINK_PREVrr��VISITED_LINK_NEXTr��VISITED_LINK_LISTr�r�s     r-�_visitedLinkBindingsz)StructuralNavigation._visitedLinkBindings�sr�����-�-�� #�[�%D�%D�h�O�����-�-����!=�!=�x�H�����-�-����!D�!D�h�O�����r/c�,�tj|�Sr�)r�find_all_visited_linksr�s   r-�_visitedLinkGetterz'StructuralNavigation._visitedLinkGetter�rr/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�NO_MORE_VISITED_LINKSr�r�rr�s      r-�_visitedLinkPresentationz-StructuralNavigation._visitedLinkPresentation�rr/c���tjg}|jtj��fd�}tj||fS)Nc�P���j|�tj|�gSr�rJr�s �r-r�z<StructuralNavigation._visitedLinkDialogData.<locals>.rowDatarLr/)r	rMrQrN�SN_TITLE_VISITED_LINKr�s`  r-�_visitedLinkDialogDataz+StructuralNavigation._visitedLinkDialogData�s@���"�1�1�2�
����Y�4�4�5�	G��.�.�
�w�F�Fr/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�kr1r3r5)r�	LINK_PREVrr��	LINK_NEXTr��	LINK_LISTr�r�s     r-�
_linkBindingsz"StructuralNavigation._linkBindingsr�r/c�,�tj|�Sr�)r�find_all_linksr�s   r-�_linkGetterz StructuralNavigation._linkGetters���)�)�(�3�3r/c��|�<|j|�\}}|j||�\}}|j||�ytj}tj
}|jj||�yr�)r`rkrwr�
NO_MORE_LINKSr�r�rr�s      r-�_linkPresentationz&StructuralNavigation._linkPresentationsm���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5��)�)�D��<�<�E��L�L�'�'��e�4r/c����tjg}|jtj�|jtj��fd�}tj
||fS)Nc�p���j|��j|�tj|�gSr�)r�r�rrKr�s �r-r�z5StructuralNavigation._linkDialogData.<locals>.rowData*s3����M�M�#�&��N�N�3�'��,�,�S�1�3�
3r/)r	rMrQr�rN�
SN_TITLE_LINKr�s`  r-�_linkDialogDataz$StructuralNavigation._linkDialogData%sS���"�1�1�2�
����Y�6�6�7����Y�4�4�5�	3�
�&�&�
�w�>�>r/c���i}tj}dtj|g|d<tj}dtj
|g|d<tj}dtj|g|d<|S)N�ar1r3r5)r�CLICKABLE_PREVrr��CLICKABLE_NEXTr��CLICKABLE_LISTr�r�s     r-�_clickableBindingsz'StructuralNavigation._clickableBindings7r�r/c�b�tjdgtjj��S)N�action)�
interfaces�interface_match_type)rrr�CollectionMatchType�ANYrs  r-�_clickableCriteriaz'StructuralNavigation._clickableCriteriaCs+���-�-� �z�!&�!:�!:�!>�!>�@�	@r/c�L�|jjj|�Sr�)r�rq�isClickableElement�r*r�r�s   r-�_clickablePredicatez(StructuralNavigation._clickablePredicateHs���|�|�%�%�8�8��=�=r/c��|�<|j|�\}}|j||�\}}|j||�y|s=tj}tj
}|jj||�yyr�)r`rkrwr�NO_MORE_CLICKABLESr�r�rr�s      r-�_clickablePresentationz+StructuralNavigation._clickablePresentationKsu���?�%)�%;�%;�C�%@�"�S�/�#'�#9�#9�#��#O� �C������_�5���.�.�D��<�<�E��L�L�'�'��e�4�r/c���tjg}|jtj��fd�}tj||fS)Nc�H���j|��j|�gSr�rr�s �r-r�z:StructuralNavigation._clickableDialogData.<locals>.rowDataYrr/)r	�SN_HEADER_CLICKABLErQr�SN_TITLE_CLICKABLEr�s`  r-�_clickableDialogDataz)StructuralNavigation._clickableDialogDataUs@���"�6�6�7�
����Y�5�5�6�	@��+�+�]�G�C�Cr/c��i}tj}dtj|g|d<tj}dtj
|g|d<|S)N�commarFrH)r�CONTAINER_STARTrr��
CONTAINER_ENDr�)r*rr�s   r-�_containerBindingsz'StructuralNavigation._containerBindingsdsO�����'�'��$�k�&E�&E�t�L�����%�%��"�K�$@�$@�$�G�����r/c�B�tj|j��Sr)rrrQrs  r-�_containerCriteriaz'StructuralNavigation._containerCriterians���-�-�D�4H�4H�I�Ir/c�$�|j|�Sr�)rXr�s   r-�_containerPredicatez(StructuralNavigation._containerPredicateqs��� � ��%�%r/c�N�|�*|jjtj�y|j	d�r)|jjtj
�|}|�|j
|�\}}|j||�\}}|j||�y)Nr$)	r�rr�CONTAINER_NOT_IN_ArKr�r`rkrq)r*r�r��kwargsrgs     r-�_containerPresentationz+StructuralNavigation._containerPresentationts����;��L�L�'�'��(C�(C�D���:�:�o�&��L�L�'�'��(>�(>�?����"�#'�#9�#9�#�#>� �C��#�5�5�c�?�K���_����#��/r/)Fr�)FT)rC)T)NN)�r�r�r�r��
BLOCKQUOTE�BUTTON�	CHECK_BOX�CHUNK�	CLICKABLE�	COMBO_BOXr��ENTRY�
FORM_FIELD�HEADING�IMAGE�IFRAME�LANDMARK�LINK�LIST�	LIST_ITEMr��	PARAGRAPH�RADIO_BUTTON�	SEPARATOR�TABLE�UNVISITED_LINK�VISITED_LINKrrR�MATH�STATIC�
COLUMN_HEADER�
ROW_HEADER�
TABLE_CELL�	TABLE_ROW�TEXTrS�ARTICLE�DESCRIPTION_TERM�DESCRIPTION_VALUE�DOCUMENT_EMAIL�DOCUMENT_FRAME�DOCUMENT_PRESENTATION�DOCUMENT_SPREADSHEET�
DOCUMENT_TEXT�DOCUMENT_WEBr�BLOCK_QUOTE�DESCRIPTION_LIST�FORM�FOOTER�HEADER�LOG�MARQUEE�PANEL�TREE�
TREE_TABLErQr.r�r�r�r�r�r�r�rrr�r
ryr�rhrNrXr%r]r`rkrqrwrmr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr$r'r*r2r8rArDrJrPrWr\rarrrgrxr|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�r�r�rr
r
rrrrr"r(r+r5r;rArDrGrPrVrYr\r`rfrirlrprvr}r�r�r�r�r�r�r�r�r/r-r�r��s����,#�J��F� �I��E�!�I� �I�!�I��E�!�J��G��E��F� �H��D��D� �I�"�K�!�I�#�L�!�I��E�%�N�#�L�
�J�J�&�&��J�J�(�(��J�J�O�O��J�J�(�(��J�J�%�%��J�J�,�,��J�J�)�)��J�J�)�)��J�J�(�(��J�J�O�O��J�J�&�&��J�J�&�&��J�J�/�/��J�J�0�0��J�J�-�-��J�J�-�-��J�J�4�4��J�J�3�3��J�J�,�,��J�J�+�+�'-�L�*�z�z�-�-��z�z�2�2��z�z����z�z�(�(��z�z�(�(��z�z�*�*��z�z�~�~��z�z����z�z�)�)��z�z�'�'��z�z�)�)��z�z�'�'��z�z����z�z�,�,�
.�O�,$�\#�)V�V
B��8�0
�:�@� N�"�$
U�*.�`D�BT6�x
�
=�>�
�
A�$�6"�"Z�"�F�
	6��,��89�`
�;�5�E�
�6�5�A�
�:�5�D�
�^�
�5�G�
�:�5�D�
�\�5�@�
�]�
5�
E�$#�J�7�
5�-�2
�>�5�	A�"
�D�5�@�
�8�	5�C�
��
	5�?�
��
0�.D�
�;�5� 
�
^�5�D�
�<�5�G��9�5� 
�5�5�0@�(�>�5�I��<�5�G�
�4�5�
?�$
�@�
>�5�D��J�&�
0r/r�))r��__id__�__version__�__date__�
__copyright__�__license__�gi�require_version�
gi.repositoryrrCrrrr	r
rrr
rrrr�
ax_collectionr�ax_event_synthesizerr�ax_hypertextr�	ax_objectr�ax_selectionr�ax_tabler�ax_textr�ax_utilitiesrrr�r�r/r-�<module>r�s���*(�	������8�
���	�����7�E�"��������������'�4�%��%���%�G$�G$�^
u0�u0r/

Zerion Mini Shell 1.0