
    g
f%                         d Z dZdZdZdZddlmZ ddlmZ ddl	m
c 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$z$Copyright (c) 2013-2014 Igalia, S.L.LGPL    N)AXObject)AXUtilities   	Utilitiesc                        e Zd Zd Zd Z fdZ fdZ fdZ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 xZS )Scriptc                 D    t         j                  j                  | |       y N)defaultr
   __init__)selfapps     B/usr/lib/python3/dist-packages/orca/scripts/toolkits/gtk/script.pyr   zScript.__init__&   s    c*    c                     t        |       S r   r   )r   s    r   getUtilitieszScript.getUtilities)   s    r   c                 V    | j                   j                          t        |           y)z'Called when this script is deactivated.N)	utilitiesclearCachedObjectssuper
deactivate)r   	__class__s    r   r   zScript.deactivate,   s      	))+r   c                    | j                   j                  |      rNt        j                  |t        j
                        xs |}t        j                         j                  ||d       n| j                   j                  |      re| j                   j                  |      }|rHt        j                         j                         |k7  r#t        j                         j                  |       t        | 9  |||       y)z3Handles changes of focus of interest to the script.FN)r   isToggleDescendantOfComboBoxr   find_ancestorr   is_combo_boxfocus_manager
getManagerset_locus_of_focusisInOpenMenuBarMenutopLevelObjectget_active_windowset_active_windowr   locusOfFocusChanged)r   eventoldFocusnewFocuswindowr   s        r   r&   zScript.locusOfFocusChanged2   s     >>66x@--h8P8PQ]U]H$$&99%5Q^^//9^^228<F-224FFHFR((*<<VD#E8X>r   c                 r   | j                   j                  t        j                         j	                               s7d}t        j                  t
        j                  |d       t        | %  |       yd}t        j                  t
        j                  |d       | j                  |j                  d       y)zCCallback for object:active-descendant-changed accessibility events.zDGTK: locusOfFocus is not typeahead. Passing along to default script.TN>GTK: locusOfFocus believed to be typeahead. Presenting change.	interrupt)r   isTypeaheadr   r    get_locus_of_focusdebugprintMessage
LEVEL_INFOr   onActiveDescendantChangedpresentObjectany_data)r   r'   msgr   s      r   r4   z Script.onActiveDescendantChanged?   s     ~~))-*B*B*D*W*W*YZXCu//d;G-e4N5++S$75>>T:r   c                 H   |j                   }| j                  j                  |t        j                         j                               r!t        j                  j                  | |       yt        j                  |t        j                        sy| j                  |dd       y)z?Callback for object:state-changed:checked accessibility events.NT)alreadyFocusedr.   )sourcer   isSameObjectr   r    r0   r   r
   onCheckedChangedr   r   r   is_list_boxr5   r   r'   objs      r   r<   zScript.onCheckedChangedL   sz     ll>>&&sM,D,D,F,Y,Y,[\NN++D%8 %%c;+B+BC3ttDr   c                 .   | j                   j                        ry| j                   j                  j                        ryj                  | j                  j                         k(  r(d}t        j                  t        j                  |d       yt        j                         j                         }| j                   j                  |      r?t        j                  j                        r t        j                   j                        syt        j"                  |fd      }|s/t        j                         j%                  j                         yt        j                  |      ryt        j&                  |      rdt        j(                  |      r(d}t        j                  t        j                  |d       yd}t        j                  t        j                  |d       t        j                         j%                  j                         y)z)Callback for focus: accessibility events.Nz.GTK: Event source is current mouse review itemTc                 "    | j                   k(  S r   )r:   )xr'   s    r   <lambda>z Script.onFocus.<locals>.<lambda>r   s    1;L r   z:GTK: Event source is ancestor of selected focus. Ignoring.zBGTK: Event source is ancestor of unselected focus. Updating focus.)r   eventIsCanvasNoiseisLayoutOnlyr:   mouseReviewergetCurrentItemr1   r2   r3   r   r    r0   r/   r   supports_tabler   
is_focusedr   r!   is_menuis_selected)r   r'   r7   focusancestors    `   r   onFocuszScript.onFocusZ   s{    >>,,U3>>&&u||4<<4--<<>>BCu//d;((*==?>>%%e,&&u||4))%,,7))%1LM$$&99%N""8,x(&&u-R""5#3#3S$?VCu//d;  "55eU\\Jr   c                    | j                   j                  |j                        r(d}t        j                  t        j
                  |d       yt        j                         j                         }t        j                  ||j                        r=t        j                  |      r(d}t        j                  t        j
                  |d       yt        | 9  |       y)z?Callback for object:state-changed:focused accessibility events.z.GTK: Event source believed to be useless panelTNzDGTK: Ignoring focus change on ancestor of still-focused locusOfFocus)r   isUselessPanelr:   r1   r2   r3   r   r    r0   r   is_ancestorr   rI   r   onFocusedChanged)r   r'   r7   rL   r   s       r   rR   zScript.onFocusedChanged   s     >>((6BCu//d;((*==?u||49O9OPU9VXCu//d; 'r   c                 <   | j                   j                  |j                        r|j                  r/t	        j
                         j                  ||j                         yt	        j
                         j                         |j                  k(  r%t	        j
                         j                  |d       yt        j                  |j                        r9| j                   j                  t        j                  |j                              ryt        | 9  |       y)z@Callback for object:state-changed:selected accessibility events.N)r   isEntryCompletionPopupItemr:   detail1r   r    r!   r0   r   is_icon_or_canvashandleContainerSelectionChanger   
get_parentr   onSelectedChangedr   r'   r   s     r   rY   zScript.onSelectedChanged   s     >>44U\\B}}((*==eU\\R'')<<>%,,N((*==eTJ((6~~<<X=P=PQVQ]Q]=^_!%(r   c                 l   t        j                         j                         }| j                  j	                  |j
                        r6| j                  j                  ||j
                        rt        | !  |       yt        j                  |j
                        }t        j                  |j
                        r|sy|s| j                  j                  |      rd}t        j                  t        j                  |d       | j                  j!                  |j
                        }|D ]/  }| j                  j#                  |      r| j%                  |       1 yt        j&                  |j
                        r)| j                  j)                  |j
                        dkD  ryt        | !  |       y)z;Callback for object:selection-changed accessibility events.Nr,   Tr   )r   r    r0   r   isComboBoxWithToggleDescendantr:   isOrDescendsFromr   onSelectionChangedr   rI   r   r/   r1   r2   r3   selectedChildrenrE   r5   is_layered_paneselectedChildCount)r   r'   rL   	isFocusedr7   r_   childr   s          r   r^   zScript.onSelectionChanged   s@    ((*==?>>88F//u||DG&u-**5<<8	##ELL1)T^^77>RCu//d;#~~>>u||L) .~~2259&&u-. &&u||4~~00>B"5)r   c                    |j                   st        | 	  |       y| j                  j	                  |j
                        s>t        j                  |j
                        st        j                  |j
                        rQt        j                  t        j                  |j
                              ry| j                  |j
                  d       yt        | 	  |       y)z?Callback for object:state-changed:showing accessibility events.NTr-   )rU   r   onShowingChangedr   	isPopOverr:   r   is_alertis_info_baris_applicationr   rX   r5   rZ   s     r   re   zScript.onShowingChanged   s     }}G$U+>>##ELL1""5<<0%%ell3))(*=*=ell*KLu||t< 'r   c                 
   t        j                  |j                        rt        j                  |j                        s5d|j                  dg}t	        j
                  t        j                  |d       yt        | !  |       y)z=Callback for object:text-changed:delete accessibility events.GTK:is not showing and visibleTN)	r   
is_showingr:   
is_visibler1   printTokensr3   r   onTextDeletedr   r'   tokensr   s      r   rp   zScript.onTextDeleted   sd     &&u||49O9OPUP\P\9]ell,HIFe..=e$r   c                 
   t        j                  |j                        rt        j                  |j                        s5d|j                  dg}t	        j
                  t        j                  |d       yt        | !  |       y)z=Callback for object:text-changed:insert accessibility events.rk   rl   TN)	r   rm   r:   rn   r1   ro   r3   r   onTextInsertedrq   s      r   rt   zScript.onTextInserted   sd     &&u||49O9OPUP\P\9]ell,HIFe..=u%r   c                     |j                   }| j                  j                  |t        j                         j                               syt        j                  j                  | |       y)z@Callback for object:text-selection-changed accessibility events.N)	r:   r   r;   r   r    r0   r   r
   onTextSelectionChangedr>   s      r   rv   zScript.onTextSelectionChanged   sJ     ll~~**30H0H0J0]0]0_`--dE:r   c                     | j                   j                  |      ry| j                   j                  |j                        ryt        |   |      S )NF)r   rD   rP   r:   r   isActivatableEventrZ   s     r   rx   zScript.isActivatableEvent   sA    >>,,U3>>((6w)%00r   )__name__
__module____qualname__r   r   r   r&   r4   r<   rN   rR   rY   r^   re   rp   rt   rv   rx   __classcell__)r   s   @r   r
   r
   $   sV    +?;E(KT( )"*:("%&;1 1r   r
   )__id____version____date____copyright____license__
orca.debugr1   orca.focus_managerr   orca.scripts.defaultscriptsr   orca.ax_objectr   orca.ax_utilitiesr   script_utilitiesr   r
    r   r   <module>r      sG   , 6  * & & # ) 'S1W^^ S1r   