
    g
fP4                        d Z dZdZdZdZdZddlZ ej                  dd	        ej                  d
d        ej                  dd       ddlm	Z	 ddlm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ  G d d      Z G d d       Z e       Zd! Zy)"zModule for learn modez$Id$z
$Revision$z$Date$zQCopyright (c) 2005-2008 Sun Microsystems Inc.Copyright (c) 2016-2023 Igalia, S.L.LGPL    NAtspiz2.0Gdkz3.0Gtk)r   )r   )GObject)r      )cmdnames)debug)	guilabels)input_event)keybindings)messages)
orca_state)script_manager)settings)settings_manager)AXObjectc                   h    e Zd ZdZd Zd ZddZddZd Zd Z	dd	Z
dd
ZddZddZddZddZy)LearnModePresenterz%Provides implementation of learn modec                 ~    | j                  d      | _        t        j                         | _        d| _        d | _        y )NTF)get_handlers	_handlersr   KeyBindings	_bindings
_is_active_guiselfs    ;/usr/lib/python3/dist-packages/orca/learn_mode_presenter.py__init__zLearnModePresenter.__init__8   s2    **40$002	    c                     | j                   S )z#Returns True if we're in learn mode)r   r   s    r   	is_activezLearnModePresenter.is_active>   s     r!   c                     |rCd}t        j                  t         j                  |d       | j                          | j                  S | j                  j                         r| j                          | j                  S )z-Returns the learn-mode-presenter keybindings.z*LEARN MODE PRESENTER: Refreshing bindings.T)r
   printMessage
LEVEL_INFO_setup_bindingsr   isEmpty)r   refresh
is_desktopmsgs       r   get_bindingszLearnModePresenter.get_bindingsC   sd     >Cu//d;  " ~~ ^^##%  "~~r!   c                     |r7d}t        j                  t         j                  |d       | j                          | j                  S )z*Returns the learn-mode-presenter handlers.z*LEARN MODE PRESENTER: Refreshing handlers.T)r
   r%   r&   _setup_handlersr   )r   r)   r+   s      r   r   zLearnModePresenter.get_handlersO   s:     >Cu//d;  "~~r!   c                     i | _         t        j                  | j                  t        j
                        | j                   d<   d}t        j                  t        j                  |d       y)z6Sets up the learn-mode-presenter input event handlers.enterLearnModeHandlerz&LEARN MODE PRESENTER: Handlers set up.TN)	r   r   InputEventHandlerstartr	   ENTER_LEARN_MODEr
   r%   r&   r   r+   s     r   r.   z"LearnModePresenter._setup_handlersY   sY      ))

))+ 	./
 75++S$7r!   c           
      P   t        j                         | _        | j                  j                  t        j                  dt         j
                  t         j                  | j                  j                  d                   d}t        j                  t        j                  |d       y)z.Sets up the learn-mode-presenter key bindings.hr0   z&LEARN MODE PRESENTER: Bindings set up.TN)r   r   r   add
KeyBindingdefaultModifierMaskORCA_MODIFIER_MASKr   getr
   r%   r&   r4   s     r   r'   z"LearnModePresenter._setup_bindingsf   s{     %002""//..""#:;	=	> 75++S$7r!   Nc                 v   | j                   r(d}t        j                  t        j                  |d       y|"t	        j
                         j                         }|]|j                  t        j                         |j                  t        j                         |j                  t        j                         d}t        j                  t        j                  |d       t        j                  j!                  t"        j$                         d}t        j                  t        j                  |d       d| _         y)zStarts learn mode.z6LEARN MODE PRESENTER: Start called when already activeTz'LEARN MODE PRESENTER: Grabbing keyboardz#LEARN MODE PRESENTER: Is now active)r   r
   r%   r&   r   
getManagergetActiveScriptpresentMessager   VERSIONspeakMessageLEARN_MODE_START_SPEECHdisplayBrailleMessageLEARN_MODE_START_BRAILLEr   Devicegrab_keyboardr   devicer   scripteventr+   s       r   r2   zLearnModePresenter.startu   s     ??JCu//d;>#..0@@BF!!("2"23 @ @A(()J)JK75++S$7"":#4#4535++S$7r!   c                    | j                   s(d}t        j                  t        j                  |d       y|"t	        j
                         j                         }||j                  t        j                         d}t        j                  t        j                  |d       t        j                  j                  t        j                         d}t        j                  t        j                  |d       d| _         y)zQuits learn mode.z7LEARN MODE PRESENTER: Quit called when already inactiveTz)LEARN MODE PRESENTER: Ungrabbing keyboardz%LEARN MODE PRESENTER: Is now inactiveF)r   r
   r%   r&   r   r=   r>   r?   r   LEARN_MODE_STOPr   rE   ungrab_keyboardr   rG   rH   s       r   quitzLearnModePresenter.quit   s     KCu//d;>#..0@@BF!!(":":;95++S$7$$Z%6%6755++S$7r!   c                 t   | j                   syt        |t        j                        syt	        j
                         j                         }|j                  |       |j                         r>|j                         dk(  r+|j                         |j                  |j                         |j                  dk(  r| j                  d|       y|j                  dk(  r|j                  s| j                  ||       y|j                  dv r|j                  s| j!                  ||       y| j#                  |       y)	z*Handles the event if learn mode is active.F   NEscape)rI   rJ   TF1)F2F3)r   
isinstancer   KeyboardEventr   r=   r>   speakKeyEventisPrintableKeygetClickCount
getHandlerphoneticSpellCurrentItemevent_stringrN   	modifiers	show_helplist_orca_shortcutspresent_command)r   rJ   rI   s      r   handle_eventzLearnModePresenter.handle_event   s    %!:!:;**,<<>U#!e&9&9&;q&@!)++E,>,>?)IITI/%eooNN65)-eoo$$VU3U#r!   c                 
   t        |t        j                        sy|j                         }|y|j                  rI|j
                  r=t        j                         j                         }|j                  |j
                         y)z$Presents the command bound to event.T)
rU   r   rV   rZ   learnModeEnableddescriptionr   r=   r>   r?   )r   rJ   handlerrI   s       r   r`   z"LearnModePresenter.present_command   sl     %!:!:;""$?##(;(;#..0@@BF!!'"5"56r!   c                 
   |t         j                  }t        j                         j	                  d      }|t
        j                  k(  }d}i }||j                  dk(  r	|j                         j                         }||t        j                  <   |t        |      z  }|j                         j                  |      j                         }||t        j                  <   |t        |      z  }|j!                         j                  |      j                         }||t        j"                  <   |t        |      z  }|j%                         j                  |      j                         }||t        j&                  <   |t        |      z  }|j)                         j                  |      j                         }||t        j*                  <   |t        |      z  }|j-                         j                  |      j                         }||t        j.                  <   |t        |      z  }|j1                         j                  |      j                         }||t        j2                  <   |t        |      z  }|j5                         j                  |      j                         }||t        j6                  <   |t        |      z  }|j9                         j                  |      j                         }||t        j:                  <   |t        |      z  }|j=                         j                  |      j                         }||t        j>                  <   |t        |      z  }|jA                         j                  |      j                         }||t        jB                  <   |t        |      z  }|jE                         j                  |      j                         }||t        jF                  <   |t        |      z  }|jI                         j                  |      j                         }||t        jJ                  <   |t        |      z  }tM        jN                  |      }ntQ        jR                  |jT                        xs tL        jV                  }	|jY                         j                         }|j[                  |j]                         j                                |r|||	<   tM        j^                  t        |      |	      }|s|ja                  |       y| jc                  ||       t        jd                  t        jf                  g}
ti        |||
|      | _5        | jj                  jm                          y)z1Shows a simple gui listing Orca's bound commands.keyboardLayoutr   rS   )r*   T)7r   lastNonModifierKeyEventr   r=   
getSettingr   GENERAL_KEYBOARD_LAYOUT_DESKTOPr\   getDefaultKeyBindingsgetBoundBindingsr   KB_GROUP_DEFAULTlengetLearnModePresenterr,   KB_GROUP_LEARN_MODEgetWhereAmIPresenterKB_GROUP_WHERE_AM_IgetSpeechAndVerbosityManagerKB_GROUP_SPEECH_VERBOSITYgetSleepModeManagerKB_GROUP_SLEEP_MODEgetFlatReviewPresenterKB_GROUP_FLAT_REVIEWgetObjectNavigatorKB_GROUP_OBJECT_NAVIGATIONgetTableNavigatorKB_GROUP_TABLE_NAVIGATIONgetSystemInformationPresenterKB_GROUP_SYSTEM_INFORMATIONgetNotificationPresenterKB_GROUP_NOTIFICATIONSgetBookmarksKB_GROUP_BOOKMARKSgetMouseReviewerKB_GROUP_MOUSE_REVIEWgetActionPresenterKB_GROUP_ACTIONSr   shortcutsFoundOrcar   get_nameappAPPLICATION_NO_NAMEgetAppKeyBindingsextendgetToolkitKeyBindingsshortcutsFoundAppr?   rN   KB_HEADER_FUNCTIONKB_HEADER_KEY_BINDINGCommandListGUIr   show_gui)r   rI   rJ   layoutr*   itemsbindingsboundtitleapp_namecolumn_headerss              r   r_   z&LearnModePresenter.list_orca_shortcuts   s    =66E!,,.99:JKxGGG
=E..$6002CCEE38HY//0SZE002??% @ ''7'7'9 6;HY223SZE//1>>% ? ''7'7'9 6;HY223SZE779FF% G ''7'7'9 <AHY889SZE..0==% > ''7'7'9 6;HY223SZE113@@% A ''7'7'9 7<HY334SZE--/<<% = ''7'7'9 =BHY99:SZE,,.;;% < ''7'7'9 <AHY889SZE88:GG% H ''7'7'9 >CHY::;SZE335BB% C ''7'7'9 9>HY556SZE'')66% 7 ''7'7'9 5:HY112SZE++-::% ; ''7'7'9 8=HY445SZE--/<<% = ''7'7'9 38HY//0SZE//6E((4T8T8TH,,.??AELL557HHJK%*"..s5z8DE!!%(		&% #66	8W8WX"65.(K			r!   c                     | j                  ||       d}|r|d| z  }t        j                  t        j                  j                         |t        j                                y)zDisplays Orca's documentation.z	help:orca/T)rN   r   show_urir   Screenget_defaultget_current_event_time)r   rI   rJ   pageuris        r   r^   zLearnModePresenter.show_help2  sS     			&% Qtf:CSZZ++-sC4N4N4PQr!   )FT)F)NNN)NN )__name__
__module____qualname____doc__r    r#   r,   r   r.   r'   r2   rN   ra   r`   r_   r^    r!   r   r   r   5   sC    /

882.< ]~r!   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)r   z,Shows a list of commands and their bindings.c                 P    || _         d | _        | j                  |||      | _        y r   )_script_model_create_dialogr   )r   rI   r   r   bindings_dicts        r   r    zCommandListGUI.__init__?  s&    ''~}M	r!   c                    t        j                  |dt         j                  j                  t         j                  t         j
                  j                  f      }|j                  dd       t        j                         }|j                         }|j                  |       t        j                         }|j                  |       t        j                         }|j                  d       |j                  d       |j                  |       t        |      t         j"                  gz  }	t%        |      D ]V  \  }
}t        j&                         }t        j(                  |||
      }|j+                  |       |sF|j-                  |
       X t        j.                  |	 | _        |j3                         D ]m  \  }}|s	| j0                  j5                  d|dg      }|D ]B  }| j0                  j5                  ||j6                  j8                  |j;                         g       D o |j=                  | j0                         |j?                          |jA                  d| jB                         |S )z!Creates the commands-list dialog.Ni  i   T)textr   response)"r   DialogDialogFlagsMODALSTOCK_CLOSEResponseTypeCLOSEset_default_sizeGridget_content_arear7   ScrolledWindowTreeViewset_hexpandset_vexpandrn   r   TYPE_STRING	enumerateCellRendererTextTreeViewColumnappend_columnset_sort_column_id	TreeStorer   r   appendre   rd   asString	set_model
expand_allconnecton_response)r   r   r   r   dialoggridcontent_areascrolled_windowtreecolsiheadercellcolumngroupr   
group_iterbindings                     r   r   zCommandListGUI._create_dialogD  s    E OO11 __c.>.>.D.DEG 	c*xxz..0,,.!||~D!>"g&9&9%::">2 	-IAv'')D''1=Fv&))!,	- mmT*,224 	bOE8++D5"+>J# b"":0K0KWM]M]M_/`ab		b 	t{{#z4#3#34r!   c                 t    |t         j                  j                  k(  r| j                  j	                          yy)z"Handler for the 'response' signal.N)r   r   r   r   destroy)r   r   r   s      r   r   zCommandListGUI.on_responseo  s0     s''---II .r!   c                     | j                   j                          t        j                  j                  }|dk(  rt        j                         }| j                   j                  |       y)zShows the dialog.r   N)r   show_allr   lastInputEvent	timestampr   r   present_with_time)r   
time_stamps     r   r   zCommandListGUI.show_guiv  sL     			..88
?335J		##J/r!   N)r   r   r   r   r    r   r   r   r   r!   r   r   r   <  s    6N
)V0r!   r   c                      t         S )z Returns the Learn Mode Presenter)
_presenterr   r!   r   getPresenterr     s
     r!   )r   __id____version____date____copyright____license__girequire_versiongi.repositoryr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	ax_objectr   r   r   r   r   r   r!   r   <module>r      s   * 7 	   7E "   5%     5%     !            E ENA0 A0H  !
r!   