
    g
fy,                         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  G d dej,                        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   )braille)braille_generator)debug)focus_manager)messages)object_properties)AXObject)AXTable)AXUtilitiesc                        e Zd Z fdZ fdZ fdZ fdZ fdZ f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 )BrailleGeneratorc                 $    t         |   |       y N)super__init__)selfscript	__class__s     D/usr/lib/python3/dist-packages/orca/scripts/web/braille_generator.pyr   zBrailleGenerator.__init__/   s         c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |d      }|r|S t        |   |fi |S )NT)_script	utilitiesinDocumentContentr   getLocalizedRoleNamegetRoleDescription)r   objargsroledescriptionr   s       r   r   z%BrailleGenerator.getLocalizedRoleName2   sj    ||%%77<7/<t<<,,00CCCN""w+C8488r   c                 ^   | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |d      }|r|gS t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  t        j                  j                  g}t        j                  |      s|j!                  t        j                  j"                  t        j                  j$                  t        j                  j&                  t        j                  j(                  t        j                  j*                  t        j                  j,                  g       |j/                  d      :|j/                  d      )|j1                  t        j                  j2                         g }|j/                  dt5        j6                  |            }|t        j                  j8                  k(  rH| j                   j                  j;                  |      }|j1                  t<        j>                  |z         n| j                   j                  jA                  |      rm|tC        jD                         jG                         k(  rHt        jH                  t5        jJ                  |            r]|j1                  tL        jN                         n=||vr9tQ        jR                  |      }|r|j1                  |       nt        |   |fi |}|j/                  dd      }	|j/                  dd      }
|	|
dz
  k(  r|t        j                  j8                  k7  r|t        j                  jT                  k(  s%| j                   j                  jW                  |      rFt5        jX                  |t        jZ                        }| |j!                  | j	                  |             |S )	z)Prevents some roles from being displayed.TstartOffset	endOffsetroleindexr   total   ).r   r   r   r   _generateRoleNamer   r   RoleFORM	PARAGRAPHSTATICSECTIONREDUNDANT_OBJECTUNKNOWNr   is_focusableextendLIST	LIST_ITEMCOLUMN_HEADER
ROW_HEADER
TABLE_CELLPANELgetappendALERTr   get_roleHEADINGheadingLevelr
   ROLE_HEADING_LEVEL_BRAILLEisLinkr   
getManagerget_locus_of_focusis_image
get_parentr	   IMAGE_MAP_LINKr   get_label_for_cell_coordinatesIMAGEtreatAsTextObjectfind_ancestor
is_heading)r   r   r    r!   doNotDisplayresultr%   levellabelr&   r'   headingr   s               r   r)   z"BrailleGenerator._generateRoleName<   s    ||%%77<7,S9D99,,00CCCN#$$



,,

))

**

33

**, '',!&!5!5!&!9!9!&!6!6!&!6!6!&!1!1!3 4 88M".488K3H3T

 0 01xx 1 1# 675::%%%LL**77<EMM+FFNO\\##**3/=335HHJJ##H$7$7$<=h556%::3?Ee$23?$?!$!$EAI$%***<*<"<

(((DLL,B,B,T,TUX,Y,,S+2H2HIG"d44W=>r   c                 Z   | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      rg S t        j                  |      r'| j                   j                  j                  |      rg S  | j                  |fi |S r   )
r   r   r   r   _generateLabelOrNameisTextBlockElementr   is_editableisCodeDescendant_generateNamer   r   r    r   s      r   rQ   z%BrailleGenerator._generateLabelOrNameu   s    ||%%77<7/<t<<<<!!44S9I""3'||%%66s;I!t!!#...r   c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      \  }}|r|gS t        |   |fi |S r   )r   r   r   r   _generateLabelinferLabelFor)r   r   r    rN   objectsr   s        r   rX   zBrailleGenerator._generateLabel   sm    ||%%77<7)#666//==cBw7Nw%c2T22r   c                    | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      rg S |j                  dt        j                  |            }|t        j                  j                  k(  rt        j                  |      rg S t        |   |fi |S )Nr%   )r   r   r   r   _generateLabelAndNamerR   r9   r   r<   r   r*   LABELsupports_text)r   r   r    r%   r   s       r   r\   z&BrailleGenerator._generateLabelAndName   s    ||%%77<70===<<!!44S9Ixx 1 1# 675::###(>(>s(CIw,S9D99r   c                     | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  |      rg S t        |   |fi |S r   )r   r   r   r   _generateDescriptionpreferDescriptionOverNamerV   s      r   r`   z%BrailleGenerator._generateDescription   sb    ||%%77<7/<t<<<<!!;;C@Iw+C8488r   c                    | j                   j                  j                  |      st        |   |fi |S t        j                  |      j                  d      }|r|gS | j                   j                  j                  |      rt        j                  |      gS t        j                  |      r'| j                   j                  j                  |      sg S t        |   |fi |}|rB|d   r=| j                   j                  j                  |      s|d   j                         |d<   |S |s[t        j                  |      rFt        j                   || j                   j                  j"                        }|rt        |   |fi |S |S )Nbraillelabelr   )r   r   r   r   rU   r   get_attributes_dictr9   ra   get_descriptionget_namehasValidNamehasExplicitNamestripr   is_check_boxrI   
isGridCell)r   r   r    brailleLabelrL   gridCellr   s         r   rU   zBrailleGenerator._generateName   sL   ||%%77<7(55533C8<<^L >!<<!!;;C@,,S122S!$,,*@*@*M*Mc*RI&s3d3fQi(>(>(N(Ns(Sq	)F1I  K44S9--c4<<3I3I3T3TUHw,X>>>r   c                 2   | j                   j                  j                  |      st        |   |fi |S g }|j                  dd      }|j                  dd      }| j                   j                  j                  |||      }|r|j                  |       |S )z>Returns the expanded embedded object characters for an object.r#   r   r$   )r   r   r   r   _generateExpandedEOCsr9   
expandEOCsr:   )r   r   r    rL   r#   r$   textr   s          r   rp   z&BrailleGenerator._generateExpandedEOCs   s     ||%%77<70===hh}a0HH["-	||%%00k9MMM$r   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   rt   z;BrailleGenerator._generateRealActiveDescendantDisplayedText   sb    ||%%77<7EcRTRRll$$99#>*t**37$77r   c                    | j                   j                  j                  |      st        |   |fi |S | j                   j                  j                  ||j                  d            s | j                  |fi |S t        j                  |t        j                        }|rMt        j                  |      r8| j                   j                  j                  |      s| j                  |d      S t        |   |fi |S )NpriorObjF)includeContext)r   r   r   r   _generateTableCellRowshouldReadFullRowr9   _generateRealTableCellr   rI   r   is_table_rowrf   isLayoutOnlygenerate)r   r   r    rowr   s       r   r{   z&BrailleGenerator._generateTableCellRow   s    ||%%77<70===||%%77TXXj=QR.4..s;d;;$$S+*B*BC8$$S)$,,2H2H2U2UVY2Z==U=;;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                   j                  j                  |       |d<   d }| j                   j                  j                  |      s%| j                   j                  j                  |      r,| j                  t        j                  j                  |      }nQ| 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(                  |      }nO| j                   j                  j+                  |      r*| j                  t        j                  j,                  |      }t/        j0                  |      r=t3        j4                  |t.        j6                        }|rt/        j8                  |      s|}|j;                  t        |   |fi |       |d= |r| j=                  ||       |S )NzWEB:z>is not in document content. Calling default braille generator.Tz+WEB: Generating braille for document objectrz   r#   )offset)r   r   r   r   printTokens
LEVEL_INFOr   generateBrailleisClickableElementr@   _overrideRoler   r*   LINKisCustomImagerG   isAnchorr-   
treatAsDivr9   r.   treatAsEntryENTRYr   is_menu_itemr   rI   is_combo_boxis_expandedr2   _restoreRole)r   r   r    tokensrL   oldRolecomboBoxr   s          r   r   z BrailleGenerator.generateBraille   sC   ||%%77<c#cdFe..=7*37$77?E%**FD9%)\\%;%;%M%Mc%R!R<<!!44S9ll$$++C0(($?G\\##11#6(()9)94@G\\##,,S1(():):DAG\\##..s488M;R.S((););TBG\\##005(()9)94@G##C(--c;3K3KLH 7 7 Aeg-c:T:;!"gt,r   c                    t        |      sg S g }| j                  j                  j                  |d      }|j	                  d      }| j                  j                  j                  |      \  }}| j                  j                  j                  |||      }d }d }	t        |      D ]  \  }
}|\  }}}}| j                  |||||
t        |            \  }}|s3|
|k(  r|}	|r|r|j                  r|j                  d   }nd}|d   j                  r|d   j                  d   }nd}| j                  j                  j                  ||      r%|j                  dt        j                  d             |d   }|j                  |        ||	fS )	NTdocumentFrame)r   )r#   r$   stringr&   r'   ro    r    )lenr   r   filterContentsForPresentationr9   getCaretContextfindObjectInContents	enumerater   r   needsSeparatorinsertr   Regionr:   )r   contentsr    rL   documentr   r   r&   
lastRegionfocusedRegionicontentaccstartendr   regionsfRegionlastCharnextChars                       r   generateContentsz!BrailleGenerator.generateContents  s   8}I<<))GGRVW88O,ll,,<<8<TV&&;;CR
#H- 	#JAw&-#CV#33#fs8}  4  .GW Ez 'g$$)004H!H1:$$&qz003H!H<<))888LNN1gnnS&9: JMM'"1	#4 }$$r   )__name__
__module____qualname__r   r   r)   rQ   rX   r\   r`   rU   rp   rt   r{   r   r   __classcell__)r   s   @r   r   r   -   sF    !97r/3:908:"H'%r   r   )__id____version____date____copyright____license__girequire_versiongi.repositoryr   orcar   r   r   r   r	   r
   orca.ax_objectr   orca.ax_tabler   orca.ax_utilitiesr   r    r   r   <module>r      sl   , 7  	   7E "   "    " # ! ){%(99 {%r   