__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
�

���g;����SrSrSrSrSrSrSSKrSSKrSSKrSSK	J
r
 SS	K	Jr SS
K	Jr SSK	J
r
 SSK	Jr SS
K	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	J	r	 SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSK	Jr SSKJ r  SSK!J"r" SS K#J$r$ SS!K%J&r& SS"K'J(r( SS#K)J*r* SS$K+J,r, "S%S&\RZ5r-g)'z:The default Script for presenting information to the user.z$Id$z
$Revision$z$Date$zOCopyright (c) 2004-2009 Sun Microsystems Inc.Copyright (c) 2010 Joanmarie Diggs�LGPL�N)�braille)�cmdnames)�debug)�
event_manager)�
focus_manager)�flat_review)�input_event_manager)�input_event)�keybindings)�messages)�orca)�orca_gui_prefs)�orca_modifier_manager)�	phonnames)�script)�script_manager)�settings)�settings_manager)�sound)�speech)�speech_and_verbosity_manager)�speechserver)�
AXDocument)�AXObject)�AXTable)�AXText)�AXUtilities)�TextEventReason)�AXValuec�^�\rSrSrSrU4SjrSrSrSrSr	Sr
SyS	jrS
rSr
SrS
rSrSzSjrSzSjrSzSjrSrSrSrSrSrSrS{SjrS{SjrS{SjrS|SjrS|SjrS{SjrS{Sjr S{S jr!S{S!jr"S{S"jr#S{S#jr$S{S$jr%S{S%jr&S}S&jr'S{S'jr(S(r)S)r*S*r+S+r,S,r-S-r.S.r/S/r0S0r1S1r2S2r3S3r4S4r5S5r6S6r7S7r8S8r9S9r:S:r;S;r<S<r=S=r>S>r?S?r@S@rASArBSBrCSCrDSDrESErFSFrGSGrHSHrISIrJSJrKSKrLS\MR�4SLjrOS~SMjrPSNrQSOrRSySPjrSSQrTSRrUSSrVS{STjrWSUrXSVrYSWrZSXr[SSYjr\SZr]S{S[jr^S\r_S]r`S^raS_rbSyS`jrcSardS�SbjreScrf\gSySdj5rh\gSe5ri\gSf5rj\gSg5rk\gS�Shj5rl\gSi5rm\gSj5rn\gS�Skj5ro\gSl5rp\gSm5rq\gS�Snj5rr\gSo5rsSprt\gS�Sqj5ru\gS�Srj5rv\gSs5rwStrxSurySvrzS�Swjr{Sxr|U=r}$)��Script�Auc�>�[TU]U5 SUlSUl0UlSUlSUlSUlSUl/Ul	/Ul
g)NF�)�super�__init__�targetCursorCell�justEnteredFlatReviewMode�attributeNamesDict�lastMouseRoutingTime�_lastWordCheckedForSpelling�	_inSayAll�_sayAllIsInterrupted�_sayAllContexts�grab_ids)�self�app�	__class__s  ��6/usr/lib/python3/dist-packages/orca/scripts/default.pyr'�Script.__init__EsZ���
����� $���).��&�
#%���%)��!�+-��(����$)��!�!�����
�c��
�[R"[R[R
5URS'[R"[R[R5URS'[R"[R[R5URS'[R"[R[R5URS'[R"[R[RS5URS'[R"[R[R S5URS'[R"[R"[R$5URS'[R"[R&[R(5URS	'[R"[R*[R,5URS
'[R"[R.[R05URS'[R"[R2[R45URS'[R"[R6[R85URS
'[R"[R:[R<5URS'[R"[R>[R@5URS'[R"[RB[RD5URS'URRGURI5RK55 URRGURM5RK55 URRGURO5RK55 URRGURQ5RK55 URRGURS5RK55 URRGURU5RK55 URRGURW5RK55 URRGURXRK55 URRGUR[5RK55 URRGUR]5RK55 URRGUR_5RK55 URRGURa5RK55 URRGURc5RK55 URRGURe5RK55 URRGURg5RK55 g)z1Defines the input event handlers for this script.�routePointerToItemHandler�leftClickReviewItemHandler�rightClickReviewItemHandler�
sayAllHandlerF�panBrailleLeftHandler�panBrailleRightHandler�goBrailleHomeHandler�contractedBrailleHandler�processRoutingKeyHandler�processBrailleCutBeginHandler�processBrailleCutLineHandler�shutdownHandler�preferencesSettingsHandler�appPreferencesSettingsHandler�cycleSettingsProfileHandlerN)4r�InputEventHandlerr"�route_pointer_to_itemr�ROUTE_POINTER_TO_ITEM�input_event_handlers�left_click_item�LEFT_CLICK_REVIEW_ITEM�right_click_item�RIGHT_CLICK_REVIEW_ITEM�say_all�SAY_ALL�pan_braille_left�PAN_BRAILLE_LEFT�pan_braille_right�PAN_BRAILLE_RIGHT�go_braille_home�GO_BRAILLE_HOME�set_contracted_braille�SET_CONTRACTED_BRAILLE�process_routing_key�PROCESS_ROUTING_KEY�process_braille_cut_begin�PROCESS_BRAILLE_CUT_BEGIN�process_braille_cut_line�PROCESS_BRAILLE_CUT_LINE�	quit_orca�	QUIT_ORCA�show_preferences_gui�SHOW_PREFERENCES_GUI�show_app_preferences_gui�SHOW_APP_PREFERENCES_GUI�cycle_settings_profile�CYCLE_SETTINGS_PROFILE�update�get_clipboard_presenter�get_handlers�get_notification_presenter�get_flat_review_finder�get_flat_review_presenter� get_speech_and_verbosity_manager�get_bypass_mode_manager� get_system_information_presenter�	bookmarks�get_object_navigator�get_table_navigator�get_where_am_i_presenter�get_learn_mode_presenter�get_mouse_reviewer�get_action_presenter�get_debugging_tools_manager�r1s r4�setup_input_event_handlers�!Script.setup_input_event_handlers^s9��
�)�)��,�,��.�.�
0�	
�!�!�"=�>�
�)�)��&�&��/�/�
1�	
�!�!�">�?��
*�
*��'�'��0�0�2�	
�!�!�"?�@�
�)�)����� � �
"�	
�!�!�/�2�
�)�)��'�'��)�)��
�	
�!�!�"9�:�
�)�)��(�(��*�*��
�	
�!�!�":�;�
�)�)��&�&��(�(�
*�	
�!�!�"8�9�
�)�)��-�-��/�/�
1�	
�!�!�"<�=�
�)�)��*�*��,�,�
.�	
�!�!�"<�=�
�)�)��0�0��2�2�
4�	
�!�!�"A�B�
�)�)��/�/��1�1�
3�	
�!�!�"@�A�
�)�)�� � ��"�"�
$�	
�!�!�"3�4�
�)�)��+�+��-�-�
/�	
�!�!�">�?�
�)�)��/�/��1�1�
3�	
�!�!�"A�B�
�)�)��-�-��/�/�
1�	
�!�!�"?�@�
	
�!�!�(�(��)E�)E�)G�)T�)T�)V�W��!�!�(�(��)H�)H�)J�)W�)W�)Y�Z��!�!�(�(��)D�)D�)F�)S�)S�)U�V��!�!�(�(��)G�)G�)I�)V�)V�)X�Y��!�!�(�(��)N�)N�)P�)]�)]�)_�`��!�!�(�(��)E�)E�)G�)T�)T�)V�W��!�!�(�(��)N�)N�)P�)]�)]�)_�`��!�!�(�(����)D�)D�)F�G��!�!�(�(��)B�)B�)D�)Q�)Q�)S�T��!�!�(�(��)A�)A�)C�)P�)P�)R�S��!�!�(�(��)F�)F�)H�)U�)U�)W�X��!�!�(�(��)F�)F�)H�)U�)U�)W�X��!�!�(�(��)@�)@�)B�)O�)O�)Q�R��!�!�(�(��)B�)B�)D�)Q�)Q�)S�T��!�!�(�(��)I�)I�)K�)X�)X�)Z�[r6c��[RRU5nURUS'URUS'UR
US'URUS'URUS'URUS'URUS'URUS'URUS	'URUS
'URUS'URUS'URUS
'UR US'UR"US'UR$US'UR&US'UR(US'UR*US'UR,US'UR.US'UR0US'UR2US'UR4US'UR6US'UR8US'UR:US'UR<US'UR>US'UR@US'URBUS'URDUS 'UR"US!'URFUS"'URHUS#'URJUS$'URLUS%'U$)&z3Sets up the AT-SPI event listeners for this script.zdocument:attributes-changedzdocument:reloadzdocument:load-completezdocument:load-stoppedzdocument:page-changedzmouse:buttonzobject:announcementz object:active-descendant-changedzobject:attributes-changedzobject:children-changed:addzobject:children-changed:removezobject:column-reorderedz-object:property-change:accessible-descriptionz&object:property-change:accessible-namez'object:property-change:accessible-valuezobject:row-reorderedzobject:selection-changedzobject:state-changed:activezobject:state-changed:busyzobject:state-changed:checkedzobject:state-changed:expandedzobject:state-changed:focusedz"object:state-changed:indeterminatezobject:state-changed:pressedzobject:state-changed:selectedzobject:state-changed:sensitivezobject:state-changed:showingzobject:text-attributes-changedzobject:text-caret-movedzobject:text-changed:deletezobject:text-changed:insertzobject:text-selection-changedzobject:value-changedzwindow:activatez
window:createzwindow:deactivatezwindow:destroy)'rr"�
get_listeners�on_document_attributes_changed�on_document_reload�on_document_load_complete�on_document_load_stopped�on_document_page_changed�on_mouse_button�on_announcement�on_active_descendant_changed�on_object_attributes_changed�on_children_added�on_children_removed�on_column_reordered�on_description_changed�on_name_changed�on_value_changed�on_row_reordered�on_selection_changed�on_active_changed�on_busy_changed�on_checked_changed�on_expanded_changed�on_focused_changed�on_indeterminate_changed�on_pressed_changed�on_selected_changed�on_sensitive_changed�on_showing_changed�on_text_attributes_changed�on_caret_moved�on_text_deleted�on_text_inserted�on_text_selection_changed�on_window_activated�on_window_created�on_window_deactivated�on_window_destroyed)r1�	listenerss  r4r|�Script.get_listeners�s����M�M�/�/��5�	�37�3V�3V�	�/�0�'+�'>�'>�	�#�$�.2�.L�.L�	�*�+�-1�-J�-J�	�)�*�-1�-J�-J�	�)�*�$(�$8�$8�	�.�!�+/�+?�+?�	�'�(�8<�8Y�8Y�	�4�5�15�1R�1R�	�-�.�37�3I�3I�	�/�0�6:�6N�6N�	�2�3�/3�/G�/G�	�+�,�EI�E`�E`�	�A�B�>B�>R�>R�	�:�;�@D�@U�@U�	�;�<�,0�,A�,A�	�(�)�04�0I�0I�	�,�-�37�3I�3I�	�/�0�15�1E�1E�	�-�.�48�4K�4K�	�0�1�59�5M�5M�	�1�2�48�4K�4K�	�0�1�:>�:W�:W�	�6�7�48�4K�4K�	�0�1�59�5M�5M�	�1�2�6:�6O�6O�	�2�3�48�4K�4K�	�0�1�6:�6U�6U�	�2�3�/3�/B�/B�	�+�,�26�2F�2F�	�.�/�26�2G�2G�	�.�/�59�5S�5S�	�1�2�,0�,A�,A�	�(�)�'+�'?�'?�	�#�$�%)�%;�%;�	�/�"�)-�)C�)C�	�%�&�&*�&>�&>�	�"�#��r6c
��[R"5nUR[R"S[R[R
URRS5S55 UR[R"S[R[RURRS555 UR[R"S[R[R
URRS555 UR[R"S[R[R
URRS555 U$)	zoReturns an instance of keybindings.KeyBindings that use the
numeric keypad for focus tracking and flat review.
�KP_Addr;��	KP_Divider8r9�KP_Multiplyr:)	r�KeyBindings�add�
KeyBinding�DEFAULT_MODIFIER_MASK�NO_MODIFIER_MASKrJ�get�ORCA_MODIFIER_MASK�r1�keyBindingss  r4�__getDesktopBindings�Script.__getDesktopBindings�s8��
"�-�-�/������"�"���1�1��,�,��)�)�-�-�o�>��
�	�	����"�"���1�1��.�.��)�)�-�-�.I�J�	
L�	M�	����"�"���.�.��,�,��)�)�-�-�.J�K�	
M�	N�	����"�"���.�.��,�,��)�)�-�-�.K�L�	
N�	O��r6c
��[R"5nUR[R"S[R[R
URRS5S55 UR[R"S[R[R
URRS555 UR[R"S[R
[R
URRS555 UR[R"S[R
[R
URRS	555 U$)
zwReturns an instance of keybindings.KeyBindings that use the
the main keyboard keys for focus tracking and flat review.
�	semicolonr;r��9r8�7r9�8r:)rr�r�r�r�r�rJr�r�s  r4�__getLaptopBindings�Script.__getLaptopBindingss8��
"�-�-�/������"�"���1�1��.�.��)�)�-�-�o�>��
�	�	����"�"���1�1��.�.��)�)�-�-�.I�J�	
L�	M�	����"�"���.�.��.�.��)�)�-�-�.J�K�	
M�	N�	����"�"���.�.��.�.��)�)�-�-�.K�L�	
N�	O��r6c�R�[R"5n[R"5R	S5nU[
R:HnUR5RSUS9nURHnURU5 M UR5RSUS9nURHnURU5 M UR5RSUS9nURHnURU5 M UR5RSUS9nURHnURU5 M UR5RSUS9nURHnURU5 M UR5RSUS9nURHnURU5 M UR!5RSUS9nURHnURU5 M UR#5RSUS9nURHnURU5 M UR%5RSUS9nURHnURU5 M UR'5RSUS9nURHnURU5 M UR)5RSUS9nURHnURU5 M UR*RSUS9nURHnURU5 M UR-5RSUS9nURHnURU5 M UR/5RSUS9nURHnURU5 M UR15RSUS9nURHnURU5 M U$)N�keyboardLayoutT��refresh�
is_desktop)rr�r�get_manager�get_settingr�GENERAL_KEYBOARD_LAYOUT_DESKTOP�get_sleep_mode_manager�get_bindings�key_bindingsr�rjrhrkrlrsrtrmrorqrrrprurvrw)r1r��layout�	isDesktop�bindings�
keyBindings      r4�getExtensionBindings�Script.getExtensionBindings9s��!�-�-�/��!�-�-�/�;�;�<L�M���h�F�F�F�	��.�.�0�=�=��Y�>�0��"�/�/�J��O�O�J�'�0��2�2�4�A�A��Y�B�0��"�/�/�J��O�O�J�'�0��/�/�1�>�>��Y�?�0��"�/�/�J��O�O�J�'�0��.�.�0�=�=��Y�>�0��"�/�/�J��O�O�J�'�0��1�1�3�@�@��Y�A�0��"�/�/�J��O�O�J�'�0��0�0�2�?�?��Y�@�0��"�/�/�J��O�O�J�'�0��0�0�2�?�?��Y�@�0��"�/�/�J��O�O�J�'�0��8�8�:�G�G��Y�H�0��"�/�/�J��O�O�J�'�0��8�8�:�G�G��Y�H�0��"�/�/�J��O�O�J�'�0��,�,�.�;�;��Y�<�0��"�/�/�J��O�O�J�'�0��+�+�-�:�:��Y�;�0��"�/�/�J��O�O�J�'�0��>�>�.�.��Y�/�0��"�/�/�J��O�O�J�'�0��*�*�,�9�9��Y�:�0��"�/�/�J��O�O�J�'�0��,�,�.�;�;��Y�<�0��"�/�/�J��O�O�J�'�0��3�3�5�B�B��Y�C�0��"�/�/�J��O�O�J�'�0��r6c�"�SU/n[R"[RUSS5 [RRU5nUR
5nURHnURU5 M UR5nURHnURU5 M UR5nURHnURU5 M UR5nURHnURU5 M [R"5RURX15nU$![ a7nSUSU/n[R"[R"US5 SnAU$SnAff=f)z)Returns the key bindings for this script.z DEFAULT: Getting keybindings forTz1DEFAULT: Exception when overriding keybindings in�:N)r�print_tokens�
LEVEL_INFOrr"�get_key_bindings�getDefaultKeyBindingsr�r��get_toolkit_key_bindings�get_app_key_bindingsr�rr��override_key_bindingsrJ�	Exception�
LEVEL_WARNING)r1�enabled_only�tokensr�r�r��errors       r4r��Script.get_key_bindings�sb��5�d�;��
���5�+�+�V�T�4�@��m�m�4�4�T�:���-�-�/��"�/�/�J��O�O�J�'�0��0�0�2��"�/�/�J��O�O�J�'�0��,�,�.��"�/�/�J��O�O�J�'�0��,�,�.��"�/�/�J��O�O�J�'�0�	B�*�6�6�8�N�N��)�)�;�F�K����	�	B�I�4�QT�V[�\�F����u�2�2�F�D�A�A����		B�s�/E
�
F�,F	�	Fc
�V�[R"5n[R"5R	S5nU[
R:HnU(a3UR5RHnURU5 M O2UR5RHnURU5 M UR[R"S[R[RURRS555 UR[R"S[R[RURRS555 UR[R"S[R[RURRS555 UR[R"S[R[RURRS555 UR[R"S[R[R URRS555 UR[R"S[R[R"URRS	555 UR%5R'S
US9nURHnURU5 M U$)zqReturns the default script's keybindings, i.e. without any of
the toolkit or application specific commands added.r�r%rFr<r=rC�spacerDrETr�)rr�rr�r�rr��_Script__getDesktopBindingsr�r��_Script__getLaptopBindingsr�r�r�rJr�r��ORCA_CTRL_MODIFIER_MASKrnr�)r1r�r�r�r�r�s      r4r��Script.getDefaultKeyBindings�s���"�-�-�/��!�-�-�/�;�;�<L�M���h�F�F�F�	��"�7�7�9�F�F�
����
�+�G�#�6�6�8�E�E�
����
�+�F�	����"�"���1�1��,�,��)�)�-�-�.K�L�	
N�	O�	����"�"���1�1��,�,��)�)�-�-�.E�F�	
H�	I�	����"�"���1�1��,�,��)�)�-�-�.F�G�	
I�	J�	����"�"���1�1��,�,��)�)�-�-�.?�@�	
B�	C�	����"�"���1�1��.�.��)�)�-�-�.J�K�	
M�	N�	����"�"���1�1��3�3��)�)�-�-�.M�N�	
P�	Q��/�/�1�>�>�t�Xa�>�b��"�/�/�J��O�O�J�'�0��r6c�$�Sn[R"[RUS5 [RRU5nURSU[RR'URSU[RR'URSU[RR'URSU[RR'URSU[RR'URSU[RR'URSU[RR'URSU[RR 'URSU[RR"'URSU[RR$'URS	U[RR&'URSU[RR'UR/5R5nUR1U5 Sn[R"[RUS5 U$![(a- S
U/n[R*"[RUS5 N�[,a6nSUSU/n[R*"[RUS5 S
nAN�S
nAff=f)z-Returns the braille bindings for this script.z"DEFAULT: Getting braille bindings.Tr<r=r>r?r@rArBz(DEFAULT: Braille bindings unavailable inz.DEFAULT: Exception getting braille bindings inr�Nz+DEFAULT: Finished getting braille bindings.)r�
print_messager�rr"�get_braille_bindingsrJr�brlapi�KEY_CMD_HWINLT�KEY_CMD_FWINLT�KEY_CMD_FWINLTSKIP�KEY_CMD_HWINRT�KEY_CMD_FWINRT�KEY_CMD_FWINRTSKIP�KEY_CMD_HOME�KEY_CMD_SIXDOTS�
KEY_CMD_ROUTE�KEY_CMD_CUTBEGIN�KEY_CMD_CUTLINE�AttributeErrorr�r�rlrg)r1�msg�braille_bindingsr�r��reviewBindingss      r4r��Script.get_braille_bindings�s���3��
���E�,�,�c�4�8�!�=�=�=�=�d�C��	?��)�)�*A�B�
�W�^�^�:�:�;��)�)�*A�B�
�W�^�^�:�:�;��)�)�*A�B�
�W�^�^�>�>�?��)�)�*B�C�
�W�^�^�:�:�;��)�)�*B�C�
�W�^�^�:�:�;��)�)�*B�C�
�W�^�^�>�>�?��)�)�*@�A�
�W�^�^�8�8�9��)�)�*D�E�
�W�^�^�;�;�<��)�)�*D�E�
�W�^�^�9�9�:��)�)�*I�J�
�W�^�^�<�<�=��)�)�*H�I�
�W�^�^�;�;�<��)�)�*@�A�
�W�^�^�8�8�9��7�7�9�N�N�P������/�;��
���E�,�,�c�4�8�����	?�@�$�G�F����u�/�/���>��	?�F��c�SX�Y�F����u�/�/���>�>��	?�s�	G8J�4L�	L�,L
�
Lc��g)z8Return a GtkGrid, or None if there's no app-specific UI.N�rxs r4�get_app_preferences_gui�Script.get_app_preferences_guis��r6c��0$)z7Returns a dictionary with the app-specific preferences.r�rxs r4�get_preferences_from_gui�Script.get_preferences_from_gui"s	���	r6c���SUlSUl0UlUR5R	5(aUR5RU5 UR
S5 g)z'Called when this script is deactivated.Fzscript deactivationN)r-r.�point_of_referencern�	is_active�toggle_enabled�remove_key_grabsrxs r4�
deactivate�Script.deactivate'sY�����$)��!�"$����'�'�)�3�3�5�5��(�(�*�9�9�$�?����3�4r6c��Sn[R"[RUS5 UR5UlURRU5 [R"5R5 g)z7Sets up the key grabs currently needed by this script. z DEFAULT: Setting up key bindingsTN)	rr�r�r�r��
add_key_grabsrr��add_grabs_for_orca_modifiers�r1�reasonr�s   r4r�Script.add_key_grabs3s[��1��
���E�,�,�c�4�8� �1�1�3������'�'��/��)�)�+�H�H�Jr6c��[R"5R5 URR	U5 Sn[
R"[
RUS5 [R"5Ulg)z(Removes this script's AT-SPI key grabs. zDEFAULT: Clearing key bindingsTN)
rr��remove_grabs_for_orca_modifiersr�r�rr�r�rr�rs   r4r��Script.remove_key_grabs<s[��	�)�)�+�K�K�M����*�*�6�2�.��
���E�,�,�c�4�8�'�3�3�5��r6c��SnU(aUSU3-
n[R"[RUS5 URS5 UR	S5 g)z1Refreshes the enabled key grabs for this script. zDEFAULT: refreshing key grabsz: T�
refreshingN)rr�r�r�rrs   r4�refresh_key_grabs�Script.refresh_key_grabsFsR��.����R��x�=� �C�
���E�,�,�c�4�8�
	
���l�+����<�(r6c�L�[R"5RU5 g)z.Registers for listeners needed by this script.N)rr��register_script_listenersrxs r4�register_event_listeners�Script.register_event_listenersTs��	�!�!�#�=�=�d�Cr6c�L�[R"5RU5 g)z1De-registers the listeners needed by this script.N)rr��deregister_script_listenersrxs r4�deregister_event_listeners�!Script.deregister_event_listenersYs��	�!�!�#�?�?��Er6c�&�[R"U5nURU[SU55 [R"U5 [
R"USS9up4X@RS'X0RS'[R"U5 g)z�Saves some basic information about obj. Note that this method is
intended to be called primarily (if not only) by locus_of_focus_changed().rT)�	find_cell�
lastColumn�lastRowN)
r�get_caret_offset�_saveLastCursorPosition�max�update_cached_selected_textr�get_cell_coordinatesr�r�save_object_info_for_events)r1�obj�caretOffset�row�columns     r4�_save_focused_object_info� Script._save_focused_object_info^sy���-�-�c�2���$�$�S�#�a��*=�>��*�*�3�/�
�2�2�3�$�G���06����-�-0���	�*��/�/��4r6c��URR5 U(dg[R"U5(agX#:Xa)Sn[R
"[RUS5 gUR(agUR5R5(aUR5R5 UR5R5(aUR5R5 URRU5n[R"5R!U5 UR#U5 UcUnUR$R'UUS9nURR)X#U5(aUR+5 [,R."USS9 UR1U5 g![a GNVf=f)z�Called when the visual object with focus changes.

Arguments:
- event: if not None, the Event that caused the change
- old_focus: Accessible that is the old locus of focus
- new_focus: Accessible that is the new locus of focus
NzDEFAULT: old focus == new focusT��priorObjF��	interrupt)�	utilities�presentFocusChangeReasonr�
is_defunctrr�r��run_find_commandr�rlr��quitrt�topLevelObjectrr��set_active_window�update_braille�speech_generator�generate_speech�$shouldInterruptForLocusOfFocusChange�presentationInterruptr�speakr%)r1�event�	old_focus�	new_focusr��
active_window�
utterancess       r4�locus_of_focus_changed�Script.locus_of_focus_changedrs���	
���/�/�1����!�!�)�,�,���!�3�C����� 0� 0�#�t�<��	��$�$��	%��)�)�+�5�5�7�7��*�*�,�1�1�3��(�(�*�4�4�6�6��)�)�+�0�0�2����5�5�i�@�
��!�!�#�5�5�m�D����I�&���%�I��*�*�:�:���;� �
��>�>�>�>���(�(��&�&�(����Z�5�1��&�&�y�1��1�	��	�s�.G
�

G�Gc���SUR/n[R"[RUS5 [R
"5R
U5 UR5R5 UR5R5 UR5R5 URS5 SURS/n[R"[RUS5 g)z%Called when this script is activated.zDEFAULT: Activating script forTzscript activationzDEFAULT: Script for�	activatedN)r2rr�r�rr��load_app_settingsrm�update_punctuation_level�update_capitalization_style�update_synthesizerr)r1r�s  r4�activate�Script.activate�s���3�D�H�H�=��
���5�+�+�V�T�:��$�$�&�8�8��>�	
�-�-�/�H�H�J��-�-�/�K�K�M��-�-�/�B�B�D����.�/�'����;�?��
���5�+�+�V�T�:r6c��[R"5RS5(dP[R"5RS5(d'[R"[R
SS5 gU(dgURR"U40UD6up4U(dgUR5 UR5n[R"U5 URX55 URS5nU(a#URXe5 URU5 OURU5 UR!S5 g)z(Updates the braille display to show obj.�
enableBraille�enableBrailleMonitorzBRAILLE: update disabledTN�extraRegion)rr�r�rr�r��braille_generator�generate_braille�clearBraille�getNewBrailleLiner�addLine�addBrailleRegionsToLiner��addBrailleRegionToLine�setBrailleFocus�refreshBraille)r1r!�args�result�
focusedRegion�linerKs       r4r3�Script.update_braille�s��� �+�+�-�9�9�/�J�J�#�/�/�1�=�=�>T�U�U����� 0� 0�2L�d�S���� $� 6� 6� G� G�� T�t� T����������%�%�'��������$�$�V�2��h�h�}�-����'�'��:�� � ��-�� � ��/����D�!r6Nc���0n[R"5n[RHnUR	U5X$'M [
R"X5nUR5 g)z!Shows the app Preferences dialog.T)rr�r�userCustomizableSettingsr�r�OrcaSetupGUI�showGUI)r1�_event�prefs�manager�key�uis      r4rc�Script.show_app_preferences_gui�sW����"�.�.�0���4�4�C� �,�,�S�1�E�J�5��
(�
(��
5��
�
�
��r6c���[R"5nURUR5n[R
"[R"5R5U5nUR5 g)z Displays the Preferences dialog.T)	rr��get_general_settings�profilerr\r�get_default_scriptr])r1r^r`r_rbs     r4ra�Script.show_preferences_gui�sW��#�.�.�0���,�,�W�_�_�=��
�
(�
(��)C�)C�)E�)X�)X�)Z�\a�
b��
�
�
��r6c�.�[R"5 g)z
Quit Orca.T)r�shutdown)r1r^s  r4r_�Script.quit_orca�s��	
�
�
��r6c�0�[U[R5(a{[R"5RS5(dR[R"5RS5(d)Sn[R"[RUS5 gUR5R5(a�UR5(a?UR5RX5 UR5RX5 OURUSS9 UR5 SUlUR#UR 5 g[$R"5R'5nUR5(a�UR(R+U5(a�[,R."U5SnSnUS:�a[,R0"XES-
5nU(ds[2R4"U5(aXUR75nUR9[:R<R>5 UR5RX5 gURUSS9 [@RB"5 URESSS	9 g)
a�Pans the braille display to the left.  If pan_amount is non-zero,
the display is panned by that many cells.  If it is 0, the display
is panned one full display width.  In flat review mode, panning
beyond the beginning will take you to the end of the previous line.

In focus tracking mode, the cursor stays at its logical position.
In flat review mode, the review cursor moves to character
associated with cell 0.rIrJzCDEFAULT: panBrailleLeft command requires braille or braille monitorT��	panToLeftr�Fr��	stopFlash)#�
isinstancer�
KeyboardEventrr�r�rr�r�rlr��isBrailleBeginningShowing�go_start_of_line�go_previous_character�panBrailleInDirection�0_setFlatReviewContextToBeginningOfBrailleDisplayr(�updateBrailleReviewr�get_locus_of_focusr,�
isTextArear�get_line_at_offset�set_caret_offsetr�is_terminal�getFlatReviewContext�goBeginr	�Context�LINEr�resetFlashTimerrT)r1r9�
pan_amountr��focus�startOffset�
movedCaret�contexts        r4rQ�Script.pan_braille_left�s���e�[�6�6�7�7�#�/�/�1�=�=�o�N�N�#�/�/�1�=�=�>T�U�U�W�C����� 0� 0�#�t�<���)�)�+�5�5�7�7��-�-�/�/��.�.�0�A�A�$�N��.�.�0�F�F�t�S��*�*�:��*�F��A�A�C�$%�D�!��$�$�T�%:�%:�;���)�)�+�>�>�@���)�)�+�+����0I�0I�%�0P�0P�!�3�3�E�:�1�=�K��J��Q��#�4�4�U�!�O�L�
��+�"9�"9�%�"@�"@��3�3�5������ 3� 3� 8� 8�9��.�.�0�F�F�t�S��

�&�&�z�T�&�B�
�#�#�%�������7�r6c�Z�[U[R5(a{[R"5RS5(dR[R"5RS5(d)Sn[R"[RUS5 gUR5R5(a�UR5(a?UR5RX5 UR5RX5 gURUSS9 UR5 SUlUR#UR 5 g[$R"5R'5nUR5(ajUR(R+U5(aJ[,R."U5SnU[,R0"U5:a[,R2"XE5 gURUSS9 [4R6"5 UR9SSS	9 g)
a�Pans the braille display to the right.  If pan_amount is non-zero,
the display is panned by that many cells.  If it is 0, the display
is panned one full display width.  In flat review mode, panning
beyond the end will take you to the beginning of the next line.

In focus tracking mode, the cursor stays at its logical position.
In flat review mode, the review cursor moves to character
associated with cell 0.rIrJzDDEFAULT: panBrailleRight command requires braille or braille monitorTFrmr��ro)rqrrrrr�r�rr�r�rlr��isBrailleEndShowing�go_end_of_line�go_next_characterrvrwr(rxrryr,rzrr{�get_character_countr|rr�rT)r1r9r�r�r��	endOffsets      r4rS�Script.pan_braille_right4s����e�[�6�6�7�7�#�/�/�1�=�=�o�N�N�#�/�/�1�=�=�>T�U�U�X�C����� 0� 0�#�t�<���)�)�+�5�5�7�7��'�'�)�)��.�.�0�?�?��L��.�.�0�B�B�4�O���&�&�z�U�&�C��A�A�C�$%�D�!��$�$�T�%:�%:�;���)�)�+�>�>�@���#�#�%�%�$�.�.�*C�*C�E�*J�*J��1�1�%�8��;�I��6�5�5�e�<�<��'�'��9��

�&�&�z�U�&�C�
�#�#�%�������7�r6c���UR5R5(aUR5R5 gUR5 [R
"U5$)z$Returns to the component with focus.T)rlr�r0r7r�returnToRegionWithFocus�r1r9s  r4rU�Script.go_braille_homegsQ���)�)�+�5�5�7�7��*�*�,�1�1�3���"�"�$��.�.�u�5�5r6c�&�URU5 g)zToggles contracted braille.T)�_set_contracted_brailler�s  r4rW�Script.set_contracted_brailleqs��	
�$�$�U�+�r6c�N�URSS9 [R"U5 g)zProcesses a cursor routing key.F)�	killFlashT)r7rrYr�s  r4rY�Script.process_routing_keyws&��	
�"�"�U�"�3��#�#�E�*�r6c��URU5up#US:agUR5 [R"U5 URRX#5 g)zSClears the selection and moves the caret offset in the currently
active text area.
rT)�getBrailleCaretContextr7r�clear_all_selected_textr,�setCaretOffset)r1r9r!�offsets    r4r[� Script.process_braille_cut_begin�sO��
�1�1�%�8����A�:���"�"�$��&�&�s�+����%�%�c�2�r6c��URU5up#US:agUR5 [R"U5n[R"U5nUS:dUS:a,[R
"U5n[
X65n[X65n[R"X$U5 [R"U5SnUR5RU5 g)zwExtends the text selection in the currently active text
area and also copies the selected text to the system clipboard.rT)r�r7r�get_selection_start_offset�get_selection_end_offsetr�minr�set_selected_text�get_selected_textrh�set_text)r1r9r!r�r�r�r"�texts        r4r]�Script.process_braille_cut_line�s����1�1�%�8����A�:���"�"�$��7�7��<���3�3�C�8�	��!�O�y�1�}� �1�1�#�6�K��f�2�K��F�0�I�� � ��9�=��'�'��,�Q�/���$�$�&�/�/��5�r6c�6�[R"5UlUR5R5(a UR5R	X5 g[
R"5R5nUR5RU5(d$UR5RU5(a UR[R5 g[Rn[RnURX45 g)z,Moves the mouse pointer to the current item.TF)�timer+rlr��route_pointer_to_objectrr�ry�get_event_synthesizer�route_to_character�route_to_object�presentMessager
�MOUSE_MOVED_SUCCESS�LOCATION_NOT_FOUND_FULL�LOCATION_NOT_FOUND_BRIEF�r1r9r��full�briefs     r4rH�Script.route_pointer_to_item�s���%)�I�I�K��!��)�)�+�5�5�7�7��*�*�,�D�D�T�Q���)�)�+�>�>�@���%�%�'�:�:�5�A�A��(�(�*�:�:�5�A�A����� <� <�=���/�/���1�1�����D�(�r6c���UR5R5(acUR5RX5nUR5R	U5(agUR5RX5$[R"5R5nUR5R	U5(ag[R"U5(a'UR5RUSS5(agUR5RUS5(ag[Rn[RnUR!XE5 g)z7Performs a left mouse button click on the current item.TNr�F)rlr��get_current_objectr��try_all_clickable_actions�left_click_on_objectrr�ryrr��click_character�click_objectr
r�r�r�)r1r9r!r�r�r�s      r4rK�Script.left_click_item�s���)�)�+�5�5�7�7��0�0�2�E�E�d�R�C��)�)�+�E�E�c�J�J���1�1�3�H�H��U�U��)�)�+�>�>�@���%�%�'�A�A�%�H�H���%�%�e�,�,��)�)�+�;�;�E�4��K�K���%�%�'�4�4�U�A�>�>���/�/���1�1�����D�(�r6c���UR5R5(a UR5RX5 g[R"5R5nUR
5RUSS5(agUR
5RUS5(ag[Rn[RnURX45 g)z8Performs a right mouse button click on the current item.TN�F)
rlr��right_click_on_objectrr�ryr�r�r�r
r�r�r�r�s     r4rM�Script.right_click_item�s����)�)�+�5�5�7�7��*�*�,�B�B�4�O���)�)�+�>�>�@���%�%�'�7�7��t�Q�G�G���%�%�'�4�4�U�A�>�>���/�/���1�1�����D�(�r6c��U=(d# [R"5R5nSU/n[R"[R
US5 U(a[R"U5(a UR[R5 g[R"URX#5UR5 g)zSpeaks the contents of obj.z'DEFAULT: SayAll requested starting fromT)rr�ryrr�r�r�is_deadr�r
r�rrO�	textLines�_Script__sayAllProgressCallback)r1r^r!r�r�s     r4rO�Script.say_all�s����E�]�.�.�0�C�C�E��;�S�A��
���5�+�+�V�T�:��h�&�&�s�+�+����� @� @�A�����t�~�~�c�2�D�4Q�4Q�R�r6c�\�[R"5R5nU(a
US(d UR[R
5 gSn[
[X255SnX"RU5S-upV[R"5RUSS9 [R"5 [R"5R5 UR5 UR[R U-U5 g![a
 USupVN�f=f)z4Cycle through the user's existing settings profiles.rTc�j�USL=(a) US[R"5R5:H$)Nr�)rr��get_profile��xs r4�isMatch�.Script.cycle_settings_profile.<locals>.isMatch�s-���D�=�Y�Q�q�T�-=�-I�-I�-K�-W�-W�-Y�%Y�Yr6r�)�updateLocale)rr��available_profilesr�r
�PROFILE_NOT_FOUND�list�filter�index�
IndexError�set_profiler�checkBrailleSettingr�refresh_speechry�PROFILE_CHANGED)r1r^�profilesr��current�name�	profileIDs       r4re�Script.cycle_settings_profile�s���$�/�/�1�D�D�F���X�a�[����� :� :�;��	Z��v�g�0�1�!�4��	*�&�~�~�g�'>��'B�C�O�D�	�$�$�&�2�2�9�4�2�P��#�#�%�$�0�0�2�A�A�C�	
�'�'�)����H�4�4�t�;�T�B����	*�&�q�k�O�D�)�	*�s�0D�D+�*D+c��URn[R"U5(d[R"U5(Ga�UR(a[R
"U5(dgU[R"5R5:HnU(a�UR(d�[R"5R5n[R"U[R5(a)Sn[R"[RUS5 gSn[R"[RUS5 [R"5R!S5 gU(d]UR(aLSn[R"[RUS5 [R"5R!USSS9 UR"(a'SUlUR%5R'U5 gg)z>Callback for object:state-changed:active accessibility events.N�!DEFAULT: Ignoring event. In menu.Tz4DEFAULT: Event is for active window. Clearing state.z DEFAULT: Updating active window.)�set_window_as_focus�
notify_scriptF)�sourcer�is_dialog_or_alert�is_frame�detail1�can_be_active_windowrr��get_active_windowryr�find_ancestor_inclusive�is_menurr�r�r2r/rk�find)r1r9�window�sourceIsActiveWindowr�r�s      r4r��Script.on_active_changedsn�������)�)�&�1�1�[�5I�5I�&�5Q�5Q��}�}�[�%E�%E�f�%M�%M��#)�]�-F�-F�-H�-Z�-Z�-\�#\� �#�E�M�M�%�1�1�3�F�F�H���3�3�E�;�;N�;N�O�O�=�C��'�'��(8�(8�#�t�D��L���#�#�E�$4�$4�c�4�@��)�)�+�=�=�d�C��'�E�M�M�8���#�#�E�$4�$4�c�4�@��)�)�+�=�=���D�>�J�� � �$)�D�!��'�'�)�.�.�t�4�!r6c��[R"U5(a/[R"5R	XR
5 gg)zCCallback for object:active-descendant-changed accessibility events.N)r�'is_presentable_active_descendant_changerr��set_locus_of_focus�any_datar�s  r4r��#Script.on_active_descendant_changed3s6���>�>�u�E�E��%�%�'�:�:�5�.�.�Q�Fr6c��g)z<Callback for object:state-changed:busy accessibility events.Nr�r�s  r4r��Script.on_busy_changed9��r6c�r�[R"U5(aURURSSS9 gg)z?Callback for object:state-changed:checked accessibility events.T��alreadyFocusedr+N)r�is_presentable_checked_change�
presentObjectr�r�s  r4r��Script.on_checked_changed<�3���4�4�U�;�;����u�|�|�D�D��Q�<r6c�F�[R"URS5 g)z>Callback for object:children-changed:add accessibility events.�children-changed event.N�r�clear_all_cache_nowr�r�s  r4r��Script.on_children_addedB���	�'�'����6O�Pr6c�F�[R"URS5 g)zACallback for object:children-changed:remove accessibility events.r�Nrr�s  r4r��Script.on_children_removedGrr6c��[R"U5n[R"5R	5nX1R
:wa}[R"UR
5(d)Sn[R"[RUS5 g[R"5RXR
S5 URRSS5upVXaR:Xa8XQR
:Xa)Sn[R"[RUS5 gUR5R5(aUR5R!5 ["R$"UR
5nUR'UR
U5 [(R*[(R,[(R.[(R0/nX';aMSUS	3n[R"[RUS5 ["R2"UR
5 g["R4"UR
5(aNS
n[R"[RUS5 UR6R9UR
5 g["R:"U5up�n
U(aIUR6R9U5(a)Sn[R"[RUS5 gSn[R"[RUS5 UR=XS
9 g)z:Callback for object:text-caret-moved accessibility events.�GDEFAULT: Change is from unfocused source that is not the locus of focusTNF�lastCursorPosition�N���z0DEFAULT: Event is for last saved cursor positionz'DEFAULT: Ignoring event due to reason (�)z)DEFAULT: Event source has text selectionsz/DEFAULT: Event handled as text selection changez.DEFAULT: Presenting text at new caret position�r)r�get_text_event_reasonrr�ryr��
is_focusedrr�r�r�r�r�r�rlr�r0rrrr�CUT�PASTE�REDO�UNDOr�has_selected_textr,�handleTextSelectionChange�get_cached_selected_text�_presentTextAtNewCaretPosition)r1r9rr�r�r!r��ignore�string�_start�_ends           r4r��Script.on_caret_movedLs^���2�2�5�9���)�)�+�>�>�@���L�L� ��)�)�%�,�,�7�7�_���#�#�E�$4�$4�c�4�@���%�%�'�:�:�5�,�,�PU�V��-�-�1�1�2F�
�S����]�]�"�s�l�l�':�D�C����� 0� 0�#�t�<���)�)�+�5�5�7�7��*�*�,�1�1�3��(�(����6���$�$�U�\�\�6�:�!�%�%�!�'�'�!�&�&�!�&�&�(����;�F�8�1�E�C����� 0� 0�#�t�<��.�.�u�|�|�<���#�#�E�L�L�1�1�=�C����� 0� 0�#�t�<��N�N�4�4�U�\�\�B��%�>�>�s�C�����d�n�n�>�>�s�C�C�C�C����� 0� 0�#�t�<��>��
���E�,�,�c�4�8��+�+�E�+�Ar6c�r�[R"U5(aURUR5 gg)zBCallback for object:property-change:accessible-description events.N)r�!is_presentable_description_changer�r�r�s  r4r��Script.on_description_changeds-���8�8��?�?�������/�@r6c��g)z>Callback for document:attributes-changed accessibility events.Nr�r�s  r4r}�%Script.on_document_attributes_changed�r�r6c��g)z2Callback for document:reload accessibility events.Nr�r�s  r4r~�Script.on_document_reload�r�r6c��g)z9Callback for document:load-complete accessibility events.Nr�r�s  r4r� Script.on_document_load_complete�r�r6c��g)z8Callback for document:load-stopped accessibility events.Nr�r�s  r4r��Script.on_document_load_stopped�r�r6c���URS:ag[R"UR5(dgUR	[
RUR-5 g)z8Callback for document:page-changed accessibility events.rN)r�r�did_page_changer�r�r
�PAGE_NUMBERr�s  r4r��Script.on_document_page_changed�sH���=�=�1����)�)�%�,�,�7�7�����H�0�0�5�=�=�@�Ar6c�0�[R"URS5 [R"U5(dgUR	URSSS9 UR
R
UR5nUHnURUSS9 M g)z@Callback for object:state-changed:expanded accessibility events.zexpanded-changed event.NTr�Fr*)rrr��is_presentable_expanded_changer�r,�detailsContentForObject�speakMessage)r1r9�details�details    r4r��Script.on_expanded_changed�s{��	�'�'����6O�P��9�9�%�@�@�����5�<�<����M��.�.�8�8����F���F����f���6�r6c�r�[R"U5(aURURSSS9 gg)zECallback for object:state-changed:indeterminate accessibility events.Tr�N)r�#is_presentable_indeterminate_changer�r�r�s  r4r��Script.on_indeterminate_changed�s4���:�:�5�A�A����u�|�|�D�D��Q�Br6c�L�[R"5RU5 g)z!Callback for mouse:button events.N)r
r��process_mouse_button_eventr�s  r4r��Script.on_mouse_button�s��	�'�'�)�D�D�U�Kr6c�z�[UR[5(aURUR5 gg)z(Callback for object:announcement events.N)rqr��strr�r�s  r4r��Script.on_announcement�s,���e�n�n�c�*�*�������/�+r6c�r�[R"U5(aURUR5 gg)z;Callback for object:property-change:accessible-name events.N)r�is_presentable_name_changer�r�r�s  r4r��Script.on_name_changed�s,���1�1�%�8�8�������/�9r6c�F�[R"URS5 g)z<Callback for object:attributes-changed accessibility events.z object-attributes-changed event.Nrr�s  r4r��#Script.on_object_attributes_changed�s��	�'�'����6X�Yr6c�r�[R"U5(aURURSSS9 gg)z?Callback for object:state-changed:pressed accessibility events.Tr�N)r�is_presentable_pressed_changer�r�r�s  r4r��Script.on_pressed_changed�r�r6c�x�[R"U5(dg[R"5R	S5(agSn[
R"5nUR
5(aSnOoUR5(dUR5(aE[R"UR5(a [R"UR5nU(dgUR(aUR[RSS9 gUR[R SS9 g)z@Callback for object:state-changed:selected accessibility events.N�onlySpeakDisplayedTextFTr*)r�is_presentable_selected_changerr�r�r
�last_event_was_space�last_event_was_up�last_event_was_down�
is_table_cellr��is_selectedr�r.r
�
TEXT_SELECTED�TEXT_UNSELECTED)r1r9�
announceStater`s    r4r��Script.on_selected_changed�s����9�9�%�@�@���'�'�)�5�5�6N�O�O���
�%�1�1�3���'�'�)�)� �M��'�'�)�)�W�-H�-H�-J�-J��-�-�e�l�l�;�;�'�3�3�E�L�L�A�M����=�=����h�4�4���F����h�6�6�%��Hr6c�b^^	�[R"5R5nURR	5(a[URRUR5(a/[R"5RXRS5 GO9URRUR5(ag[R"UR5(agURU:XaO�[R"UR5(a%[R"UR5(d�[R"UR[R5nX2:waYUR[R "U5:wa5SUR/n["R$"["R&US5 g[R("UR5(a�[R"5R+5m[R"URU4Sj5(d7SURST/n["R$"["R&US5 g[,R"5R/5(ag[R"UR5(ae[R0"UR5(d@[R2"URR5UR55(agOf[R6"UR5(aAUR95R;5(aUR95R=5 UR?5RA5nURRCUR5n[R"5R5nX&;a)Sn["RD"["R&US5 gUGHzm	[R"UU	4S	j5(a>S
T	S/n["R$"["R&US5 URGU5  gT	U:Xa-S
T	S/n["R$"["R&US5 M�[RH"T	5(a�U(a�[RJ"T	5[RJ"U5:XaS[R2"UR5(d.S
T	SU/n["R$"["R&US5  g[RL"T	5(aGMV[R"5RUT	5  g g)z;Callback for object:selection-changed accessibility events.FNz7DEFAULT: Ignoring event: source lacks showing + visibleTc� >�U=(a UT:H$�Nr�)r�r<s �r4�<lambda>�-Script.on_selection_changed.<locals>.<lambda>s���!�BZ��]�HZ�BZr6zDEFAULT: Ignoring event:z
is not insidez@DEFAULT: Ignoring event believed to be redundant to focus changec�>�UT:H$rQr�)r��childs �r4rRrS&s	���q�E�zr6zDEFAULT: Childzis ancestor of locusOfFocuszis current mouse review item�DEFAULT:z's selection redundant to)'rr�ryr,�handlePasteLocusOfFocusChange� topLevelObjectIsActiveAndCurrentr�r��handleContainerSelectionChanger�manages_descendants�
is_showing�
is_visibler�
find_ancestor�is_combo_box�
get_parentrr�r��is_tree_or_tree_tabler�r
rF�is_expandedr�getEntryForEditableComboBox�is_page_tab_listrlr�r0ru�get_current_item�selectedChildrenr�r%�is_page_tab�get_name�is_layout_only)
r1r9r��comboboxr��mouseReviewItemrer�r<rUs
        @@r4r��Script.on_selection_changed�s�����)�)�+�>�>�@���>�>�7�7�9�9��~�~�>�>�u�|�|�L�L��)�)�+�>�>�u�l�l�TY�Z��
�^�^�
:�
:�5�<�<�
H�
H��
�
,�
,�U�\�\�
:�
:��
�\�\�U�
"�

��(�(����6�6�;�;Q�;Q�RW�R^�R^�;_�;_� �-�-�e�l�l�K�<T�<T�U�H�� �U�\�\�X�5H�5H��5O�%O�S�UZ�Ua�Ua�b���"�"�5�#3�#3�V�T�B���,�,�U�\�\�:�:�)�5�5�7�I�I�K�M��)�)�%�,�,�8Z�[�[�4�e�l�l�O�Ub�c���"�"�5�#3�#3�V�T�B���*�*�,�A�A�C�C���#�#�E�L�L�1�1�+�:Q�:Q�RW�R^�R^�:_�:_��%�%�d�n�n�&P�&P�QV�Q]�Q]�&^�_�_��`�
�
)�
)�%�,�,�
7�
7��.�.�0�:�:�<�<�

�*�*�,�1�1�3��1�1�3�D�D�F���>�>�:�:�5�<�<�H���)�)�+�>�>�@���$�T�C����� 0� 0�#�t�<��%�E��%�%�e�-A�B�B�*�E�3P�Q���"�"�5�#3�#3�V�T�B��.�.�u�5����'�*�E�3Q�R���"�"�5�#3�#3�V�T�B���&�&�u�-�-�%��$�$�U�+�x�/@�/@��/G�G�"�-�-�e�l�l�;�;�$�e�-H�%�P���"�"�5�#3�#3�V�T�B���-�-�e�4�4��)�)�+�>�>�u�e�L��+&r6c��g)zACallback for object:state-changed:sensitive accessibility events.Nr�r�s  r4r��Script.on_sensitive_changed<r�r6c�^�UR(dg[R"UR5(d�SURS/n[R
"[RUS5 [R"URSS9 [R"UR5(d)Sn[R"[RUS5 gURnURRU5upVU(a#[R"U5(dU(dg[R"U5(aB[R"U5(d'URRU5nU(aUSn[ R""5R%X5 g)	z?Callback for object:state-changed:focused accessibility events.NrVz$lacks focused state. Clearing cache.Tz#Event detail1 does not match state.rz-DEFAULT: Clearing cache did not update state.r)r�rrr�rr�r�r�clear_cacher�r,�frameAndDialogr��get_child_countr^rerr�r�)r1r9r�r�r!r��dialogres        r4r��Script.on_focused_changed?s'���}�}���%�%�e�l�l�3�3� �%�,�,�0V�W�F����u�/�/���>�� � ����6[�\��)�)�%�,�,�7�7�E���#�#�E�$4�$4�c�4�@���l�l�����6�6�s�;����+�:�:�6�B�B�6���#�#�C�(�(��1I�1I�#�1N�1N�#�~�~�>�>�s�C���&�q�)���!�!�#�6�6�u�Br6c�"�URn[R"U5(a�UR(dgUR	UR
R
U55 URRU5nURUSS9 UR5RU5 g[R"U5(a�[R"5R5nU(d*[ R"5R#S5(dgUR(aUR%USS9 g[&R"5R)5nU(a%U(aUnUR%X!RSS9 gggg)z?Callback for object:state-changed:showing accessibility events.NF)�resetStyles�presentToolTipsTr*)r)r+)r�r�is_notificationr�r.r4�get_localized_role_namer,�getNotificationContentr�rj�save_notification�is_tool_tipr
r��last_event_was_f1rr�r�rry)r1r9r!r��was_f1r�s      r4r��Script.on_showing_changedZs5���l�l���&�&�s�+�+��=�=�����d�3�3�K�K�C�P�Q��.�.�7�7��<�C�������7��+�+�-�?�?��D���"�"�3�'�'�(�4�4�6�H�H�J�F��"2�">�">�"@�"L�"L�M^�"_�"_���}�}��"�"�3�$�"�7��!�-�-�/�B�B�D�E������"�"�3����"�N�� �u�(r6c���[R"UR5(dN[R"UR5(d)Sn[R
"[RUS5 g[R"5R5nX1R:waN[R"UR5(d)Sn[R
"[RUS5 g[R"5RS5(a�[R"UR5n[R"URXDS-5R!5(dUS-n[R""URUS-
5(d)[R""URUS-5(a UR%[&R(5 ggg)zACallback for object:text-attributes-changed accessibility events.�7DEFAULT: Change is from not editable or terminal sourceTNr�speakMisspelledIndicatorr�)r�is_editabler�r}rr�r�rr�ryrrr�rr�
get_substring�isalnum�is_word_misspelledr.r
�
MISSPELLED)r1r9r�r�r�s     r4r��!Script.on_text_attributes_changedvsW���'�'����5�5��9P�9P�QV�Q]�Q]�9^�9^�K�C����� 0� 0�#�t�<���)�)�+�>�>�@���L�L� ��)?�)?����)M�)M�[�C����� 0� 0�#�t�<���'�'�)�5�5�6P�Q�Q��,�,�U�\�\�:�F��'�'����f�q�j�I�Q�Q�S�S��!����(�(����v��z�B�B��+�+�E�L�L�&�1�*�E�E��!�!�(�"5�"5�6�F�Rr6c�V�[R"U5n[R"UR5(dN[R"UR5(d)Sn[
R"[
RUS5 g[R"5R5nXAR:waN[R"UR5(d)Sn[
R"[
RUS5 gURRU5 URUR5 U[R :XahSn[
R"[
RUS5 UR#[$R&5 [(R*"UR5 gURR-U5nU[R.:XaLSn[
R"[
RUS5 [(R0"UR5SnOfU[R2:Xa)Sn[
R"[
RUS5 O)S	n[
R"[
RUS5 g[5U5S
:XaUR7U5 gUR8R;US9n[<R"5nUR?URU5nURAU5nURCXV5 g)z=Callback for object:text-changed:delete accessibility events.r�TNrzADEFAULT: Deletion is believed to be due to deleting selected textz9DEFAULT: Deletion is believed to be due to Delete commandrz<DEFAULT: Deletion is believed to be due to BackSpace commandz:DEFAULT: Event is not being presented due to lack of causer��r)"rr
r�r�r}rr�r�rr�ryrr,�handleUndoTextEventr3r�SELECTED_TEXT_DELETIONr�r
�SELECTION_DELETEDrr�deletedText�DELETE�get_character_at_offset�	BACKSPACE�len�speak_characterr4�voicer�adjust_for_digits�adjust_for_repeatsr.)r1r9rr�r�rr�r`s        r4r��Script.on_text_deleted�sE���2�2�5�9���'�'����5�5��9P�9P�QV�Q]�Q]�9^�9^�K�C����� 0� 0�#�t�<���)�)�+�>�>�@���L�L� ��)?�)?����)M�)M�[�C����� 0� 0�#�t�<�����*�*�5�1����E�L�L�)��_�;�;�;�U�C����� 0� 0�#�t�<����� :� :�;��.�.�u�|�|�<�����+�+�E�2���_�+�+�+�M�C����� 0� 0�#�t�<��3�3�E�L�L�A�!�D�F�
��0�0�
0�P�C����� 0� 0�#�t�<�N�C����� 0� 0�#�t�<���v�;�!��� � ��(��)�)�/�/�v�/�>�E�2�>�>�@�G��.�.�u�|�|�V�D�F��/�/��7�F����f�,r6c�0
�[R"U5n[R"UR5(dN[R"UR5(d)Sn[
R"[
RUS5 g[R"5R5nXAR:waN[R"UR5(d)Sn[
R"[
RUS5 gURRU5 URUR5 U[R :XahSn[
R"[
RUS5 UR#[$R&5 [(R*"UR5 gSnU[R,:Xa,Sn[
R"[
RUS5 SnGO�U[R.:Xa,Sn[
R"[
RUS5 SnGO\U[R0:Xa*S	n[
R"[
RUS5 GOU[R2:Xa)S
n[
R"[
RUS5 O�U[R4:Xa)Sn[
R"[
RUS5 O�U[R6:Xa)Sn[
R"[
RUS5 OgU[R8:Xa)S
n[
R"[
RUS5 O*Sn[
R"[
RUS5 SnURR;U5nU(a�[=U5S:XaUR?U5 OwUR@RCURUS9n[DR"5nURGURU5nURIU5nURKXg5 [=U5S:wd$U[RL[R44;ag[NR"5RQS5(a!URSUR5(ag[NR"5RQS5(aURUUR5 gg)z=Callback for object:text-changed:insert accessibility events.r�TNrzCDEFAULT: Insertion is believed to be due to restoring selected textz7DEFAULT: Insertion is believed to be due to page switchFz1DEFAULT: Insertion is believed to be due to pastez3DEFAULT: Insertion is believed to be due to commandz?DEFAULT: Insertion is believed to be due to middle mouse buttonz-DEFAULT: Insertion is believed to be echoablez@DEFAULT: Insertion is believed to be presentable auto text eventz#DEFAULT: Insertion is also selectedz:DEFAULT: Not speaking inserted string due to lack of causer��r!r�enableEchoBySentence�enableEchoByWord)+rr
r�r�r}rr�r�rr�ryrr,r�r3r�SELECTED_TEXT_RESTORATIONr�r
�SELECTION_RESTOREDrr�PAGE_SWITCHr�UNSPECIFIED_COMMAND�MOUSE_MIDDLE_BUTTON�TYPING_ECHOABLE�AUTO_INSERTION_PRESENTABLE�SELECTED_TEXT_INSERTION�insertedTextr�r�r4r�rr�r�r.�TYPINGrr��echoPreviousSentence�echoPreviousWord)	r1r9rr�r��speak_stringrr�r`s	         r4r��Script.on_text_inserted�s����2�2�5�9���'�'����5�5��9P�9P�QV�Q]�Q]�9^�9^�K�C����� 0� 0�#�t�<���)�)�+�>�>�@���L�L� ��)?�)?����)M�)M�[�C����� 0� 0�#�t�<�����*�*�5�1����E�L�L�)��_�>�>�>�W�C����� 0� 0�#�t�<����� ;� ;�<��.�.�u�|�|�<�����_�0�0�0�K�C����� 0� 0�#�t�<� �L�
��,�,�
,�E�C����� 0� 0�#�t�<� �L�
��:�:�
:�G�C����� 0� 0�#�t�<�
��:�:�
:�S�C����� 0� 0�#�t�<�
��6�6�
6�A�C����� 0� 0�#�t�<�
��A�A�
A�T�C����� 0� 0�#�t�<�
��>�>�
>�7�C����� 0� 0�#�t�<�N�C����� 0� 0�#�t�<� �L����,�,�U�3����6�{�a���$�$�V�,��-�-�3�3����V�3�T��6�B�B�D�� �2�2�5�<�<��H�� �3�3�F�;���!�!�&�0��v�;�!���_�3�3�_�5T�5T�U�U���'�'�)�5�5�6L�M�M��(�(����6�6���'�'�)�5�5�6H�I�I��!�!�%�,�,�/�Jr6c��[R"U5nU[R:XaISn[R
"[RUS5 [R"UR5 gU[R:XadSn[R
"[RUS5 URUR5 [R"UR5 gU[R:XaISn[R
"[RUS5 [R"UR5 gURRUR5 URUR5 g)z@Callback for object:text-selection-changed accessibility events.z<DEFAULT: Ignoring event because reason for change is unknownTNz4DEFAULT: Presenting line believed to be search matchzJDEFAULT: Ignoring event believed to be unpresentable search results change)rr
r�UNKNOWNrr�r�rrr��SEARCH_PRESENTABLE�sayLine�SEARCH_UNPRESENTABLEr,rr3)r1r9rr�s    r4r�� Script.on_text_selection_changed
s���2�2�5�9���_�,�,�,�P�C����� 0� 0�#�t�<��.�.�u�|�|�<���_�7�7�7�H�C����� 0� 0�#�t�<��L�L����&��.�.�u�|�|�<���_�9�9�9�^�C����� 0� 0�#�t�<��.�.�u�|�|�<�����0�0����>����E�L�L�)r6c�b�[R"URS5 [R"5R5(dgUR[R"[R"5R55:wagUR[R5 g)z:Callback for object:column-reordered accessibility events.zcolumn-reordered event.N)
rrr�r
r��last_event_was_table_sortr�	get_tablerryr�r
�TABLE_REORDERED_COLUMNSr�s  r4r��Script.on_column_reordered&st��	�'�'����6O�P�"�.�.�0�J�J�L�L���<�<�7�,�,�]�-F�-F�-H�-[�-[�-]�^�^�����H�<�<�=r6c�b�[R"URS5 [R"5R5(dgUR[R"[R"5R55:wagUR[R5 g)z7Callback for object:row-reordered accessibility events.zrow-reordered event.N)
rrr�r
r�r�rr�rryr�r
�TABLE_REORDERED_ROWSr�s  r4r��Script.on_row_reordered2st��	�'�'����6L�M�"�.�.�0�J�J�L�L���<�<�7�,�,�]�-F�-F�-H�-[�-[�-]�^�^�����H�9�9�:r6c�F�[R"UR5(dgURR	UR5up#SUSU/n[
R"[
RUS5 U(dZUR[R"5R5:wa)Sn[
R"[
RUS5 g[R"UR5(aURUR5 URURUS9 [ R""UR$R'URSUS95 UR)UR*R-URSUS95 g)zJCallback for object:property-change:accessible-value accessibility events.Nz DEFAULT: Is progress bar update:�,TzDEFAULT: Source != locusOfFocus)�isProgressBarUpdate)r�r�)r �did_value_changer�r,r�rr�r�rr�ryr�r�is_spin_buttonr%r3rr8r4r5�
_Script__play�sound_generator�generate_sound)r1r9r�r�r�s     r4r��Script.on_value_changed>sD���'�'����5�5��#'�>�>�#E�#E�e�l�l�#S� ��4�6I�3�PS�T��
���5�+�+�V�T�:�"��|�|�}�8�8�:�M�M�O�O�3�C����� 0� 0�#�t�<���%�%�e�l�l�3�3��*�*�5�<�<�8����E�L�L�>Q��R����T�*�*�:�:��L�L��CV�;�X�	Y����D�(�(�7�7��L�L��CV�8�X�	Yr6c���[R"UR5(dgUR[R"5R5:Xa)Sn[R"[RUS5 g0Ul	[R"5RUR5 [R"UR5S:Xaa[R"URS5n[R"U5(a%[R"5RX5 g[R"5RXR5 g)z2Callback for window:activate accessibility events.Nz$DEFAULT: Event is for active window.Tr�r)rr�r�rr�r�rr�r�r�r2rrq�	get_childr�r�)r1r9r�rUs    r4r��Script.on_window_activatedWs����/�/����=�=���<�<�=�4�4�6�H�H�J�J�8�C����� 0� 0�#�t�<��"$����!�!�#�5�5�e�l�l�C��#�#�E�L�L�1�Q�6��&�&�u�|�|�Q�7�E��"�"�5�)�)��)�)�+�>�>�u�L���!�!�#�6�6�u�l�l�Kr6c��g)z0Callback for window:create accessibility events.Nr�r�s  r4r��Script.on_window_createdmr�r6c��g)z1Callback for window:destroy accessibility events.Nr�r�s  r4r��Script.on_window_destroyedpr�r6c�H�[R"5R5n[R"U[
R5(a)Sn[R"[RUS5 gUR[R"5R5:wa)Sn[R"[RUS5 gUR5R5(aUR5R5 UR5R5(aUR5R5 0Ul[R"5R#S5 [$R"5R'SS5 g)z4Callback for window:deactivate accessibility events.r�TNz.DEFAULT: Ignoring event. Not for active windowzWindow deactivated)rr�ryrr�rr�rr�r�r�r�rlr�r0rtr��clear_stater�set_active_script)r1r9r�r�s    r4r��Script.on_window_deactivatedss&���)�)�+�>�>�@���+�+�E�;�3F�3F�G�G�5�C����� 0� 0�#�t�<���<�<�=�4�4�6�H�H�J�J�B�C����� 0� 0�#�t�<���)�)�+�5�5�7�7��*�*�,�1�1�3��(�(�*�4�4�6�6��)�)�+�0�0�2�"$����!�!�#�/�/�0D�E��"�"�$�6�6�t�=Q�Rr6c�,�U=(d URnURU5 UR(a)Sn[R"[R
US5 gU[R:XaURU5 gU[R:XaURU5 gU[R:XaURU5 gU[R:XaURU5 gU[R:XaURU5 gU[R:XaURU5 gU[R :Xa<["R$"UR5upgnU(dURU5 gg)zPPresents text at the new position, based on heuristics. Returns True if handled.z5DEFAULT: Not presenting text because SayAll is activeTF)r�� updateBrailleForNewCaretPositionr-rr�r�r�NAVIGATION_BY_LINEr��NAVIGATION_BY_WORD�sayWord�NAVIGATION_BY_CHARACTER�sayCharacter�NAVIGATION_BY_PAGE�NAVIGATION_TO_LINE_BOUNDARY�NAVIGATION_TO_FILE_BOUNDARY�MOUSE_PRIMARY_BUTTONrr)	r1r9�otherObjrr!r�rrrs	         r4r�%Script._presentTextAtNewCaretPosition�s5���&�%�,�,���-�-�c�2��>�>�I�C����� 0� 0�#�t�<���_�7�7�7��L�L�����_�7�7�7��L�L�����_�<�<�<����c�"���_�7�7�7��L�L�����_�@�@�@����c�"���_�@�@�@��L�L�����_�9�9�9�#)�#B�#B�5�<�<�#P� �F�D�����S�!��r6c�x�[R"5RS5(dgURR	U5nURSUUlUR(aKURR5nURUR-
U:�aOUR(aMK[R"URUR5(a.[R"5RSURSS9 URSURUR5 g)N�rewindAndFastForwardInSayAllFr�r�T)rr�r�r/r��popr�r�rr|r!rr�rO)r1r��minCharCountr�s    r4�
_rewindSayAll�Script._rewindSayAll�s����+�+�-�9�9�:X�Y�Y���$�$�*�*�7�3��#�3�3�A�e�<����"�"��*�*�.�.�0�G�� � �7�#6�#6�6��E���"�"�"��"�"�7�;�;��0C�0C�D�D��%�%�'�:�:�4����\a�:�b����T�7�;�;��(;�(;�<�r6c�b�[R"5RS5(dg[R"UR
UR5(a.[R"5RSUR
SS9 URSUR
UR5 g)Nr�Fr�T)
rr�r�rr|r!r�rr�rO)r1r�s  r4�_fastForwardSayAll�Script._fastForwardSayAll�s���+�+�-�9�9�:X�Y�Y���"�"�7�;�;��0A�0A�B�B��%�%�'�:�:�4����\a�:�b����T�7�;�;��(9�(9�:�r6c�8�[R"URUR5(agU[R
R:XaT[R"5RURURUR[R5 gU[R
R:Xa�[R"5nUR5(a_SUlUR!5(aUR#U5(agUR%5(aUR'U5(agSUl/Ul[R"5RURUR5 [R,"URUR5 O�U[R
R.:Xa�[R"5R1SURSS9 [R"5RURUR[RS9 [R,"URUR5 [R2"UR5 g)NTFr�)�mode)r�character_at_offset_is_eocr!�
currentOffsetr�
SayAllContext�PROGRESSrr��emit_region_changed�currentEndOffsetrP�INTERRUPTEDr
�last_event_was_keyboardr.rHr�rGr�r-r/r|�	COMPLETEDr�r�)r1r��progressTyper`s    r4�__sayAllProgressCallback�Script.__sayAllProgressCallback�s���
�,�,�W�[�[�'�:O�:O�P�P���<�5�5�>�>�>��%�%�'�;�;����W�2�2�G�4L�4L��%�%�
'�
��<�5�5�A�A�A�)�5�5�7�G��.�.�0�0�,0��)��.�.�0�0�T�5L�5L�W�5U�5U���,�,�.�.�4�3E�3E�g�3N�3N��"�D�N�#%�D� ��%�%�'�;�;�G�K�K��I^�I^�_��#�#�G�K�K��1F�1F�G�
�\�7�7�A�A�
A��%�%�'�:�:�4����\a�:�b��%�%�'�;�;����W�2�2��9N�9N�
<�
P��#�#�G�K�K��1F�1F�G�
	�&�&�w�{�{�3r6c�>�UR(a)Sn[R"[RUS5 gUR(a*Sn[R"[RUS5 U$Sn[R"[RUS5 g)NzDEFAULT: In SayAllTzDEFAULT: SayAll is interruptedzDEFAULT: Not in SayAllF)r-rr�r�r.)r1�treatInterruptedAsInr�s   r4�inSayAll�Script.inSayAll�su���>�>�&�C����� 0� 0�#�t�<���$�$�2�C����� 0� 0�#�t�<�'�'�&��
���E�,�,�c�4�8�r6c�8�[R"U5n[R"XS-
5SSup4[R"XS-
5SSupVU[RS-;aUS;dg[R
"X5SnU(d)Sn[R"[RUS5 gURRXS	9n	[R"5n
U
RX5nU
RU5nURXy5 g)
zASpeaks the sentence prior to the caret if at a sentence boundary.r�rr
� z!.?:;FzODEFAULT: At a sentence boundary, but no sentence found. Missing implementation?Tr�)rrr�r�
whitespace�get_sentence_at_offsetrr�r�r4r�rr�r�r�r.)r1r!r��char�start�
previous_char�previous_start�sentencer�r�r`s           r4r��Script.echoPreviousSentences����(�(��-���4�4�S�1�*�E�a��K���(.�(F�(F�s�TU�I�(V�WX�Y[�(\�%�
���)�)�H�4�4��'�9Q���0�0��E�a�H���c�C����� 0� 0�#�t�<���%�%�+�+��+�E��.�:�:�<���,�,�S�;���-�-�h�7�����(�*�r6c��[R"U5nUS:Xa[R"U5nUS::ag[R"XS-
5SSup4U[R
[R-S-;ag[R"XS-
5SSup4U[R
[R-S-;ag[R"X5SnU(dgURRXS9n[R"5nURX5nURU5nURXV5 g)z9Speaks the word prior to the caret if at a word boundary.r
rFr�r�r�T)rrr�r�r�punctuationr��get_word_at_offsetr4r�rr�r�r�r.)r1r!r��	prev_char�
prev_start�wordr�r`s        r4r��Script.echoPreviousWords/���(�(��-���R�<��/�/��4�F��Q�;��!'� >� >�s�Q�J� O�PQ�RT� U��	��F�.�.��1B�1B�B�X�M�M��!'� >� >�s�QR�N� S�TU�VX� Y��	���*�*�V�->�->�>��I�I���(�(��9�!�<�����%�%�+�+��+�A��.�:�:�<���(�(��3���)�)�$�/�����$�&�r6c��[R"U5n[R"5R	5(aUS-n[R
"X5up4n[R"5RXU[R5 U(aUS:XaSn[R"5RS5nUS:XaW[R"U[SU55SnU(aUS:Xa&U(aUR[RSS9 gUS	;a&U(aUR[RSS9 gUR!X5 UR#U5 S
UR$S'g)z~Speak the character at the caret.

Arguments:
- obj: an Accessible object that implements the AccessibleText
       interface
r��
�
�speakBlankLinesrFr*N)rz
r��lastTextUnitSpoken)rrr
r��&last_event_was_forward_caret_selectionr�rr��CARET_TRACKINGrr�r{rr.r
�BLANKr�r�r�)r1r!r��	characterr�r�r�
lineStrings        r4r��Script.sayCharacter<s>���(�(��-��
�*�*�,�S�S�U�U��a�K�F�,2�,J�,J�3�,W�)�	�	��!�!�#�7�7��i��)E�)E�	G��I��-��I�*�6�6�8�D�D�EV�W������2�2�3��A�v��G��J�J���t�!3�#��%�%�h�n�n��%�F����&���!�!�(�.�.�E�!�B���)�)�#�6�� � ��+�8>���� 4�5r6c���Uc[R"U5n[R"X5SSup4[U5(Ga�US:wGa�URRU5nU(aUR
U5 U[U5-n[R"5RXU[R5 /nURRXU5nU(d[R"U5 gUH�up�p�n
U(dMURRXX�S9n[ R"5nUR#XU	5nUR%X5nUR'U5nURR)U5(aURR+U5nU(dU(aUR-5nU/nUR/U5 UR1U5 M� [R"U5 OG[2R"5R5S5(aUR
[6R8SS9 S	UR:S
'g)z�Speaks the line of an AccessibleText object that contains the
caret, unless the line is empty in which case it's ignored.

Arguments:
- obj: an Accessible object that implements the AccessibleText
       interface
Nrr�r)r!r�language�dialectrFr*rXr	)rrr{r�r,�indentationDescriptionr.rr�r�r�splitSubstringByLanguagerr8r4r�r�adjust_for_linksr�r��shouldVerbalizeAllPunctuation�verbalizeAllPunctuation�lstrip�extend�appendrr�r
rr�)r1r!r�rXr�rr��	utterance�splitr�rr�rrr�r`rVs                 r4r��Script.sayLineis����>��,�,�S�1�F�"�5�5�c�B�1�Q�G����t�9�9����%)�^�^�%J�%J�4�%P�"�%��!�!�"8�9�#�c�$�i�/�I��%�%�'�;�;��)�]�-I�-I�
K��I��N�N�;�;�C�i�X�E�����T�"��8=�4��T�W����-�-�3�3��8�4�N��7�B�B�D���/�/��5�A���0�0��;���1�1�$�7���>�>�?�?��D�D��>�>�A�A�$�G�D�!�%;��;�;�=�D�����
�
�e�$�� � ��(�-9>�.
�L�L��#�
�
)�
)�
+�
7�
7�8I�
J�
J����h�n�n���>�8>���� 4�5r6c��URRXU5nU(dg[U5S:�dUR5(GaURR	U5nU(aURU5 [R"5RXU[R5 URRXS9n[R"5nURX5nURU5nURRU5(aURR!U5nU/nUR#U5 [$R&"U5 OUR)U5 SUR*S'g)a&Speaks the text of an Accessible object between the start and
end offsets, unless the phrase is empty in which case it's ignored.

Arguments:
- obj: an Accessible object that implements the AccessibleText
       interface
- startOffset: the start text offset.
- endOffset: the end text offset.
Nr�r��phraser	)r,�
expandEOCsr�r�rr.rr�r�rr4r�rr�r�rrrrr8r�r�)	r1r!r�r�rrVr�r`rs	         r4�	sayPhrase�Script.sayPhrase�s3�����*�*�3�Y�G�����v�;��?�f�n�n�.�.��^�^�:�:�6�B�F���!�!�&�)��%�%�'�;�;��)�]�-I�-I�
K��)�)�/�/�C�/�G�E�2�>�>�@�G��.�.�s�;�F��/�/��7�F��~�~�;�;�C�@�@����?�?��G����I����U�#��L�L��#�� � ��(�8@���� 4�5r6c	�d�[R"U5nURRX5up4nSU;a�[R
"5R
S5(aURS5 URS5(aUS-
nOURS5(aUS-n[R"XU5n[[R"SU55nU(aNXFSR5-
nU[U5USR!5-
-n[R"XU5nUR#SS5nSUS	US
USUS3	n[$R&"[$R(US
5 UR+X5 UR-XU5 SUR.S'g)zNSpeaks the word at the caret, taking into account the previous caret position.r�enableSpeechIndentationr�z\S+rr
z\nzDEFAULT: Final word at offset z is 'z' (�-rTrr	N)rrr,�$getWordAtOffsetAdjustedForNavigationrr�r�r��
startswith�endswithr�r��re�finditerr�r��end�replacerr�r�r�r!r�)	r1r!r�rr�r��matchesrr�s	         r4r��Script.sayWord�s����(�(��-���N�N�?�?��L�	%��9��4�<��+�+�-�9�9�:S�T�T��$�$�T�*����t�$�$��q� �����t�$�$��Q��	��'�'��)�D�D��r�{�{�6�4�0�1����1�:�+�+�-�-�K���T��W�R�[�_�_�%6�6�6�I��'�'��)�D�D����d�E�*��,�V�H�E�&��B��}�A�i�[��
+�	�	���E�,�,�c�4�8��%�%�c�7����s��3�8>���� 4�5r6c�6�URSS5nSUSU/n[R"[RUS5 URSS5(dUR"U40UD6 UR
R"U40UD6n[R"XSS9 g)Nr+FzDEFAULT: Presenting objectz. Interrupt:T�
speechonlyr*)	r�rr�r�r3r4r5rr8)r1r!rUr+r�r=s      r4r��Script.presentObject�s����H�H�[�%�0�	�.��^�Y�O��
���5�+�+�V�T�:��x�x��e�,�,�����,�t�,��*�*�:�:�3�G�$�G�
����Z�5r6c�@�UR5RU5$)z;Returns the flat review context, creating one if necessary.)rl�get_or_create_contextrxs r4r~�Script.getFlatReviewContext�s���-�-�/�E�E�d�K�Kr6c�8�[R"5RS5(dP[R"5RS5(d'[R"[R
SS5 gUR
5RU5up#U(d/nSnUR5nURX$5 [R"U/5 URUS5 U(a]U(dVURUR-nSUSU/n[R"[R
US5 UR!U5 UR"(a$UR%SUR&5 SUlgUR%SU5 g)	a!Obtains the braille regions for the current flat review line
and displays them on the braille display.  If the targetCursorCell
is non-0, then an attempt will be made to position the review cursor
at that cell.  Otherwise, we will pan in display-sized increments
to show the review cursor.rIrJzBRAILLE: update review disabledTNFzDEFAULT: Update to�in)rr�r�rr�r�rl�get_braille_regionsrOrQr�setLinesrS�
brailleOffset�cursorOffsetr��panBrailleToOffsetr)rTr()r1r(�regions�regionWithFocusrXr�r�s       r4rx�Script.updateBrailleReview�sD�� �+�+�-�9�9�/�J�J�#�/�/�1�=�=�>T�U�U����� 0� 0�2S�UY�Z��%)�%C�%C�%E�%Y�%Y�Z^�%_�"����G�"�O��%�%�'���$�$�W�3����$�� ����_�e�4��#3�$�2�2�_�5Q�5Q�Q�F�*�F�D�/�J�F����u�/�/���>��#�#�F�+��)�)�����d�&;�&;�<�-2�D�*�����&6�7r6c�4�SnUR5RU5Sn[[X55nS/nUHnUR	SU/5 M [
R"[
RUS5 Sn[[XR55nU(d)Sn[
R"[
RUS5 gS	/nUHnUR	SU/5 M [
R"[
RUS5 USn[UR[RS5nUR(aURXtR-
nOXtR-
n[UR ["R$5(aX�R R&-
nS
U3n[
R"[
RUS5 UR R)U5up�U	(a�SU	SU
/n[
R"[
RUS5 UR+5nUR-U	R R.R0U	R R0U	R0U
5 gSUR /n[
R"[
RUS5 UR+5nUR-UR R.R0UR R0SS5 g)
ziSets the character of interest to be the first character showing
at the beginning of the braille display.c�V�[U[R[R45$rQ)rqr�
ReviewText�ReviewComponentr�s r4�isTextOrComponent�RScript._setFlatReviewContextToBeginningOfBrailleDisplay.<locals>.isTextOrComponent#s ���a�'�"4�"4�g�6M�6M�!N�O�Or6rz(DEFAULT: Text/Component regions on line:rTc��USL=(a6 UR[UR5-[RS:�$�Nr)r9r�rr�viewportr�s r4r��HScript._setFlatReviewContextToBeginningOfBrailleDisplay.<locals>.isMatch0s3���D�=�Z�Q�_�_�s�1�8�8�}�%D�w�GW�GW�XY�GZ�%Z�Zr6zADEFAULT: Could not find review region to move to start of displayNz)DEFAULT: Candidates for start of display:zDEFAULT: Offset for region: z$DEFAULT: Setting start of display toz, )rlr7r�r�rrr�r�r�rr9rrG�
contracted�inPosrq�zoner	�TextZoner��getWordAtOffsetr~�
setCurrentrXr�)r1rCr<r��regionr�r��positionr�r�
charOffsetr�s            r4rw�7Script._setFlatReviewContextToBeginningOfBrailleDisplaysu��
	P��0�0�2�F�F�t�L�Q�O���v�/�9�:��<�=���F��M�M�4��.�)��
���5�+�+�V�T�:�
	[��v�g�/�0���U�C����� 0� 0�#�t�<��=�>���F��M�M�4��.�)��
���5�+�+�V�T�:������v�+�+�W�-=�-=�a�-@�A������\�\�(�-A�-A�"A�B�F�� 4� 4�4�F��f�k�k�;�#7�#7�8�8��k�k�-�-�-�F�,�V�H�5��
���E�,�,�c�4�8�#�[�[�8�8��@����<�d�D�*�U�F����u�/�/���>��/�/�1�G�����	�	���$�$��	�	����
�
��	
�=�f�k�k�J�F����u�/�/���>��/�/�1�G������� � �&�&����!�!���	
r6c#�2# �SUlSUlUnURRU5nUc[R
"U5nU(Ga[R"URRXS95 [R"5RS5nU[R:Xa,[R"U5(a[R nO[R"nU"X5GHupxn	URR%XS9n
U
(a['U
[(5(aU
Sn
[*R"5nUR-XU5nUR/X5nUR1U5n[2R4"XX�5nSU/n
[6R8"[6R:U
S5 UR<R?U5 URA5RCXU	5 X�/v� GM UnSnURREU5nX@RRU5:waO
U(aGMSUl/UlS	n[6RF"[6R:US5 URI5 g7f)
aaCreates a generator that can be used to iterate over each line
of a text object, starting at the caret offset.

Arguments:
- obj: an Accessible that has a text specialization

Returns an iterator that produces elements of the form:
[SayAllContext, acss], where SayAllContext has the text to be
spoken and acss is an ACSS instance for speaking the text.
FTNr(�sayAllStyler�rrVz4DEFAULT: textLines complete. Verifying SayAll status)%r.r-r,�getDocumentForObjectrrrr8r4�generate_contextrr�r�r�SAYALL_STYLE_SENTENCE�supports_sentence_iteration�
iter_sentence�	iter_liner�rqr�rrr�r�rr�rr�r�r/rr��scroll_into_view�findNextObjectr�r�)r1r!r��	prior_obj�document�style�iteratorr�r�r+r�r`r�r�r�s               r4r��Script.textLines_s���%*��!�����	��>�>�6�6�s�;���>��,�,�S�1�F���L�L��.�.�?�?��?�X�Y�$�0�0�2�>�>�}�M�E���6�6�6�6�;]�;]�^a�;b�;b�!�/�/��!�+�+��$,�S�$9� ��S��-�-�3�3��3�I���Z��t�4�4�!�!�H�E�7�B�B�D���/�/��5�A���0�0��;���1�1�$�7��&�4�4�S��K��$�g�.���"�"�5�#3�#3�V�T�B��$�$�+�+�G�4��*�*�,�=�=�c�#�N��&�&�#%:�&�I��F��.�.�/�/��4�C��>�>�>�>�s�C�C��A�c�D���!���D��
���E�,�,�c�4�8��
�
��s
�IJ�AJc���[U5HSup#URRUS9n[R"UR55nUR
XT5 MU g)zuPhonetically spell the current flat review word or line.

Arguments:
- itemString: the string to phonetically spell.
r�N)�	enumerater4r�r�getPhoneticName�lowerr.)r1�
itemString�	charIndexr
r��phoneticStrings      r4�phoneticSpellCurrentItem�Script.phoneticSpellCurrentItem�sT��'0�
�&;�"�Y��)�)�/�/�y�/�A�E�&�6�6�y���7H�I�N����n�4�'<r6c��URRSS5up4X44URS'X4URS'g)z�Save away the current text cursor position for next time.

Arguments:
- obj: the current accessible
- caretOffset: the cursor position within this object
rr	�penultimateCursorPositionN)r�r�)r1r!r"�prevObj�
prevOffsets     r4r�Script._saveLastCursorPosition�sI��#�5�5�9�9�:N�PZ�[���?F�?R���� ;�<�8;�8H���� 4�5r6c��[S5 g)z�Rings the system bell. This is really a hack. Ideally, we want
a method that will present an earcon (any sound designated for the
purpose of representing an error, event etc)
�N)�printrxs r4�
systemBeep�Script.systemBeep�s��	�d�r6c��[R"5RS5(dg[R"X5SnU[
R[
R-S-;aX0lg[R"X5(dg[R"X5SnX@R:waUR[R5 X@lg)z�Speaks an announcement indicating that a given word is misspelled.

Arguments:
- obj: An accessible which implements the accessible text interface.
- offset: Offset in the accessible's text for which to retrieve the
  attributes.
r�Nrr�)rr�r�rr�rr�r�r,r�rr.r
r�)r1r!r�r�rs     r4r��Script.speakMisspelledIndicator�s��� �+�+�-�9�9�:T�U�U���-�-�c�:�1�=���6�%�%��(9�(9�9�H�D�D�/3�,���(�(��5�5���(�(��5�a�8���3�3�3����h�1�1�2�
,0�(r6c���Sn[R"[RUS5 [R"5R5 U(a[R"5 gg)zZConvenience method to interrupt presentation of whatever is being
presented at the moment.z"DEFAULT: Interrupting presentationTN)rr�r�rr��interrupt_speechrr�)r1r�r�s   r4r7�Script.presentationInterrupt�sJ��3��
���E�,�,�c�4�8�$�0�0�2�C�C�E������r6c���UR5(d!SUlURR5 UR	5(aUR5(ag[R"5R5n[R"U5(af[R"5R5nU(a<[R"5RSUS5 [R"U5 [R"U5(aUR!5(dgUR5(dg["R$"U5 UR'5=(a UR5nUR)5(aU(dgSn[*R,"[*R.US5 UR1U5 g)zsConvenience method to present the KeyboardEvent event. Returns True
if we fully present the event; False otherwise.FNz"DEFAULT: Presenting keyboard eventT)�is_pressed_keyr.r,�clearCachedCommandState�should_echo�is_orca_modifiedrr�ryr�is_dialog_or_window�find_focused_objectr�r�get_role�is_password_text�is_locking_keyr�displayKeyEvent�is_orca_modifier�is_character_echoablerr�r��speak_key_event)r1r9r��
focusedObject�orcaModifierPressedr�s      r4�presentKeyboardEvent�Script.presentKeyboardEvent�sY���#�#�%�%�(-�D�%��N�N�2�2�4�� � �"�"�e�&<�&<�&>�&>���)�)�+�>�>�@���*�*�5�1�1�)�5�5�7�K�K�M�M���)�)�+�>�>�t�]�TY�Z��!�!�-�0��'�'��.�.�u�7K�7K�7M�7M���#�#�%�%������&�#�4�4�6�Q�5�;O�;O�;Q���&�&�(�(�1D��2��
���E�,�,�c�4�8����U�#�r6c��U(dgUcUn[R"5RS5(aE[R"5RS5(dUnOUnU(aURXcXES9 [R"5RS5(d*[R"5RS5(Ga2[R"5RS5(Ga[R"5RS5(dUnOUnU(dg[	US	[
5(aUS	n[	U[
5(a:UVs/sHn[	U[5(dMUPM nnS
RU5n[R"5RS5(aSnO$[R"5RS
5n[R"XhS9 gggs snf)a�Convenience method to speak a message and 'flash' it in braille.

Arguments:
- fullMessage: This can be a string or a list. This will be presented
  as the message for users whose flash or message verbosity level is
  verbose.
- briefMessage: This can be a string or a list. This will be presented
  as the message for users whose flash or message verbosity level is
  brief. Note that providing no briefMessage will result in the full
  message being used for either. Callers wishing to present nothing as
  the briefMessage should set briefMessage to an empty string.
- voice: The voice to use when speaking this message. By default, the
  "system" voice will be used.
N�enableSpeech�messagesAreDetailed)r�ru�forcerIrJ�enableFlashMessages�flashIsDetailedr� �flashIsPersistentr
�brailleFlashTime)�	flashTime)
rr�r�r.rqr�r9�joinr�displayMessage)	r1�fullMessage�briefMessager�rur��message�i�durations	         r4r��Script.presentMessage
	s���"����&�L��'�'�)�5�5�n�E�E�#�/�/�1�=�=�>S�T�T�&��%����!�!�'�K�!�]��(�(�*�6�6��G�G� �,�,�.�:�:�;Q�R�R��+�+�-�9�9�:O�P�P�#�/�/�1�=�=�>O�P�P�&��%�����'�!�*�d�+�+�!�!�*���'�4�(�(�&-�D�g���A�s�1C�1�g��D��(�(�7�+���+�+�-�9�9�:M�N�N���+�7�7�9�E�E�FX�Y���"�"�7�?�'Q�S��Es�%H�Hc�.�[R"5 g)zbConvenience method to tell speech and braille engines to hand off
control to other screen readers.N)r�disableBraillerxs r4�idleMessage�Script.idleMessageC	s��	��� r6c���U(dg[U[5(dU/n[R"5nUR	USU5 [S[
U55HnUR	XSS9 M g)Nrr�Fr*)rqr�r�	getPlayer�play�ranger�)�soundsr+�_playerr�s    r4�__play�
Script.__playI	sa�����&�$�'�'��X�F��/�/�#�����V�A�Y�	�*��q�#�f�+�&�A��L�L���e�L�4�'r6c�&�URU5 g)z�Adds the braille region to the line.

Arguments:
- region: a braille.Region (e.g. what is returned by the braille
  generator's generate_braille() method.
- line: a braille.Line
N)�	addRegion)rOrXs  r4rR�Script.addBrailleRegionToLineV	s��	
���v�r6c�&�URU5 g)z�Adds the braille region to the line.

Arguments:
- regions: a series of braille.Region instances (a single instance
  being what is returned by the braille generator's generate_braille()
  method.
- line: a braille.Line
N)�
addRegions)r<rXs  r4rQ�Script.addBrailleRegionsToLineb	s��	
���� r6c�.�[R"5 g)z^Clears the logical structure, but keeps the Braille display as is
(until a refresh operation).N)r�clearr�r6r4rN�Script.clearBrailleo	s
��
	�
�
�r6c�$�[R"5RS5(dP[R"5RS5(d'[R"[R
SS5 g[R"XU5 g)aDisplays a single line, setting the cursor to the given position,
ensuring that the cursor is in view.

Arguments:
- message: the string to display
- cursor: the 0-based cursor position, where -1 (default) means no
  cursor
- flashTime:  if non-0, the number of milliseconds to display the
  regions before reverting back to what was there before. A 0 means
  to not do any flashing.  A negative number means to display the
  message until some other message comes along or the user presses
  a cursor routing key.
rIrJz!BRAILLE: display message disabledTN)rr�r�rr�r�rr�)r��cursorr�s   r4�displayBrailleMessage�Script.displayBrailleMessagev	sf��  �+�+�-�9�9�/�J�J�#�/�/�1�=�=�>T�U�U����� 0� 0�2U�W[�\�����w�	�:r6c�.�[R"U5$)a8Gets the accesible and caret offset associated with the given
event.  The event should have a BrlAPI event that contains an
argument value that corresponds to a cell on the display.

Arguments:
- event: an instance of input_event.BrailleEvent.  event.event is
  the dictionary form of the expanded BrlAPI event.
)r�getCaretContext�r9s r4r��Script.getBrailleCaretContext�	s���&�&�u�-�-r6c�"�[R$)zrReturns the value of position of the braille cell which has the
cursor. A value of 0 means no cell has the cursor.)r�
cursorCellr�r6r4�getBrailleCursorCell�Script.getBrailleCursorCell�	s��
�!�!�!r6c��U(a[R"5 [R"5nU(a[R"U5 U$)z�Creates a new braille Line.

Arguments:
- clearBraille: Whether the display should be cleared.
- addLine: Whether the line should be added to the logical display
  for painting.

Returns the new Line.
)rr��LinerP)rNrPrXs   r4rO�Script.getNewBrailleLine�	s/����M�M�O��|�|�~����O�O�D�!��r6c�"�[R$)zEIf True, the beginning of the line is showing on the braille
display.)r�beginningIsShowingr�r6r4rs� Script.isBrailleBeginningShowing�	s��
�)�)�)r6c�"�[R$)z?If True, the end of the line is showing on the braille display.)r�endIsShowingr�r6r4r��Script.isBrailleEndShowing�	s���#�#�#r6c�h�U(a[R"U5$[R"U5$)a2Pans the display to the left, limiting the pan to the beginning
of the line being displayed.

Arguments:
- pan_amount: the amount to pan.  A value of 0 means the entire
  width of the physical display.
- panToLeft: if True, pan to the left; otherwise to the right

Returns True if a pan actually happened.
)r�panLeft�panRight)r�rns  r4rv�Script.panBrailleInDirection�	s'����?�?�:�.�.��#�#�J�/�/r6c�0�[R"U5 g)zKAutomatically pan left or right to make sure the current offset
is showing.N)r�panToOffset)r�s r4r;�Script.panBrailleToOffset�	s��
	���F�#r6c�2�[R"5RS5(dP[R"5RS5(d'[R"[R
SS5 gSn[R"5nURH^n[U[R5(dM$URU:XdM6UR5(aURS5 Sn O U(aURU5 gg)z@Try to reposition the cursor without having to do a full update.rIrJzBRAILLE: update caret disabledTNF)rr�r�rr�r�r�getShowingLiner<rq�Text�
accessible�repositionCursorrTr3)r1r!�brailleNeedsRepaintingrXrOs     r4r��'Script.updateBrailleForNewCaretPosition�	s��� �+�+�-�9�9�/�J�J�#�/�/�1�=�=�>T�U�U����� 0� 0�2R�TX�Y��!%���%�%�'���l�l�F��&�'�,�,�/�/�F�4E�4E��4L��*�*�,�,��'�'��-�-2�*��#�"�����$�"r6c�2�[R"XX#5 g)a"This is the method scripts should use to refresh braille rather
than calling self.refreshBraille() directly. The intent is to centralize
such calls into as few places as possible so that we can easily and
safely not perform braille-related functions for users who do not
have braille and/or the braille monitor enabled.

Arguments:

- panToCursor: if True, will adjust the viewport so the cursor is
  showing.
- targetCursorCell: Only effective if panToCursor is True.
  0 means automatically place the cursor somewhere on the display so
  as to minimize movement but show as much of the line as possible.
  A positive value is a 1-based target cell from the left side of
  the display and a negative value is a 1-based target cell from the
  right side of the display.
- getLinkMask: Whether or not we should take the time to get the
  attributeMask for links. Reasons we might not want to include
  knowing that we will fail and/or it taking an unreasonable
  amount of time (AKA Gecko).
- stopFlash: if True, kill any flashed message that may be showing.
N)rr�)�panToCursorr(�getLinkMaskrps    r4rT�Script.refreshBraille�	s��4	����{�Nr6c�2�[R"XU5 g)aSpecififes the region with focus.  This region will be positioned
at the home position if panToFocus is True.

Arguments:
- region: the given region, which much be in a line that has been
  added to the logical display
- panToFocus: whether or not to position the region at the home
  position
- getLinkMask: Whether or not we should take the time to get the
  attributeMask for links. Reasons we might not want to include
  knowing that we will fail and/or it taking an unreasonable
  amount of time (AKA Gecko).
N)r�setFocus)rO�
panToFocusr�s   r4rS�Script.setBrailleFocus
s�� 	����[�9r6c�0�[R"U5 g)z�Turns contracted braille on or off based upon the event.

Arguments:
- event: an instance of input_event.BrailleEvent.  event.event is
  the dictionary form of the expanded BrlAPI event.
N)rrWr�s r4r��Script._set_contracted_braille
s��	�&�&�u�-r6c��SnUR5(aUR5nURRUS9n[R
"X5 g)zsMethod to speak a keyboard event. Scripts should use this method
rather than calling speech.speakKeyEvent directly.Nr�)�is_printable_key�get_key_namer4r�rr�)r1r9�key_namer�s    r4r��Script.speak_key_event/
sM�����!�!�#�#��)�)�+�H��%�%�+�+�8�+�<�����u�,r6c�8�UHnURU5 M g)z.Speak the characters in the string one by one.N)r�)r1rr
s   r4�
spell_item�Script.spell_item:
s�� �I�� � ��+� r6c�b�URRUS9n[R"X5 g)zvMethod to speak a single character. Scripts should use this
method rather than calling speech.speakCharacter directly.r�N)r4r�rr�)r1r
r�s   r4r��Script.speak_character@
s+���%�%�+�+�9�+�=�����y�0r6c��[R"5nURS5(aURS5(aU(dg[R"5RS5nUR[R
5nU=(d UnX(:Xa�U(a�[R"5RS5n	UR
S[R5 UR5R5 URS5n
UR
S[R5 UR5R5 [R"XU5 X(:XaiU(aaUR
SW	5 UR5R5 UR
SW
5 UR5R5 ggg)a:Method to speak a single string. Scripts should use this
method rather than calling speech.speak directly.

- string: The string to be spoken.
- voice: The voice to use. By default, the "system" voice will
  be used.
- interrupt: If True, any current speech should be interrupted
  prior to speaking the new text.
r�rDN�voices�capitalizationStyle�verbalizePunctuationStyle)rr�r�r�r�SYSTEM_VOICE�set_setting�CAPITALIZATION_STYLE_NONErmrD�PUNCTUATION_STYLE_NONErCrr8)r1rr�r+rur�r`r��systemVoice�capStyle�
punctStyles           r4r.�Script.speakMessageG
sf��#�.�.�0���"�"�>�2�2��"�"�#;�<�<�U��!�-�-�/�;�;�H�E���j�j��!6�!6�7���$�����K�'�3�3�5�A�A�BW�X�H���� 5�x�7Y�7Y�Z��1�1�3�O�O�Q� �,�,�-H�I�J���� ;�X�=\�=\�]��1�1�3�L�L�N����V�I�.���K���� 5�x�@��1�1�3�O�O�Q���� ;�Z�H��1�1�3�L�L�N�%0�r6)r-r,r/r.r*r0r)r�r+r�r/r()T)r%rQrF)NN)�
)r)NNTF)r
r)FF)rT)TrTT)TT)NTTF)~�__name__�
__module__�__qualname__�__firstlineno__�EMBEDDED_OBJECT_CHARACTERr'ryr|r�r�r�r�r�r�r�r�rrr�r
rrr%r>rFr3rcrar_rQrSrUrWrYr[r]rHrKrMrOrer�r�r�r�r�r�r�r�r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr�rr�r�r�r�r�r�r�r�r!r�r�r~rxrwr�rirrsr�r7r�r�r��staticmethodr�rRrQrNr�r�r�rOrsr�rvr;r�rTrSr�r�r�r�r.�__static_attributes__�
__classcell__)r3s@r4r"r"As���� (���2^\�@)�V&�P&�PQ�f�B?�B- �^�
�

5�K�6�)�D�
F�
5�(42�l;�""�F
���;�z1�f6�����*�&�2�&��F5�>R�K�R�Q�
Q�
1B�f0�M�A�H�G�	B�
7�R�L�
0�0�Z�
R�I�<R�hP�C�6�87�,.-�`L0�\*�8
>�
;�Y�2L�,?�@�S�>>B�/�Ja�Ja�!�F�$	�$4�L
��,�>+?�Z8?�t$A�L#?�J6�L�
8�B?�B;�z
5�
I��0�J � �DVZ�"�4@�l!��
5��
5��	��	��
!��
!������;��;�,�
.��
.��"��"�����&�*��*��$��$�
�0��0�"�$��$�%�(�IM�!%�O��O�6�:��:�"�.��.�"	-�,�1�$O�$Or6r").�__doc__�__id__�__version__�__date__�
__copyright__�__license__r)rr�rrrrrrr	r
rrr
rrrrrrrrrrr�orca.ax_documentr�orca.ax_objectr�
orca.ax_tabler�orca.ax_textr�orca.ax_utilitiesr�orca.ax_utilities_eventr�
orca.ax_valuer r"r�r6r4�<module>rs���*A�������5�
���	�
��������$������&�����!���-��'�#�!��)�3�!�j(O�V�]�]�j(Or6

Filemanager

Name Type Size Permission Actions
__init__.cpython-313.pyc File 152 B 0644
default.cpython-313.pyc File 133.21 KB 0644
Filemanager