+
    Qi?  c                  sD  a  0 t $ R t^ RIHt RtRtRtRtRt^ RI	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 ]
'       d   ^RIHt  ! R R4      t]! 4       t R]!R&   R R lt"R# )4Provides ability to navigate objects hierarchically.)annotationsz$Id$z
$Revision$z$Date$z Copyright (c) 2023 The Orca TeamZLGPL)TYPE_CHECKINGNAtspiz2.0)r   )cmdnames)dbus_service)debug)focus_manager)input_event)keybindings)messages)AXEventSynthesizer)AXObject)AXUtilities)defaultc                  s   ] tR t^6tRtR R ltR(R R lltR)R R lltR R	 ltR
 R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR*R R llt]P$                  R+R R ll4       t]P$                  R+R R ll4       t]P$                  R+R R  ll4       t]P$                  R+R! R" ll4       t]P$                  R+R# R$ ll4       t]P$                  R+R% R& ll4       tR'tR# ),ObjectNavigatorr    c                   V ^8  d   QhRR/#    returnNone Zformat   ":/usr/lib/python3.14/site-packages/orca/object_navigator.py__annotate__ObjectNavigator.__annotate__9   s     F F$ F    c                	s<   R V n         R V n        R V n        RV n        V P	                  R4      V n        \        P                  ! 4       V n        Rp\        P                  ! \        P                  VR4       \        P                  ! 4       pVP                  RV 4       R # )NTz-OBJECT NAVIGATOR: Registering D-Bus commands.r   )_navigator_focus_last_navigator_focus_last_locus_of_focus	_simplifyget_handlers	_handlersr	   KeyBindings	_bindingsr   print_message
LEVEL_INFOr   Zget_remote_controllerZregister_decorated_module)selfmsgZ
controllers   &  r   __init__ZObjectNavigator.__init__9   s    9=>B"=A!##0062=2I2I2K=E,,c48!779
,,->Er   c               s$    V ^8  d   QhRRRRRR/# )r   refreshbool
is_desktopr   zkeybindings.KeyBindingsr   r   r   r   r   r   F   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 object-navigator keybindings.z3OBJECT NAVIGATOR: Refreshing bindings. Is desktop: Tz&OBJECT NAVIGATOR: Refreshing bindings.)r   r$   r%   r#   Zremove_key_grabs_setup_bindingsZis_empty)r&   r)   r+   r'      &&& r   get_bindingsZObjectNavigator.get_bindingsF   s    
 G
|TC 0 0#t<NN++,TU  " ~~ ^^$$&&  "~~r   c                    V ^8  d   QhRRRR/# )r   r)   r*   r   z(dict[str, input_event.InputEventHandler]r   r   r   r   r   r   U   s      D 5] r   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z&Returns the object-navigator handlers.z&OBJECT NAVIGATOR: Refreshing handlers.T)r   r$   r%   _setup_handlersr!   )r&   r)   r'   s   && r   r    ZObjectNavigator.get_handlersU   s:     :C 0 0#t<  "~~r   c               r   r   r   r   r   r   r   r   _   s     09 09 09r   c           	     s   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       V P                  P                  \         P                  ! R	\         P
                  \         P                  V P                  R
,          4      4       V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          4      4       Rp\        P                  ! \        P                  VR4       R# )z*Sets up the object-navigator key bindings.ZUpobject_navigator_upZDownobject_navigator_downZRightobject_navigator_nextZLeftobject_navigator_previousZReturnobject_navigator_perform_actionZs object_navigator_toggle_simplifyz"OBJECT NAVIGATOR: Bindings set up.TN)r	   r"   r#   ZaddZ
KeyBindingZDEFAULT_MODIFIER_MASKZORCA_CTRL_MODIFIER_MASKr!   r   r$   r%   r&   r'      & r   r,   ZObjectNavigator._setup_bindings_   s    %002""113345	7	8 	""113367	9	: 	""113367	9	: 	""1133:;	=	> 	""1133@A	C	D 	""1133AB	D	E 3E,,c48r   c               r   r   r   r   r   r   r   r      s     $9 $9 $9r   c                s4   / V n         \        P                  ! V P                  \        P
                  4      V P                   R&   \        P                  ! V P                  \        P                  4      V P                   R&   \        P                  ! V P                  \        P                  4      V P                   R&   \        P                  ! V P                  \        P                  4      V P                   R&   \        P                  ! V P                  \        P                  4      V P                   R&   \        P                  ! V P                  \        P                  4      V P                   R&   Rp\         P"                  ! \         P$                  VR4       R	# )
z2Sets up the object-navigator input event handlers.r1   r2   r3   r4   r5   r6   z"OBJECT NAVIGATOR: Handlers set up.TN)r!   r   ZInputEventHandlermove_to_parentr   ZNAVIGATOR_UPmove_to_first_childZNAVIGATOR_DOWNmove_to_next_siblingZNAVIGATOR_NEXTmove_to_previous_siblingZNAVIGATOR_PREVIOUSperform_actionZNAVIGATOR_PERFORM_ACTIONtoggle_simplifyZNAVIGATOR_TOGGLE_SIMPLIFIEDr   r$   r%   r7   r8   r   r0   ZObjectNavigator._setup_handlers   sP     ))##%%' 	,- ))(('') 	./ ))))'') 	./ ))--++- 	23 ))##113 	89 ))$$446 	9:
 3E,,c48r   c               r/   )r   objAtspi.Accessibler   r*   r   r   r   r   r   r      s     - -1A -d -r   c                s.    \         P                  ! V4      # )z<Returns True if obj should be included in simple navigation.)r   Zis_paragraphr&   r?      &&r   _include_in_simple_navigationZ-ObjectNavigator._include_in_simple_navigation   s     '',,r   c               $    V ^8  d   QhRRRRRR/# )r   _scriptdefault.Scriptr?   r@   r   r*   r   r   r   r   r   r      s$      %,<	r   c                st   V P                  V4      '       d.   RVR.p\        P                  ! \        P                  VR4       R# \        P
                  ! V4      '       d.   RVR.p\        P                  ! \        P                  VR4       R# RV.p\        P                  ! \        P                  VR4       R# )z>Returns True if obj should be excluded from simple navigation.zOBJECT NAVIGATOR: Not excludingz: explicit inclusionTFzOBJECT NAVIGATOR: Excludingz: is layout only)rC   r   print_tokensr%   r   Zis_layout_only)r&   rE   r?   tokensr-   r   _exclude_from_simple_navigationZ/ObjectNavigator._exclude_from_simple_navigation   s    
 --c227>TUFu//> %%c**3S:LMFu//>3S95++VT:r   c               rD   )r   scriptrF   r?   r@   r   listr   r   r   r   r   r      s"     # # #5E #$ #r   c                sR   \         P                  ! V4      '       g   . # \        \         P                  ! V4      4      pV P                  '       g   V# . pV FM  pV P                  W4      '       d#   VP                  V P                  W4      4       K<  VP                  V4       KO  	  V# )zJReturns a list of children for obj, taking simple navigation into account.)	r   Zget_child_countrK   Ziter_childrenr   rI   Zextend	_childrenZappend)r&   rJ   r?   childrenZfunctional_childrenZchilds   &&&   r   rL   ZObjectNavigator._children   s     '',,I..s34~~~O !E33FBB#**4>>&+HI#**51	  #"r   c               rD   )r   rJ   rF   r?   r@   r   zAtspi.Accessible | Noner   r   r   r   r   r      s#      n 3C H_ r   c                s    \         P                  ! V4      pV P                  '       g   V# Ve0   V P                  W4      '       d   \         P                  ! V4      pK3  V# )zBReturns the parent for obj, taking simple navigation into account.)r   Z
get_parentr   rI   )r&   rJ   r?   parentr-   r   _parentZObjectNavigator._parent   sO     $$S)~~~M  T%I%I&%Y%Y((0Fr   c               r/   )r   r?   r@   r   r   r   r   r   r   r   r      s     $ $(8 $T $r   c                s4    V P                   V n        Wn         R# )z8Changes the navigator focus, storing the previous focus.N)r   r   rA   rB   r   _set_navigator_focusZ$ObjectNavigator._set_navigator_focus   s     &*%:%:" #r   c               r   r   r   r   r   r   r   r      s     
( 
( 
(r   c                s   \         P                  ! 4       P                  4       w  rT;'       g$    \         P                  ! 4       P                  4       pV P                  V8X  g   Vf   V\         P
                  8X  d   R# W0n        W0n        R# )z9Updates the navigator focus to Orca's object of interest.N)r   get_managerZ&get_active_mode_and_object_of_interestZget_locus_of_focusr   ZFLAT_REVIEWr   )r&   modeZregionr?   s   &   r   _updateZObjectNavigator._update   sk     %002YY[HH113FFH$$+~$-*C*C"C #$'!r   c               rD   )r   rJ   rF   notify_userr*   r   r   r   r   r   r   r   r   	  s&     Z Z~ ZD ZD Zr   c                s   RV P                   .p\        P                  ! \        P                  VR4       \        P
                  ! 4       P                  V P                   \        P                  R7       V'       g+   Rp\        P                  ! \        P                  VR4       R# VP                  V P                   V P                  R7       R# )z1Presents the current navigator focus to the user.zOBJECT NAVIGATOR: PresentingT)rR   z8OBJECT NAVIGATOR: _present called with notify_user=FalseN)ZpriorObj)r   r   rG   r%   r   rQ   Zemit_region_changedZOBJECT_NAVIGATORr$   Zpresent_objectr   )r&   rJ   rT   rH   r'   s   &&&  r   _presentZObjectNavigator._present	  s     1$2G2GH5++VT:!!#77!!(F(F 	8 	HLC 0 0#t<d33d>X>XYr   Nc               (    V ^8  d   QhRRRRRRRR/# r   rJ   rF   eventzinput_event.InputEvent | NonerT   r*   r   r   r   r   r   r   r     s2       - 	
 
r   c                sV   RVRVRV.p\         P                  ! \         P                  VR4       V P                  4        V P	                  WP
                  4      pVe%   V P                  V4       V P                  W4       R# V'       d    VP                  \        P                  4       R# )z=Moves the navigator focus to the parent of the current focus.z)OBJECT NAVIGATOR: move_to_parent. Script:Event:notify_user:T)r   rG   r%   rS   rO   r   rP   rU   present_messager
   ZNAVIGATOR_NO_PARENT)r&   rJ   rX   rT   rH   rN      &&&&  r   r9   ZObjectNavigator.move_to_parent  s     >vE>;@5++VT:f&;&;<%%f-MM&.  ""8#?#?@r   c               rV   rW   r   r   r   r   r   r   .  s2       - 	
 
r   c                sl   RVRVRV.p\         P                  ! \         P                  VR4       V P                  4        V P	                  WP
                  4      pV'       g*   V'       d    VP                  \        P                  4       R# V P                  V^ ,          4       V P                  W4       R# )zBMoves the navigator focus to the first child of the current focus.z.OBJECT NAVIGATOR: move_to_first_child. Script:rY   rZ   T)r   rG   r%   rS   rL   r   r[   r
   ZNAVIGATOR_NO_CHILDRENrP   rU   )r&   rJ   rX   rT   rH   rM   r\   r   r:   Z#ObjectNavigator.move_to_first_child-  s     CFE>;@5++VT:>>&*?*?@&&x'E'EF!!(1+.f*r   c               rV   rW   r   r   r   r   r   r   F  2       - 	
 
r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       V P                  4        V P	                  WP
                  4      pVf*   V'       d    VP                  \        P                  4       R# V P                  W4      pV P
                  V9   d   VP                  V P
                  4      pV\        V4      ^,
          8  d2   V P                  Wg^,           ,          4       V P                  W4       R# V'       d    VP                  \        P                  4       R# V P                  V4       V P                  W4       R# )zCMoves the navigator focus to the next sibling of the current focus.z/OBJECT NAVIGATOR: move_to_next_sibling. Script:rY   rZ   T)r   rG   r%   rS   rO   r   r[   r
   ZNAVIGATOR_NO_NEXTrL   indexZlenrP   rU   r&   rJ   rX   rT   rH   rN   Zsiblingsr^      &&&&    r   r;   Z$ObjectNavigator.move_to_next_siblingE  s    DVE>;@5++VT:f&;&;<>&&x'A'AB>>&1  H,NN4#8#89Es8}q(())(7*;<f2  &&x'A'AB  %%f-MM&.r   c               rV   rW   r   r   r   r   r   r   g  r]   r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       V P                  4        V P	                  WP
                  4      pVf*   V'       d    VP                  \        P                  4       R# V P                  W4      pV P
                  V9   d}   VP                  V P
                  4      pV^ 8  d2   V P                  Wg^,
          ,          4       V P                  W4       R# V'       d    VP                  \        P                  4       R# V P                  V4       V P                  W4       R# )zGMoves the navigator focus to the previous sibling of the current focus.z3OBJECT NAVIGATOR: move_to_previous_sibling. Script:rY   rZ   T)r   rG   r%   rS   rO   r   r[   r
   ZNAVIGATOR_NO_PREVIOUSrL   r^   rP   rU   r_   r`   r   r<   Z(ObjectNavigator.move_to_previous_siblingf  s	    HE>;@5++VT:f&;&;<>&&x'E'EF>>&1  H,NN4#8#89Eqy))(7*;<f2  &&x'E'EF  %%f-MM&.r   c               rV   rW   r   r   r   r   r   r     s2       - 	
 
r   c                sB   RVRVRV.p\         P                  ! \         P                  VR4       V P                  '       * V n        V'       dS   V P                  '       d"   VP	                  \
        P                  4       R# VP	                  \
        P                  4       R# )zToggles simplified navigation.z*OBJECT NAVIGATOR: toggle_simplify. Script:rY   rZ   T)r   rG   r%   r   r[   r
   ZNAVIGATOR_SIMPLIFIED_ENABLEDZNAVIGATOR_SIMPLIFIED_DISABLEDr&   rJ   rX   rT   rH      &&&& r   r>   ZObjectNavigator.toggle_simplify  s~     ?E>;@5++VT:!^^+~~~&&x'L'LM  &&x'M'MNr   c               rV   rW   r   r   r   r   r   r     s2       - 	
 
r   c                s    RVRVRV.p\         P                  ! \         P                  VR4       \        P                  ! V P
                  4      '       d   R# \        P                  ! V P
                  ^4       R# )z'Attempts to click on the current focus.z)OBJECT NAVIGATOR: perform_action. Script:rY   rZ   T)r   rG   r%   r   Ztry_all_clickable_actionsr   Zclick_objectra   rb   r   r=   ZObjectNavigator.perform_action  se     >vE>;@5++VT:778M8MNN''(=(=qAr   )r#   r!   r   r   r   r   )FT)F)T)NT)Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r(   r.   r    r,   r0   rC   rI   rL   rO   rP   rS   rU   r   Zcommandr9   r:   r;   r<   r>   r=   Z__static_attributes__r   r   r   r   r   6   s    >F09d$9L-
4#($
(Z  *  .  @  @  (  r   r   
_navigatorc               r   )r   r   r   r   r   r   r   r   r     s       r   c                 s    \         # )zReturns the Object Navigator)rd   r   r   r   get_navigatorre     s
     r   )#__conditional_annotations__rc   Z
__future__r   Z__id__Z__version__Z__date__Z__copyright__Z__license__Ztypingr   ZgiZrequire_versionZgi.repositoryr   Z r   r   r   r   r   r	   r
   Zax_event_synthesizerr   Z	ax_objectr   Zax_utilitiesr   Zscriptsr   r   rd   Z__annotations__re   )rf   s   @r   <module>rg      s   . ; #2   	   7E "         4  % w wt ./
O /r   