
    g
f%                         d Z dZdZdZdZdZddlZ ej                  dd	       ddlZddl	Z	dd
l
mZ ddl
mZ ddl
mZ ddlmZ ddlmZ ddlmZ ddlmZ  G d dej,                        Zy)zCommonly-required utility methods needed by -- and potentially
   customized by -- application and toolkit scripts. They have
   been pulled out from the scripts because certain scripts had
   gotten way too large as a result of including these methods.z$Id$z
$Revision$z$Date$zGCopyright (c) 2010 Joanmarie Diggs.Copyright (c) 2014-2015 Igalia, S.L.LGPL    NAtspiz2.0)debug)focus_manager)
orca_state)web)
AXDocument)AXObject)AXUtilitiesc                        e Zd Z fdZ fdZ	 	 d fd	Zd fd	Zd Zd Z fdZ	d Z
d	 Zdd
ZddZ fdZ fdZd fd	Z xZS )	Utilitiesc                 N    t         |   |       d | _        d | _        d| _        y )Nr   )super__init___lastAutoTextObjectEvent_lastAutoTextInputEvent_lastAutoTextEventTime)selfscript	__class__s     N/usr/lib/python3/dist-packages/orca/scripts/toolkits/Gecko/script_utilities.pyr   zUtilities.__init__2   s(     (,%'+$&'#    c                     t         |   |      ryt        j                  |      r>t	        j
                  |      r)t        j                  t	        j                  |d            S y)NTr   F)r   isLayoutOnlyr   is_tool_barr
   get_child_countis_page_tab_list	get_child)r   objr   s     r   r   zUtilities.isLayoutOnly8   sO    7$""3'H,D,DS,I//0B0B30JKKr   c                 ^   t         	|   |||||      ry| j                         }t        j                  |      |v rt        j                  |      |v syt        j
                  |      t        j
                  |      k(  }d|d|d|g}t        j                  t        j                  |d       |S )NTFGECKO: Treatingandzas same object:)	r   isSameObject_topLevelRolesr
   get_roleget_namer   printTokens
LEVEL_INFO)
r   obj1obj2comparePathsignoreNamesignoreDescriptionsrolesrvtokensr   s
            r   r#   zUtilities.isSameObjectA   s    7dL+GYZ##%!!$'50X5F5Ft5LPU5Ut$(9(9$(??#T5$8I2N%**FD9	r   c                    t         |   ||      }t        j                  |      rat	        j
                  |      rLd }t	        j                  |d      }|j                  t	        j                  ||      D cg c]  }| c}       |S c c}w )Nc                 .    t        j                  |        S N)r   is_column_headerxs    r   isExtraz-Utilities.getOnScreenObjects.<locals>.isExtraU   s    &77:::r   r   )	r   getOnScreenObjectsr   is_tree_tabler
   r   r   extenditer_children)r   rootextentsobjectsr7   childr6   r   s          r   r8   zUtilities.getOnScreenObjectsO   sy    ',T7; $$T*x/G/G/M; &&tQ/ENNx'='=eW'MN!ANO Os   8	B
c                 (   t        j                  |      sy| j                  |      }t        j                  |      r,d|d|g}t        j                  t        j
                  |d       yd|dg}t        j                  t        j
                  |d       y)z,Returns True if this is an editable message.FGECKO:zis in an editable document:TzGECKO: Editableznot in an editable document)r   is_editablegetDocumentForObjectr   r'   r(   )r   r   documentr0   s       r   isEditableMessagezUtilities.isEditableMessage]   s     &&s+,,S1""8,%BHMFe..=#S*GH%**FD9r   c                     t        j                  |      }|j                  d      ryd|v ryt        j                  |      }|j                  d      ry|sd|v ryy)Nzmoz-extensionTzself-repair.mozilla.orgpixelsF)r
   r&   
startswithr	   get_uri)r   r   nameuris       r   isNotRealDocumentzUtilities.isNotRealDocumentm   s[      %???+$,  %>>/*x4'r   c                 N   |r| j                  |      rt        | 	  |      S t        j                  |      syt        j                  |      ryt        j                  |      syt        j                  |      syd|dg}t        j                  t        j                  |d       y)NFr!   zas entryT)inDocumentContentr   treatAsEntryr   is_combo_boxr
   r   
is_focusedsupports_editable_textr   r'   r(   )r   r   r0   r   s      r   rO   zUtilities.treatAsEntry~   s    d,,S17',, '',##C(%%c*..s3#S*5%**FD9r   c                 
   |r| j                  |      ry|| j                  k(  ryt        j                  |      syt	        t        j
                  |            dk7  r+d|dg}t        j                  t        j                  |d       yt	        t        j                  |            dk7  r+d|dg}t        j                  t        j                  |d       yd|dg}t        j                  t        j                  |d       || _        y)NFT   rA   z5not believed to be quick-find container (entry count)z6not believed to be quick-find container (button count)z8believed to be quick-find container (accessibility tree))
rN   _findContainerr   r   lenfind_all_entriesr   r'   r(   find_all_push_buttons)r   r   r0   s      r   _isQuickFindzUtilities._isQuickFind   s    d,,S1$%%%&&s+ {++C01Q6%\]Fe..={0056!;%]^Fe..=C![\%**FD9!r   c                    |r| j                  |      ry|| j                  k(  ryt        j                  |      sy| j	                  |      }|r4d|d|dg}t        j                  t
        j                  |d       || _        yt        t        j                  |            dk7  r+d|dg}t        j                  t
        j                  |d       yt        t        j                  |            dk  r+d|d	g}t        j                  t
        j                  |d       yd|d
g}t        j                  t
        j                  |d       || _        y)NFTrA   z'believed to be find-in-page container ()rT   z7not believed to be find-in-page container (entry count)   z8not believed to be find-in-page container (button count)z:believed to be find-in-page container (accessibility tree))rN   rU   r   r   getFindResultsCountr   r'   r(   rV   rW   rX   )r   r   resultr0   s       r   isFindContainerzUtilities.isFindContainer   s2   d,,S1$%%%&&s+))#.%NPVX[\Fe..="%D {++C01Q6%^_Fe..={0056:%_`Fe..=C!]^%**FD9!r   c                    |s"t        j                         j                         }|r| j                  |      ryt	        j
                  |      st	        j                  |      syt        j                  |t        j                        }| j                  |      }|r+d|dg}t        j                  t        j                  |d       y| j                  |      r+d|dg}t        j                  t        j                  |d       yy)NFrA   z,believed to be find-in-page widget (toolbar)Tz/believed to be find-in-page widget (quick find))r   
getManagerget_locus_of_focusrN   r   is_entryis_push_buttonr
   find_ancestorr   r_   r   r'   r(   rY   )r   r   toolbarr^   r0   s        r   inFindContainerzUtilities.inFindContainer   s    **,??ACd,,S1$$S)[-G-G-L((k.E.EF%%g.%STFe..=W%%VWFe..=r   c                     |xs | j                   }|syd }t        j                  ||      }t        |      dk7  ry|d   }t	        j
                  |dd       t	        j                  |      S )N c                 l    t        t        j                  dt        j                  |                   dk(  S )Nz\d+   )rV   refindallr
   r&   r5   s    r   isMatchz.Utilities.getFindResultsCount.<locals>.isMatch   s(    rzz&(*;*;A*>?@AEEr   rT   r   Fz/Ensuring we have correct name for find results.)rU   r   find_all_labelsrV   r
   clear_cacher&   )r   r<   rn   labelslabels        r   r]   zUtilities.getFindResultsCount   sn    *t**	F ,,T7;v;!q	UE+\]  ''r   c                    t         |   |      sy| j                  |j                        ry| j	                  | j
                  |      rut        j                         | j                  z
  dk  rQt        j                  j                  | j                        r(d}t        j                  t        j                  |d       y|| _        t        j                  | _        t        j                         | _        y)NFTg      ?z6GECKO: Event believed to be duplicate auto text event.)r   isAutoTextEventrN   sourcetreatAsDuplicateEventr   timer   r   lastInputEventisReleaseForr   r   printMessager(   )r   eventmsgr   s      r   rt   zUtilities.isAutoTextEvent   s    w&u-!!%,,/%%d&C&CUKyy{T8883>((55d6R6RSJCu//d;(-%'1'@'@$&*iik#r   c                 H    |j                  dd      }t        | 	  ||      S )Nz-moz-ri   )replacer   localizeTextAttribute)r   keyvaluer   s      r   r   zUtilities.localizeTextAttribute  s%    gr*w,S%88r   c                 (    t         |   ||d      S )NrT   )minimumWords)r   unrelatedLabels)r   r<   onlyShowingr   r   s       r   r   zUtilities.unrelatedLabels  s    w&t[q&IIr   )FFTr3   )T   )__name__
__module____qualname__r   r   r#   r8   rE   rL   rO   rY   r_   rg   r]   rt   r   r   __classcell__)r   s   @r   r   r   0   s[    ( HM(, ",6 D0( &9J Jr   r   )__doc____id____version____date____copyright____license__girequire_versionrl   rw   orcar   r   r   orca.scriptsr   orca.ax_documentr	   orca.ax_objectr
   orca.ax_utilitiesr   r    r   r   <module>r      sl   *C
 
7 	   7E " 	      ' # )aJ aJr   