
    g
f7                         d Z dZdZdZdZd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c mZ ddlmZ ddlmc mc 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Custom script for Thunderbird.z$Id$z
$Revision$z$Date$z-Copyright (c) 2004-2008 Sun Microsystems Inc.LGPL    N)
AXDocument)AXObject)AXText)AXUtilities   
SpellCheckc                        e Zd ZdZ fdZ fdZd Z fdZ fdZ fdZ	d fd	Z
d fd		Zd fd
	Zd f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d Z fdZ fdZ xZS )ScriptzThe script for Thunderbird.c                 N   d| _         t        j                         j                  d      $t        j                         j	                  dd       t        j                         j                  d      $t        j                         j	                  dd       t
        |   |       y)z Creates a new script for the given application.

        Arguments:
        - app: the application to create a script for.
         sayAllOnLoadNFpageSummaryOnLoad)_lastAutoCompletesettings_manager
getManager
getSetting
setSettingsuper__init__)selfapp	__class__s     F/usr/lib/python3/dist-packages/orca/scripts/apps/Thunderbird/script.pyr   zScript.__init__3   s     "$&&(33NCK'')44^UK&&(334GHP'')445H%P    c                    t         |           t        j                  t        j
                  t        j                        | j                  d<   t        j                  t        j                  t        j                        | j                  d<   t        j                  t        j                  t        j                        | j                  d<   y )NtogglePresentationModeHandlerenableStickyFocusModeHandlerenableStickyBrowseModeHandler)r   setupInputEventHandlersinput_eventInputEventHandlerr   togglePresentationModecmdnamesTOGGLE_PRESENTATION_MODEinputEventHandlersenableStickyFocusModeSET_FOCUS_MODE_STICKYenableStickyBrowseModeSET_BROWSE_MODE_STICKY)r   r   s    r   r!   zScript.setupInputEventHandlersF   s    ') ))--113 	 ?@ )),,..0 	 >? ))--//1 	 ?@r   c                     t        |       S )z/Returns the spellcheck support for this script.r	   )r   s    r   getSpellCheckzScript.getSpellCheckX   s     $r   c                    t         |          }| j                  j                  t	        j
                         j                  d             | j                  j                  t	        j
                         j                  d             | j                  j                         }|j                  |dt        |j                               dd       |j                          |S )zoReturn a GtkGrid containing the application unique configuration
        GUI items for the current application.r   r   r   r   )r   getAppPreferencesGUI_sayAllOnLoadCheckButton
set_activer   r   r   _pageSummaryOnLoadCheckButton
spellcheckattachlenget_childrenshow_all)r   gridr3   r   s      r   r/   zScript.getAppPreferencesGUI]   s     w+-%%00'')44^D	F**55'')445HI	K __99;
J3t'8'8':#;QBr   c                     t         |          }| j                  j                         |d<   | j                  j                         |d<   |j                  | j                  j                                |S )z7Returns a dictionary with the app-specific preferences.r   r   )r   getPreferencesFromGUIr0   
get_activer2   updater3   )r   prefsr   s     r   r:   zScript.getPreferencesFromGUIn   sc     -/ $ = = H H Jn%)%G%G%R%R%T!"T__::<=r   c                     | j                   j                  |      rJ| j                   j                  |       }| j                  |       | j                   j                  |       yt        |   |||       y)z3Handles changes of focus of interest to the script.)includeLabelN)r3   isSuggestionsItemupdateBraillepresentSuggestionListItemr   locusOfFocusChanged)r   eventoldFocusnewFocusr?   r   s        r   rC   zScript.locusOfFocusChangedx   se     ??,,X6#@@JJLx(OO55<5P#E8X>r   c                    | j                   j                  |      r*d|g}t        j                  t        j                  |d       yd|dg}t        j                  t        j                  |d       t
        |   ||      S )Nz2THUNDERBIRD: Using focus mode for editable messageTzTHUNDERBIRD:zis not an editable message.)	utilitiesisEditableMessagedebugprintTokens
LEVEL_INFOr   useFocusMode)r   objprevObjtokensr   s       r   rM   zScript.useFocusMode   sq    >>++C0JCPFe..= #'DE%**FD9w#C11r   c                     | j                   j                  t        j                         j	                               ry t
        |   ||       y N)rH   rI   focus_managerr   get_locus_of_focusr   r*   r   
inputEventforceMessager   s      r   r*   zScript.enableStickyBrowseMode   s9    >>++M,D,D,F,Y,Y,[\&z<@r   c                     | j                   j                  t        j                         j	                               ry t
        |   ||       y rR   )rH   rI   rS   r   rT   r   r(   rU   s      r   r(   zScript.enableStickyFocusMode   s9    >>++M,D,D,F,Y,Y,[\%j,?r   c                     | j                   r<| j                  j                  t        j                         j                               ry t        |   ||       y rR   )_inFocusModerH   rI   rS   r   rT   r   r$   )r   rV   documentFramer   s      r   r$   zScript.togglePresentationMode   sB    ~~//0H0H0J0]0]0_`&z=Ar   c                    |j                   syd| _        |j                  }| j                  j	                  |      rJt        j                         j                  ||j                  d       | j                  |j                         | j                  j                  |      st        | 1  |       y| j                  j                  |      rt        | 1  |       yt        | 1  |       y)z?Callback for object:state-changed:focused accessibility events.Nr   F)detail1r   sourcer3   isAutoFocusEventrS   r   set_locus_of_focusrA   rH   inDocumentContentr   onFocusedChangedrI   )r   rD   rN   r   s      r   rb   zScript.onFocusedChanged   s     }}!#ll??++E2$$&99%uUu||,~~//4G$U+>>++C0G$U+ 'r   c                    | j                   j                  |j                        ry| j                         ry|j                  }| j                   j	                  |      r|j
                  st        j                         j                         }t        j                  |      rYt        j                  |      st        j                  |      r/t        j                         j                  ||j                  d       | j                   j                         r6| j!                  t        j                  |             | j#                  |       yyyy)z<Callback for object:state-changed:busy accessibility events.NF)rH   rI   r^   inFocusMode
isDocumentr]   rS   r   rT   r   get_namer   is_frameis_page_tabr`   ra   speakMessage_presentMessage)r   rD   rN   focuss       r   onBusyChangedzScript.onBusyChanged   s     >>++ELL9ll>>$$S)%--!,,.AACE  ' ))%0K4K4KE4R((*==eU\\SXY~~//1!!("3"3C"89$$S) 2 3@)r   c                 $   | j                   j                  |j                        r[|j                  dk(  ry| j                  j                  |j                  |j                         | j                  j                         ryt        | !  |       y)z:Callback for object:text-caret-moved accessibility events.N)	rH   rI   r^   r]   r3   setDocumentPositionisActiver   onCaretMovedr   rD   r   s     r   rq   zScript.onCaretMoved   sf     >>++ELL9}}"OO//emmL'')U#r   c                    |j                   | j                  j                         k(  ryt        j                  |j                         }t        j                  |      rt        j                  |      syt        | %  |       y)?Callback for object:state-changed:showing accessibility events.N)
r^   r3   getSuggestionsListr   
get_parentr   is_combo_box
is_focusedr   onSelectionChanged)r   rD   parentr   s      r   ry   zScript.onSelectionChanged   s`     <<4??==??$$U\\2##F+K4J4J64R"5)r   c                     |j                   | j                  j                         k(  r| j                  j                         ryt        |   |       y)zACallback for object:state-changed:sensitive accessibility events.N)r^   r3   getChangeToEntrypresentCompletionMessager   onSensitiveChangedrr   s     r   r~   zScript.onSensitiveChanged   s>     <<4??;;==779"5)r   c                 P   |j                   rz| j                  j                  |j                        rU| j                  j	                  |j                        r0t        j                         j                  ||j                  d       yt        j                  j                  | |       y)rt   TN)r]   rH   isMenuWithNoSelectedChildr^   topLevelObjectIsActiveWindowrS   r   r`   defaultr   onShowingChanged)r   rD   s     r   r   zScript.onShowingChanged   sl     ==T^^EEellS~~::5<<H$$&99%tT''e4r   c                     t        j                  |j                        r3t        j                  t	        j
                  |j                              ryt        |   |       y)z_Called whenever text is from an object.

        Arguments:
        - event: the Event
        N)r   is_labelr^   is_status_barr   rv   r   onTextDeletedrr   s     r   r   zScript.onTextDeleted   sD     -(()<)<U\\)JKe$r   c                    t        j                  |j                        }t        j                  |j                        rt        j
                  |      ryt        |j                        dkD  r(|j                  | j                  j                         k(  ry|j                  j                  d      }|r&| j                  j                  |j                        ryt        j                  |      rt        |j                        dk(  r!t        j                   j#                  | |       y| j$                  r| j$                  |j                  v ry|st'        j(                  |j                        r`| j*                  j-                  |j                  |j                        }| j/                  |j                  |       |j                  | _        yt0        | E  |       y)z=Callback for object:text-changed:insert accessibility events.Nr   system)rN   string)voice)r   rv   r^   r   r   r   r5   any_datar3   r|   typeendswithrH   rI   is_autocompleter   r   onTextInsertedr   r   has_selected_textspeechGeneratorr   ri   r   )r   rD   rz   isSystemEventr   r   s        r   r   zScript.onTextInserted  sY    $$U\\2-+2K2KF2Su~~"u||t7W7W7Y'Y

++H5 T^^==ellK &&v.5>>"a'--dE:%%$*@*@ENN*R  8 8 F,,22u||ENN2[!!%..!>).&u%r   c                 T   |j                   }| j                  j                         }||k(  ry| j                  j	                  |      rQ| j                  j                         r7t        j                  |      }|dk\  r| j                  j                  ||       yt        | )  |       y)z@Callback for object:text-selection-changed accessibility events.Nr   )r^   r3   r|   rH   rI   rp   r   get_selection_start_offsetro   r   onTextSelectionChanged)r   rD   rN   spellCheckEntryselStartr   s        r   r   zScript.onTextSelectionChanged-  s     ll//::</!>>++C0T__5M5M5O88=H1}33CB&u-r   c                     t        j                  |j                        | j                  j	                         k(  r| j                  j                          yt        |   |       y)z;Callback for object:property-change:accessible-name events.N)r   rf   r^   r3   getMisspelledWordpresentErrorDetailsr   onNameChangedrr   s     r   r   zScript.onNameChanged=  sI     U\\*doo.O.O.QQOO//1e$r   c                 ,   | j                   j                  |d      \  }}| j                   j                  ||       | j                  |       t	        j
                         j                  d      rQd|g}t        j                  t        j                  |d       t        j                  |      }|r| j                  |       t	        j
                         j                  d      sUd}t        j                  t        j                  |d       | j                   j                  ||      }| j                  |       yt	        j
                         j                  d      r9d	}t        j                  t        j                  |d       | j!                  d       yy)
ztPresents the first line of the message, or the entire message,
        depending on the user's sayAllOnLoad setting.r   r   z%THUNDERBIRD: Getting page summary forTr   z4THUNDERBIRD: SayAllOnLoad is False. Presenting line.NenableSpeechz7THUNDERBIRD: SayAllOnLoad is True and speech is enabled)rH   findFirstCaretContextsetCaretPositionrA   r   r   r   rJ   rK   rL   r   get_document_summarypresentMessageprintMessagegetLineContentsAtOffsetspeakContentssayAll)r   r[   rN   offsetrP   summarymsgcontentss           r   rj   zScript._presentMessageF  s<    <<]ANf''V43&&(334GH=}MFe..= 55mDG##G,**,77GHCu//d;~~==c6JHx(&&(33NCKCu//d;KK Dr   c                 x   t         |   |       | j                  j                  |j                        s| j                  j                          y| j                  j                          | j                  j                         }t        j                         j                  d|d       | j                  |       y)z2Callback for window:activate accessibility events.NF)r   onWindowActivatedr3   isCheckWindowr^   
deactivater   r|   rS   r   r`   rA   )r   rD   entryr   s      r   r   zScript.onWindowActivateda  s     	!%(,,U\\:OO&&(++-002  "55dE5I5!r   c                     t         |   |       | j                  j                          | j                  j                          y)z4Callback for window:deactivate accessibility events.N)r   onWindowDeactivatedr3   r   rH   clearContentCacherr   s     r   r   zScript.onWindowDeactivatedn  s2     	#E*""$((*r   rR   )F)__name__
__module____qualname____doc__r   r!   r-   r/   r:   rC   rM   r*   r(   r$   rb   rl   rq   ry   r~   r   r   r   r   r   rj   r   r   __classcell__)r   s   @r   r   r   0   s    %&1$ 
"	?2A@B(,*(
$**5%#&J. %6"+ +r   r   )!r   __id____version____date____copyright____license__orca.cmdnamesr%   
orca.debugrJ   orca.focus_managerrS   orca.input_eventr"   orca.scripts.defaultscriptsr   orca.settings_managerr   orca.scripts.toolkits.GeckotoolkitsGeckoorca.ax_documentr   orca.ax_objectr   orca.ax_textr   orca.ax_utilitiesr   r3   r
   r    r   r   <module>r      s_   ( %?    * & & & 0 + + ' #  ) "C+U\\ C+r   