+
    Qi#&  c                   s    R t RtRtRtRtRt^ RIt^ RIt^ RI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 R4      tR# )NUtilities for obtaining document-related information about accessible objects.z$Id$z
$Revision$z$Date$zGCopyright (c) 2024 Igalia, S.L.Copyright (c) 2024 GNOME Foundation Inc.ZLGPLNAtspiz2.0)r   )GLib)debug)messages)AXCollection)AXObject)AXTable)AXUtilitiesRole)AXUtilitiesStatec                   s  a  ] tR t^2t o Rt/ t]P                  ! 4       t]	V 3R lR l4       t
]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR	 l4       t]	V 3R
 lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	V 3R lR l4       t]	R#V 3R lR ll4       tV 3R  ltR!tV tR"# )$
AXDocumentr    c                   < V ^8  d   QhRR/#    returnN Zformat__classdict__   "5/usr/lib/python3.14/site-packages/orca/ax_document.py__annotate__AXDocument.__annotate__9   s     / / /    c                 s     \         P                  ! ^<4       Rp \        P                  ! \        P                  V R4       \
        P                  P                  4        K_  )z*Clears any data we have cached for objectsTz!AXDocument: Clearing local cache.)timeZsleepr   print_message
LEVEL_INFOr
   LAST_KNOWN_PAGEZclear)msg    r   _clear_stored_dataZAXDocument._clear_stored_data8   sA     JJrN5C 0 0#t<&&,,.r   c                r   r   r   r   r   r   r   r   C   s       r   c                 s~    \         P                  ! \        P                  R7      p RV n        V P                  4        R# )z3Starts thread to periodically clear cached details.)ZtargetTN)	threadingZThreadr
   r   ZdaemonZstart)Zthreadr   r   start_cache_clearing_threadZ&AXDocument.start_cache_clearing_threadB   s*     !!)F)FGr   c                :   < V ^8  d   QhRS[ P                  RS[/# r   documentr   r   
Accessibleboolr   r   r   r   r   K   s!      %"2"2 t r   c                s.   \         P                  ! V 4      '       g   R# \        P                  P	                  \        V 4      4      pV\        P                  V 4      8g  pV'       d/   RV RV 2.p\        P                  ! \        P                  VR4       V# )z)Returns True if the current page changed.FzAXDocument: Previous page ofzwas T)
r   supports_documentr
   r   gethash_get_current_pager   print_tokensr   )r"   Zold_pageresulttokenss   &   r   did_page_changeZAXDocument.did_page_changeJ   sz     ))(33--11$x.AZ99(CC4h$xj@QRFu//>r   c                r    r!   r   r$   intr   r   r   r   r   Z   s!      E$4$4  r   c                z   \         P                  ! V 4      '       g   ^ #  \        P                  P	                  V 4      pRT RT 2.p\        P                  ! \        P                  TR4       T#   \
        P                   d7   pRT 2p\        P                  ! \        P                  TR4        Rp?^ # Rp?ii ; i)%Returns the current page of document.z,AXDocument: Exception in _get_current_page: TNzAXDocument: Current page ofis )r   r&   r   DocumentZget_current_page_numberr   GErrorr   r   r   r*   )r"   pageerrorr   r,      &    r   r)   ZAXDocument._get_current_pageY   s     ))(33	>>99(CD 0S<H5++VT: {{ 	@HC 0 0#t<	   A/ /B:+B55B:c                r    r!   r.   r   r   r   r   r   l   s!      5#3#3  r   c                s    \         P                  ! V 4      '       g   ^ # \        P                  V 4      pV\        P                  \        V 4      &   V# )r1   )r   r&   r
   r)   r   r(   )r"   r5      & r   get_current_pageZAXDocument.get_current_pagek   sA     ))(33++H559
""4>2r   c                r    r!   r.   r   r   r   r   r   w   s!      !1!1 c r   c                r0   )z#Returns the page count of document.z)AXDocument: Exception in get_page_count: TNzAXDocument: Page count ofr2   )r   r&   r   r3   get_page_countr   r4   r   r   r   r*   )r"   Zcountr6   r   r,   r7   r   r;   ZAXDocument.get_page_countv   s     ))(33	NN11(;E .x3ugG5++VT: {{ 	=eWEC 0 0#t<	r8   c                r    r!   r   r$   strr   r   r   r   r      s!      U-- # r   c                s   \         P                  ! V 4      '       g   R#  \        P                  P	                  V 4      pTf-   RT .p\        P                  ! \        P                  TR4       R# RT RT R2.p\        P                  ! \        P                  TR4       T#   \
        P                   d7   pRT 2p\        P                  ! \        P                  TR4        Rp?R# Rp?ii ; i)	zReturns the locale of document. z%AXDocument: Exception in get_locale: TNz!AXDocument: get_locale failed forzAXDocument: Locale ofzis 'Z')r   r&   r   r3   
get_localer   r4   r   r   r   r*   r"   r+   r6   r   r,   r7   r   r?   ZAXDocument.get_locale   s     ))(33	^^..x8F >98DFu//>)8tF815EF5++VT: {{ 	9%AC 0 0#t<	s   B   C+5+C&&C+c                sP   < V ^8  d   QhRS[ P                  RS[S[S[3,          /# r!   )r   r$   dictr=   r   r   r   r   r      s)      u'7'7 DcN r   c                s   \         P                  ! V 4      '       g   / #  \        P                  P	                  V 4      pRT RT.p\        P                  ! \        P                  TR4       T;'       g    / #   \
        P                   d8   pRT 2p\        P                  ! \        P                  TR4       / u Rp?# Rp?ii ; i)z8Returns a dict with the document-attributes of document.z/AXDocument: Exception in _get_attributes_dict: TNzAXDocument: Attributes ofzare:)r   r&   r   r3   Zget_document_attributesr   r4   r   r   r   r*   r@   r7   r   _get_attributes_dictZAXDocument._get_attributes_dict   s     ))(33I	^^;;HEF .xH5++VT:|| {{ 	CE7KC 0 0#t<I	s   A7 7C,B>8C>Cc                r    r!   r<   r   r   r   r   r      s%     C C%** Cs Cr   c                s    \         P                  ! V 4      '       g   R# \        P                  V 4      pVP	                  RVP	                  RR4      4      # )Returns the uri of document.r>   ZDocURLZURIr   r&   r
   rB   r'   r"   Z
attributesr9   r   get_uriZAXDocument.get_uri   sD     ))(3344X>
~~h
ub(ABBr   c                r    r!   r<   r   r   r   r   r      s!     . . 0 0 .S .r   c                s    \         P                  ! V 4      '       g   R# \        P                  V 4      pVP	                  RR4      # )rC   r>   ZMimeTyperD   rE   r9   r   get_mime_typeZAXDocument.get_mime_type   s9     ))(3344X>
~~j"--r   c                r    r!   r#   r   r   r   r   r      s%     B B 0 0 BT Br   c                s2    \         P                  V 4      R8H  # )z2Returns True if document is a plain-text document.z
text/plain)r
   rG   )r"      &r   is_plain_textZAXDocument.is_plain_text   s     ''1\AAr   c                r    r!   r#   r   r   r   r   r      s!      )) d r   c                s    \         P                  V 4      pVR8X  d   R# VR8X  d%   \         P                  V 4      P                  R4      # R# )z+Returns True if document is a PDF document.zapplication/pdfTz	text/htmlz.pdfF)r
   rG   rF   Zendswith)r"   Z	mime_typer9   r   is_pdfZAXDocument.is_pdf   sG     ,,X6	))#%%h/88@@r   c                r    r!   r<   r   r   r   r   r      s!      E,<,<  r   c                s~    \         P                  P                  \        P	                  V 4      4      pVP
                  # )z/Returns the fragment portion of document's uri.)urllibZparseZurlparser
   rF   Zfragment)r"   r+   r9   r   get_document_uri_fragmentZ$AXDocument.get_document_uri_fragment   s-     &&z'9'9('CDr   c                sP   < V ^8  d   QhRS[ P                  RS[S[S[3,          /# r!   )r   r$   rA   r=   r/   r   r   r   r   r      s)     " "U%5%5 "$sCx. "r   c                s2   R^ R^ R^ R^ R^ R^ /p\         P                  P                  \         P                  P                  \         P                  P                  \         P                  P
                  \         P                  P                  .p\        P                  ! VR7      p\        P                  ! W4      pV EFU  p\        P                  ! V4      '       d   VR;;,          ^,          uu&   K7  \        P                  ! V4      '       d   VR;;,          ^,          uu&   Kj  \        P                  ! V4      '       d4   \        P                  ! V4      '       g   VR;;,          ^,          uu&   K  \        P                   ! V4      '       dM   \"        P$                  ! V4      '       d   VR;;,          ^,          uu&   EK	  VR;;,          ^,          uu&   EK!  \        P&                  ! V4      '       g   EK@  VR;;,          ^,          uu&   EKX  	  V# )zAReturns a dictionary of object counts used in a document summary.forms	landmarksheadingstablesunvisited_linksvisited_links)roles)r   ZRoleZHEADINGZLINKZTABLEZFORMZLANDMARKr   Zcreate_match_ruleZget_all_matchesr   Z
is_headingZis_formZis_tabler   Zis_layout_tableZis_linkr	   Z
is_visitedZis_landmark)r"   r+   rS   ZruleZmatchesZobjs   &     r   _get_object_countsZAXDocument._get_object_counts   sw    1qaA#Q!1& ##!!$$	& --E:..x>C))#..z"a'" ((--w1$ ))#..w7N7Ns7S7Sx A%  ((--#..s33?+q0+,-2- ,,S11{#q(#  r   c                s@   < V ^8  d   QhRS[ P                  RS[RS[/# )r   r"   only_if_foundr   )r   r$   r%   r=   r   r   r   r   r     s.     @ @u'7'7 @ @X[ @r   c                sD   . p\         P                  V 4      pVP                  \        P                  ! VP                  R^ 4      V4      4       VP                  \        P                  ! VP                  R^ 4      V4      4       VP                  \        P                  ! VP                  R^ 4      V4      4       VP                  \        P                  ! VP                  R^ 4      V4      4       VP                  \        P                  ! VP                  R^ 4      V4      4       VP                  \        P                  ! VP                  R^ 4      V4      4       \        \        R V4      4      pV'       g   R# \        P                  R	P                  V4      ,          # )
zNReturns a string summarizing the document's structure and objects of interest.rN   rO   rM   rP   rR   rQ   c                 s    V # )Nr   )ZxrH   r   Z<lambda>Z1AXDocument.get_document_summary.<locals>.<lambda>  s    qr   r>   z, )r
   rT   Zappendr   Zlandmark_countr'   Zheading_countZ
form_countZtable_countZvisited_link_countZunvisited_link_countZlistZfilterZPAGE_SUMMARY_PREFIXZjoin)r"   rU   r+   Zcountss   &&  r   get_document_summaryZAXDocument.get_document_summary  s)    ..x8h--fjja.H-XYh,,VZZ
A-FVWh))&**Wa*@-PQh**6::h+BMRSh11&**_a2PR_`ah33JJ(!,m= 	>f[&12++dii.???r   c                s<   < V ^8  d   Qh/ S[ S[S[3,          ;R&   # )r   r   )rA   r/   r   r   r   r   r   2   s      #s(^( r   r   N)T)Z__name__Z
__module__Z__qualname__Z__firstlineno____doc__r   r   ZLockZ_lockZstaticmethodr   r   r-   r)   r:   r;   r?   rB   rF   rG   rI   rJ   rL   rT   rV   Z__annotate_func__Z__static_attributes__Z__classdictcell__)r   s   @r   r
   r
   2   sX    X&(ONNE/ /      "    "  ,  " C C . . B B
     " "H @ @ @c  r   r
   )rW   Z__id__Z__version__Z__date__Z__copyright__Z__license__r   r   Zurllib.parserK   ZgiZrequire_versionZgi.repositoryr   r   r>   r   r   Zax_collectionr   Z	ax_objectr   Zax_tabler   Zax_utilities_roler   Zax_utilities_stater	   r
   r   r   r   <module>rX      sk   0 U;    	   7E "     '   . 0a@ a@r   