
    g
f`                        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 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j6                        Zy)z$Id$z
$Revision$z$Date$zrCopyright (c) 2005-2009 Sun Microsystems Inc.Copyright (c) 2010-2011 Orca TeamCopyright (c) 2011-2015 Igalia, S.L.LGPL    NAtspiz2.0)r   )debug)focus_manager)messages)object_properties)settings)settings_manager)speech_generator)
AXDocument)AXObject)AXTable)AXText)AXUtilitiesc                   4    e Zd Z fdZ fdZ fdZ fdZ fdZ fdZd Z	d Z
 fd	Zd
 Z fdZd Z fdZ fdZ fdZ fdZ fdZ fdZd Z fdZd Z fdZ fdZ fdZd Z fdZ fdZ fdZ fdZ fdZ  fdZ!d  Z" xZ#S )!SpeechGeneratorc                 $    t         |   |       y N)super__init__)selfscript	__class__s     C/usr/lib/python3/dist-packages/orca/scripts/web/speech_generator.pyr   zSpeechGenerator.__init__2   s         c                 R    |j                  dd      dkD  rg S t        |   |fi |S Nindexr   )getr   _generateOldAncestorsr   objargsr   s      r   r    z%SpeechGenerator._generateOldAncestors5   s0    88GQ!#Iw,S9D99r   c                     |j                  dd      dkD  r'| j                  j                  j                  |      sg S t	        |   |fi |S r   )r   _script	utilitiesisListDescendantr   _generateNewAncestorsr!   s      r   r(   z%SpeechGenerator._generateNewAncestors;   sH    88GQ!#<<))::3?Iw,S9D99r   c                 ,   | j                   j                  j                  |      st        |   |fi |S | j                   j                         r'|t        j                         j                         k(  rg S g }|j                  d      }|r| j                   j                  j                  |      r| j                   j                  j                  |      }| j                   j                  j                  |      }||k7  r5| j                   j                  j                  |      st        | -  |      g}t        j                  |      sv| j                   j                  j                  |      sO| j                   j                  j                  |      s*t!        j"                  |      st!        j$                  |      r|S | j                   j                  j'                  ||      r|S t(        j*                  j,                  t(        j*                  j.                  t(        j*                  j0                  t(        j*                  j2                  t(        j*                  j4                  g|d<   t(        j*                  j6                  t(        j*                  j8                  t(        j*                  j:                  t(        j*                  j<                  t(        j*                  j>                  t(        j*                  j@                  g|d<   t(        j*                  jB                  g|d<   | j                   j                  jE                  |      r,|d   jG                  t(        j*                  jH                         |jK                  t        |   |fi |       |S )NpriorObjstopAtRoles	skipRolesstopAfterRoles)&r%   r&   inDocumentContentr   _generateAncestorsinSayAllr   
getManagerget_locus_of_focusr   getDocumentForObject_generateNamer   	get_table
isLandmarkisMathr   is_tool_tipis_status_barisItemForEditableComboBoxr   RoleDOCUMENT_WEBEMBEDDEDINTERNAL_FRAMEMATHMENU_BAR	PARAGRAPHHEADINGLABELLINK	LIST_ITEMTEXTTOOL_BARisEditableDescendantOfComboBoxappend	COMBO_BOXextend)r   r"   r#   resultr*   priorDocdocr   s          r   r/   z"SpeechGenerator._generateAncestorsB   s   ||%%77<7-c:T::<<  "sm.F.F.H.[.[.]']I88J'..@@J||--BB8LH,,((==cBC3t||'='='R'RSV'W'/45  %&&11#6<<))005**3/,,S1M<<!!;;CJM$zz66$zz22$zz88$zz$zz22	4]
 #ZZ11"ZZ//"ZZ--"ZZ__"ZZ11"ZZ__.[ #(**"5"5!6<<!!@@E$$UZZ%9%9:eg0==>r   c                     t        j                  |      r%|t        j                         j	                         k7  rg S t        |   |fi |S r   )r   is_validr   r1   r2   r   _generateAllTextSelectionr!   s      r   rQ   z)SpeechGenerator._generateAllTextSelectiono   F      %0H0H0J0]0]0_)_I w0===r   c                     t        j                  |      r%|t        j                         j	                         k7  rg S t        |   |fi |S r   )r   rP   r   r1   r2   r   _generateAnyTextSelectionr!   s      r   rT   z)SpeechGenerator._generateAnyTextSelectionw   rR   r   c                 6   t        j                         j                  d      rg S | j                  j                  j                  |      sg S g }| j                  j                  j                  |      }|dk(  rt        j                  g}nZ|dk(  rt        j                  g}nC|dk(  rt        j                  g}n,|dv rt        j                  g}n|dk(  rt        j                  g}|r2|j                   | j                  t        j                   fd|i|       |S )NonlySpeakDisplayedTextdialoggridlistbox)menutruetreer"   )r
   r1   
getSettingr%   r&   r.   	popupTyper   HAS_POPUP_DIALOGHAS_POPUP_GRIDHAS_POPUP_LISTBOXHAS_POPUP_MENUHAS_POPUP_TREErK   voicer   SYSTEM)r   r"   r#   rL   r^   s        r   _generateHasPopupz!SpeechGenerator._generateHasPopup   s    &&(334LMI||%%77<ILL**44S9	 //0F& --.F)#001F**--.F& --.FMM*$**%5%<%<N#NNOr   c                 8   t        j                         j                  d      rg S | j                  j                  j                  |      sg S | j                  j                  j                  |      rg S |j                  dd       s| j                  |d<   d|d<   | j                  j                  j                  |      r[ | j                  j                  j                  di |g}|j                   | j                  t        j                  fd|i|       |S g S )NrV   mode	clickable
stringTyper"    )r
   r1   r]   r%   r&   r.   isFeedArticler   _modeisClickableElement
formatting	getStringrK   rd   r   re   r   r"   r#   rL   s       r   _generateClickablez"SpeechGenerator._generateClickable   s    &&(334LMI||%%77<I<<!!//4Ixx%::DL(\<<!!44S97dll--77?$?@FMM*$**%5%<%<N#NNOM	r   c                 ,   t        j                         j                  d      rg S | j                  j                  j                  |      st        |   |fi |S t        j                  |      sg S | j                  j                  j                  |      rg S |j                  dt        j                  |            }|t        j                         j                         k7  rY|t        j                   j"                  t        j                   j$                  fv rt        |   |fi |S |j                  d      sg S |j                  d      }|dk(  rL| j                  j                  j'                  |      r' | j                  j(                  j*                  |fi |S |t        j                   j,                  k(  r|dk7  rg S |t        j                   j.                  k(  r&| j                  j0                  j3                         rg S t        |   |fi |S )NrV   roleinMouseReview
formatTypebasicWhereAmI)r
   r1   r]   r%   r&   r.   r   _generateDescriptionr   rP   preferDescriptionOverNamer   get_roler   r2   r   r;   ALERTDIALOGisLiveRegionliveRegionManagergenerateLiveRegionDescriptionrF   rD   caretNavigation'last_input_event_was_navigation_command)r   r"   r#   rt   rv   r   s        r   rx   z$SpeechGenerator._generateDescription   s   &&(334LMI||%%77<7/<t<<  %I<<!!;;C@Ixx 1 1# 67-**,??AA

((%***;*;<<w3C@4@@88O,	XXl+
(T\\-C-C-P-PQT-UO4<<11OOPS\W[\\5::??"z_'DI5::??"||++SSUIw+C8488r   c                    t        j                         j                  d      rg S | j                  j                  j                  |      sg S |j                  dd       s| j                  |d<   d|d<   | j                  j                  j                  |      r[ | j                  j                  j                  di |g}|j                   | j                  t        j                  fd|i|       |S g S )NrV   rh   haslongdescrj   r"   rk   )r
   r1   r]   r%   r&   r.   r   rm   hasLongDescro   rp   rK   rd   r   re   rq   s       r   _generateHasLongDescz$SpeechGenerator._generateHasLongDesc   s    &&(334LMI||%%77<Ixx%::DL*\<<!!--c27dll--77?$?@FMM*$**%5%<%<N#NNOM	r   c                 $    t        j                         j                  d      rg S  j                  j                  j                  |      st           |fi |S  j                  j                  j                  |      }|sg S  fd}dj                  t        t        ||                  }d|d<     j                  j                  j                  di ||z  g}|j                    j                  t         j"                  fd|i|       |S )NrV   c                 |    t         j                  t        j                  |        dj	                  |              S )N )strstripr   get_namegetLocalizedRoleName)xr   s    r   	objStringz6SpeechGenerator._generateHasDetails.<locals>.objString   s6    99 1 1! 45Qt7P7PQR7S6TUVVr   z, 
hasdetailsrj   r"   rk   )r
   r1   r]   r%   r&   r.   r   _generateHasDetails	detailsInjoinsetmapro   rp   rK   rd   r   re   )r   r"   r#   objsr   	toPresentrL   r   s   `      r   r   z#SpeechGenerator._generateHasDetails   s    &&(334LMI||%%77<7.s;d;;||%%//4I	W IIc#i"678	)\3$,,))33;d;iGHjdjj!1!8!8JcJTJKr   c                    t        j                         j                  d      rg S | j                  j                  j                  |      }|sYt        j                  || j                  j                  j                        }| j                  j                  j                  |      }|sg S d|d<    | j                  j                  j                  di |dz  g}|j                   | j                  t        j                  fd|i|       g }|D ]  }|j                  | j!                  |             |j                   | j                  t        j                  fd|i|       | j                  j                  j#                  |      }|j%                         s|j                  |       |j                   | j                  t        j&                  fd|i|       |j                  | j)                  |              |S )NrV   r   rj    r"   rk   )r
   r1   r]   r%   r&   r   r   find_ancestor
hasDetailsro   rp   rK   rd   r   re   rI   r   
expandEOCsr   DEFAULT_generatePause)r   r"   r#   r   	containerrL   ostrings           r   _generateAllDetailsz#SpeechGenerator._generateAllDetails   s   &&(334LMI||%%//4 ..sDLL4J4J4U4UVI<<))33I>DI)\3$,,))33;d;b@Ajdjj!1!8!8JcJTJK 
	2AMM$33A67MM*$**%5%<%<N#NNO\\++66q9F<<>MM&!MM*$**%5%=%=O3O$OPMM$--a01
	2 r   c                    t        j                         j                  d      rg S | j                  j                  j                  |      st        |   |fi |S | j                  j                  j                  |      }|sg S |j                  d      rg S | j                  j                  j                         \  }}|dv s| j                  j                         r|j                  d      rg S |dv rO| j                  j                  j                  |      r*|j                  d      d t        j                  |      fvrg S g }d|j                  d      d	}|D ]  }| j                  j                  j                  |      xs | j!                  |      }	|	j#                         }
t%        |
      d
kD  r	|
dd
 dgz   }
|j'                   | j                  j(                  j*                  di |dj-                  |
      z         |j/                   | j0                  t2        j4                  fd|i|       |j/                   | j6                  |fi |        |S )NrV   leavingDownRightstartOffsetUpLeft	endOffset
detailsforrh   )rj   rh      r   z...r   r"   rk   )r
   r1   r]   r%   r&   r.   r   _generateDetailsFor
detailsForr   lastKeyAndModifiersr0   treatAsTextObjectr   get_character_countdisplayedTextr   splitlenrI   ro   rp   r   rK   rd   r   re   r   )r   r"   r#   r   lastKeymodsrL   objArgsr   r   wordsr   s              r   r   z#SpeechGenerator._generateDetailsFor  s	   &&(334LMI||%%77<7.s;d;;||%%005I88II..BBD((DLL,A,A,CR_I`In$||%%77<88K(v7Q7QRU7V0WW	!-txx7GH 	=A\\++99!<\@Y@YZ[@\FLLNE5zA~a
eW,MM;$,,11;;FgFRWXYMM*$**%5%<%<N#NNOMM-$--a;7;<	= r   c                    | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      r| j                   j                  j                  |      sq| j                   j                  j                  |      sL| j                   j                  j                  |      s'| j                   j                  j                  |      sg S |j                  d      }||k(  rg S |r)|| j                   j                  j                  |      v rg S t        j                  |      }|j                  d      }|rL|rJ|rH|t        j                  |      k(  r0d|d|d|dg}t        j                  t        j                   |d       g S |j                  dt        j"                  |            }|t$        j&                  j(                  k(  rQ| j                   j                  j+                  |      r,d|d	g}t        j                  t        j                   |d       g S | j                   j                  j-                  |      s%| j                   j                  j                  |      r-| j                   j                  j/                         \  }}	|d
v rg S t1        j2                  |      rt        j                  |      |k(  rg S |r|}
| j                   j                  j5                  |      s|
j7                         }
| j                   j                  j9                  |      r%| j                   j                  j;                  |
      }
|
g}|j=                   | j>                  t@        jB                  fd|i|       |S t1        jD                  |      rFt        jF                  || j                   j                  jH                        }|rt        |   |fi |S t        |   |fi |S )Nr*   
ancestorOfzWEB: z's ancestorzhas same name as priorObjz. Not generating labelOrName.Trt   zis popup menu for current item.HomeEndr   r   r   r   Page_Up	Page_Downr"   )%r%   r&   r.   r   _generateLabelOrNameisTextBlockElementr6   
isDocumentisDPubisContentSuggestionr   labelsForObjectr   r   r   printTokens
LEVEL_INFOrz   r   r;   MENUisPopupMenuForCurrentItem$isContentEditableWithEmbeddedObjectsr   r   is_page_tabhasExplicitNamer   shouldVerbalizeAllPunctuationverbalizeAllPunctuationrK   rd   r   r   is_check_boxr   
isGridCell)r   r"   r#   r*   objName
descendanttokensrt   r   r   namerL   gridCellr   s                r   r   z$SpeechGenerator._generateLabelOrName8  s5   ||%%77<7/<t<<<<!!44S9<<))44S9<<))44S9<<))005<<))==cBI88J'(?IDLL$:$:$J$J3$OOI##C(XXl+
(w7h>O>OPX>Y3Yz=#?Z ?AFe..=Ixx 1 1# 675::??"t||'='='W'WX['\s$EFFe..=I<<!!FFsKll$$//4 LL22FFHMGT``	""8,1B1B81LPW1WID<<))99#>zz|||%%CCCH||--EEdKVFMM*$**%5%=%=O3O$OPM##C(--c4<<3I3I3T3TUHw3HEEEw+C8488r   c                 \   | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      r]| j                   j                  j                  |      s8| j                   j                  j                  |      s|j                  d      sg S | j                   j                  j                  |      rg S | j                   j                  j                  |      r|j                  d      r~|j                  d      }t        j                  |      s$t        j                  |t        j                        }|r2t        |      | j                   j                  j!                  |      v rg S |j                  dt        j"                  |            }|t$        j&                  j(                  t$        j&                  j*                  fv rt        |   |fi |S t        j,                  |      r	| j                   j                  j/                  |      rt        j0                  |      g}n| j                   j                  j3                  |      r'| j                   j                  j5                  |      sg S t        j,                  |      }| j                   j                  j5                  |      s|j7                         }|g}|j9                   | j:                  t<        j>                  fd|i|       |S t        |   |fi |S )NinFlatReviewr   rt   r"   ) r%   r&   r.   r   r4   r   r6   r   r   hasVisibleCaptionisFigurer   
is_captionr   r   hashlabelTargetsrz   r   r;   rJ   SPIN_BUTTONr   ry   get_descriptionisLinkr   r   rK   rd   r   r   )r   r"   r#   captionrt   rL   r   r   s          r   r4   zSpeechGenerator._generateNamet  sb   ||%%77<7(555<<!!44S9<<))44S9<<))00588N+I<<!!33C8I<<!!**3/DHH\4Jhh|,G))'2"00+:P:PQ49(>(>(K(KG(TT	xx 1 1# 67 EJJ((%***@*@AA7(555S!||%%??D"22378''..s3//??D	((-||--==cB::<DMM*$**%5%=%=O3O$OPMw$S1D11r   c                    | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      rg S | j                   j                  j                  |      \  }}|r7|g}|j                   | j                  t        j                  fd|i|       |S t        |   |fi |S )Nr"   )r%   r&   r.   r   _generateLabelr   inferLabelForrK   rd   r   r   )r   r"   r#   labelobjectsrL   r   s         r   r   zSpeechGenerator._generateLabel  s    ||%%77<7)#666<<!!44S9I//==cBwWFMM*$**%5%=%=O3O$OPMw%c2T22r   c                    t        j                         j                  d      rg S | j                  j                  j                  |      s%| j                  j                  j                  |      rg S t        |    |fi |S )NrV   )	r
   r1   r]   r%   r&   r   r   r   _generateNewNodeLevelr!   s      r   r   z%SpeechGenerator._generateNewNodeLevel  sj    &&(334LMI<<!!44S9ll$$++C0Iw,S9D99r   c                    t        j                         j                  d      rg S |j                  d      sg S | j                  j
                  j                  |      r|| j                  j
                  j                  t        j                         j                               s7dg}|j                   | j                  t        j                  fd|i|       |S t        | 8  |fi |S )NrV   r   r   r"   )r
   r1   r]   r   r%   r&   r.   r   r2   rK   rd   r   re   r   _generateLeaving)r   r"   r#   rL   r   s       r   r   z SpeechGenerator._generateLeaving  s    &&(334LMIxx	"I<<!!33C8<<));;'')<<>@TFMM*$**%5%<%<N#NNOMw'4t44r   c                     g S r   rk   r   r"   r#   s      r   _generateNewRadioButtonGroupz,SpeechGenerator._generateNewRadioButtonGroup  s	     	r   c                 
   t        j                         j                  d      s4t        j                         j                  d      t        j                  k(  rg S t
        j                  j                  t
        j                  j                  t
        j                  j                  dg}|j                  dt        j                  |            }||vrt        	| 8  |fi |S | j                  j                   j#                  t        j$                  |d            }|| j                  j                   j'                  |      r&| j                  j                   j)                  |      }ng|t
        j                  j                  t
        j                  j                  fv r1t        j*                  |t,        j.                        D cg c]  }| }}t1              }|sg S | j                  j                   j'                  |      rt3        j4                  |      g}n2|dk(  rt3        j6                  |      g}nt3        j8                  |      g}|j;                   | j<                  t>        j@                  fd|i|       |S c c}w )NrV   speechVerbosityLevel	ROLE_FEEDrt   r   r"   )!r
   r1   r]   r	   VERBOSITY_LEVEL_BRIEFr   r;   DESCRIPTION_LISTLISTLIST_BOXr   r   rz   r   _generateNumberOfChildrenr%   r&   
getSetSize	get_childisDescriptionListdescriptionListTermsiter_childrenr   is_list_itemr   r   descriptionListTermCountfeedArticleCountlistItemCountrK   rd   r   re   )
r   r"   r#   rolesrt   setsizechildrenr   rL   r   s
            r   r   z)SpeechGenerator._generateNumberOfChildren  s   &&(334LM))+667MN001I
 ,,$$ xx 1 1# 67u74SADAA,,((33H4F4FsA4NO?||%%77<<<11FFsK%**//5::+>+>??'/'='=c;C[C['\]!A]](mGI<<!!33C877@AF[ //89F,,W56Fjdjj!1!8!8JcJTJK ^s   	J c                 (     | j                   |fi |S r   )_generateRoleNamer   s      r   _generateTextRolez!SpeechGenerator._generateTextRole  s    %t%%c2T22r   c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      }|r|S t        |   |fi |S r   )r%   r&   r.   r   r   getRoleDescription)r   r"   r#   roledescriptionr   s       r   r   z$SpeechGenerator.getLocalizedRoleName  sh    ||%%77<7/<t<<,,00CCCH""w+C8488r   c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      } | j                  |fi |S r   )r%   r&   r.   r   *_generateRealActiveDescendantDisplayedTextrealActiveDescendant_generateDisplayedText)r   r"   r#   radr   s       r   r	  z:SpeechGenerator._generateRealActiveDescendantDisplayedText  sb    ||%%77<7EcRTRRll$$99#>*t**37$77r   c                 .   t        j                         j                  d      rg S | j                  j                  j                  |      st        |   |fi |S ||j                  d      k(  rg S g }| j                  j                  j                  |      }|r7|g}|j                   | j                  t        j                  fd|i|       |S |j                  dt        j                  |            }| j!                         \  }}||v rg S |j                  dd      }|j                  d      }	|j                  d      }
|j                  d	d
      }|j                  dd      }|st"        j$                  j&                  t"        j$                  j(                  t"        j$                  j*                  t"        j$                  j,                  t"        j$                  j.                  t"        j$                  j0                  t"        j$                  j2                  t"        j$                  j4                  g}nt"        j$                  j4                  g}|sH|j7                  t"        j$                  j8                         |j7                  t"        j$                  j:                         |j7                  t"        j$                  j<                         |j                  d      r|j7                  d       |j                  dd      dk7  rR|j7                  t"        j$                  j>                         |j7                  t"        j$                  j@                         |	s|
r{|j7                  t"        j$                  jB                         |j7                  t"        j$                  jD                         |j7                  t"        j$                  jF                         | j                  j                  jI                  |      r$|j7                  t        j                  |             |dkD  r)|j7                  t"        j$                  jJ                         | j                  j                  jM                  |      r)|j7                  t"        j$                  jN                         | j                  j                  jQ                         \  }}tS        jT                  |      }|r| j                  j                  jW                  |      s|dv r|r| j                  jY                         r|	rg S |dv rB|s@| j                  j                  j[                  |      r|
d t]        j^                  |      fvrg S ||vrV|j7                   | j`                  |fi |       |j                   | j                  t        j                  fd|i|       n |r| j                  j                  jc                  |      rt        jd                  |      }|rtS        jT                  |      s|dvr|j7                  tf        jh                         |j                   | j                  t        j                  fd|i|       nS|t"        j$                  jj                  k(  r||dz
  k(  s&| j                  j                  jm                  |      s| j                  j                  jo                  |      }|rj|j7                  tf        jp                   | j`                  |fi ||dz         |j                   | j                  t        j                  fd|i|       nv|j7                   | j`                  |fi |       |j                   | j                  t        j                  fd|i|       n | j                  j                  js                  |      rtS        jt                  t        jd                  |            rS|j7                  tv        jx                         |j                   | j                  t        j                  fd|i|       n| j                  j                  j{                  |      rl|j7                  | ja                  |t"        j$                  j|                               |j                   | j                  t        j                  fd|i|       ||dz
  k(  s%| j                  j                  jm                  |      s|j7                   | j`                  |fi |       |j                   | j                  t        j                  fd|i|       nl||vrh|j                  d      |k7  rT|j7                   | j`                  |fi |       |j                   | j                  t        j                  fd|i|       | j                  j                  j                  |      r'| j                  j                  j                  |      s|S d }t        j                  ||      }|rkt        j                  |      |k7  rS||dz
  k(  s+t        j                  |      t        j                  |      k(  r |j                  | j                  |             |S )NrV   r*   r"   rt   forceFr   r   r   r   total   r   ROLE_CONTENT_SUGGESTIONrv   	unfocusedrw   r   r   r   )rt   level)rt   c                 Z    t        j                  |       xs t        j                  |       S r   )r   
is_headingis_linkr   s    r   
speakRolesz5SpeechGenerator._generateRoleName.<locals>.speakRoles|  s#    ))!,F0C0CA0FFr   )Cr
   r1   r]   r%   r&   r.   r   r  r   r  rK   rd   r   re   r   rz   "_getEnabledAndDisabledContextRolesr   r;   FOOTERFORMrC   	MENU_ITEMrA   SECTIONREDUNDANT_OBJECTUNKNOWNrI   
TABLE_CELLrF   STATICrE   r   DOCUMENT_FRAMEr<   r{   isAnchor
ROW_HEADERisMenuInCollapsedSelectElementr   r   r   is_editabler   r0   r   r   r   r   r   
get_parentr   ROLE_EDITABLE_CONTENTrB   isFocusableWithMathChildheadingLevelROLE_HEADING_LEVEL_SPEECHr   is_imager   IMAGE_MAP_LINKhasUselessCanvasDescendantIMAGEr7   isMathTopLevelr   r   )r   r"   r#   rL   r  rt   enableddisabledr  startendr   r  
doNotSpeakr   r   
isEditableparentr  r  ancestorr   s                        r   r  z!SpeechGenerator._generateRoleName  s   &&(334LMI||%%77<7,S9D99$((:&&I,,00CCCH%&FMM*$**%5%<%<N#NNOMxx 1 1# 67 CCE8I%('hh{#!$!$**++**//******..**..**,,**55**,,.J  **,,-Jejj334ejjoo.ejj//0xx!!!";<xxk2oE!!%**"6"67!!%**//2!!%**";";<!!%**"9"9:!!%**"2"23||%%..s3!!("3"3C"89qy!!%**"7"78||%%DDSI!!%**//2..BBD ,,S1
dll44YYZ]^--dt||?T?T?V\a	.(<<));;C@4)C)CC)H"III:%7d77DtDEjdjj)9)@)@RcRTRSDLL22==cB((-Fk55f=Z[/EEFjdjj)9)@)@RcRTRSUZZ'''	!)?)?)X)XY\)]..;;C@MM"3"M"M 9 9 9# F F!&Q( #( ) MM*$**-=-D-D"V#"VQU"VWMM";$";";C"H4"HIMM*$**-=-D-D"V#"VQU"VW\\##**3/##H$7$7$<=h556jdjj)9)@)@RcRTRS<<))DDSIMM$";";CejjFVFV";"WXMM*$**-=-D-D"V#"VQU"VWEAI%T\\-C-C-\-\]`-aMM";$";";C"H4"HIMM*$**-=-D-D"V#"VQU"VW#(<(CMM3$33C@4@AMM*$**%5%<%<N#NNO<<!!((-dll6L6L6[6[\_6`M	G ))#z:))(3t;%!)#x'8'8'=ARARS[A\'\MM$00:;r   c                 d   | j                   j                  j                  |      sg S |j                  d      dk7  }| j                   j                  j	                  |      }t        j                  ||      }|sg S |g}|j                   | j                  t        j                  fd|i|       |S )Nrv   detailedWhereAmIr"   )r%   r&   r.   r   getTopLevelDocumentForObjectr   get_document_summaryrK   rd   r   re   )r   r"   r#   onlyIfFounddocumentr   rL   s          r   _generatePageSummaryz$SpeechGenerator._generatePageSummary  s    ||%%77<Ihh|,0BB<<))FFsK00;GIjdjj!1!8!8JcJTJKr   c                 2   | j                   j                  j                  |      st        |   |fi |S g }|j                  dd      }|j                  dd      }| j                   j                  j                  |||      }|r|j                  |       |S )Nr   r   r   )r%   r&   r.   r   _generateExpandedEOCsr   r   rI   )r   r"   r#   rL   r   r   textr   s          r   rB  z%SpeechGenerator._generateExpandedEOCs  s    ||%%77<70===hh}a0HH["-	||%%00k9MMM$r   c                     t        j                  |      r.|j                  dd      }|j                  dd      }|dz   |k  rg S |j                  d      dvr|j                  d      |k(  rg S t        |   |fi |S )Nr   r   r  r  rv   )rw   r:  r*   )r   r   r   r   _generatePositionInList)r   r"   r#   thisObjIndexobjCountr   s        r   rE  z'SpeechGenerator._generatePositionInList  s    ##C(88GQ/Lxx+Ha(*	88L!)NNxx
#s*	w.s;d;;r   c                 \    | j                   j                         sg S t        |   |fi |S r   )r%   inFocusModer   _generateUnselectedCellr!   s      r   rJ  z'SpeechGenerator._generateUnselectedCell  s-    ||'')Iw.s;d;;r   c                    t        |   |fi |}| j                  j                         s|S t	        j
                         j                  d      rlt        j                  |      }|rE|j                  |       |j                   | j                  t        j                  fd|i|       |S t        j                  |      \  }}| j                  j                  j!                  |      rW|j                  t"        j$                  |dz   z         |j                   | j                  t        j                  fd|i|       | j                  j                  j'                  |      rW|j                  t"        j(                  |dz   z         |j                   | j                  t        j                  fd|i|       |S )NspeakCellCoordinatesr"   r  )r   _generateRealTableCellr%   rI  r
   r1   r]   r   get_label_for_cell_coordinatesrI   rK   rd   r   re   get_cell_coordinatesr&   cellRowChangedr   	TABLE_ROWcellColumnChangedTABLE_COLUMN)r   r"   r#   rL   r   rowcolr   s          r   rM  z&SpeechGenerator._generateRealTableCell  s_   /<t<||'')M&&(334JK::3?Ee$jdjj)9)@)@RcRTRS33C8HC||%%44S9h00C!G<=jdjj)9)@)@RcRTRS||%%77<h33sQw?@jdjj)9)@)@RcRTRSr   c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  ||j                  d            s | j                  |fi |S t        j                  |t        j                        }|rKt        j                  |      r6| j                   j                  j                  |      s| j                  |      S t        |   |fi |S )Nr*   )r%   r&   r.   r   _generateTableCellRowshouldReadFullRowr   rM  r   r   r   is_table_rowr   isLayoutOnlygenerate)r   r"   r#   rT  r   s       r   rW  z%SpeechGenerator._generateTableCellRow  s    ||%%77<70===||%%77TXXj=QR.4..s;d;;$$S+*B*BC8$$S)$,,2H2H2U2UVY2Z==%%w,S9D99r   c           
         | j                   j                  j                  |      s:d|dg}t        j                  t        j
                  |d       t        	|   |fi |S d|g}t        j                  t        j
                  |d       g }|j                  d      dk(  r| j                  d|      }n$| j                   j                  j                  |      r+| j                  t        j                  j                  |      }n| j                   j                  j                  |      r+| j                  t        j                  j                  |      }n| j                   j                  j!                  ||j                  d      	      r+| j                  t        j                  j"                  |      }n#| j                   | j$                  |fi ||      }d
|vrP| j                   j                  j'                  |      }| j                   j                  j)                  |      d   |d
<   |j                  dd      }|j                  dd      }| j                   j                  j+                  |||      \  |d<   |d<   |s$t-        t/        d t        	|   |fi |            }| j1                  ||       d|dg}t        j                  t        j
                  |d       |S )NzWEB:z=is not in document content. Calling default speech generator.Tz*WEB: Generating speech for document objectrv   r:  defaultr   )offsetr*   r   r   rA  languagedialectc                     | S r   rk   r  s    r   <lambda>z0SpeechGenerator.generateSpeech.<locals>.<lambda>  s    1 r   z*WEB: Speech generation for document objectz	complete.)r%   r&   r.   r   r   r   r   generateSpeechr   _overrideRoler   r   r;   rD   isCustomImager/  
treatAsDivr  _getAlternativeRoler;  getPriorContext!getLanguageAndDialectForSubstringlistfilter_restoreRole)
r   r"   r#   r   rL   oldRoler>  r3  r4  r   s
            r   rc  zSpeechGenerator.generateSpeech  sb   ||%%77<c#bcFe..=7)#666>D%**FD988L!%77((D9G\\##**3/(($?G\\##11#6(()9)94@G\\##..s488M;R.S((););TBG(()A)A)A#)N)NPTUGT!||--JJ3OH#||55EEhOPQRD*hh{B'LL""DDS%QTU 	*Z$y/ &eg.DS.QD.QRSF'4(>[Q%**FD9r   c                 b   t        |      sg S g }| j                  j                  j                  |d      }dt        |      dg}t	        j
                  t        j                  |d       t        |      D ]  \  }}|\  }}}	}
d| d|d| d|	 d|
 d	g}t	        j
                  t        j                  |d        | j                  |f||	|
|t        |      d
|}t        |t              rd }t        t        ||            }|s|d   s|j                  |       ||d<    |s| j                  j                  d      s7t        j                         j!                  d      r|j#                  d      dk(  rd}
nt$        j&                  }
|
 | j(                  t*        j,                  fi |g}|S )NTz(WEB: Generating speech contents (length:)zITEM z: zstart: z, end: z '')r   r   r   r   r  c                 .    t        | t              xr |   S r   )
isinstancerj  r  s    r   isNotEmptyListz8SpeechGenerator.generateContents.<locals>.isNotEmptyList  s     *1d 3 =A>>r   r   r*   F)treatInterruptedAsInspeakBlankLinesrv   r8  r   )r   r%   r&   filterContentsForPresentationr   r   r   	enumeraterc  rr  rj  rk  rI   r0   r
   r1   r]   r   r   BLANKrd   r   r   )r   contentsr#   rL   r   icontentr"   r3  r4  r   	utterancers  s                r   generateContentsz SpeechGenerator.generateContents  s   8}I<<))GGRVW<c(mSQ%**FD9#H- 	'JAw&-#CVaSmSGE7'#bPQ*RSFe..=+++6!&#fs8}6046I )T*? !	!BC	Yq\i(#&Z 	'  ||$$%$@&113>>?PQ((<(J6!jdjj)9)A)AJTJKFr   )$__name__
__module____qualname__r   r    r(   r/   rQ   rT   rf   rr   rx   r   r   r   r   r   r4   r   r   r   r   r   r  r   r	  r  r?  rB  rE  rJ  rM  rW  rc  r}  __classcell__)r   s   @r   r   r   0   s    !::+Z>>2*9B$*>"H:9x*2X3:5 #L398yv
<<,:$L!r   r   )__id____version____date____copyright____license__girequire_versiongi.repositoryr   orcar   r   r   r   r	   r
   r   orca.ax_documentr   orca.ax_objectr   orca.ax_tabler   orca.ax_textr   orca.ax_utilitiesr   r   rk   r   r   <module>r     su   , 7  	   7E "     "  ! ! ' # !  )m&66 mr   