
    g
fR                         d Z dZdZdZdZddlZddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ ddlmZ  G d de
j                         Zy)z$Id$z
$Revision$z$Date$zCopyright (c) 2016 Igalia, S.L.LGPL    N)debug)focus_manager)keybindings)script_utilities)settings_manager)AXText)AXUtilitiesc                   n     e Zd Z fdZd Zd Zd Zd Z fdZ fdZ	d Z
d	 Zd
 Zd Zd Zd Z xZS )	Utilitiesc                 $    t         |   |       y N)super__init__)selfscript	__class__s     H/usr/lib/python3/dist-packages/orca/scripts/terminal/script_utilities.pyr   zUtilities.__init__(   s         c                      y r    )r   s    r   
clearCachezUtilities.clearCache+   s    r   c                     t        j                  d|j                        }|s|j                  S |j                  d |j                          }d|dg}t	        j
                  t        j                  |d       |S )N
~zTERMINAL: Adjusted deletion: ''T)researchany_datastartr   printTokens
LEVEL_INFO)r   eventmatchadjustedtokenss        r   deletedTextzUtilities.deletedText.   sb    		%0>>!>>.5;;=12HcB%**FD9r   c                    t        |j                        dk(  r|j                  S | j                  |      r|j                  S | j                  |      r|j                  S |j                  |j                  t        |j                        z   }}t        j                  |j                  |      }d|g}t        j                  t        j                  |d       t        j                  |j                  |dz
        }d|g}t        j                  t        j                  |d       ||k(  r3d}t        j                  t        j                  |d       |j                  S t        j                  |j                  d       }d|g}t        j                  t        j                  |d       |dk7  r|d   }|d||fvr|}|dk7  r|d   }|d	   j                  d
      r|dz  }t        j                  |j                  ||      }	|	r,d|	dg}t        j                  t        j                  |d       |	S d}t        j                  t        j                  |d       |j                  }	|	S )N   z"TERMINAL: First line of insertion:Tz!TERMINAL: Last line of insertion:z.TERMINAL: Not adjusting single-line insertion.zTERMINAL: Current line:) r   r      r   
zTERMINAL: Adjusted insertion: 'r   z0TERMINAL: Adjustment failed. Returning any_data.)lenr   isAutoTextEventisClipboardTextChangedEventdetail1r	   get_line_at_offsetsourcer   r    r!   printMessageendswithget_substring)
r   r"   r   end	firstLiner%   lastLinemsgcurrentLiner$   s
             r   insertedTextzUtilities.insertedText8   s   u~~!#>>!&>>!++E2>>!]]EMMC4G$Gs--ellEB	6	B%**FD9,,U\\37C5x@%**FD9 BCu//d;>>!//dC+[9%**FD9
"aLEz9h??"Hz!1+C{##D)q''eSA73GFe..= 	 ECu//d;~~Hr   c                 t    t        j                  |j                        |j                  |j                  z   k(  S r   )r	   get_caret_offsetr1   r/   detail2r   r"   s     r   insertionEndsAtCaretzUtilities.insertionEndsAtCaretj   s)    &&u||48UUUr   c                 N    t        j                  |      ryt        |   |      S NT)r
   is_terminalr   isEditableTextArear   objr   s     r   rC   zUtilities.isEditableTextAream   s$    ""3'w)#..r   c                 N    t        j                  |      ryt        |   |      S rA   )r
   rB   r   
isTextArearD   s     r   rG   zUtilities.isTextAreas   s$    ""3'w!#&&r   c                    |j                   j                  d      sy|j                  r|j                  syt	        |j                        dk  ry| j                         \  }}|dk(  r|j                  dk7  S |dk(  rS|j                  j                  d      r8|j                  j                         xr |j                  j                  d       S y)	Nobject:text-changed:insertFr(   Tab	Returnr+   r   )type
startswithr   r1   r,   lastKeyAndModifiersstripcount)r   r"   lastKeymodss       r   r-   zUtilities.isAutoTextEventy   s    zz$$%AB~~U\\u~~!#002e>>T))h5>>#<#<T#B>>'')M%..2F2Fu2M.MMr   c                     | j                         \  }}| j                  |      }d|vry|t        j                  z  r|t        j                  z  S y)NcF_lastKeyCodeAndModifiers_allNamesForKeyCoder   CTRL_MODIFIER_MASKSHIFT_MODIFIER_MASKr   keycoderS   keynamess       r   lastInputEventWasCopyzUtilities.lastInputEventWasCopy   Q    557++G4h+000+9999r   c                     | j                         \  }}| j                  |      }d|vry|t        j                  z  r|t        j                  z  S y)NvFrV   r[   s       r   lastInputEventWasPastez Utilities.lastInputEventWasPaste   r_   r   c                    |j                   t        j                         j                         k7  ry|j                  j                  d      r|j                  j                         r| j                         ry|j                  j                  d      ry| j                         \  }}|dv r t        j                  d|j                        S |t        j                  z  ry| j                         rt!        |j                        dkD  S t#        j$                  |j                         |j&                  |j(                  z   k(  ryy)NFrI   r   rL   rJ   space z[^\d\s]Tr(   )r1   r   
getManagerget_locus_of_focusrM   rN   r   rP   rb   rQ   rO   r   r   r   ALT_MODIFIER_MASKlastInputEventWasPrintableKeyr,   r	   r<   r/   r=   r   r"   	keyStringrS   s       r   treatEventAsCommandzUtilities.treatEventAsCommand   s    <<=335HHJJ::  !=>5>>CWCWCY**,~~##E*"668OIt;;yyU^^<<k3331135>>*Q..&&u||48UUr   c                 :   | j                         ry|j                  j                  d      ro|j                  j	                         rU| j                         \  }}|dv ry|t        j                  z  ryt        |j                        dkD  r| j                         ryy)NFzobject:text-changed:deleterd   Tr(   )
lastInputEventWasCommandrM   rN   r   rP   rO   r   ri   r,   rj   rk   s       r   treatEventAsNoisezUtilities.treatEventAsNoise   s    ((*::  !=>5>>CWCWCY"668OIt;;k3335>>"Q&4+M+M+Or   c                     t        j                         j                  d      syt        |j                        dk7  s|j
                  t        j                  z  ryy)NenableEchoByCharacterFr(   T)r   rg   
getSettingr,   event_string	modifiersr   ORCA_CTRL_MODIFIER_MASKr>   s     r   willEchoCharacterzUtilities.willEchoCharacter   sH    **,778OPu!!"a'oo C CCr   )__name__
__module____qualname__r   r   r&   r:   r?   rC   rG   r-   r^   rb   rm   rp   rw   __classcell__)r   s   @r   r   r   &   sF    !0dV/'$		0r   r   )__id____version____date____copyright____license__r   orcar   r   r   r   r   orca.ax_textr	   orca.ax_utilitiesr
   r   r   r   r   <module>r      sM   * 1 	    ! !  )j ** jr   