+
    Qi}  c                  sJ   R t ^ RIHt RtRtRtRtR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 ]	'       d$   ^ RIt]P4                  ! RR4       ^ RIHt ^RIHt  ! R R4      t]! 4       t R R lt!R# )z3Provides an Orca-controlled caret for text content.)annotationsz$Id$z
$Revision$z$Date$z$Copyright (c) 2013-2025 Igalia, S.L.ZLGPL)TYPE_CHECKING)cmdnames)dbus_service)debug)focus_manager)input_event)input_event_manager)keybindings)messages)script_manager)settings_manager)AXObject)AXTextNAtspiz2.0)r   )defaultc                  s   ] tR t^9tRtR R ltRAR R lltRBR R lltR R	 ltR
 R lt	R 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R R ltR R ltR R ltR R ltRCR R lltRCR R  lltRCR! R" llt]P2                  RDR$ R% ll4       tRCR& R' lltRER( R) lltRER* R+ llt]P2                  RDR, R- ll4       t]P2                  RDR. R/ ll4       t]P2                  RDR0 R1 ll4       t ]P2                  RDR2 R3 ll4       t!]P2                  RDR4 R5 ll4       t"]P2                  RDR6 R7 ll4       t#]P2                  RDR8 R9 ll4       t$]P2                  RDR: R; ll4       t%]P2                  RDR< R= ll4       t&]P2                  RDR> R? ll4       t'R@t(R## )FCaretNavigatorz=Implements the caret navigation support available to scripts.c                   V ^8  d   QhRR/#    returnNone Zformat   "9/usr/lib/python3.14/site-packages/orca/caret_navigator.py__annotate__CaretNavigator.__annotate__<   s     E E$ E    c                	s.   R V n         V P                  R4      V n        \        P                  ! 4       V n        RV n        / V n        Rp\        P                  ! \        P                  VR4       \        P                  ! 4       pVP                  RV 4       R# )FTNz,CARET NAVIGATOR: Registering D-Bus commands.r   )
_suspendedget_handlers	_handlersr   KeyBindings	_bindings_last_input_event_enabled_for_scriptr   print_message
LEVEL_INFOr   Zget_remote_controllerZregister_decorated_module)selfmsgZ
controller   &  r   __init__ZCaretNavigator.__init__<   sz     !&CGCTCTUYCZ2=2I2I2K@D?A <E,,c48!779
,,-=tDr   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   J   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 caret-navigation keybindings.z2CARET NAVIGATOR: Refreshing bindings. Is desktop: Tz%CARET NAVIGATOR: Refreshing bindings.)r   r$   r%   r!   Zremove_key_grabs_setup_bindingsZis_empty)r&   r*   r,   r'      &&& r   get_bindingsZCaretNavigator.get_bindingsJ   s    
 FzlSC 0 0#t<NN++,ST  " ~~ ^^$$&&  "~~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   Y   s      D 5] r   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z&Returns the caret-navigation handlers.z%CARET NAVIGATOR: Refreshing handlers.T)r   r$   r%   _setup_handlersr   )r&   r*   r'      && r   r   ZCaretNavigator.get_handlersY   s:     9C 0 0#t<  "~~r   c               r   r   r   r   r   r   r   r   c   s     J9 J9 J9r   c                sB   / V n         \        P                  ! V P                  \        P
                  V P                  '       * R7      V P                   R&   V P                  4       ;'       d    V P                  '       * p\        P                  ! V P                  \        P                  VR7      V P                   R&   \        P                  ! V P                  \        P                  VR7      V P                   R&   \        P                  ! V P                  \        P                  VR7      V P                   R&   \        P                  ! V P                  \        P                  VR7      V P                   R&   \        P                  ! V P                   \        P"                  VR7      V P                   R&   \        P                  ! V P$                  \        P&                  VR7      V P                   R&   \        P                  ! V P(                  \        P*                  VR7      V P                   R	&   \        P                  ! V P,                  \        P.                  VR7      V P                   R
&   \        P                  ! V P0                  \        P2                  VR7      V P                   R&   \        P                  ! V P4                  \        P6                  VR7      V P                   R&   RV P                   2p\8        P:                  ! \8        P<                  VR4       R# )z2Sets up the caret-navigation input event handlers.)enabledtoggle_enablednext_characterprevious_character	next_wordprevious_word	next_lineprevious_linestart_of_fileend_of_filestart_of_lineend_of_linez-CARET NAVIGATOR: Handlers set up. Suspended: TN)r   r   ZInputEventHandlerr4   r   ZCARET_NAVIGATION_TOGGLEr   get_is_enabledr5   ZCARET_NAVIGATION_NEXT_CHARr6   ZCARET_NAVIGATION_PREV_CHARr7   ZCARET_NAVIGATION_NEXT_WORDr8   ZCARET_NAVIGATION_PREV_WORDr9   ZCARET_NAVIGATION_NEXT_LINEr:   ZCARET_NAVIGATION_PREV_LINEr;   ZCARET_NAVIGATION_FILE_STARTr<   ZCARET_NAVIGATION_FILE_ENDr=   ZCARET_NAVIGATION_LINE_STARTr>   ZCARET_NAVIGATION_LINE_ENDr   r$   r%   r&   r3   r'   r(   r   r1   ZCaretNavigator._setup_handlersc   s     ))##00"oo-/ 	'( %%'??,? ))##33!# 	'( ))''33!# 	+, ))33!# 	{# ))""33!# 	' ))33!# 	{# ))""33!# 	' ))""44!# 	' ))  22!# 	}% ))""44!# 	' ))  22!# 	}% >doo=NOE,,c48r   c               r   r   r   r   r   r   r   r      s     o9 o9 o9r   c           
     s	   \         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       \        P                  ! 4       P                  V P                  V P                  R4      V n        RV P                   2p\        P                   ! \        P"                  VR4       R# )z*Sets up the caret-navigation key bindings.ZF12r4   ZRightr5   ZLeftr6   r7   r8   ZDownr9   ZUpr:   ZEndr>   ZHomer=   r<   r;   Fz-CARET NAVIGATOR: Bindings set up. Suspended: TN)r   r    r!   addZ
KeyBindingZDEFAULT_MODIFIER_MASKZORCA_MODIFIER_MASKr   r   r?   ZNO_MODIFIER_MASKZCTRL_MODIFIER_MASKr   get_managerZoverride_key_bindingsr   r$   r%   r@   r(   r   r-   ZCaretNavigator._setup_bindings   s    %002""11../0OO#%	& %%'??,?""11,,/0	 	""11,,34	 	""11..{+	 	""11../	 	""11,,{+	 	""11,,/	 	""11,,}-	 	""11,,/	 	""11..}-	 	""11../	 *557MMNNDNNE3 >doo=NO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CARET NAVIGATOR:zis not the active scriptF)r
   rB   get_active_scriptr   print_tokensr%   )r&   scriptZactive_scripttokens   &&  r   _is_active_scriptZ CaretNavigator._is_active_script   sL    &224FFH"$f.H-X5++VT:r   c               r   r   r   r+   r   r   r   r   r   r   *  s     T T Tr   c                J    \         P                  ! 4       P                  R4      # )z,Returns whether caret navigation is enabled.caretNavigationEnabledr   rB   get_settingr&      &r   r?   ZCaretNavigator.get_is_enabled)  s      ++-99:RSSr   c                    V ^8  d   QhRRRR/# r   valuer+   r   r   r   r   r   r   r   0  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       RV n        \        P
                  ! 4       P                  4       ;p'       d   V P                  W24       R# )z)Sets whether caret navigation is enabled.Tz$CARET NAVIGATOR: Setting enabled to .rL   N)r?   r   r$   r%   r   rB   set_settingr"   r
   rD   refresh_bindings_and_grabs)r&   rS   r'   rF   rH   r   set_is_enabledZCaretNavigator.set_is_enabled/  s      E)4UG1=E,,c48$$&223KUS!%#//1CCEE6E++F8r   c               r   rJ   r   r   r   r   r   r   A  s     W W Wr   c                rK   )z5Returns whether caret navigation triggers focus mode.caretNavTriggersFocusModerM   rO   rP   r   get_triggers_focus_modeZ&CaretNavigator.get_triggers_focus_mode@  s      ++-99:UVVr   c               rQ   rR   r   r   r   r   r   r   G  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# )z2Sets whether caret navigation triggers focus mode.Tz0CARET NAVIGATOR: Setting triggers focus mode to rT   rX   )rY   r   r$   r%   r   rB   rU   )r&   rS   r'   r2   r   set_triggers_focus_modeZ&CaretNavigator.set_triggers_focus_modeF  s\     '')U2@qIE,,c48$$&223NPUVr   c               r0   )r   rF   default.Scriptr   r+   r   r   r   r   r   r   R  s      ^  r   c                s    V P                   P                  VR4      pRVRV 2.p\        P                  ! \        P                  VR4       V# )zIReturns the current caret-navigator enabled state associated with script.Fz"CARET NAVIGATOR: Enabled state forzis T)r#   Zgetr   rE   r%   r&   rF   r3   rG   rH   r   get_enabled_for_scriptZ%CaretNavigator.get_enabled_for_scriptR  sK     **..vu=6#gYP5++VT:r   c               $    V ^8  d   QhRRRRRR/# )r   rF   r[   r3   r+   r   r   r   r   r   r   r   r   Z  s!     
% 
%^ 
%d 
%t 
%r   c                s    RVRV 2.p\         P                  ! \         P                  VR4       W P                  V&   V'       d   V P	                  V4      '       g   R# V P                  V4       R# )zFSets the current caret-navigator enabled state associated with script.z*CARET NAVIGATOR: Setting enabled state forzto TN)r   rE   r%   r#   rI   rW   r\   r.   r   set_enabled_for_scriptZ%CaretNavigator.set_enabled_for_scriptZ  s`     ?#gYX5++VT:+2  (411&99G$r   c               r   rJ   r   r   r   r   r   r   f  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(CARET NAVIGATOR: Last navigation event (z) is last input event: T)r"   r   rB   Z)last_event_equals_or_is_release_for_eventZas_single_line_stringr   r$   r%   )r&   ZmanagerZresultstringr'   s   &    r   'last_input_event_was_navigation_commandZ6CaretNavigator.last_input_event_was_navigation_commandf  s     !!)%113BB4CYCYZ!!-++AACFF8@WX^W_`E,,c48r   c               r   rJ   r   r   r   r   r   r   w  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)ra   rY   rO   rP   r    last_command_prevents_focus_modeZ/CaretNavigator.last_command_prevents_focus_modew  s(     ;;==//111r   c               r^   r   rF   r[   reasonstrr   r   r   r   r   r   r   r     s"     	* 	* 	* 	*VZ 	*r   c                s    RpV'       d   VRV 2,          p\         P                  ! \         P                  VR4       V P                  W4       V P	                  W4       R# )z9Refreshes caret navigation bindings and grabs for script.z.CARET NAVIGATOR: Refreshing bindings and grabs: TN)r   r$   r%   remove_bindingsadd_bindings)r&   rF   rd   r'   r.   r   rV   Z)CaretNavigator.refresh_bindings_and_grabs  sP     ?Rx= CE,,c48V,&)r   c               r^   rc   r   r   r   r   r   r     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V.p\        P                  ! \        P                  VR4       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 caret navigation bindings for script.z$CARET NAVIGATOR: Adding bindings forrf   Tz:CARET NAVIGATOR: Not adding bindings for non-active scriptNrC   had z$ key grabs prior to adding bindings.Zinclude_grabsnow has  key grabs.)appendr   rE   r%   rI   
debugLevelkey_bindings%get_bindings_with_grabs_for_debugginglenr   r   r/   r!   rA   r   r&   rF   rd   rG   Z	has_grabsZbinding   &&&   r   rh   ZCaretNavigator.add_bindings  s    9&AMMBvh-(5++VT:411&99RTZ[Fu//>u///++QQSI(&S^,,PQSFu//>**40**40~~22G##G;N#O 3 u///++QQSI(&HS^<LK2XYFu//> 0r   c               r^   rc   r   r   r   r   r   r     s!     ? ?n ?c ?4 ?r   c                st   RV.pV'       d   VP                  RV 24       \        P                  ! \        P                  VR4       V'       d   V P	                  V4      '       g-   RV.p\        P                  ! \        P                  VR4       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# )z-Removes caret navigation bindings for script.z&CARET NAVIGATOR: Removing bindings forrf   Tz<CARET NAVIGATOR: Not removing bindings for non-active scriptNrC   ri   z& key grabs prior to removing bindings.rj   rk   rl   )rm   r   rE   r%   rI   rn   ro   rp   rq   r!   Zremoverr   rs   r   rg   ZCaretNavigator.remove_bindings  sa    ;FCMMBvh-(5++VT:411&99TV\]Fu//>u///++QQSI(&S^,,RSUFu//>~~22G&&wd&C 3 u///++QQSI(&HS^<LK2XYFu//> 0r   Nc               (    V ^8  d   QhRRRRRRRR/# r   rF   r[   eventzinput_event.InputEvent | Nonenotify_userr+   r   r   r   r   r   r   r     s2       - 	
 
r   c                sf   RVRVRV.p\         P                  ! \         P                  VR4       V P                  4       '       * pV'       d   \        P
                  pM*\        P                  pVP                  P                  4        V'       d   VP                  V4       V P                  V4       R# )zToggles caret navigation.z(CARET NAVIGATOR: toggle_enabled. Script:Event:notify_user:T)r   rE   r%   r?   r	   ZCARET_CONTROL_ORCAZCARET_CONTROL_APP	utilitiesZclear_caret_contextZpresent_messagerW   )r&   rF   rv   rw   rG   r3   r`      &&&&   r   r4   ZCaretNavigator.toggle_enabled  s     =fE>;@5++VT:))++00F//F002""6*G$r   c               (    V ^8  d   QhRRRRRRRR/# )	r   rF   r[   	suspendedr+   rd   re   r   r   r   r   r   r   r   r     s0     U U~ U$ UPS U]a U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# )z=Suspends caret navigation independent of the enabled setting.Nz%CARET NAVIGATOR: Commands suspended: rf   TzSuspended changed to )rI   r   r$   r%   r   rV   )r&   rF   r}   rd   r'   s   &&&& r   suspend_commandsZCaretNavigator.suspend_commands  sn     411&995i[ARx= CE,,c48#''2G	{0STr   c               s$    V ^8  d   QhRRRRRR/# )r   rF   r[   objAtspi.Accessible | Noner   r   r   r   r   r   r     s(       % %	r   c                s   VP                   P                  4       pVf?   Vf   VP                   P                  4       w  r$\        P                  ! V4      '       d   TpRV.p\
        P                  ! \
        P                  VR4       V# )zPReturns the object which should be treated as the root/container for navigation.zCARET NAVIGATOR: Root isT)rz   Zactive_documentget_caret_contextr   supports_textr   rE   r%   )r&   rF   r   rootZ_offsetrG   rs   r   _get_root_objectZCaretNavigator._get_root_object  su     //1<{%//AAC%%c**,d35++VT:r   c               r|   )	r   rF   r[   r   zAtspi.Accessibler   r   r   r+   r   r   r   r   r   r     s2     5 55 5 &	5
 
5r   c                s    \         P                  ! V4      '       d   R# Vf   V P                  V4      pVf   R# \         P                  ! W#R4      # )z7Returns True if obj is a valid location for navigation.TF)r   r   r   Zis_ancestor)r&   rF   r   r   s   &&&&r   _is_navigable_objectZ#CaretNavigator._is_navigable_object  sH     !!#&&<((0D<##Ct44r   c               rt   ru   r   r   r   r   r   r     2       - 	
 
r   c                   RVRVRV.p\         P                  ! \         P                  VR4       VP                  P	                  4       w  rVV P                  W4      '       g   R# W n        VP                  4        VP                  P                  WV4       V'       g   R# VP                  WVR7       VP                  V4       R# )zMoves to the next character.z(CARET NAVIGATOR: next_character. Script:rx   ry   TFoffset)r   rE   r%   rz   next_contextr   r"   interrupt_presentationset_caret_positionupdate_braillesay_characterr&   rF   rv   rw   rG   r   r   r{   r   r5   ZCaretNavigator.next_character  s     =fE>;@5++VT:&&335((55!&%%'++C8c1S!r   c               rt   ru   r   r   r   r   r   r   .  r   r   c                r   )z Moves to the previous character.z,CARET NAVIGATOR: previous_character. Script:rx   ry   TFr   )r   rE   r%   rz   previous_contextr   r"   r   r   r   r   r   r{   r   r6   Z!CaretNavigator.previous_character-  s     A&E>;@5++VT:&&779((55!&%%'++C8c1S!r   c               rt   ru   r   r   r   r   r   r   I  s2     , ,, -, 	,
 
,r   c                s^   RVRVRV.p\         P                  ! \         P                  VR4       VP                  P	                  RR7      w  rVVf   R# VP                  P                  WV4      pV'       g   R# \        V4      ^8  dR   VR
,          ^,          P                  4       '       d.   Rp\         P                  ! \         P                  VR4       VRR
 pVR
,          ^ ,          VR
,          ^,          VR
,          ^,          rpV P                  W4      '       g   R# V
'       d'   V
R
,          P                  4       '       d
   V	^,          p	W n
        VP                  4        VP                  P                  WY4       V'       g   R# VP                  WYR	7       VP                  V4       R# )zMoves to the next word.z#CARET NAVIGATOR: next_word. Script:rx   ry   TZ
skip_spaceNFzJCARET NAVIGATOR: Adjusting next word contents to eliminate trailing space.r   )r   rE   r%   rz   r   get_word_contents_at_offsetrq   isspacer$   r   r"   r   r   r   say_word)r&   rF   rv   rw   rG   r   r   contentsr'   endr`      &&&&       r   r7   ZCaretNavigator.next_wordH  s^    8E>;@5++VT:&&33t3D;##??L x=1"a!8!8!:!:^C 0 0#t<}H#B<?HRLOXb\!_&((55fRj((**1HC!&%%'++C5c.r   c               rt   ru   r   r   r   r   r   r   x  s2          -  	 
 
 r   c                s    RVRVRV.p\         P                  ! \         P                  VR4       VP                  P	                  RR7      w  rVVf   R# VP                  P                  WV4      pV'       g   R# V^ ,          ^ ,          V^ ,          ^,          rV P                  W4      '       g   R# W n        VP                  4        VP                  P                  WX4       V'       g   R# VP                  WXR7       VP                  V4       R# )zMoves to the previous word.z'CARET NAVIGATOR: previous_word. Script:rx   ry   Tr   Fr   )r   rE   r%   rz   r   r   r   r"   r   r   r   r   )	r&   rF   rv   rw   rG   r   r   r   start	   &&&&     r   r8   ZCaretNavigator.previous_wordw  s     <VE>;@5++VT:&&7747H;##??La[^Xa[^U((55!&%%'++C7c0r   c               rt   ru   r   r   r   r   r   r     s2     - -- -- 	-
 
-r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       \        P                  ! 4       P                  4       '       dV   \        P                  ! 4       pVP                  R4      '       d*   Rp\         P                  ! \         P                  V4       R# VP                  P                  4       w  rxVf   R# VP                  P                  Wx4      p	V	'       d   V	^ ,          '       g   R# VP                  P                  4       p
V
'       g   R# V
^ ,          ^ ,          V
^ ,          ^,          rV P                  W4      '       g   R# W n        VP                  4        VP                  P!                  W{4       V'       g   R# VP#                  WR	,          ^ ,          R7       VP%                  V
4       R# )
zMoves to the next line.z#CARET NAVIGATOR: next_line. Script:rx   ry   TrewindAndFastForwardInSayAll>CARET NAVIGATOR: In say all and rewind/fast-forward is enabledF)ZpriorObjr   )r   rE   r%   r   rB   
in_say_allr   rN   r$   rz   r   get_line_contents_at_offsetZget_next_line_contentsr   r"   r   r   speak_contentsdisplay_contents)r&   rF   rv   rw   rG   _settings_managerr'   r   r   liner   r   s   &&&&        r   r9   ZCaretNavigator.next_line  sh    8E>;@5++VT:$$&1133 0 < < > ,,-KLLV##E$4$4c:&&88:; ;;CHa##::<a[^Xa[^U((55!&%%'++C7hb!=)r   c               rt   ru   r   r   r   r   r   r     s2     ' '' -' 	'
 
'r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       \        P                  ! 4       P                  4       '       dV   \        P                  ! 4       pVP                  R4      '       d*   Rp\         P                  ! \         P                  V4       R# VP                  P                  4       w  rxVf   R# VP                  P                  Wx4      p	V	'       g   R# V	^ ,          ^ ,          V	^ ,          ^,          rV P                  W4      '       g   R# W n        VP                  4        VP                  P                  Wz4       V'       g   R# VP!                  V	4       VP#                  V	4       R# )zMoves to the previous line.z'CARET NAVIGATOR: previous_line. Script:rx   ry   Tr   r   F)r   rE   r%   r   rB   r   r   rN   r$   rz   r   Zget_previous_line_contentsr   r"   r   r   r   r   )r&   rF   rv   rw   rG   r   r'   r   r   r   r   r   r   r:   ZCaretNavigator.previous_line  s9    <VE>;@5++VT:$$&1133 0 < < > ,,-KLLV##E$4$4c:&&88:;##>>sKa[^Xa[^U((55!&%%'++C7h')r   c               rt   ru   r   r   r   r   r   r     s2       - 	
 
r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       VP                  P	                  4       w  rVVP                  P                  WV4      pV'       d   V^ ,          '       g   R# W n        V^ ,          ^ ,          V^ ,          ^,          rVP                  4        VP                  P                  WX4       V'       g   R# VP                  V4       VP                  V4       R# )zMoves to the start of the line.z'CARET NAVIGATOR: start_of_line. Script:rx   ry   TF)r   rE   r%   rz   r   r   r"   r   r   r   r   )	r&   rF   rv   rw   rG   r   r   r   r   r   r   r=   ZCaretNavigator.start_of_line  s     <VE>;@5++VT:&&88:;;CHa!&!WQZaU%%'++C7S!%r   c               rt   ru   r   r   r   r   r   r     s2       - 	
 
r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       VP                  P	                  4       w  rVVP                  P                  WV4      pV'       d   V^ ,          '       g   R# VR,          ^ ,          VR,          ^,          VR,          ^,          rpV	P                  4       '       d'   V	R,          P                  4       '       d
   V^,          pW n        VP                  4        VP                  P                  WX4       V'       g   R# VP                  V4       VP                  V4       R# )zMoves to the end of the line.z%CARET NAVIGATOR: end_of_line. Script:rx   ry   TFr   )r   rE   r%   rz   r   r   Zstripr   r"   r   r   r   r   )
r&   rF   rv   rw   rG   r   r   r   r   r`   s
   &&&&      r   r>   ZCaretNavigator.end_of_line  s     :6E>;@5++VT:&&88:;;CHa8A;RT"Xa[&<<>>fRj00221HC!&%%'++C5S!%r   c               rt   ru   r   r   r   r   r   r   2  s2     $ $$ -$ 	$
 
$r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       V P                  V4      pVP                  P                  V^ 4      w  rgVf   R# V'       d2   VP                  P                  WgVR7      w  rVe
   W3Wg38X  d   MYrvK9  VP                  P                  Wg4      p
V
'       g   R# W n        V
^ ,          ^ ,          V
^ ,          ^,          rvVP                  4        VP                  P                  Wg4       V'       g   R# VP                  V
4       VP                  V
4       R# )zMoves to the start of the file.z'CARET NAVIGATOR: start_of_file. Script:rx   ry   TFZrestrict_to)r   rE   r%   r   rz   Zfirst_contextr   r   r"   r   r   r   r   )r&   rF   rv   rw   rG   r   r   r   Zprev_objZprev_offsetr   r   r   r;   ZCaretNavigator.start_of_file1  s    <VE>;@5++VT:$$V,&&44T1=;$*$4$4$E$Ec_c$E$d!HH#:sm#K"##??L!&qk!nhqk!nV%%'++C8h')r   c               rt   ru   r   r   r   r   r   r   Y  s2     ( (( -( 	(
 
(r   c                s   RVRVRV.p\         P                  ! \         P                  VR4       V P                  V4      p\        P
                  ! V4      pVf   R# RVRV.p\         P                  ! \         P                  VR4       \        ^ \        P                  ! V4      ^,
          4      pV'       d2   VP                  P                  WgVR7      w  rVe
   W3Wg38X  d   MYrvK9  VP                  P                  Wg4      p
V
'       g   R# W n        V
R	,          ^ ,          V
R	,          ^,          rvVP                  4        VP                  P                  Wg4       V'       g   R# VP                  V
4       VP!                  V
4       R# )
zMoves to the end of the file.z%CARET NAVIGATOR: end_of_file. Script:rx   ry   TFzCARET NAVIGATOR: Last object inZisr   r   )r   rE   r%   r   r   Zfind_deepest_descendantZmaxr   Zget_character_countrz   r   r   r"   r   r   r   r   )r&   rF   rv   rw   rG   r   r   r   Zlast_objZlast_offsetr   r   r   r<   ZCaretNavigator.end_of_fileX  sV    :6E>;@5++VT:$$V,..t4;3T4E5++VT:Q2237!;<$*$4$4$A$A#[_$A$`!HH#:sm#K"##??L!&rl1ox|AV%%'++C8h')r   )r!   r#   r   r"   r   )FT)F) )NT)N))Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r)   r/   r   r1   r-   rI   r   Zgetterr?   ZsetterrW   rY   rZ   r]   r_   ra   rb   rV   rh   rg   Zcommandr4   r~   r   r   r5   r6   r7   r8   r9   r:   r=   r>   r;   r<   Z__static_attributes__r   r   r   r   r   9   s   GEJ9Xo9b T T
    W W
 	 	
%"2	*?<?6  2U$5*  4  4 , ,\    D - -^ ' 'R  8  > $ $L ( (r   r   c               r   )r   r   r   r   r   r   r   r   r     s      ~ r   c                 s    \         # )zReturns the Caret Navigator.)
_navigatorr   r   r   get_navigatorr     s
     r   )"r   Z
__future__r    Z__id__Z__version__Z__date__Z__copyright__Z__license__Ztypingr   r   r   r   r   r   r   r   r   r	   r
   r   Z	ax_objectr   Zax_textr   ZgiZrequire_versionZgi.repositoryr   Zscriptsr   r   r   r   r   r   r   <module>r      s   0 : #	6        !      w&# H HT 
r   