+
    Qi$ c                  s   R t ^ RIHt RtRtRtRtRt^ RIH	t	 ^ RI
HtHt ^ R	It]P                  ! R
R4       ^ RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RI!H"t" ^RI#H$t$ ^RI%H&t& ^RI'H(t( ^RI)H*t*H+t+ ]'       d   ^R I,H-t-  ! R! R"]	4      t. ! R# R$4      t/]/! 4       t0R% R& lt1R	# )'z!Implements structural navigation.)annotationsz$Id$z
$Revision$z$Date$zQCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2011-2025 Igalia, S.L.ZLGPL)Enum)CallableTYPE_CHECKINGNAtspiz2.0)r   )cmdnames)dbus_service)debug)focus_manager)	guilabels)input_event_manager)keybindings)messages)object_properties)orca_gui_navlist)say_all_presenter)script_manager)settings_manager)AXHypertext)AXObject)AXTable)AXText)AXUtilities)
InputEventInputEventHandler)defaultc                  s&    ] tR t^ItRtRtRtRtRtR# )NavigationModez5Represents the structural navigation modes available.OFFDOCUMENTGUI N)	__name__
__module____qualname____firstlineno____doc__r   r   r   __static_attributes__r       >/usr/lib/python3.14/site-packages/orca/structural_navigator.pyr   r   I   s    ?
CH
Cr%   r   c                  s@   ] tR t^PtRtR R ltERR R lltR R ltER R	 R
 lltR R lt	R t
R R ltR R ltR R ltR R ltER!R R lltER!R R lltER!R R llt]P&                  R R l4       t]P*                  R R l4       t]P&                  R  R! l4       t]P*                  R" R# l4       t]P&                  R$ R% l4       t]P*                  R& R' l4       t]P&                  R( R) l4       t]P*                  R* R+ l4       t]P:                  ER"R- R. ll4       tER!R/ ltER"R0 R1 llt R2 R3 lt!R4 R5 lt"ER#R6 R7 llt#R,]$PJ                  R,R3R8 R9 llt&ER$R: R; llt'R< R= lt(ER$R> R? llt)R@ RA lt*]P:                  ER"RB RC ll4       t+]P:                  ER"RD RE ll4       t,]P:                  ER"RF RG ll4       t-RH RI lt.]P:                  ER"RJ RK ll4       t/]P:                  ER"RL RM ll4       t0]P:                  ER"RN RO ll4       t1RP RQ lt2]P:                  ER"RR RS ll4       t3]P:                  ER"RT RU ll4       t4]P:                  ER"RV RW ll4       t5RX RY lt6]P:                  ER"RZ R[ ll4       t7]P:                  ER"R\ R] ll4       t8]P:                  ER"R^ R_ ll4       t9R` Ra lt:]P:                  ER"Rb Rc ll4       t;]P:                  ER"Rd Re ll4       t<]P:                  ER"Rf Rg ll4       t=Rh Ri lt>]P:                  ER"Rj Rk ll4       t?]P:                  ER"Rl Rm ll4       t@]P:                  ER"Rn Ro ll4       tARp Rq ltB]P:                  ER"Rr Rs ll4       tC]P:                  ER"Rt Ru ll4       tD]P:                  ER"Rv Rw ll4       tEER%Rx Ry lltF]P:                  ER"Rz R{ ll4       tG]P:                  ER"R| R} ll4       tH]P:                  ER"R~ R ll4       tI]P:                  ER"R R ll4       tJ]P:                  ER"R R ll4       tK]P:                  ER"R R ll4       tL]P:                  ER"R R ll4       tM]P:                  ER"R R ll4       tN]P:                  ER"R R ll4       tO]P:                  ER"R R ll4       tP]P:                  ER"R R ll4       tQ]P:                  ER"R R ll4       tR]P:                  ER"R R ll4       tS]P:                  ER"R R ll4       tT]P:                  ER"R R ll4       tU]P:                  ER"R R ll4       tV]P:                  ER"R R ll4       tW]P:                  ER"R R ll4       tX]P:                  ER"R R ll4       tY]P:                  ER"R R ll4       tZ]P:                  ER"R R ll4       t[R R lt\]P:                  ER"R R ll4       t]]P:                  ER"R R ll4       t^]P:                  ER"R R ll4       t_R R lt`]P:                  ER"R R ll4       ta]P:                  ER"R R ll4       tb]P:                  ER"R R ll4       tcR R ltdR R lte]P:                  ER"R R ll4       tf]P:                  ER"R R ll4       tg]P:                  ER"R R ll4       thR R ltiR R ltj]P:                  ER"R R ll4       tk]P:                  ER"R R ll4       tl]P:                  ER"R R ll4       tmR R ltn]P:                  ER"R R ll4       to]P:                  ER"R R ll4       tp]P:                  ER"R R ll4       tqR R ltr]P:                  ER"R R ll4       ts]P:                  ER"R R ll4       ttER"R R lltuR R ltv]P:                  ER"R R ll4       tw]P:                  ER"R R ll4       tx]P:                  ER"R R ll4       tyR R ltz]P:                  ER"R R ll4       t{]P:                  ER"R R ll4       t|]P:                  ER"R R ll4       t}R R lt~]P:                  ER"R R ll4       t]P:                  ER"R R ll4       tR R ltR R lt]P:                  ER"R R ll4       t]P:                  ER"R R ll4       t]P:                  ER"R R ll4       tR R lt]P:                  ER"R R ll4       t]P:                  ER"R R ll4       t]P:                  ER"R R ll4       tER  ER lt]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       tER ER	 lt]P:                  ER"ER
 ER ll4       t]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       tER ER lt]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       tER ER lt]P:                  ER"ER ER ll4       t]P:                  ER"ER ER ll4       tERtR,# (&  StructuralNavigatorzBImplements the structural navigation support available to scripts.c                   V ^8  d   QhRR/#    returnNoner   Zformat   "r&   __annotate__ StructuralNavigator.__annotate__S   s     J J$ Jr%   c                	s<   R V n         RV n        V P                  R4      V n        \        P
                  ! 4       V n        / V n        / V n        Rp\        P                  ! \        P                  VR4       \        P                  ! 4       pVP                  RV 4       R # )NFTz1STRUCTURAL NAVIGATOR: Registering D-Bus commands.r'   )_last_input_event
_suspendedget_handlers	_handlersr   KeyBindings	_bindings_mode_for_script_previous_mode_for_scriptr   print_message
LEVEL_INFOr   Zget_remote_controllerZregister_decorated_module)selfmsgZ
controllers   &  r&   __init__ZStructuralNavigator.__init__S   s    48 !&#0062=2I2I2KFHOQ&AE,,c48!779
,,-BDIr%   c                    V ^8  d   QhRRRR/# )r*   refreshboolr+   zdict[str, InputEventHandler]r   r-   r.   r&   r/   r0   c   s      D 5Q r%   c                s    V'       d:   Rp\         P                  ! \         P                  VRR4       V P                  4        V P                  # )z7Returns the structural navigation input event handlers.z*STRUCTURAL NAVIGATOR: Refreshing handlers.T)r   r9   r:   _setup_handlersr4   )r;   r?   r<      && r&   r3   Z StructuralNavigator.get_handlersc   s<     >C 0 0#tTB  "~~r%   c               r(   r)   r   r-   r.   r&   r/   r0   m   s     s9 s9 s9r%   c                s   / V n         \        V P                  \        P                  V P
                  '       * R7      V P                   R&   V P                  4       ;'       d    V P
                  '       * p\        V P                  \        P                  VR7      V P                   R&   \        V P                  \        P                  VR7      V P                   R&   \        V P                  \        P                  VR7      V P                   R&   \        V P                  \        P                  VR7      V P                   R&   \        V P                  \        P                   VR7      V P                   R&   \        V P"                  \        P$                  VR7      V P                   R&   \        V P&                  \        P(                  VR7      V P                   R	&   \        V P*                  \        P,                  VR7      V P                   R
&   \        V P.                  \        P0                  VR7      V P                   R&   \        V P2                  \        P4                  VR7      V P                   R&   \        V P6                  \        P8                  VR7      V P                   R&   \        V P:                  \        P<                  VR7      V P                   R&   \        V P>                  \        P@                  VR7      V P                   R&   \        V PB                  \        PD                  VR7      V P                   R&   \        V PF                  \        PH                  VR7      V P                   R&   \        V PJ                  \        PL                  VR7      V P                   R&   \        V PN                  \        PP                  VR7      V P                   R&   \        V PR                  \        PT                  VR7      V P                   R&   \        V PV                  \        PX                  VR7      V P                   R&   \        V PZ                  \        P\                  VR7      V P                   R&   \        V P^                  \        P`                  VR7      V P                   R&   \c        ^^4       F  p\        \e        V RV 24      \        Pf                  V,          VR7      V P                   RV 2&   \        \e        V RV 24      \        Ph                  V,          VR7      V P                   RV 2&   \        \e        V RV 24      \        Pj                  V,          VR7      V P                   RV 2&   K  	  \        V Pl                  \        Pn                  VR7      V P                   R&   \        V Pp                  \        Pr                  VR7      V P                   R&   \        V Pt                  \        Pv                  VR7      V P                   R&   \        V Px                  \        Pz                  VR7      V P                   R&   \        V P|                  \        P~                  VR7      V P                   R&   \        V P                  \        P                  VR7      V P                   R &   \        V P                  \        P                  VR7      V P                   R!&   \        V P                  \        P                  VR7      V P                   R"&   \        V P                  \        P                  VR7      V P                   R#&   \        V P                  \        P                  VR7      V P                   R$&   \        V P                  \        P                  VR7      V P                   R%&   \        V P                  \        P                  VR7      V P                   R&&   \        V P                  \        P                  VR7      V P                   R'&   \        V P                  \        P                  VR7      V P                   R(&   \        V P                  \        P                  VR7      V P                   R)&   \        V P                  \        P                  VR7      V P                   R*&   \        V P                  \        P                  VR7      V P                   R+&   \        V P                  \        P                  VR7      V P                   R,&   \        V P                  \        P                  VR7      V P                   R-&   \        V P                  \        P                  VR7      V P                   R.&   \        V P                  \        P                  VR7      V P                   R/&   \        V P                  \        P                  VR7      V P                   R0&   \        V P                  \        P                  VR7      V P                   R1&   \        V P                  \        P                  VR7      V P                   R2&   \        V P                  \        P                  VR7      V P                   R3&   \        V P                  \        P                  VR7      V P                   R4&   \        V P                  \        P                  VR7      V P                   R5&   \        V P                  \        P                  VR7      V P                   R6&   \        V P                  \        P                  VR7      V P                   R7&   \        V P                  \        P                  VR7      V P                   R8&   \        V P                  \        P                  VR7      V P                   R9&   \        V P                  \        P                  VR7      V P                   R:&   \        V P                  \        P                  VR7      V P                   R;&   \        V P                  \        P                  VR7      V P                   R<&   \        V P                  \        P                  VR7      V P                   R=&   \        V P                  \        P                  VR7      V P                   R>&   \        V P                  \        P                  VR7      V P                   R?&   \        V EP                   \        EP                  VR7      V P                   R@&   \        V EP                  \        EP                  VR7      V P                   RA&   \        V EP                  \        EP
                  VR7      V P                   RB&   \        V EP                  \        EP                  VR7      V P                   RC&   \        V EP                  \        EP                  VR7      V P                   RD&   \        V EP                  \        EP                  VR7      V P                   RE&   \        V EP                  \        EP                  VR7      V P                   RF&   \        V EP                  \        EP                  VR7      V P                   RG&   \        V EP                   \        EP"                  VR7      V P                   RH&   RIV P
                   2pE\$        EP&                  ! E\$        EP(                  VRJ4       RK# )Lz7Sets up the structural navigation input event handlers.)enabledstructural_navigator_mode_cycleprevious_blockquotenext_blockquotelist_blockquotesprevious_buttonnext_buttonlist_buttonsprevious_checkboxnext_checkboxlist_checkboxesprevious_comboboxnext_comboboxlist_comboboxesprevious_entry
next_entrylist_entriesprevious_form_fieldnext_form_fieldlist_form_fieldsprevious_headingnext_headinglist_headingsprevious_heading_level_next_heading_level_list_headings_level_previous_iframenext_iframelist_iframesprevious_image
next_imagelist_imagesprevious_landmarknext_landmarklist_landmarksprevious_list	next_list
list_listsprevious_list_itemnext_list_itemlist_list_itemsprevious_live_regionnext_live_regionlast_live_regionprevious_paragraphnext_paragraphlist_paragraphsprevious_radio_buttonnext_radio_buttonlist_radio_buttonsprevious_separatornext_separatorprevious_table
next_tablelist_tablesprevious_link	next_link
list_linksprevious_unvisited_linknext_unvisited_linklist_unvisited_linksprevious_visited_linknext_visited_linklist_visited_linksprevious_large_objectnext_large_objectlist_large_objectsprevious_clickablenext_clickablelist_clickablescontainer_startcontainer_endz2STRUCTURAL NAVIGATOR: Handlers set up. Suspended: TN)r4   r   
cycle_moder   Z STRUCTURAL_NAVIGATION_MODE_CYCLEr2   get_is_enabledrE   ZBLOCKQUOTE_PREVrF   ZBLOCKQUOTE_NEXTrG   ZBLOCKQUOTE_LISTrH   ZBUTTON_PREVrI   ZBUTTON_NEXTrJ   ZBUTTON_LISTrK   ZCHECK_BOX_PREVrL   ZCHECK_BOX_NEXTrM   ZCHECK_BOX_LISTrN   ZCOMBO_BOX_PREVrO   ZCOMBO_BOX_NEXTrP   ZCOMBO_BOX_LISTrQ   Z
ENTRY_PREVrR   Z
ENTRY_NEXTrS   Z
ENTRY_LISTrT   ZFORM_FIELD_PREVrU   ZFORM_FIELD_NEXTrV   ZFORM_FIELD_LISTrW   ZHEADING_PREVrX   ZHEADING_NEXTrY   ZHEADING_LISTrangeZgetattrZHEADING_AT_LEVEL_PREVZHEADING_AT_LEVEL_NEXTZHEADING_AT_LEVEL_LISTr]   ZIFRAME_PREVr^   ZIFRAME_NEXTr_   ZIFRAME_LISTr`   Z
IMAGE_PREVra   Z
IMAGE_NEXTrb   Z
IMAGE_LISTrc   ZLANDMARK_PREVrd   ZLANDMARK_NEXTre   ZLANDMARK_LISTrf   Z	LIST_PREVrg   Z	LIST_NEXTrh   Z	LIST_LISTri   ZLIST_ITEM_PREVrj   ZLIST_ITEM_NEXTrk   ZLIST_ITEM_LISTrl   ZLIVE_REGION_PREVrm   ZLIVE_REGION_NEXT_last_live_regionZLIVE_REGION_LASTro   ZPARAGRAPH_PREVrp   ZPARAGRAPH_NEXTrq   ZPARAGRAPH_LISTrr   ZRADIO_BUTTON_PREVrs   ZRADIO_BUTTON_NEXTrt   ZRADIO_BUTTON_LISTru   ZSEPARATOR_PREVrv   ZSEPARATOR_NEXTrw   Z
TABLE_PREVrx   Z
TABLE_NEXTry   Z
TABLE_LISTrz   Z	LINK_PREVr{   Z	LINK_NEXTr|   Z	LINK_LISTr}   ZUNVISITED_LINK_PREVr~   ZUNVISITED_LINK_NEXTr   ZUNVISITED_LINK_LISTr   ZVISITED_LINK_PREVr   ZVISITED_LINK_NEXTr   ZVISITED_LINK_LISTr   ZLARGE_OBJECT_PREVr   ZLARGE_OBJECT_NEXTr   ZLARGE_OBJECT_LISTr   ZCLICKABLE_PREVr   ZCLICKABLE_NEXTr   ZCLICKABLE_LISTr   ZCONTAINER_STARTr   ZCONTAINER_ENDr   r9   r:   r;   rC   ir<      &   r&   rA   Z#StructuralNavigator._setup_handlersm   s     99"oo-/ 	89 %%'??,?0A$$h&>&>1Q,-,=$$h&>&>-Q()->%%x'?'?.R)* ->  ("6"6-I()(9h22G)E}%):x33W*F~& /@""H$;$;W/N*+*; 7 7+J',=  ("9"97-L() /@""H$;$;W/N*+*; 7 7+J',=  ("9"97-L() ,=!4!4g,G'('8OOX00'(C|$):x22G*E~& 1B$$h&>&>1Q,-,=  (":":G-M()->!!8#;#;W.N)* .?!!8#8#8'.K)*):x44g*G~&*; 5 5w+H'q!A<M 7s;<..2G=EDNN4QC89 9J 3A378..2G9EDNN045 :K 4QC89..2G:EDNN1!56  ->  ("6"6-I()(9h22G)E}%):x33W*F~& ,=!4!4g,G'('8OOX00'(C|$(9h117)D}% /@""H$:$:G/M*+*; 6 6+I'+<!7!7,J'( +< 2 2G+E'&7NNH..'A{#'8OOX//(B|$ 0A##X%<%<g0O+,+<!8!8',K'(,=  ("9"97-L() 2C%%x'@'@'2S-.->!!8#<#<g.O)*->""H$=$=w.P)* 0A##X%<%<g0O+,+<!8!8',K'(,=  ("9"97-L() 3D&&(B(BG3U./.?""H$>$>/Q*+/@##X%?%?0R+, 0A##X%<%<g0O+,+<!8!8',K'( ,=!4!4g,G'('8OOX00'(C|$(9h117)D}% +< 2 2G+E'&7NNH..'A{#'8OOX//(B|$4E(((*F*FPW5Y010A$$h&B&BG1U,-1B%%x'C'CW2V-.2C&&(B(BG3U./.?""H$>$>/Q*+/@##X%?%?0R+, 3D&&(B(BG3U./.?""H$>$>/Q*+/@##X%?%?0R+, 0A##X%<%<g0O+,+<!8!8',K'(,=  ("9"97-L() ->  (":":G-M()*; 6 6+I' C4??BSTE,,c48r%   Tc               s$    V ^8  d   QhRRRRRR/# )r*   r?   r@   
is_desktopr+   zkeybindings.KeyBindingsr   r-   r.   r&   r/   r0   "  s$      15	 r%   c                sN   V'       dc   RV 2p\         P                  ! \         P                  VR4       V P                  P	                  R4       V P                  4        V P                  # V P                  P                  4       '       d   V P                  4        V P                  # )z.Returns the structural navigation keybindings.z7STRUCTURAL NAVIGATOR: Refreshing bindings. Is desktop: Tz*STRUCTURAL NAVIGATOR: Refreshing bindings.)r   r9   r:   r6   Zremove_key_grabs_setup_bindingsZis_empty)r;   r?   r   r<   s   &&& r&   get_bindingsZ StructuralNavigator.get_bindings"  s    
 KJ<XC 0 0#t<NN++,XY  " ~~ ^^$$&&  "~~r%   c               r(   r)   r   r-   r.   r&   r/   r0   1  s     L
9 L
9 L
9r%   c                s7   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V P                  '       * 4      4       V P                  4       ;'       d    V P                  '       * pV P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R	,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R
,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^V4      4       \        ^^4       EFK  pV P                  P                  \         P                  ! \        V4      \         P
                  \         P                  V P                  RV 2,          ^V4      4       V P                  P                  \         P                  ! \        V4      \         P
                  \         P                  V P                  R V 2,          ^V4      4       V P                  P                  \         P                  ! \        V4      \         P
                  \         P                  V P                  R!V 2,          ^V4      4       EKN  	  V P                  P                  \         P                  ! R"\         P
                  \         P                  V P                  R#,          ^V4      4       V P                  P                  \         P                  ! R"\         P
                  \         P                  V P                  R$,          ^V4      4       V P                  P                  \         P                  ! R"\         P
                  \         P                  V P                  R%,          ^V4      4       V P                  P                  \         P                  ! R&\         P
                  \         P                  V P                  R',          ^V4      4       V P                  P                  \         P                  ! R&\         P
                  \         P                  V P                  R(,          ^V4      4       V P                  P                  \         P                  ! R&\         P
                  \         P                  V P                  R),          ^V4      4       V P                  P                  \         P                  ! R*\         P
                  \         P                  V P                  R+,          ^V4      4       V P                  P                  \         P                  ! R*\         P
                  \         P                  V P                  R,,          ^V4      4       V P                  P                  \         P                  ! R*\         P
                  \         P                  V P                  R-,          ^V4      4       V P                  P                  \         P                  ! R.\         P
                  \         P                  V P                  R/,          ^V4      4       V P                  P                  \         P                  ! R.\         P
                  \         P                  V P                  R0,          ^V4      4       V P                  P                  \         P                  ! R.\         P
                  \         P                  V P                  R1,          ^V4      4       V P                  P                  \         P                  ! R2\         P
                  \         P                  V P                  R3,          ^V4      4       V P                  P                  \         P                  ! R2\         P
                  \         P                  V P                  R4,          ^V4      4       V P                  P                  \         P                  ! R2\         P
                  \         P                  V P                  R5,          ^V4      4       V P                  P                  \         P                  ! R6\         P
                  \         P                  V P                  R7,          ^V4      4       V P                  P                  \         P                  ! R6\         P
                  \         P                  V P                  R8,          ^V4      4       V P                  P                  \         P                  ! R9\         P
                  \         P                  V P                  R:,          ^V4      4       V P                  P                  \         P                  ! R;\         P
                  \         P                  V P                  R<,          ^V4      4       V P                  P                  \         P                  ! R;\         P
                  \         P                  V P                  R=,          ^V4      4       V P                  P                  \         P                  ! R;\         P
                  \         P                  V P                  R>,          ^V4      4       V P                  P                  \         P                  ! R?\         P
                  \         P                  V P                  R@,          ^V4      4       V P                  P                  \         P                  ! R?\         P
                  \         P                  V P                  RA,          ^V4      4       V P                  P                  \         P                  ! R?\         P
                  \         P                  V P                  RB,          ^V4      4       V P                  P                  \         P                  ! RC\         P
                  \         P                  V P                  RD,          ^V4      4       V P                  P                  \         P                  ! RC\         P
                  \         P                  V P                  RE,          ^V4      4       V P                  P                  \         P                  ! RF\         P
                  \         P                  V P                  RG,          ^V4      4       V P                  P                  \         P                  ! RF\         P
                  \         P                  V P                  RH,          ^V4      4       V P                  P                  \         P                  ! RF\         P
                  \         P                  V P                  RI,          ^V4      4       V P                  P                  \         P                  ! RJ\         P
                  \         P                  V P                  RK,          ^V4      4       V P                  P                  \         P                  ! RJ\         P
                  \         P                  V P                  RL,          ^V4      4       V P                  P                  \         P                  ! RJ\         P
                  \         P                  V P                  RM,          ^V4      4       V P                  P                  \         P                  ! RN\         P
                  \         P                  V P                  RO,          ^V4      4       V P                  P                  \         P                  ! RN\         P
                  \         P                  V P                  RP,          ^V4      4       V P                  P                  \         P                  ! RN\         P
                  \         P                  V P                  RQ,          ^V4      4       V P                  P                  \         P                  ! RR\         P
                  \         P                  V P                  RS,          ^V4      4       V P                  P                  \         P                  ! RR\         P
                  \         P                  V P                  RT,          ^V4      4       V P                  P                  \         P                  ! RR\         P
                  \         P                  V P                  RU,          ^V4      4       V P                  P                  \         P                  ! RV\         P
                  \         P                  V P                  RW,          ^V4      4       V P                  P                  \         P                  ! RV\         P
                  \         P                  V P                  RX,          ^V4      4       V P                  P                  \         P                  ! RV\         P
                  \         P                  V P                  RY,          ^V4      4       V P                  P                  \         P                  ! RZ\         P
                  \         P                  V P                  R[,          ^V4      4       V P                  P                  \         P                  ! RZ\         P
                  \         P                  V P                  R\,          ^V4      4       V P                  P                  \         P                  ! RZ\         P
                  \         P                  V P                  R],          ^V4      4       V P                  P                  \         P                  ! R^\         P
                  \         P                  V P                  R_,          ^V4      4       V P                  P                  \         P                  ! R^\         P
                  \         P                  V P                  R`,          ^V4      4       \        P                   ! 4       P#                  V P                  V P                  Ra4      V n        RbV P                   2p\$        P&                  ! \$        P(                  VRc4       Rd# )ez.Sets up the structural navigation keybindings.ZzrD   ZqrE   rF   rG   ZbrH   rI   rJ   xrK   rL   rM   ZcrN   rO   rP   ZerQ   rR   rS   ZfrT   rU   rV   ZhrW   rX   rY   rZ   r[   r\    r]   r^   r_   Zgr`   ra   rb   Zmrc   rd   re   Zlrf   rg   rh   r   ri   rj   rk   Zdrl   rm   Zyrn   Zpro   rp   rq   Zrrr   rs   rt   Zsru   rv   Ztrw   rx   ry   Zkrz   r{   r|   Zur}   r~   r   Zvr   r   r   Zor   r   r   Zar   r   r   Zcommar   r   Fz2STRUCTURAL NAVIGATOR: Bindings set up. Suspended: TN)r   r5   r6   addZ
KeyBindingZDEFAULT_MODIFIER_MASKZORCA_MODIFIER_MASKr4   r2   r   ZSHIFT_MODIFIER_MASKZNO_MODIFIER_MASKZSHIFT_ALT_MODIFIER_MASKr   strr   get_managerZoverride_key_bindingsr   r9   r:   r   r   r&   r   Z#StructuralNavigator._setup_bindings1  s/    %002""11..@AOO#%	& %%'??,?""11//45	 	""11,,01	 	""113312	 	""11//01	 	""11,,}-	 	""1133~.	 	""11//23	 	""11,,/	 	""113301	 	""11//23	 	""11,,/	 	""113301	 	""11///0	 	""11,,|,	 	""1133~.	 	""11//45	 	""11,,01	 	""113312	 	""11//12	 	""11,,~.	 	""1133/	 q!ANN&&F5533NN%<QC#@A NN&&F5500NN%8#<= NN&&F5577NN%9!#=>' 8 	""11//01	 	""11,,}-	 	""1133~.	 	""11///0	 	""11,,|,	 	""1133}-	 	""11//23	 	""11,,/	 	""1133/0	 	""11///	 	""11,,{+	 	""1133|,	 	""11//34	 	""11,,/0	 	""113301	 	""11//56	 	""11,,12	 	""11,,12	 	""11//34	 	""11,,/0	 	""113301	 	""11//67	 	""11,,23	 	""113334	 	""11//34	 	""11,,/0	 	""11///0	 	""11,,|,	 	""1133}-	 	""11///	 	""11,,{+	 	""1133|,	 	""11//89	 	""11,,45	 	""113356	 	""11//67	 	""11,,23	 	""113334	 	""11//67	 	""11,,23	 	""113334	 	""11//34	 	""11,,/0	 	""113301	 	""11//01	 	""11,,/	 *557MMNNDNNE3 C4??BSTE,,c48r%   c                	s    \         P                  ! 4       P                  4       pW!8X  d   R # RVRV.p\        P                  ! \        P
                  VR 4       R# )TSTRUCTURAL NAVIGATOR:zis not the active scriptF)r   r   get_active_scriptr   print_tokensr:   )r;   scriptZactive_scripttokens   &&  r&   _is_active_scriptZ%StructuralNavigator._is_active_script  sL    &224FFH")63M}]5++VT:r%   c               r>   )r*   r   default.Scriptr+   r   r   r-   r.   r&   r/   r0     s      ~ . r%   c                s    V P                   P                  V\        P                  4      pRVRV 2.p\        P
                  ! \        P                  VR4       V# )zEReturns the current structural-navigator mode associated with script.zSTRUCTURAL NAVIGATOR: Mode forzis T)r7   getr   r   r   r   r:   )r;   r   moder   r   r&   get_modeZStructuralNavigator.get_mode  sQ     $$((1C1CD2Fc$LI5++VT:r%   c               $    V ^8  d   QhRRRRRR/# )r*   r   r   r   r   r+   r,   r   r-   r.   r&   r/   r0     s&     U U~ U^ U Ur%   c                sT   RVRV 2.p\         P                  ! \         P                  VR4       W P                  V&   V'       d   V P	                  V4      '       g   R# V\
        P                  8g  p\        P                  ! 4       P                  RV4       V P                  VR4       R# )z#Sets the structural-navigator mode.z&STRUCTURAL NAVIGATOR: Setting mode forzto TNstructuralNavigationEnabledz!Setting structural navigator mode)r   r   r:   r7   r   r   r   r   r   set_settingrefresh_bindings_and_grabs)r;   r   r   r   rC      &&&  r&   set_modeZStructuralNavigator.set_mode  s     ;Fc$LQ5++VT:(,f%411&99.,,,$$&223PRYZ''0STr%   c               r(   r*   r+   r@   r   r-   r.   r&   r/   r0     s       r%   c                s8   V P                   f   R# \        P                  ! 4       pVP                  V P                   4      pV P                   e   V P                   P	                  4       pMRpRV RV 2p\
        P                  ! \
        P                  VR4       V# )z>Returns true if the last input event was a navigation command.Fr,   z-STRUCTURAL NAVIGATOR: Last navigation event (z) is last input event: T)r1   r
   r   Z)last_event_equals_or_is_release_for_eventZas_single_line_stringr   r9   r:   )r;   managerresultZstringr<   s   &    r&   'last_input_event_was_navigation_commandZ;StructuralNavigator.last_input_event_was_navigation_command  s     !!)%113BB4CYCYZ!!-++AACFF <F8 D$$*8- 	 	E,,c48r%   c               r(   r   r   r-   r.   r&   r/   r0     s     2 2$ 2r%   c                s\    V P                  4       '       g   R# V P                  4       '       * # )zUReturns True if the last command was navigation but the setting disallows focus mode.F)r   get_triggers_focus_moder;      &r&    last_command_prevents_focus_modeZ4StructuralNavigator.last_command_prevents_focus_mode  s(     ;;==//111r%   c               r   r*   r   r   reasonr   r+   r,   r   r-   r.   r&   r/   r0     s!     ? ?> ?3 ? ?r%   c                s   RV.pV'       d   VP                  RV 24       \        P                  ! \        P                  VR4       V'       d   V P	                  V4      '       g   R# \        P                  \        P
                  8  dS   VP                  P                  4       pRVR\        V4       R2.p\        P                  ! \        P                  VR4       V P                  R4      V n
        V P                  R4      V n        V P                  P                   F.  pVP                  P                  WPP                  '       * R7       K0  	  \        P                  \        P
                  8  dU   VP                  P                  4       pRVR	\        V4       R
2.p\        P                  ! \        P                  VR4       R# R# )z/Adds structural navigation bindings for script.z)STRUCTURAL NAVIGATOR: Adding bindings for: TNr   had z$ key grabs prior to adding bindings.Zinclude_grabsnow has  key grabs.)appendr   r   r:   r   
debugLevelkey_bindings%get_bindings_with_grabs_for_debugginglenr3   r4   r   r6   r   r2   r;   r   r   r   Z	has_grabsZbinding   &&&   r&   add_bindingsZ StructuralNavigator.add_bindings  sh    >vFMMBvh-(5++VT:411&99u///++QQSI-vS^,,PQSFu//>**40**40~~22G##G;N#O 3 u///++QQSI-v#i.AQQ\7]^Fu//> 0r%   c               r   r   r   r-   r.   r&   r/   r0     s!     ? ?n ?c ?4 ?r%   c                s    RV.pV'       d   VP                  RV 24       \        P                  ! \        P                  VR4       V'       d   V P	                  V4      '       g   R# \        P                  \        P
                  8  dS   VP                  P                  4       pRVR\        V4       R2.p\        P                  ! \        P                  VR4       V P                  P                   F   pVP                  P                  VRR7       K"  	  \        P                  \        P
                  8  dU   VP                  P                  4       pRVR	\        V4       R
2.p\        P                  ! \        P                  VR4       R# R# )z2Removes structural navigation bindings for script.z+STRUCTURAL NAVIGATOR: Removing bindings forr   TNr   r   z& key grabs prior to removing bindings.r   r   r   )r   r   r   r:   r   r   r   r   r   r6   Zremover   r   r&   remove_bindingsZ#StructuralNavigator.remove_bindings  s@    @HMMBvh-(5++VT:411&99u///++QQSI-vS^,,RSUFu//>~~22G&&wd&C 3 u///++QQSI-v#i.AQQ\7]^Fu//> 0r%   c               r   r   r   r-   r.   r&   r/   r0   /  s"     * * * *VZ *r%   c                s    RP                  VR.4      pV'       d   V P                  V4      '       g   R# V P                  W4       V P                  W4       R# )z>Refreshes structural navigation bindings and grabs for script.Z z(refreshing)N)Zjoinr   r   r   )r;   r   r      &&&r&   r   Z.StructuralNavigator.refresh_bindings_and_grabs/  sI     6>23411&99V,&)r%   c               r(   r   r   r-   r.   r&   r/   r0   :  s     Y Yd Yr%   c                J    \         P                  ! 4       P                  R4      # )zNReturns whether navigation wraps when reaching the top/bottom of the document.wrappedStructuralNavigationr   r   get_settingr   r   r&   get_navigation_wrapsZ(StructuralNavigator.get_navigation_wraps9        ++-99:WXXr%   c                    V ^8  d   QhRRRR/# r*   valuer@   r+   r   r-   r.   r&   r/   r0   @  s      $ 4 r%   c                    RV R2p\         P                  ! \         P                  VR4       \        P                  ! 4       P                  RV4       R# )zKSets whether navigation wraps when reaching the top/bottom of the document.z2STRUCTURAL NAVIGATOR: Setting navigation wraps to .Tr   r   r9   r:   r   r   r   r;   r   r<   rB   r&   set_navigation_wrapsZ(StructuralNavigator.set_navigation_wraps?  sI     C5'KE,,c48$$&223PRWXr%   c               r(   )r*   r+   intr   r-   r.   r&   r/   r0   I  s     S Sc Sr%   c                r   )zKReturns the minimum number of characters to be considered a 'large object'.largeObjectTextLengthr   r   r   r&   get_large_object_text_lengthZ0StructuralNavigator.get_large_object_text_lengthH  s      ++-99:QRRr%   c               r>   )r*   r   r   r+   r@   r   r-   r.   r&   r/   r0   O  s      # $ r%   c                r   )zHSets the minimum number of characters to be considered a 'large object'.z:STRUCTURAL NAVIGATOR: Setting large object text length to r   Tr   r   r   rB   r&   set_large_object_text_lengthZ0StructuralNavigator.set_large_object_text_lengthN  sI     K5'QRSE,,c48$$&223JERr%   c               r(   r   r   r-   r.   r&   r/   r0   X  s     Y Y Yr%   c                r   )z1Returns whether structural navigation is enabled.r   r   r   r   r&   r   Z"StructuralNavigator.get_is_enabledW  r   r%   c               r   r   r   r-   r.   r&   r/   r0   ^  s      D T r%   c                s<   V P                  4       V8X  d   R# RV R2p\        P                  ! \        P                  VR4       \        P
                  ! 4       P                  RV4       \        P
                  ! 4       P                  4       pV'       g   R# V P                  V4      pV'       g   V\        P                  8X  d   R# RV n        V'       d_   V P                  P                  V4      ;p'       d;   RVRV.p\        P                  ! \        P                  VR4       WPP                   V&   MWW@P                  V&   RVR	V.p\        P                  ! \        P                  VR4       \        P                  V P                   V&   V P#                  VR
4       R# )z.Sets whether structural navigation is enabled.Tz)STRUCTURAL NAVIGATOR: Setting enabled to r   r   Nz(STRUCTURAL NAVIGATOR: Restoring mode forZtozSTRUCTURAL NAVIGATOR: Savingzas previous mode forz"D-Bus setter changed enabled state)r   r   r9   r:   r   r   r   r   r   r   r   r   r1   r8   r   r   r7   r   )r;   r   r<   r   Zcurrent_modeprevious_moder   s   &&     r&   set_is_enabledZ"StructuralNavigator.set_is_enabled]  sT     E)9%BE,,c48$$&223PRWX++-??A}}V,););;!% $ > > B B6 JJ}JDfdTab""5#3#3VTB0=%%f-5A**624lDZ\bcFu//>,:,>,>D!!&)''0TUr%   c               r(   r   r   r-   r.   r&   r/   r0     s     X X Xr%   c                r   )z:Returns whether structural navigation triggers focus mode.structNavTriggersFocusModer   r   r   r&   r   Z+StructuralNavigator.get_triggers_focus_mode  s      ++-99:VWWr%   c               r   r   r   r-   r.   r&   r/   r0     s     	 	T 	d 	r%   c                s    V P                  4       V8X  d   R# RV R2p\        P                  ! \        P                  VR4       \        P
                  ! 4       P                  RV4       R# )z7Sets whether structural navigation triggers focus mode.Tz5STRUCTURAL NAVIGATOR: Setting triggers focus mode to r   r   )r   r   r9   r:   r   r   r   r   rB   r&   set_triggers_focus_modeZ+StructuralNavigator.set_triggers_focus_mode  s\     '')U2EeWANE,,c48$$&223OQVWr%   Nc               (    V ^8  d   QhRRRRRRRR/# r*   r   r   eventzInputEvent | Nonenotify_userr@   r+   r   r-   r.   r&   r/   r0     s2     % %% !% 	%
 
%r%   c                s8   RVRVRV.p\         P                  ! \         P                  VR4       V'       d   V P                  V4      '       g   R# RV n        V P                  V4      pRpRpV\        P                  8X  d"   \        P                  p\        P                  pMVV\        P                  8X  d"   \        P                  p\        P                  pM \        P                  p\        P                  pV'       d   VP                  V4       V P                  W4       V\        P                  8w  dd   V P!                  V4      p\"        P$                  ! V4      '       g7   V'       d/   VP                  \        P&                  \        P(                  4       R# )z-Cycles among the structural navigation modes.z)STRUCTURAL NAVIGATOR: cycle_mode. Script:Event:notify_user:TFNr   )r   r   r:   r   r1   r   r   r   r   r   Z#STRUCTURAL_NAVIGATION_KEYS_DOCUMENTr   ZSTRUCTURAL_NAVIGATION_KEYS_OFFZSTRUCTURAL_NAVIGATION_KEYS_GUIpresent_messager   _determine_root_containerr   Zsupports_collectionZ(STRUCTURAL_NAVIGATION_NOT_SUPPORTED_FULLZ)STRUCTURAL_NAVIGATION_NOT_SUPPORTED_BRIEF)	r;   r   r   r   r   r   r<   r   roots	   &&&&     r&   r   ZStructuralNavigator.cycle_mode  s7    >vE>;@5++VT:411&99!%f-N...!**D>>Cn000!%%D99C!%%D99C""3'f#>%%%11&9D//55+&&x'X'X&.&X&XZr%   c                s    V'       d   V P                  V4      '       g   R# RV 2pV'       d   VRV 2,          p\        P                  ! \        P                  VR4       W n        V P                  VRV 24       R# )zBSuspends structural navigation independent of the enabled setting.Nz!STRUCTURAL NAVIGATOR: Suspended: r   TzSuspended changed to )r   r   r9   r:   r2   r   )r;   r   Z	suspendedr   r<      &&&& r&   suspend_commandsZ$StructuralNavigator.suspend_commands  sn     411&991)=Rx= CE,,c48#''2G	{0STr%   c               s0    V ^8  d   QhRRRRRRRRR	RR
R/# )r*   r   r   objectslist[Atspi.Accessible]is_nextr@   should_wrapzbool | Noner   r+   Atspi.Accessible | Noner   r-   r.   r&   r/   r0     sN     L LL (L 	L
 !L L 
!Lr%   c                sz   V'       g   R# Vf   V P                  4       p\        P                  ! 4       P                  4       pTpV'       Edh   Wr9  d   \        P
                  ! V4      pK'  \        P                  ! V4      '       de   V'       g]   \        P                  ! V\        P                  4      ;p'       d0   RVRVR.p	\        P                  ! \        P                  V	R4       TpVP                  V4      p
V'       da   V
^,           \        V4      8  d   W*^,           ,          # V'       g   R# V'       d    VP                  \        P                   4       V^ ,          # V
^ 8  d   W*^,
          ,          # V'       g   R# V'       d    VP                  \        P"                  4       VR,          # V'       g   \%        \'        V4      4      p\        P(                  ! V4      pV FX  p\        P(                  ! V4      pVP*                  P-                  W4      pV^ 8  d	   V'       g   V^ 8  g   KL  V'       d   KV  Vu # 	  V'       g   R# V'       d)   V'       d    VP                  \        P                   4       M'V'       d    VP                  \        P"                  4       Wb^ ,          8w  d
   V^ ,          # R# )zEReturns the next/previous object in relation to the current location.Nz%STRUCTURAL NAVIGATOR: Current headingzis inside another headingz-Treating the ancestor is the current heading.T)r   r   r   get_locus_of_focusr   
get_parentr   
is_headingZfind_ancestorr   r   r:   indexr   r   r   ZWRAPPING_TO_TOPZWRAPPING_TO_BOTTOMlistZreversedZget_path	utilitiesZpath_comparison)r;   r   r   r   r   r   objZ	candidateZancestorr   r   Zcurrent_pathZmatchZpathZ
comparisons   &&&&&&         r&   _get_object_in_directionZ,StructuralNavigator._get_object_in_direction  s    335K '')<<>	i'$//	:	 %%i00'55iAWAWXX8XEy98MOF &&u'7'7F (IMM),E19s7|+"19--"**8+C+CDqz!qyqy))&&x'B'BC2; 8G,-G((-E$$U+D))99$MJQ7
Qww	  &&x'?'?@&&x'B'BC!*1:r%   c               r>   )r*   r   Atspi.Accessibler+   r   r   r-   r.   r&   r/   r0     s      %5 # r%   c                	s   Vf   R# \         P                  ! V4      '       d3   \        P                  w  r#\         P                  ! V4      '       d   V# V# \         P
                  ! V4      '       dR   \        P                  w  rEp\         P                  ! V4      '       d   V# \         P                  ! V4      '       d   V# V# \         P                  ! V4      '       d3   \        P                  w  rx\         P                  ! V4      '       d   V# V# \         P                  ! V4      '       d=   \         P                  ! V4      '       d   \        P                  # \        P                  # R# Nr   )r   Z	is_switchr   ZSWITCH_INDICATORS_SPEECHZ
is_checkedZis_check_boxZCHECK_BOX_INDICATORS_SPEECHZis_indeterminateZis_radio_buttonZRADIO_BUTTON_INDICATORS_SPEECHis_linkZ
is_visitedZSTATE_VISITEDZSTATE_UNVISITED)	r;   r   ZoffZonZ	uncheckedZcheckedZ	partiallyZ
unselectedZselecteds	   &&       r&   _get_state_stringZ%StructuralNavigator._get_state_string  s   ;  %%'@@GC%%c**	J##C((,=,Y,Y)I	++C00  %%c**&&s++#4#S#S J%%c**s##%%c**(666$444r%   c               r   )r*   r   r   r   r   r+   r   r   r-   r.   r&   r/   r0   4  s#     . .~ .<L .QT .r%   c                	s   Vf   R# \         P                  ! V4      ;'       gS    \         P                  ! V4      ;'       g5    \        P                  ! V4      ;'       g    \        P
                  ! V4      pV'       d   V# \        P                  ! V4      '       d7   \        P                  ! V4      ;p'       d   \        P                  ! V4      # R# \        P                  ! V4      '       dH   V P                  V\         P                  ! V^ 4      4      pT;'       g    \        P                  ! V4      # \        P                  ! V4      '       d   \!        \         P"                  ! V\        P$                  4      4      p\        P&                  ! V4      '       d    \(        P*                  ! \-        V4      4      # \(        P.                  ! \-        V4      4      # \        P0                  ! V4      '       d6   \        P2                  ! V4      p\(        P4                  ! \-        V4      4      # \        P6                  ! V4      '       dN   \!        \         P"                  ! V\        P8                  4      4      p\(        P:                  ! \-        V4      4      # \        P<                  ! V4      '       dz   \         P>                  ! V4      ;p'       d   V# \         P@                  ! V4      p\        PB                  ! V4      '       d   V P                  W4      # \        P                  ! V4      # VPD                  PG                  V4      ;p'       d   V# \        PB                  ! V4      '       d   \H        PJ                  ! V4      pV# r   )&r   get_nameZget_descriptionr   Zget_displayed_labelZget_displayed_descriptionis_tabler   Zget_captionr   get_all_textZis_internal_frame_get_item_string	get_childget_localized_role_nameZis_listr   Ziter_childrenZis_list_itemZget_nesting_levelr   Znested_list_item_countr   Zlist_item_countZis_description_listZfind_all_description_termsZdescription_list_term_countZis_page_tab_listZis_page_tabZtab_list_item_countZis_imageZget_image_descriptionr   r   r   Zexpand_eocsr   Zget_link_basename)r;   r   r   r   ZcaptionZchildrenparents   &&&    r&   r   Z$StructuralNavigator._get_item_string4  s   ;""3' b b8+C+CC+H b b..s3b b7B7\7\]`7a 	M$$!--c22w2**733((--**683E3Ec13MNFEE[@@EEs##H2238P8PQRH,,S1166s8}EE++CM::**3//"==cBH77HFF'',,H2238O8OPQH//H>>$$!77<<v<((-F""6**,,V<<66s;;%%11#6666Ms## 2237Fr%   c          
     s,    V ^8  d   QhRRRRRRRRR	R
/# )r*   r   r   r   r   offset
int | Noner   r@   r+   r,   r   r-   r.   r&   r/   r0   d  s<     % %% %% 	%
 % 
%r%   c                	s^   Vf   R # \         P                  ! 4       pVP                  4       '       dT   \        P                  ! 4       P	                  R4      '       d*   \
        P                  ! 4       P                  VR W#R7       R # V'       g   Rp\        P                  ! \        P                  VR4       VP                  R VR4       \        P                  ! V4      '       d&   VP                  P                  Y#;'       g    ^ 4       R # VP!                  V4       VP#                  W#4       R # )NstructNavInSayAllr   r   r   zASTRUCTURAL NAVIGATOR: _present_line called with notify_user=FalseTF)r   r   
in_say_allr   r   r   get_presentersay_allr   r9   r:   set_locus_of_focusr   supports_textr   set_caret_positionZupdate_brailleZsay_line)r;   r   r   r   r   r   r<   s   &&&&&  r&   _present_lineZ!StructuralNavigator._present_lined  s     ;++-$4$@$@$B$N$NOb$c$c++-55fDc5aUC 0 0#t<&&tS%8%%c**  33C1Ec"$r%   c               s0    V ^8  d   QhRRRRRRRRR	R
RR/# )r*   r   r   r   r   not_found_messager   r   r   r   r@   r+   r,   r   r-   r.   r&   r/   r0     sN     &B &B&B %&B 	&B
 &B &B 
&Br%   c                	s    Vf+   V'       d!   VP                  V\        P                  4       R # Vf   ^ pV P                  V4      \        P
                  8X  d   \        P                  ! 4       P                  R V4       \        P                  ! V4       \        P                  ! VRR4       \        P                  ! V4      '       g(   V'       d    VP                  \        P                  4       R # \        P                  ! 4       pVP                  4       '       dT   \         P                  ! 4       P#                  R4      '       d*   \$        P&                  ! 4       P)                  VR W$R7       R # V'       gu   Rp\*        P,                  ! \*        P.                  VR4       VP                  R VR4       \        P0                  ! V4      '       d   VP2                  P5                  W$4       R # VP7                  W$RR7       R # )NFzChecking state after focus grabr   r  zCSTRUCTURAL NAVIGATOR: _present_object called with notify_user=FalseT)r   Z	interrupt)r   r   STRUCTURAL_NAVIGATION_NOT_FOUNDr   r   r   r   r   r  r   Z
grab_focusZclear_cacher   Z
is_focusedZNOT_FOCUSEDr  r   r   r   r  r  r   r9   r:   r  r   r  Zpresent_object)r;   r   r   r	  r   r   r   r<   s   &&&&&&  r&   _present_objectZ#StructuralNavigator._present_object  sq    ;&&'8(:b:bc>F== N$6$66%%'::4E$  e-NO))#..;&&x';';<++-$4$@$@$B$N$NOb$c$c++-55fDc5aWC 0 0#t<&&tS%8%%c**  33C@cDAr%   c               s4    V ^8  d   QhRRRRRRRRR	R
RRRR/# )r*   r   r   r   r   dialog_titler   column_headersz	list[str]row_data_funcr   r   r@   r+   r,   r   r-   r.   r&   r/   r0     sY     L LL (L 	L
 "L  L L 
Lr%   c                	s   V R \         P                  ! \        V4      4       2pV'       g   V'       d   VP                  V4       R# VP                  P                  4       ^ ,          p VP                  V4      pV U	u. uF  qR.V! V	4      ,           NK  	  p
p	\        P                  ! W4W4       R#   \         d    ^ p LGi ; iu up	i )r   Nr   )
r   Zitems_foundr   r   r   Zget_caret_contextr   Z
ValueErrorr   Zshow_ui)r;   r   r   r  r  r  r   Zcurrent_objectr   r   Zrowss   &&&&&&&    r&   _present_object_listZ(StructuralNavigator._present_object_list  s     'r(*>*>s7|*L)MN&&|4));;=a@	MM.1E ;BB'3b	M#...'B  tK	  	E	 Cs   *B3 ?C3CCc               r>   )r*   r   r   r+   r   r   r-   r.   r&   r/   r0     s       CS r%   c                	sD   V P                  V4      p\        P                  ! 4       P                  4       p\        P
                  ! V\        P                  4      pVf   V\        P                  8X  d   VP                  P                  V4      pMaV\        P                  8X  dM   \        P
                  ! V\        P                  4      pVf$   \        P                  ! 4       P                  4       pRVRVRV 2.p\        P                   ! \        P"                  VR4       V# )NzSTRUCTURAL NAVIGATOR: Root forZiszmode: T)r   r   r   r   r   find_ancestor_inclusiver   Zis_modal_dialogr   r   r   Z!get_top_level_document_for_objectr   Zis_dialog_or_windowZget_active_windowr   r   r:   )r;   r   r   focusr   r   s   &&    r&   r   Z-StructuralNavigator._determine_root_container  s    }}V$))+>>@//{7R7RS<~...''II%P+++77{?^?^_<(446HHJD2E4PTvW5++VT:r%   c               s$    V ^8  d   QhRRRRRR/# )r*   r   r   must_be_showingr@   r+   r   r-   r.   r&   r/   r0     s#      +; d ^b r%   c                	s    \         P                  ! V\        P                  4      e   R# V'       d   \        P                  ! V4      '       g   R# R# )NFT)r   r  r   Zis_documentZ
is_showing)r;   r   r  r   r&   _is_non_document_objectZ+StructuralNavigator._is_non_document_object  s7    ++C1H1HIU;#9#9##>#>r%   c               r>   r*   r   r   r+   r   r   r-   r.   r&   r/   r0     s     B B> B>T Br%   c                	    R pV P                  V4      \        P                  8X  d   V P                  pV P	                  V4      p\
        P                  ! W2R7      # Npred)r   r   r   r  r   r   Zfind_all_block_quotesr;   r   r  r   r   r&   _get_all_blockquotesZ(StructuralNavigator._get_all_blockquotes  J    == N$6$66//D--f500AAr%   c               r   r   r   r-   r.   r&   r/   r0     2       ! 	
 
r%   c                    RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  W\        P                  VR7       R# )z Goes to the previous blockquote.z2STRUCTURAL NAVIGATOR: previous_blockquote. Script:r   r   TFr   	r   r   r:   r1   r  r   r  r   ZNO_MORE_BLOCKQUOTESr;   r   r   r   r   matchesr      &&&&   r&   rE   Z'StructuralNavigator.previous_blockquote  z     GE>;@5++VT:!&++F3..vFVX-I-IWbcr%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                    RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  W\        P                  VR7       R# )zGoes to the next blockquote.z.STRUCTURAL NAVIGATOR: next_blockquote. Script:r   r   Tr  r  r   r"  r&   rF   Z#StructuralNavigator.next_blockquote  z     CFE>;@5++VT:!&++F3..vEVX-I-IWbcr%   c               r   r   r   r-   r.   r&   r/   r0     2       ! 	
 
r%   c           	       a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  \        P                  .VV 3R lVR7       R# )zDisplays a list of blockquotes.z/STRUCTURAL NAVIGATOR: list_blockquotes. Script:r   r   Tc                *   < SP                  SV 4      .# Nr   r   r   r;      &r&   <lambda>Z6StructuralNavigator.list_blockquotes.<locals>.<lambda>      ..vs;<r%   r  )	r   r   r:   r1   r  r  r	   ZSN_TITLE_BLOCKQUOTEZSN_HEADER_BLOCKQUOTEr;   r   r   r   r      ff&& r&   rG   Z$StructuralNavigator.list_blockquotes
  s     DVE>;@5++VT:!&!!%%f-))++,<# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   (  s     = =~ =:P =r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_buttonsr  r   r&   _get_all_buttonsZ$StructuralNavigator._get_all_buttons(  sJ    == N$6$66//D--f5++D<<r%   c               r   r   r   r-   r.   r&   r/   r0   1  r  r%   c                r  )zGoes to the previous button.z.STRUCTURAL NAVIGATOR: previous_button. Script:r   r   TFr  	r   r   r:   r1   r1  r   r  r   ZNO_MORE_BUTTONSr   r"  r&   rH   Z#StructuralNavigator.previous_button0  z     CFE>;@5++VT:!&''/..vFVX-E-ES^_r%   c               r   r   r   r-   r.   r&   r/   r0   D  r  r%   c                r$  )zGoes to the next button.z*STRUCTURAL NAVIGATOR: next_button. Script:r   r   Tr  r2  r   r"  r&   rI   ZStructuralNavigator.next_buttonC  y     ?E>;@5++VT:!&''/..vEVX-E-ES^_r%   c               r   r   r   r-   r.   r&   r/   r0   W  r&  r%   c           	     r'  )zDisplays a list of buttons.z+STRUCTURAL NAVIGATOR: list_buttons. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z2StructuralNavigator.list_buttons.<locals>.<lambda>i  r.  r%   r  )	r   r   r:   r1   r  r1  r	   ZSN_TITLE_BUTTONZSN_HEADER_BUTTONr/  r0  r&   rJ   Z StructuralNavigator.list_buttonsV       @E>;@5++VT:!&!!!!&)%%''(<# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   t       A A. A=S Ar%   c                	r  r  )r   r   r   r  r   r   Zfind_all_check_boxesr  r   r&   _get_all_checkboxesZ'StructuralNavigator._get_all_checkboxest  J    == N$6$66//D--f5//@@r%   c               r   r   r   r-   r.   r&   r/   r0   }  r  r%   c                r  )zGoes to the previous checkbox.z0STRUCTURAL NAVIGATOR: previous_checkbox. Script:r   r   TFr  	r   r   r:   r1   r7  r   r  r   ZNO_MORE_CHECK_BOXESr   r"  r&   rK   Z%StructuralNavigator.previous_checkbox|  z     EfE>;@5++VT:!&**62..vFVX-I-IWbcr%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next checkbox.z,STRUCTURAL NAVIGATOR: next_checkbox. Script:r   r   Tr  r9  r   r"  r&   rL   Z!StructuralNavigator.next_checkbox  z     A&E>;@5++VT:!&**62..vEVX-I-IWbcr%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     "  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  \        P                  \        P                  .VV 3R lVR7       R# )zDisplays a list of checkboxes.z.STRUCTURAL NAVIGATOR: list_checkboxes. Script:r   r   Tc                J   < SP                  SV 4      SP                  V 4      .# r)  r   r   r+  r,  r&   r-  Z5StructuralNavigator.list_checkboxes.<locals>.<lambda>  #    ..vs;T=S=STW=XYr%   r  )
r   r   r:   r1   r  r7  r	   ZSN_TITLE_CHECK_BOXZSN_HEADER_CHECK_BOXSN_HEADER_STATEr/  r0  r&   rM   Z#StructuralNavigator.list_checkboxes  s     CFE>;@5++VT:!&!!$$V,((**I,E,EFY# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0     s     K K^ K@V Kr%   c                	sP  a V P                  4       oV3R  lpV P                  V4      p\        P                  ! 4       \        P
                  P                  \        P
                  P                  \        P
                  P                  .,           p\        P                  ! W4VR7      # )c                s   < \         P                  ! V 4      '       d   R # \        P                  ! V 4      p\	        V4      S8  ;'       d%    VP                  R4      \	        V4      ,          R8  # )Tu   ￼g?)r   r   r   r   r   Zcount)r   Ztextminimum_lengths   & r&   	_is_largeZ=StructuralNavigator._get_all_large_objects.<locals>._is_large  sV    %%c**&&s+Dt9~-WW$**X2Fs4y2PSW2WWr%   r  )
r   r   r   Zget_large_container_rolesr   ZRoleZHEADINGZ	PARAGRAPHZSECTIONZfind_all_with_role)r;   r   rB  r   ZrolesrA  s   &&   @r&   _get_all_large_objectsZ*StructuralNavigator._get_all_large_objects  sx    ::<	X --f5557ZZ!5!5uzz7I7IJK--d	JJr%   c               r   r   r   r-   r.   r&   r/   r0     2       ! 	
 
r%   c                r  )z"Goes to the previous large object.z4STRUCTURAL NAVIGATOR: previous_large_object. Script:r   r   TFr  	r   r   r:   r1   rC  r   r  r   ZNO_MORE_LARGE_OBJECTSr   r"  r&   r   Z)StructuralNavigator.previous_large_object       I&E>;@5++VT:!&--f5..vFH:: 	 	Ur%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                r$  )zGoes to the next large object.z0STRUCTURAL NAVIGATOR: next_large_object. Script:r   r   Tr  rE  r   r"  r&   r   Z%StructuralNavigator.next_large_object       EfE>;@5++VT:!&--f5..vEH:: 	 	Ur%   c               r   r   r   r-   r.   r&   r/   r0     2       ! 	
 
r%   c           	     s  a a RSRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  \        P                  \        P                  .VV 3R lVR7       R# )z!Displays a list of large objects.z1STRUCTURAL NAVIGATOR: list_large_objects. Script:r   Tc                T   < SP                  SV 4      \        P                  ! V 4      .# r)  r   r   r   r+  r,  r&   r-  Z8StructuralNavigator.list_large_objects.<locals>.<lambda>	  &    ..vs;$<<SACr%   r  )
r   r   r:   r1   r  rC  r	   ZSN_TITLE_LARGE_OBJECTZSN_HEADER_OBJECTSN_HEADER_ROLEr/  r0  r&   r   Z&StructuralNavigator.list_large_objects  s     FvE#5++VT:!&!!''/++'')A)ABC# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0     r6  r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_combo_boxesr  r   r&   _get_all_comboboxesZ'StructuralNavigator._get_all_comboboxes  r8  r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )zGoes to the previous combo box.z0STRUCTURAL NAVIGATOR: previous_combobox. Script:r   r   TFr  	r   r   r:   r1   rM  r   r  r   ZNO_MORE_COMBO_BOXESr   r"  r&   rN   Z%StructuralNavigator.previous_combobox  r:  r%   c               r   r   r   r-   r.   r&   r/   r0   1  r  r%   c                r$  )zGoes to the next combo box.z,STRUCTURAL NAVIGATOR: next_combobox. Script:r   r   Tr  rN  r   r"  r&   rO   Z!StructuralNavigator.next_combobox0  r;  r%   c               r   r   r   r-   r.   r&   r/   r0   D  r&  r%   c           	     r'  )zDisplays a list of combo boxes.z.STRUCTURAL NAVIGATOR: list_comboboxes. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z5StructuralNavigator.list_comboboxes.<locals>.<lambda>V  r.  r%   r  )	r   r   r:   r1   r  rM  r	   ZSN_TITLE_COMBO_BOXZSN_HEADER_COMBO_BOXr/  r0  r&   rP   Z#StructuralNavigator.list_comboboxesC       CFE>;@5++VT:!&!!$$V,((**+<# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   a  s     F F~ F:P Fr%   c                	s   a  R  pS P                  V4      \        P                  8X  d   V 3R lpMTpS P                  V4      p\        P
                  ! WCR7      # )c                s|    \         P                  ! V 4      pVR J;'       d    \        P                  ! V4      '       * # r)  )r   r   r   is_editable)r   r   s   & r&   parent_is_not_editableZDStructuralNavigator._get_all_entries.<locals>.parent_is_not_editableb  s3    ((-F%MMk.E.Ef.M*MMr%   c                s&   < SP                  V 4      # r)  )r  )r   r;   s   &r&   r  Z2StructuralNavigator._get_all_entries.<locals>.predg  s    33A66r%   r  )r   r   r   r   r   Zfind_all_editable_objects)r;   r   rQ  r  r   s   f&   r&   _get_all_entriesZ$StructuralNavigator._get_all_entriesa  sO    	N == N$6$667 *D--f544TEEr%   c               r   r   r   r-   r.   r&   r/   r0   p  r  r%   c                r  )zGoes to the previous entry.z-STRUCTURAL NAVIGATOR: previous_entry. Script:r   r   TFr  	r   r   r:   r1   rR  r   r  r   ZNO_MORE_ENTRIESr   r"  r&   rQ   Z"StructuralNavigator.previous_entryo  sz     B6E>;@5++VT:!&''/..vFVX-E-ES^_r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next entry.z)STRUCTURAL NAVIGATOR: next_entry. Script:r   r   Tr  rS  r   r"  r&   rR   ZStructuralNavigator.next_entry  sy     >vE>;@5++VT:!&''/..vEVX-E-ES^_r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     r<  )zDisplays a list of entries.z+STRUCTURAL NAVIGATOR: list_entries. Script:r   r   Tc                rI  r)  )r   r   r   r+  r,  r&   r-  Z2StructuralNavigator.list_entries.<locals>.<lambda>  s#    ..vs;V=P=PQT=UVr%   r  )
r   r   r:   r1   r  rR  r	   ZSN_TITLE_ENTRYSN_HEADER_LABELSN_HEADER_VALUEr/  r0  r&   rS   Z StructuralNavigator.list_entries  s     @E>;@5++VT:!&!!!!&)$$&&	(A(ABV# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0     s     A A> A>T Ar%   c                	sn   a aa R  oVVV 3R lpS P                  S4      p\        P                  ! W2R7      # )c                sj    \         P                  ! V 4      '       d   \         P                  ! V 4      # R # T)r   Zis_document_framerP  r   r   r&   is_not_noneditable_doc_frameZNStructuralNavigator._get_all_form_fields.<locals>.is_not_noneditable_doc_frame  s'    ,,S11"..s33r%   c                ~   < SP                  S4      \        P                  8X  d   SP                  V 4      # S! V 4      # r)  r   r   r   r  )r   rX  r   r;      &r&   r  Z6StructuralNavigator._get_all_form_fields.<locals>.pred  s6    }}V$(:(::33A66/22r%   r  )r   r   Zfind_all_form_fields)r;   r   r  r   rX     ff  @r&   _get_all_form_fieldsZ(StructuralNavigator._get_all_form_fields  s0    	
	3
 --f5//@@r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )z Goes to the previous form field.z2STRUCTURAL NAVIGATOR: previous_form_field. Script:r   r   TFr  	r   r   r:   r1   r]  r   r  r   ZNO_MORE_FORM_FIELDSr   r"  r&   rT   Z'StructuralNavigator.previous_form_field  r#  r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next form field.z.STRUCTURAL NAVIGATOR: next_form_field. Script:r   r   Tr  r^  r   r"  r&   rU   Z#StructuralNavigator.next_form_field  r%  r%   c               r   r   r   r-   r.   r&   r/   r0     2       ! 	
 
r%   c           	     @  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  \        P                  \        P                  \        P                  .VV 3R lVR7       R# )zDisplays a list of form fields.z/STRUCTURAL NAVIGATOR: list_form_fields. Script:r   r   Tc                s~   < SP                  SV 4      \        P                  ! V 4      \        P                  ! V 4      .# r)  )r   r   r   r   r   r+  r,  r&   r-  Z6StructuralNavigator.list_form_fields.<locals>.<lambda>  s3    ..vs;$<<SA,,S13r%   r  )r   r   r:   r1   r  r]  r	   ZSN_TITLE_FORM_FIELDrT  rL  rU  r/  r0  r&   rV   Z$StructuralNavigator.list_form_fields  s     DVE>;@5++VT:!&!!%%f-))&&	(@(@)B[B[\3 $ 	" 		
 r%   c               r   )r*   r   r   levelr   r+   r   r   r-   r.   r&   r/   r0     s+     N NNN 
 Nr%   c                	s    R pV P                  V4      \        P                  8X  d   V P                  pV P	                  V4      pVf   \
        P                  ! WCR7      # \
        P                  ! WBVR7      # r  )r   r   r   r  r   r   Zfind_all_headingsZfind_all_headings_at_level)r;   r   ra  r  r   r   r&   _get_all_headingsZ%StructuralNavigator._get_all_headings  sd    
 == N$6$66//D--f5=00AA55dMMr%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )zGoes to the previous heading.z/STRUCTURAL NAVIGATOR: previous_heading. Script:r   r   TFr  	r   r   r:   r1   rb  r   r  r   ZNO_MORE_HEADINGSr   r"  r&   rW   Z$StructuralNavigator.previous_heading  sz     DVE>;@5++VT:!&((0..vFVX-F-FT_`r%   c               r   r   r   r-   r.   r&   r/   r0   )  r  r%   c                r$  )zGoes to the next heading.z+STRUCTURAL NAVIGATOR: next_heading. Script:r   r   Tr  rc  r   r"  r&   rX   Z StructuralNavigator.next_heading(  sz     @E>;@5++VT:!&((0..vEVX-F-FT_`r%   c               r   r   r   r-   r.   r&   r/   r0   <  rH  r%   c           	     r<  )zDisplays a list of headings.z,STRUCTURAL NAVIGATOR: list_headings. Script:r   r   Tc                sf   < SP                  SV 4      \        \        P                  ! V 4      4      .# r)  )r   r   r   Zget_heading_levelr+  r,  r&   r-  Z3StructuralNavigator.list_headings.<locals>.<lambda>N  s+    ..vs;[::3?@Br%   r  )
r   r   r:   r1   r  rb  r	   ZSN_TITLE_HEADINGSN_HEADER_HEADINGZSN_HEADER_LEVELr/  r0  r&   rY   Z!StructuralNavigator.list_headings;  s     A&E>;@5++VT:!&!!""6*&&(()*C*CDB# 	" 	
 r%   c               r   r   r   r-   r.   r&   r/   r0   U  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 1 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_1. Script:r   r   TFr  	r   r   r:   r1   rb  r   r  r   ZNO_MORE_HEADINGS_AT_LEVELr   r"  r&   previous_heading_level_1Z,StructuralNavigator.previous_heading_level_1T       LVE>;@5++VT:!&((3..vFH>>BP[ 	 	]r%   c               r   r   r   r-   r.   r&   r/   r0   i  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 1 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_1. Script:r   r   Tr  re  r   r"  r&   next_heading_level_1Z(StructuralNavigator.next_heading_level_1h       HE>;@5++VT:!&((3..vEH>>BP[ 	 	]r%   c               r   r   r   r-   r.   r&   r/   r0   }  r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 1 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_1. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_1.<locals>.<lambda>  r.  r%   r  	r   r   r:   r1   r  rb  r	   ZSN_TITLE_HEADING_AT_LEVELrd  r/  r0  r&   list_headings_level_1Z)StructuralNavigator.list_headings_level_1|       I&E>;@5++VT:!&!!""6*//!3(()<# 	" 	
 r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 2 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_2. Script:r   r   TFr  re  r   r"  r&   previous_heading_level_2Z,StructuralNavigator.previous_heading_level_2  rg  r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 2 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_2. Script:r   r   Tr  re  r   r"  r&   next_heading_level_2Z(StructuralNavigator.next_heading_level_2  ri  r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 2 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_2. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_2.<locals>.<lambda>  r.  r%   r  rj  r/  r0  r&   list_headings_level_2Z)StructuralNavigator.list_headings_level_2  rl  r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 3 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_3. Script:r   r   TFr  re  r   r"  r&   previous_heading_level_3Z,StructuralNavigator.previous_heading_level_3  rg  r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 3 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_3. Script:r   r   Tr  re  r   r"  r&   next_heading_level_3Z(StructuralNavigator.next_heading_level_3  ri  r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 3 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_3. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_3.<locals>.<lambda>	  r.  r%   r  rj  r/  r0  r&   list_headings_level_3Z)StructuralNavigator.list_headings_level_3  rl  r%   c               r   r   r   r-   r.   r&   r/   r0   	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 4 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_4. Script:r   r   TFr  re  r   r"  r&   previous_heading_level_4Z,StructuralNavigator.previous_heading_level_4	  rg  r%   c               r   r   r   r-   r.   r&   r/   r0   )	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 4 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_4. Script:r   r   Tr  re  r   r"  r&   next_heading_level_4Z(StructuralNavigator.next_heading_level_4(	  ri  r%   c               r   r   r   r-   r.   r&   r/   r0   =	  r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 4 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_4. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_4.<locals>.<lambda>O	  r.  r%   r  rj  r/  r0  r&   list_headings_level_4Z)StructuralNavigator.list_headings_level_4<	  rl  r%   c               r   r   r   r-   r.   r&   r/   r0   U	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 5 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_5. Script:r   r   TFr  re  r   r"  r&   previous_heading_level_5Z,StructuralNavigator.previous_heading_level_5T	  rg  r%   c               r   r   r   r-   r.   r&   r/   r0   i	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 5 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_5. Script:r   r   Tr  re  r   r"  r&   next_heading_level_5Z(StructuralNavigator.next_heading_level_5h	  ri  r%   c               r   r   r   r-   r.   r&   r/   r0   }	  r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 5 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_5. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_5.<locals>.<lambda>	  r.  r%   r  rj  r/  r0  r&   list_headings_level_5Z)StructuralNavigator.list_headings_level_5|	  rl  r%   c               r   r   r   r-   r.   r&   r/   r0   	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z%Goes to the previous level 6 heading.z7STRUCTURAL NAVIGATOR: previous_heading_level_6. Script:r   r   TFr  re  r   r"  r&   previous_heading_level_6Z,StructuralNavigator.previous_heading_level_6	  rg  r%   c               r   r   r   r-   r.   r&   r/   r0   	  rD  r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V^4      pV P                  WR4      pV P                  W\        P                  ^,          VR7       R# )z!Goes to the next level 6 heading.z3STRUCTURAL NAVIGATOR: next_heading_level_6. Script:r   r   Tr  re  r   r"  r&   next_heading_level_6Z(StructuralNavigator.next_heading_level_6	  ri  r%   c               r   r   r   r-   r.   r&   r/   r0   	  r&  r%   c           	     s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  ^,          \        P                  .VV 3R lVR7       R# )z$Displays a list of level 6 headings.z4STRUCTURAL NAVIGATOR: list_headings_level_6. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z;StructuralNavigator.list_headings_level_6.<locals>.<lambda>	  r.  r%   r  rj  r/  r0  r&   list_headings_level_6Z)StructuralNavigator.list_headings_level_6	  rl  r%   c               r>   r  r   r-   r.   r&   r/   r0   	  s     E E~ E:P Er%   c                	r  r  )r   r   r   r  r   r   Zfind_all_internal_framesr  r   r&   _get_all_iframesZ$StructuralNavigator._get_all_iframes	  L    == N$6$66//D --f533DDDr%   c               r   r   r   r-   r.   r&   r/   r0   	  r  r%   c                r  )zGoes to the previous iframe.z.STRUCTURAL NAVIGATOR: previous_iframe. Script:r   r   TFr  	r   r   r:   r1   r|  r   r  r   ZNO_MORE_IFRAMESr   r"  r&   r]   Z#StructuralNavigator.previous_iframe	  r3  r%   c               r   r   r   r-   r.   r&   r/   r0   	  r  r%   c                r$  )zGoes to the next iframe.z*STRUCTURAL NAVIGATOR: next_iframe. Script:r   r   Tr  r~  r   r"  r&   r^   ZStructuralNavigator.next_iframe	  r4  r%   c               r   r   r   r-   r.   r&   r/   r0   

  r&  r%   c           	     r'  )zDisplays a list of iframes.z+STRUCTURAL NAVIGATOR: list_iframes. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z2StructuralNavigator.list_iframes.<locals>.<lambda>
  r.  r%   r  )	r   r   r:   r1   r  r|  r	   ZSN_TITLE_IFRAMEZSN_HEADER_IFRAMEr/  r0  r&   r_   Z StructuralNavigator.list_iframes	
  r5  r%   c               r>   r  r   r-   r.   r&   r/   r0   '
  s     K Kn K9O Kr%   c                	r  r  )r   r   r   r  r   r   Zfind_all_images_and_image_mapsr  r   r&   _get_all_imagesZ#StructuralNavigator._get_all_images'
  sL    == N$6$66//D --f599$JJr%   c               r   r   r   r-   r.   r&   r/   r0   1
  r  r%   c                r  )zGoes to the previous image.z-STRUCTURAL NAVIGATOR: previous_image. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_IMAGESr   r"  r&   r`   Z"StructuralNavigator.previous_image0
  sz     B6E>;@5++VT:!&&&v...vFVX-D-DR]^r%   c               r   r   r   r-   r.   r&   r/   r0   D
  r  r%   c                r$  )zGoes to the next image.z)STRUCTURAL NAVIGATOR: next_image. Script:r   r   Tr  r  r   r"  r&   ra   ZStructuralNavigator.next_imageC
  sy     >vE>;@5++VT:!&&&v...vEVX-D-DR]^r%   c               r   r   r   r-   r.   r&   r/   r0   W
  r&  r%   c           	     r'  )zDisplays a list of images.z*STRUCTURAL NAVIGATOR: list_images. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z1StructuralNavigator.list_images.<locals>.<lambda>i
  r.  r%   r  )	r   r   r:   r1   r  r  r	   ZSN_TITLE_IMAGEZSN_HEADER_IMAGEr/  r0  r&   rb   ZStructuralNavigator.list_imagesV
  s     ?E>;@5++VT:!&!!  ($$&&'<# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   t
  s     ? ? ?<R ?r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_landmarksr  r   r&   _get_all_landmarksZ&StructuralNavigator._get_all_landmarkst
  sL    == N$6$66//D --f5--d>>r%   c               s(    V ^8  d   QhRRRRRRRR/# )	r*   r   r   r   r   r   r@   r+   r,   r   r-   r.   r&   r/   r0   }
  s2     + ++ + 	+
 
+r%   c                	s    Vf%   V P                  W\        P                  VR7       R # V'       d&   VP                  \        P
                  ! V4      4       V P                  W^ 4       R # )Nr  )r  r   ZNO_LANDMARK_FOUNDr   r   r   r  )r;   r   r   r   s   &&&&r&   _present_landmarkZ%StructuralNavigator._present_landmark}
  sT     ;  h.H.HVa b""8#4#4S#9:6*r%   c               r   r   r   r-   r.   r&   r/   r0   
  r  r%   c                s    RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  WV4       R# )zGoes to the previous landmark.z0STRUCTURAL NAVIGATOR: previous_landmark. Script:r   r   TFr   r   r:   r1   r  r   r  r   r"  r&   rc   Z%StructuralNavigator.previous_landmark
  sn     EfE>;@5++VT:!&))&1..vFv{;r%   c               r   r   r   r-   r.   r&   r/   r0   
  r  r%   c                s    RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  WV4       R# )zGoes to the next landmark.z,STRUCTURAL NAVIGATOR: next_landmark. Script:r   r   Tr  r   r"  r&   rd   Z!StructuralNavigator.next_landmark
  sn     A&E>;@5++VT:!&))&1..vEv{;r%   c               r   r   r   r-   r.   r&   r/   r0   
  rH  r%   c           	     r<  )zDisplays a list of landmarks.z-STRUCTURAL NAVIGATOR: list_landmarks. Script:r   r   Tc                rI  r)  rJ  r+  r,  r&   r-  Z4StructuralNavigator.list_landmarks.<locals>.<lambda>
  rK  r%   r  )
r   r   r:   r1   r  r  r	   ZSN_TITLE_LANDMARKZSN_HEADER_LANDMARKrL  r/  r0  r&   re   Z"StructuralNavigator.list_landmarks
  s     B6E>;@5++VT:!&!!##F+''))9+C+CDC# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   
  s     U U^ U8N Ur%   c                	    R pV P                  V4      \        P                  8X  d   V P                  pV P	                  V4      p\
        P                  ! VRRVR7      # )NT)Zinclude_description_listsZinclude_tab_listsr  )r   r   r   r  r   r   Zfind_all_listsr  r   r&   _get_all_listsZ"StructuralNavigator._get_all_lists
  sW    == N$6$66//D--f5))DDtU 	Ur%   c               r>   )r*   r   r   r+   r   r   r-   r.   r&   r/   r0   
  s     * *#3 *8O *r%   c                	s0    \         P                  ! V^ 4      # )i    )r   r   )r;   r   s   &&r&   _get_first_itemZ#StructuralNavigator._get_first_item
  s     !!#q))r%   c               r   r   r   r-   r.   r&   r/   r0   
  rD  r%   c                s.   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  V4      ;'       g    TpV P                  W\        P                  VR7       R# )zGoes to the previous list.z,STRUCTURAL NAVIGATOR: previous_list. Script:r   r   TFr  
r   r   r:   r1   r  r   r  r  r   ZNO_MORE_LISTSr   r"  r&   rf   Z!StructuralNavigator.previous_list
  s     A&E>;@5++VT:!&%%f-..vF%%f-77VX-C-CQ\]r%   c               r   r   r   r-   r.   r&   r/   r0   
  rD  r%   c                s.   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  V4      ;'       g    TpV P                  W\        P                  VR7       R# )zGoes to the next list.z(STRUCTURAL NAVIGATOR: next_list. Script:r   r   Tr  r  r   r"  r&   rg   ZStructuralNavigator.next_list
  s     =fE>;@5++VT:!&%%f-..vE%%f-77VX-C-CQ\]r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     r'  )zDisplays a list of lists.z)STRUCTURAL NAVIGATOR: list_lists. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z0StructuralNavigator.list_lists.<locals>.<lambda>  r.  r%   r  )	r   r   r:   r1   r  r  r	   ZSN_TITLE_LISTZSN_HEADER_LISTr/  r0  r&   rh   ZStructuralNavigator.list_lists
  s     >vE>;@5++VT:!&!!'##%%&<# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   (  s     P P. P=S Pr%   c                	r  )NT)Zinclude_description_termsZinclude_tabsr  )r   r   r   r  r   r   Zfind_all_list_itemsr  r   r&   _get_all_list_itemsZ'StructuralNavigator._get_all_list_items(  sW    == N$6$66//D--f5..Dt$P 	Pr%   c               r   r   r   r-   r.   r&   r/   r0   2  r  r%   c                r  )zGoes to the previous list item.z1STRUCTURAL NAVIGATOR: previous_list_item. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_LIST_ITEMSr   r"  r&   ri   Z&StructuralNavigator.previous_list_item1  z     FvE>;@5++VT:!&**62..vFVX-H-HVabr%   c               r   r   r   r-   r.   r&   r/   r0   E  r  r%   c                r$  )zGoes to the next list item.z-STRUCTURAL NAVIGATOR: next_list_item. Script:r   r   Tr  r  r   r"  r&   rj   Z"StructuralNavigator.next_list_itemD  z     B6E>;@5++VT:!&**62..vEVX-H-HVabr%   c               r   r   r   r-   r.   r&   r/   r0   X  r&  r%   c           	     r'  )zDisplays a list of list items.z.STRUCTURAL NAVIGATOR: list_list_items. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z5StructuralNavigator.list_list_items.<locals>.<lambda>j  r.  r%   r  )	r   r   r:   r1   r  r  r	   ZSN_TITLE_LIST_ITEMZSN_HEADER_LIST_ITEMr/  r0  r&   rk   Z#StructuralNavigator.list_list_itemsW  rO  r%   c               r>   r  r   r-   r.   r&   r/   r0   u  s     B BN B?U Br%   c                	r  r  )r   r   r   r  r   r   Zfind_all_live_regionsr  r   r&   _get_all_live_regionsZ)StructuralNavigator._get_all_live_regionsu  r  r%   c               r   r   r   r-   r.   r&   r/   r0   ~  rD  r%   c                r  )z!Goes to the previous live region.z3STRUCTURAL NAVIGATOR: previous_live_region. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_LIVE_REGIONSr   r"  r&   rl   Z(StructuralNavigator.previous_live_region}  s     HE>;@5++VT:!&,,V4..vFH99{ 	 	Tr%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next live region.z/STRUCTURAL NAVIGATOR: next_live_region. Script:r   r   Tr  r  r   r"  r&   rm   Z$StructuralNavigator.next_live_region  sz     DVE>;@5++VT:!&,,V4..vEVX-J-JXcdr%   c               r   r   r   r-   r.   r&   r/   r0     s2       ! 	
 
r%   c                sd   RVRVRV.p\         P                  ! \         P                  VR4       W n        \        P
                  ! 4       P                  R4      '       d+   VP                  e   VP                  P                  4        R# V'       d    VP                  \        P                  4       R# )zGoes to the last live region.z/STRUCTURAL NAVIGATOR: last_live_region. Script:r   r   TZinferLiveRegions)r   r   r:   r1   r   r   r   Zlive_region_managerZgoLastLiveRegionr   r   ZLIVE_REGIONS_OFFr/  r   r&   r   Z%StructuralNavigator._last_live_region  s     DVE>;@5++VT:!&'')556HII))5**;;=  ""8#<#<=r%   c               r>   r  r   r-   r.   r&   r/   r0     s     F F. F=S Fr%   c                	sr   a aa R  oVVV 3R lpS P                  S4      p\        P                  ! VRVR7      # )c                sp    \         P                  ! V 4      '       d   R # \        P                  ! V 4      ^8  # rV  )r   r   r   Zget_character_countrW  r   r&   has_at_least_three_charactersZNStructuralNavigator._get_all_paragraphs.<locals>.has_at_least_three_characters  s.    %%c** --c2Q66r%   c                rY  r)  rZ  )r   r  r   r;   r[  r&   r  Z5StructuralNavigator._get_all_paragraphs.<locals>.pred  s6    }}V$(:(::33A66033r%   Tr  )r   r   Zfind_all_paragraphs)r;   r   r  r   r  r\  r&   _get_all_paragraphsZ'StructuralNavigator._get_all_paragraphs  s4    	7	4
 --f5..tTEEr%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )zGoes to the previous paragraph.z1STRUCTURAL NAVIGATOR: previous_paragraph. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_PARAGRAPHSr   r"  r&   ro   Z&StructuralNavigator.previous_paragraph  r  r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next paragraph.z-STRUCTURAL NAVIGATOR: next_paragraph. Script:r   r   Tr  r  r   r"  r&   rp   Z"StructuralNavigator.next_paragraph  r  r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c           	     r'  )zDisplays a list of paragraphs.z.STRUCTURAL NAVIGATOR: list_paragraphs. Script:r   r   Tc                r(  r)  r*  r+  r,  r&   r-  Z5StructuralNavigator.list_paragraphs.<locals>.<lambda>  r.  r%   r  )	r   r   r:   r1   r  r  r	   ZSN_TITLE_PARAGRAPHZSN_HEADER_PARAGRAPHr/  r0  r&   rq   Z#StructuralNavigator.list_paragraphs  rO  r%   c               r>   r  r   r-   r.   r&   r/   r0          C C^ C@V Cr%   c                	r  r  )r   r   r   r  r   r   Zfind_all_radio_buttonsr  r   r&   _get_all_radio_buttonsZ*StructuralNavigator._get_all_radio_buttons  L    == N$6$66//D --f511$BBr%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                r  )z"Goes to the previous radio button.z4STRUCTURAL NAVIGATOR: previous_radio_button. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_RADIO_BUTTONSr   r"  r&   rr   Z)StructuralNavigator.previous_radio_button  rF  r%   c               r   r   r   r-   r.   r&   r/   r0   1  rD  r%   c                r$  )zGoes to the next radio button.z0STRUCTURAL NAVIGATOR: next_radio_button. Script:r   r   Tr  r  r   r"  r&   rs   Z%StructuralNavigator.next_radio_button0  rG  r%   c               r   r   r   r-   r.   r&   r/   r0   E  r&  r%   c           	     r<  )z!Displays a list of radio buttons.z1STRUCTURAL NAVIGATOR: list_radio_buttons. Script:r   r   Tc                r=  r)  r>  r+  r,  r&   r-  Z8StructuralNavigator.list_radio_buttons.<locals>.<lambda>W  r?  r%   r  )
r   r   r:   r1   r  r  r	   ZSN_TITLE_RADIO_BUTTONZSN_HEADER_RADIO_BUTTONr@  r/  r0  r&   rt   Z&StructuralNavigator.list_radio_buttonsD  s     FvE>;@5++VT:!&!!''/++--y/H/HIY# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   b  s     @ @. @=S @r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_separatorsr  r   r&   _get_all_separatorsZ'StructuralNavigator._get_all_separatorsb  sL    == N$6$66//D --f5..t??r%   c               r   r   r   r-   r.   r&   r/   r0   l  r  r%   c                r  )zGoes to the previous separator.z1STRUCTURAL NAVIGATOR: previous_separator. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_SEPARATORSr   r"  r&   ru   Z&StructuralNavigator.previous_separatork  r  r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next separator.z-STRUCTURAL NAVIGATOR: next_separator. Script:r   r   Tr  r  r   r"  r&   rv   Z"StructuralNavigator.next_separator~  r  r%   c               r>   r  r   r-   r.   r&   r/   r0     s     < <n <9O <r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_tablesr  r   r&   _get_all_tablesZ#StructuralNavigator._get_all_tables  sL    == N$6$66//D --f5**4;;r%   c               r>   )r*   tabler   r+   r   r   r-   r.   r&   r/   r0     s      +; @W r%   c                	s   \         P                  ! V4      '       g   R # \        P                  ! V^ ^ 4      ;p'       d   V# RV.p\        P
                  ! \        P                  VR4       \        P                  ! V\         P                  4      pV'       d,   RVR.p\        P
                  ! \        P                  VR4       R # )Nz0STRUCTURAL NAVIGATOR: Broken table interface forTzSTRUCTURAL NAVIGATOR: Locatedzfor first cell)
r   r   r   Zget_cell_atr   r   r:   r   Zfind_descendantZis_table_cell)r;   r  Zcellr   r   r&   _get_first_table_cellZ)StructuralNavigator._get_first_table_cell  s     ##E**&&ua3343KDeL5++VT:''{/H/HI5t=MNFu//>r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s.   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  V4      ;'       g    TpV P                  W\        P                  VR7       R# )zGoes to the previous table.z-STRUCTURAL NAVIGATOR: previous_table. Script:r   r   TFr  
r   r   r:   r1   r  r   r  r  r   ZNO_MORE_TABLESr;   r   r   r   r   r!  r   r      &&&&    r&   rw   Z"StructuralNavigator.previous_table  s     B6E>;@5++VT:!&&&v...vF((0::FV(*A*A{[r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                s.   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pV P                  WR4      pV P                  V4      ;'       g    TpV P                  W\        P                  VR7       R# )zGoes to the next table.z)STRUCTURAL NAVIGATOR: next_table. Script:r   r   Tr  r  r  r  r&   rx   ZStructuralNavigator.next_table  s     >vE>;@5++VT:!&&&v...vE((0::FV(*A*A{[r%   c               r   r   r   r-   r.   r&   r/   r0     rH  r%   c           	     r<  )zDisplays a list of tables.z*STRUCTURAL NAVIGATOR: list_tables. Script:r   r   Tc                rI  r)  )r   r   Z&get_table_description_for_presentationr+  r,  r&   r-  Z1StructuralNavigator.list_tables.<locals>.<lambda>  s&    ..vs; GGLNr%   r  )
r   r   r:   r1   r  r  r	   ZSN_TITLE_TABLEZSN_HEADER_CAPTIONZSN_HEADER_DESCRIPTIONr/  r0  r&   ry   ZStructuralNavigator.list_tables  s     ?E>;@5++VT:!&!!  ($$(()*I*IJN# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0     s     E E~ EBX Er%   c                	r  r  )r   r   r   r  r   r   Zfind_all_unvisited_linksr  r   r&   _get_all_unvisited_linksZ,StructuralNavigator._get_all_unvisited_links  r}  r%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                r  )z$Goes to the previous unvisited link.z6STRUCTURAL NAVIGATOR: previous_unvisited_link. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_UNVISITED_LINKSr   r"  r&   r}   Z+StructuralNavigator.previous_unvisited_link  s     KFE>;@5++VT:!&//7..vFH<<+ 	 	Wr%   c               r   r   r   r-   r.   r&   r/   r0     rD  r%   c                r$  )z Goes to the next unvisited link.z2STRUCTURAL NAVIGATOR: next_unvisited_link. Script:r   r   Tr  r  r   r"  r&   r~   Z'StructuralNavigator.next_unvisited_link  s     GE>;@5++VT:!&//7..vEH<<+ 	 	Wr%   c               r   r   r   r-   r.   r&   r/   r0   /  r&  r%   c           	     r<  )z#Displays a list of unvisited links.z3STRUCTURAL NAVIGATOR: list_unvisited_links. Script:r   r   Tc                rI  r)  r   r   get_link_urir+  r,  r&   r-  Z:StructuralNavigator.list_unvisited_links.<locals>.<lambda>A  #    ..vs;[=U=UVY=Z[r%   r  )
r   r   r:   r1   r  r  r	   ZSN_TITLE_UNVISITED_LINKSN_HEADER_LINKSN_HEADER_URIr/  r0  r&   r   Z(StructuralNavigator.list_unvisited_links.  s     HE>;@5++VT:!&!!))&1--%%y'>'>?[# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0   L  r  r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_visited_linksr  r   r&   _get_all_visited_linksZ*StructuralNavigator._get_all_visited_linksL  r  r%   c               r   r   r   r-   r.   r&   r/   r0   V  rD  r%   c                r  )z"Goes to the previous visited link.z4STRUCTURAL NAVIGATOR: previous_visited_link. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_VISITED_LINKSr   r"  r&   r   Z)StructuralNavigator.previous_visited_linkU  rF  r%   c               r   r   r   r-   r.   r&   r/   r0   j  rD  r%   c                r$  )zGoes to the next visited link.z0STRUCTURAL NAVIGATOR: next_visited_link. Script:r   r   Tr  r  r   r"  r&   r   Z%StructuralNavigator.next_visited_linki  rG  r%   c               r   r   r   r-   r.   r&   r/   r0   ~  r&  r%   c           	     r<  )z!Displays a list of visited links.z1STRUCTURAL NAVIGATOR: list_visited_links. Script:r   r   Tc                rI  r)  r  r+  r,  r&   r-  Z8StructuralNavigator.list_visited_links.<locals>.<lambda>  r  r%   r  )
r   r   r:   r1   r  r  r	   ZSN_TITLE_VISITED_LINKr  r  r/  r0  r&   r   Z&StructuralNavigator.list_visited_links}  s     FvE>;@5++VT:!&!!''/++%%y'>'>?[# 	" 	
 r%   c               r>   r  r   r-   r.   r&   r/   r0     s     ; ;^ ;8N ;r%   c                	r  r  )r   r   r   r  r   r   Zfind_all_linksr  r   r&   _get_all_linksZ"StructuralNavigator._get_all_links  sL    == N$6$66//D --f5))$::r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )zGoes to the previous link.z,STRUCTURAL NAVIGATOR: previous_link. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_LINKSr   r"  r&   rz   Z!StructuralNavigator.previous_link  sz     A&E>;@5++VT:!&%%f-..vFVX-C-CQ\]r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next link.z(STRUCTURAL NAVIGATOR: next_link. Script:r   r   Tr  r  r   r"  r&   r{   ZStructuralNavigator.next_link  sy     =fE>;@5++VT:!&%%f-..vEVX-C-CQ\]r%   c               r   r   r   r-   r.   r&   r/   r0     r_  r%   c           	     r`  )zDisplays a list of links.z)STRUCTURAL NAVIGATOR: list_links. Script:r   r   Tc                st   < SP                  SV 4      SP                  V 4      \        P                  ! V 4      .# r)  )r   r   r   r  r+  r,  r&   r-  Z0StructuralNavigator.list_links.<locals>.<lambda>  s3    ..vs;//4$11#68r%   r  )r   r   r:   r1   r  r  r	   ZSN_TITLE_LINKr  r@  r  r/  r0  r&   r|   ZStructuralNavigator.list_links  s     >vE>;@5++VT:!&!!'##%%y'@'@)BYBYZ8 $ 	" 		
 r%   c               r>   r  r   r-   r.   r&   r/   r0     s      . =S r%   c                	s    R pV P                  V4      \        P                  8X  d   V P                  pV P	                  V4      p\
        P                  ! W2R7      pV\
        P                  ! W2R7      ,          pV# r  )r   r   r   r  r   r   Zfind_all_clickablesZ.find_all_focusable_objects_with_click_ancestor)r;   r   r  r   r      &&   r&   _get_all_clickablesZ'StructuralNavigator._get_all_clickables  sc    == N$6$66//D--f500A+LLT]]r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r  )zGoes to the previous clickable.z1STRUCTURAL NAVIGATOR: previous_clickable. Script:r   r   TFr  	r   r   r:   r1   r  r   r  r   ZNO_MORE_CLICKABLESr   r"  r&   r   Z&StructuralNavigator.previous_clickable  r  r%   c               r   r   r   r-   r.   r&   r/   r0     r  r%   c                r$  )zGoes to the next clickable.z-STRUCTURAL NAVIGATOR: next_clickable. Script:r   r   Tr  r  r   r"  r&   r   Z"StructuralNavigator.next_clickable  r  r%   c               r   r   r   r-   r.   r&   r/   r0     r&  r%   c                s  a a RSRVRV.p\         P                  ! \         P                  VR4       VS n        S P	                  SS P                  S4      \        P                  \        P                  \        P                  .VV 3R l4       R# )zDisplays a list of clickables.z.STRUCTURAL NAVIGATOR: list_clickables. Script:r   r   Tc                rI  r)  rJ  r+  r,  r&   r-  Z5StructuralNavigator.list_clickables.<locals>.<lambda>-  rK  r%   )
r   r   r:   r1   r  r  r	   ZSN_TITLE_CLICKABLEZSN_HEADER_CLICKABLErL  r/  r0  r&   r   Z#StructuralNavigator.list_clickables  s     CFE>;@5++VT:!&!!$$V,((**I,D,DEC	
 r%   c               r>   )r*   r   r   r+   r   r   r-   r.   r&   r/   r0   8  s      ^ @W r%   c                	s   \         P                  ! 4       P                  4       p\        P                  ! V\
        P                  4      ;p'       d0   V P                  V4      p\        P                  ! W44      '       g   R # V# r)  )	r   r   r   r   r  r   Zis_large_containerr   Zis_ancestor)r;   r   r  	containerr   r  r&   _get_current_containerZ*StructuralNavigator._get_current_container8  sa    ))+>>@ 88@^@^__9_11&9D''	88r%   c               r   r   r   r-   r.   r&   r/   r0   A  r&  r%   c                sJ   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pVf*   V'       d    VP                  \        P                  4       R# VP                  P                  VR4      w  rgV P                  WWs4       R# )z,Moves to the start of the current container.z.STRUCTURAL NAVIGATOR: container_start. Script:r   r   Tr   )r   r   r:   r1   r  r   r   CONTAINER_NOT_IN_Ar   next_contextr  )r;   r   r   r   r   r  r   r   r  r&   r   Z#StructuralNavigator.container_start@  s     CFE>;@5++VT:!&//7	&&x'B'BC&&33IrB6<r%   c               r   r   r   r-   r.   r&   r/   r0   Y  s2       ! 	
 
r%   c                s   RVRVRV.p\         P                  ! \         P                  VR4       W n        V P	                  V4      pVf*   V'       d    VP                  \        P                  4       R# VP                  P                  V4      w  rgVP                  P                  Wg4      w  rVf   YgrV P                  WW4       R# )z*Moves to the end of the current container.z,STRUCTURAL NAVIGATOR: container_end. Script:r   r   T)r   r   r:   r1   r  r   r   r  r   Zlast_contextr  r  )
r;   r   r   r   r   r  r   r   Znext_objectZnext_offsets
   &&&&      r&   r   Z!StructuralNavigator.container_endX  s     A&E>;@5++VT:!&//7	&&x'B'BC &&33I>#)#3#3#@#@#M '*6Ir%   )r6   r4   r1   r7   r8   r2   )F)FT)r   )NT)NNTrV  r)  )r   r    r!   r"   r#   r=   r3   rA   r   r   r   r   r   r   r   r   r   r   r   Zgetterr   Zsetterr   r   r   r   r   r   r   Zcommandr   r   r   r   r   r  r   r
  r  r  r   r  r  rE   rF   rG   r1  rH   rI   rJ   r7  rK   rL   rM   rC  r   r   r   rM  rN   rO   rP   rR  rQ   rR   rS   r]  rT   rU   rV   rb  rW   rX   rY   rf  rh  rk  rm  rn  ro  rp  rq  rr  rs  rt  ru  rv  rw  rx  ry  rz  r{  r|  r]   r^   r_   r  r`   ra   rb   r  r  rc   rd   re   r  r  rf   rg   rh   r  ri   rj   rk   r  rl   rm   r   r  ro   rp   rq   r  rr   rs   rt   r  ru   rv   r  r  rw   rx   ry   r  r}   r~   r   r  r   r   r   r  rz   r{   r|   r  r   r   r   r  r   r   r$   r   r%   r&   r'   r'   P   s   LJ  s9j L
9\U(2? ?8? ?2* * Y Y
   S S
   Y Y
  B X X
 	 	 % %NUL L\>.`% %< (,!)!I!I! &BPL L0  B  $  $  :=  $  $  :A  $  $  :K  &  &  <A  $  $  :F  $  $  :A  $  $  >N N  $  $  0  &  &  .  &  &  .  &  &  .  &  &  .  &  &  .  &  &  :E  $  $  :K  $  $  :?+  $  $  <U*  &  &  :P  $  $  :B  &  $ 4F"  $  $  :C  &  &  :@  $  0<,  &  &  <E  &  &  :C   &   &   :;   $   $   >   $   $   :   .   r%   r'   c               r(   )r*   r+   r'   r   r-   r.   r&   r/   r/   w  s      * r%   c                 s    \         # )z Returns the Structural Navigator)
_navigatorr   r%   r&   get_navigatorr  w  s
     r%   )2r#   Z
__future__r    Z__id__Z__version__Z__date__Z__copyright__Z__license__Zenumr   Ztypingr   r   ZgiZrequire_versionZgi.repositoryr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   Zax_hypertextr   Z	ax_objectr   Zax_tabler   Zax_textr   Zax_utilitiesr   Zinput_eventr   r   Zscriptsr   r   r'   r  r  r   r%   r&   <module>r     s   > ( #	7  * 	   7E "       !        %    % 6 T d8 d8Lq !"
r%   