+
    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 ^ 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]P6                  ! RR4       ^ RIHt  ! R R]P<                  4      tR# )'Custom script utilities for LibreOffice)annotationsz$Id$z
$Revision$z$Date$z#Copyright (c) 2010 Joanmarie Diggs.ZLGPL)TYPE_CHECKING)debug)focus_manager)input_event_manager)messages)script_utilities)AXObject)AXSelection)AXTable)AXText)AXUtilitiesNAtspiz2.0)r   c                  s   a  ] tR t^3tRtR V 3R lltR R ltR R ltRR R	 lltRR
 V 3R lllt	RR V 3R lllt
R V 3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tV ;t# )	Utilitiesr    c                   V ^8  d   QhRR/# )   returnZNone Zformat   "O/usr/lib/python3.14/site-packages/orca/scripts/apps/soffice/script_utilities.py__annotate__Utilities.__annotate__6   s     4 4$ 4    c                	sP   < \         SV `  V4       . V n        . V n        . V n        R # N)super__init___calc_selected_cells_calc_selected_rows_calc_selected_columns)selfZscript	__class__s   &&r   r   ZUtilities.__init__6   s(     ;=!.0 13#r   c                    V ^8  d   QhRRRR/# )r   objAtspi.Accessibler   z
str | boolr   r   r   r   r   r   <   s      (8 Z r   c                s    \         P                  ! V4      p\        P                  ! V4      '       g   \        P                  ! V4      '       d   V P                  V4      # R# )z+Returns True if obj is a cell being edited.F)r   
get_parentr   Zis_panelZis_extendedspreadsheet_cell_name)r   r"   Zparents   && r   is_cell_being_editedZUtilities.is_cell_being_edited<   sI     $$S)'';+B+B6+J+J--f55r   c               r!   )r   cellr#   r   strr   r   r   r   r   r   E   s     
 
*: 
s 
r   c                s    \         P                  ! V4      P                  4       pV FG  pVP                  RR4      pVP	                  4       '       d   K-  VP                  4       '       g   KE  Vu # 	  R# )z(Returns the accessible name of the cell.Z. )r   Zget_nameZsplitZreplaceZisalphaZisalnum)r   r'   Z	name_listnames   &&  r   r%   ZUtilities.spreadsheet_cell_nameE   sV     %%d+113	D<<R(D<<>>dllnn 
 r   c          
     s,    V ^8  d   QhRRRRRRRRRR	/# )
r   r"   r#   rowintcolinclude_contentsboolr   r(   r   r   r   r   r   r   Q   s<        	
  
r   c                	s    \         P                  ! WV4      pV P                  V4      pV'       d   \        P                  ! V4      pV R V 2pVP                  4       # ) )r
   Zget_cell_atr%   r   Zget_all_textZstrip)r   r"   r+   r-   r.   r'   r*   Ztexts   &&&&&   r   _get_cell_name_for_coordinatesZ(Utilities._get_cell_name_for_coordinatesQ   sU     ""3S1))$/&&t,DV1TF#Dzz|r   c               $    V ^8  d   QhRRRRRR/# )r   r"   r#   offsetz
int | Noner   ztuple[str, int, int]r   r   r   r   r   r   a   s(     
6 
6
6 
6 
	
6r   c                s   < V P                   P                  4       P                  4       '       d   \        SV `  W4      # \
        P                  ! W4      # )z;Returns the word in obj at the specified or current offset.)_scriptZget_caret_navigator'last_input_event_was_navigation_commandr   *get_word_at_offset_adjusted_for_navigationr   Zget_word_at_offset)r   r"   r3   r       &&&r   r6   Z4Utilities.get_word_at_offset_adjusted_for_navigationa   sB     <<++-UUWW7EcRR((55r   c               r2   )r   r"   r#   previous_objectzAtspi.Accessible | Noner   r/   r   r   r   r   r   r   m   s-     B BB 1B 
	Br   c                s   < V P                   P                  4       P                  4       '       d   R# \        P                  ! 4       P                  4       '       d   R# \        SV `  W4      # )z3Returns True if the full row in obj should be read.F)r4   Zget_table_navigatorr5   r   get_managerZlast_event_was_tab_navigationr   should_read_full_row)r   r"   r8   r    r7   r   r:   ZUtilities.should_read_full_rowm   sO     <<++-UUWW**,JJLLw+CAAr   c               r!   r   r"   r#   r   r/   r   r   r   r   r   r   |   s     1 1(8 1T 1r   c                	s   < \         P                  ! V4      fX   \         P                  ! V4      V P                  4       9   d/   RVR.p\        P
                  ! \        P                  VRR4       R# \        SV `!  V4      # )NSOFFICE:z%has no parent. Treating as top-level.T)	r   r$   Zget_roleZ_top_level_rolesr   print_tokens
LEVEL_INFOr   _is_top_level_object)r   r"   tokensr    s   && r   r?   ZUtilities._is_top_level_object|   si    s#+0A0A#0F$J_J_Ja0a #'NOFu//tDw+C00r   c               r   )r   columnr,   r   r   r   r   r   r      s      s r   c                s    RpV\        V4      8:  d   W!^,
          ,          # RpV^ 8  dM   V\        V4      ,          pRW$^,
          ,          ,           V,           p\        V\        V4      ,          4      pKS  V# )z3Converts a column index to a string representation.ZABCDEFGHIJKLMNOPQRSTUVWXYZr)   r0   )lenr,   )r   rA   Zbase26ZresZdigit   &&   r   convert_column_to_stringZ"Utilities.convert_column_to_string   si     .S[ (##qjS[(EQw'#-C#f+-.F
r   c               r!   )r   r"   r#   r   z'tuple[tuple[int, int], tuple[int, int]]r   r   r   r   r   r      s"     W WW 
1Wr   c                	s   \         P                  ! V4      '       d   \         P                  ! V4      '       g.   R VR.p\        P                  ! \        P
                  VR4       R# \        P                  ! V^ 4      p\        P                  ! VR4      p\        P                  ! V4      \        P                  ! V4      3# )r<   z+does not implement both selection and tableT)rE   rE   rF   )
r   supports_tablesupports_selectionr   r=   r>   r	   Zget_selected_childr
   get_cell_coordinates)r   r"   r@   ZfirstZlastrC   r   #_get_coordinates_for_selected_rangeZ-Utilities._get_coordinates_for_selected_range   s     '',,1L1LS1Q1Q #'TUFu//>%%..sA6--c26++E2G4P4PQU4VVVr   c               r!   r;   r   r   r   r   r   r      s      -= $ r   c                s   V P                  V4      w  r#VR8X  g   VR8X  d   R# V P                  P                  4        W#8X  dI   V P                  ! V.VORN5!  pV P                  P	                  \
        P                  V,          4       R# V P                  ! V.VORN5!  pV P                  ! V.VORN5!  pV P                  P	                  \
        P                  WV3,          4       R# )zSpeaks the selected cell range.FTrF   )rJ   r4   interrupt_presentationr1   speak_messager   CELL_SELECTEDCELL_RANGE_SELECTED)r   r"   first_coordslast_coordsr'   cell1cell2s   &&     r   speak_selected_cell_rangeZ#Utilities.speak_selected_cell_range   s     %)$L$LS$Q!8#{h'>++-&66sP\P4PDLL&&x'='='DE33CM,MM33CL+LtL""8#?#?5.#PQr   c               r!   r;   r   r   r   r   r   r      s     0 00@ 0T 0r   c           	     sx  a V P                  V4      w  r#VR8X  g   VR8X  d   R# . p\        V^ ,          V^ ,          ^,           4       F=  oVP                  V3R l\        V^,          V^,          ^,           4       4       4       K?  	  \        V4      p\        V P                  4      pVP                  R4       VP                  R4       \        VP                  V4      4      p\        VP                  V4      4      p\        P                  ! \        P                  ! 4       P                  4       4      p	W9   d   VP                  V	4       \        V4      V n        . p
\        V4      ^8X  dE   V P                  ! V.V^ ,          O5RR/ pV
P!                  \"        P$                  V,          4       Mq\        V4      ^8  db   V P                  ! V.V^ ,          O5RR/ pV P                  ! V.VR,          O5RR/ pV
P!                  \"        P&                  W3,          4       \        V4      ^8X  dE   V P                  ! V.V^ ,          O5RR/ pV
P!                  \"        P(                  V,          4       Mq\        V4      ^8  db   V P                  ! V.V^ ,          O5RR/ pV P                  ! V.VR,          O5RR/ pV
P!                  \"        P*                  W3,          4       V
'       d   V P,                  P/                  4        V
 F   pV P,                  P1                  VRR7       K"  	  \3        V
4      # )&Presents the selection change for obj.Tc              3  s,   <"   T F	  pSV3x  K  	  R # 5ir   r   )Z.0Zcrs   & r   Z	<genexpr>Z9Utilities.handle_cell_selection_change.<locals>.<genexpr>   s     Y0X1A0Xs   r.   FZ	interruptrE   rF   )rJ   ZrangeZextendsetr   Zdiscardsorted
differencer
   rI   r   r9   Zget_locus_of_focusZremoverB   r1   appendr   ZCELL_UNSELECTEDZCELL_RANGE_UNSELECTEDrM   rN   r4   rK   rL   r/   )r   r"   rO   rP   Zcurrent_listZcurrentZpreviousZ
unselectedZselectedZfocus_coordsmsgsr'   rQ   rR   msgrU   s   &&             @r   handle_cell_selection_changeZ&Utilities.handle_cell_selection_change   s    %)$L$LS$Q!8#{h'>.0|AAq(89AYl1o{ST~VWGW0XYY : l#t001!"H//89
',,X6733%%'::<>#OOL)$*7O!z?a66sbZ]b]abDKK00478_q 77cjmc^bcE77djnd_cdEKK66%GHx=A66s`Xa[`[_`DKK..56]Q77ahqka\`aE77bhrlb]abEKK44~EFLL//1CLL&&se&<  Dzr   c               r!   r;   r   r   r   r   r   r      s"     H HH 
Hr   c                s@	  a  \         P                  ! V4      '       d   \         P                  ! V4      '       g   R# \        \        P
                  ! V4      4      p\        \        P                  ! V4      4      p\        VP                  \        S P                  4      4      4      p\        \        S P                  4      P                  V4      4      pV 3R lpR p\        \        Wd4      4      p\        \        We4      4      p\        VP                  \        S P                  4      4      4      p\        \        S P                  4      P                  V4      4      p	\        \        Wx4      4      p\        \        Wy4      4      p	\        V4      S n	        \        V4      S n        \        P                  ! V4      p
\        V4      V
8X  d,   S P                  P!                  \"        P$                  4       R# V'       g<   \        V4      V
8X  d,   S P                  P!                  \"        P&                  4       R# . p\        V4      ^8X  d/   VP)                  \"        P*                  V^ ,          ,          4       MF\        V4      ^8  d7   VP)                  \"        P,                  V^ ,          VR,          3,          4       \        V	4      ^8X  d/   VP)                  \"        P.                  V	^ ,          ,          4       MF\        V	4      ^8  d7   VP)                  \"        P0                  V	^ ,          V	R,          3,          4       \        V4      ^8X  d/   VP)                  \"        P2                  V^ ,          ,          4       MF\        V4      ^8  d7   VP)                  \"        P4                  V^ ,          VR,          3,          4       \        V4      ^8X  d/   VP)                  \"        P6                  V^ ,          ,          4       MF\        V4      ^8  d7   VP)                  \"        P8                  V^ ,          VR,          3,          4       V'       d   S P                  P;                  4        V F   pS P                  P!                  VRR7       K"  	  \=        V4      # )rT   Tc                s4   < SP                  V ^,           4      # i   )rD   )xr   s   &r   convert_columnZHUtilities.handle_row_and_column_selection_change.<locals>.convert_column   s    00155r   c                s    V ^,           # r^   r   )r_   s   &r   convert_rowZEUtilities.handle_row_and_column_selection_change.<locals>.convert_row   s    q5Lr   FrV   rE   )r   rG   rH   rW   r
   Zget_selected_columnsZget_selected_rowsrX   rY   r   ZlistZmapr   Zget_column_countrB   r4   rL   r   ZDOCUMENT_SELECTED_ALLZDOCUMENT_UNSELECTED_ALLrZ   ZTABLE_COLUMN_UNSELECTEDZTABLE_COLUMN_RANGE_UNSELECTEDZTABLE_ROW_UNSELECTEDZTABLE_ROW_RANGE_UNSELECTEDZTABLE_COLUMN_SELECTEDZTABLE_COLUMN_RANGE_SELECTEDZTABLE_ROW_SELECTEDZTABLE_ROW_RANGE_SELECTEDrK   r/   )r   r"   ZcolsZrowsZselected_colsZunselected_colsr`   ra   Zselected_rowsZunselected_rowsZcolumn_countr[   r\   s   f&           r   &handle_row_and_column_selection_changeZ0Utilities.handle_row_and_column_selection_change   s_    '',,1L1LS1Q1Q7//457,,S12ts43N3N/OPQ T%@%@!A!L!LT!RS	6	 S?@s>CDts43K3K/LMN T%=%=!>!I!I$!OPS<=s;@A&*4j##': //4t9$LL&&x'E'EFO,<LL&&x'G'GH1$KK88?1;MMN!A%KK>>(+_R-@AB C 1$KK558JJK!A%KK;;(+_R-@AB C }"KK66q9IIJ!#KK44a8H-XZJ[7\\^ }"KK33mA6FFG!#KK99]1=M}]_O`<aabLL//1CLL&&se&<  Dzr   )r   r   r   )Fr   )Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r   r&   r%   r1   r6   r:   r?   rD   rJ   rS   r]   rb   Z__static_attributes__Z__classcell__)r    s   @r   r   r   3   sa    14 4
 
6 
6B B1 1 W&0dH Hr   r   )rc   Z
__future__r   Z__id__Z__version__Z__date__Z__copyright__Z__license__Ztypingr   Zorcar   r   r   r   r   Zorca.ax_objectr   Zorca.ax_selectionr	   Zorca.ax_tabler
   Zorca.ax_textr   Zorca.ax_utilitiesr   ZgiZrequire_versionZgi.repositoryr   r   r   r   r   <module>rd      sw   , . #	5     $  ! # ) !  )w&#| ** |r   