
    g
fR                         d Z dZdZdZdZddlZ ej                  dd       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 ddlmZ  G d dej.                        Zy)z$Id$z
$Revision$z$Date$zFCopyright (c) 2010 Joanmarie DiggsCopyright (c) 2011-2012 Igalia, S.L.LGPL    NAtspiz2.0)r   )AXObject)AXUtilitiesc                   F     e Zd ZdZd Zd Z fdZd Zd Zd Z	d Z
 xZS )	SpeechGeneratorz:Provides a speech generator specific to WebKitGtk widgets.c                 D    t         j                  j                  | |       y N)speech_generatorr   __init__)selfscripts     R/usr/lib/python3/dist-packages/orca/scripts/toolkits/WebKitGtk/speech_generator.pyr   zSpeechGenerator.__init__3   s    ((11$?    c                     t         j                  t         j                     }|j                         r!t         j                  t         j                     }|S r
   )settingsvoicesDEFAULT_VOICEisupperUPPERCASE_VOICE)r   objstringargsvoices        r   getVoiceForStringz!SpeechGenerator.getVoiceForString6   s9     6 67>>OOH$<$<=Er   c                    t        |   |fi |}|s%| j                  j                  j	                  |      s|S |j                  dt        j                  |            }t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  g}||vr|S | j                  j                   j#                  |      \  }}|rC|j%                  |       |j'                   | j(                  t*        j,                  fd|i|       |S )Nroler   )super_generateLabel_script	utilitiesisWebKitGtkgetr   get_roler   Role	CHECK_BOX	COMBO_BOXENTRYLISTPASSWORD_TEXTRADIO_BUTTONlabelInferenceinferappendextendr   r   DEFAULT)	r   r   r   resultr   
inferRoleslabelobjects	__class__s	           r   r   zSpeechGenerator._generateLabel=   s   '4t4//;;C@Mxx 1 1# 67jj**jj**jj&&jjoojj..jj--/
 z!M44::3?wMM% MM*$**%5%=%=O3O$OPr   c                 @   g }t         j                  j                  }| j                  j                  j                  |      }|r8|j                  t        j                  | j                  ||      |dz         |S |j                  | j                  ||             |S )Nr   )r   level)
r   r%   HEADINGr    r!   headingLevelr.   object_propertiesROLE_HEADING_LEVEL_SPEECHgetLocalizedRoleName)r   r   r1   r   r8   s        r   __generateHeadingRolez%SpeechGenerator.__generateHeadingRoleS   s    zz!!&&33C8MM+EE 55c5E"I$ $ %  MM$33Cd3CDr   c           	         t        j                         j                  d      rg S g }|j                  dt	        j
                  |            }|j                  dd      }t        j                  j                  g}|s|j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                   g       ||vr:|t        j                  j"                  k(  rGt	        j$                  |t&        j(                        }|r|j+                  | j-                  |             n|t        j                  j.                  k(  r!|j                  | j1                  |             n|j+                  | j-                  ||             t	        j
                  t	        j2                  |            t        j                  j.                  k(  r3|j                  | j1                  t	        j2                  |                   |r2|j                   | j4                  t6        j8                  fd|i|       |t        j                  j:                  k(  rt	        j<                  |      rt	        j>                  |d      }t	        j
                  |      t        j                  j"                  k(  s|S |j+                  | j-                  |             |j                   | j4                  t6        j8                  fd|i|       |S )NonlySpeakDisplayedTextr   forceFr7   r   r   ) settings_manager
getManager
getSettingr#   r   r$   r   r%   UNKNOWNr/   FORMLABEL	MENU_ITEM	LIST_ITEM	PARAGRAPHSECTION
TABLE_CELLIMAGEfind_ancestorr   is_linkr.   r=   r9   %_SpeechGenerator__generateHeadingRole
get_parentr   r   SYSTEMLINKget_child_count	get_child)	r   r   r   r1   r   rA   
doNotSpeaklinkchilds	            r   _generateRoleNamez!SpeechGenerator._generateRoleName`   so   &&(334LMIxx 1 1# 67%(jj(()
uzz$zz//$zz33$zz33$zz33$zz11$zz446 7 z!uzz'''--c;3F3FGMM$";";D"AB+++d88=>d77$7GH$$X%8%8%=>%**BTBTTMM$"<"<X=P=PQT=U"VWjdjj)9)@)@RcRTRSuzz&8+C+CC+H **32((/5::3C3CC!M d77>?jdjj)9)@)@RcRTRSr   c                    |j                  dt        j                  |            }|t        j                  j
                  k(  rg S t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  g|d<   t        j                  j                  t        j                  j                  t        j                  j                  g|d<   t!        j"                  j$                  | |fi |S )aE  Returns an array of strings (and possibly voice and audio
        specifications) that represent the text of the ancestors for
        the object.  This is typically used to present the context for
        an object (e.g., the names of the window, the panels, etc.,
        that the object is contained in).  If the 'priorObj' attribute
        of the args dictionary is set, only the differences in
        ancestry between the 'priorObj' and the current obj will be
        computed.  The 'priorObj' is typically set by Orca to be the
        previous object with focus.
        r   stopAtRoles	skipRoles)r#   r   r$   r   r%   rS   DOCUMENT_FRAMEDOCUMENT_WEBEMBEDDEDINTERNAL_FRAMErF   MENU_BARTOOL_BARrJ   rI   TEXTr   r   _generateAncestors)r   r   r   r   s       r   rd   z"SpeechGenerator._generateAncestors   s     xx 1 1# 675::??"I$zz88$zz66$zz22$zz88$zz$zz22$zz224] #ZZ11"ZZ11"ZZ__.[  //BB# 	r   c                    t        j                         j                  d      rg S t        j                         j                  d      s|j                  dd      sg S | j                  j
                  j                  |      s!t        j                  j                  | |fi |S g }| j                  j
                  j                  |      \  }}}|rt        j                         j                  d      t        j                  k(  rd| }t        j                  |      g}|j                   | j                   t        j"                  fd|i|       |S )zReturns an array of strings (and possibly voice and audio
        specifications) that represent the mnemonic for the object, or
        an empty array if no mnemonic can be found.
        r@   enableMnemonicSpeakingforceMnemonicFspeechVerbosityLevelz
Alt Shift r   )rB   rC   rD   r#   r    r!   r"   r   r   _generateMnemonicmnemonicShortcutAcceleratorr   VERBOSITY_LEVEL_VERBOSEkeynameslocalizeKeySequencer/   r   rR   )r   r   r   r1   mnemonicshortcutaccelerators          r   ri   z!SpeechGenerator._generateMnemonic   s)    &&(334LMI ++-889QR88OU3I||%%11#6#33EEc#!# # LL"">>sC 	((K**,778NO//0'z2228<=FMM*$**%5%<%<N#NNOr   )__name__
__module____qualname____doc__r   r   r   rP   rY   rd   ri   __classcell__)r5   s   @r   r   r   0   s+    D@,+Z<r   r   )__id____version____date____copyright____license__girequire_versiongi.repositoryr   orca.keynamesrl   orca.object_propertiesr;   orca.settingsr   orca.settings_managerrB   orca.speech_generatorr   orca.ax_objectr   orca.ax_utilitiesr   r    r   r   <module>r      sd   . 7 	   7E "    2   0 0 # )V&66 Vr   