
    %j                        d Z ddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZmZmZmZ ddlZddlmZ ddlmZ ddlmZmZmZ dd	lmZmZ  ej4                  e      Ze G d
 d             ZdZdZ G d de      Z y)z3Created on Wed May 22 2024 16:23:56 by codeskyblue
    N)	dataclass)Path)DictListOptionalUnion)retry)AbstractShell)AdbBroadcastErrorDeviceErrorInputIMEError)
deprecatedwith_package_resourcec                   .    e Zd ZU ee   ed<   ee   ed<   y)BroadcastResultcodedataN)__name__
__module____qualname__r   int__annotations__str     W/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/uiautomator2/_input.pyr   r      s    
3-
3-r   r   c                   F   e Zd Zedefd       ZddefdZdefdZd Z	i fdede
eef   defd	Z eed
dd      i fdede
eef   fd       ZdefdZddeeef   fdZd ZdefdZd dedefdZdee   fdZd Z ed      ddefd       Z ed      d d       Zy)!InputMethodMixInreturnc                      y)Nz#com.github.uiautomator/.AdbKeyboardr   selfs    r   __ime_idzInputMethodMixIn.__ime_id-   s    4r   enablec                    |s| j                  dd| j                  g       y| j                         | j                  k(  ry| j                  | j                         vr| j	                          | j                  | j                         v sJ | j                  dd| j                  g       | j                  dd| j                  g       | j                  dddd	| j                  g       | j                          y)
z Enable of Disable InputIME imedisableNr%   setsettingsputsecuredefault_input_method)shell_InputMethodMixIn__ime_idcurrent_ime_InputMethodMixIn__get_ime_list
_setup_ime_wait_ime_readyr#   r%   s     r   set_input_imezInputMethodMixIn.set_input_ime1   s    JJy$--89.== 3 3 55OO}} 3 3 5555

E8T]]34

E5$--01

Jx1GWXr   c                 :    | j                   | j                         v S N)r/   r1   r"   s    r   is_input_ime_installedz'InputMethodMixIn.is_input_ime_installedB   s    }} 3 3 555r   c                 T   t         j                  d       t        d      5 }	 | j                  j	                  t        |      dd       d d d        t        d      D ]5  }| j                  | j                         v r y t        j                  d       7 t        d	      # t        j                  $ rh}| j                  j                  | j                  j                  d      d          | j                  j	                  t        |      dd       Y d }~d }~ww xY w# 1 sw Y   xY w)
Nzinstalling AdbKeyboard imezassets/app-uiautomator.apkT)nolaunch	uninstall/r   
   g333333?zinstall AdbKeyboard ime failed)loggerdebugr   
adb_deviceinstallr   adbutilsAdbErrorr;   r/   splitranger1   timesleepr   )r#   ime_apk_pathe_s       r   r2   zInputMethodMixIn._setup_imeE   s    12"#?@ 	ZLZ''L(9DTX'Y	Z r 	A}} 3 3 55JJrN	 <== $$ Z))$--*=*=c*B1*EF''L(9DTX'YYZ	Z 	Zs/   D'B  D3ADDDDD'actionextrasc                    ddd|g}|j                         D ]G  \  }}t        |t              r|j                  d|t	        |      g       4|j                  d||g       I | j                  |      j                  }t        j                  d|      }t        j                  d|      }|rt        |j                  d            nd }	|r|j                  d      nd }
t        |	|
      S )	Nam	broadcast-az--eiz--eszresult=(-?\d+)zdata="([^"]+)"   )items
isinstancer   extendr   r.   outputresearchgroupr   )r#   rK   rL   argskvrU   m_resultm_dataresultr   s              r   
_broadcastzInputMethodMixIn._broadcastU   s    k40LLN 	,DAq!S!VQA/0VQN+		, D!((99.7,f5+3X^^A&'"(v||Advt,,r      rQ   g      ?)triesdelayjitterc                     | j                  ||      }|j                  t        k7  rt        d| d|j                         y )Nz
broadcast z	 failed: )r_   r   BORADCAST_RESULT_OKr   r   )r#   rK   rL   r^   s       r   _must_broadcastz InputMethodMixIn._must_broadcaste   s@    0;;--#j	&++$OPP .r   textc                 ^   	 | j                          |j                  d      }t        j                  |      j	                         }d}| j                  |d|i       | j                  d       y# t        $ r5 t        j                  dt                | d      j                  |      cY S w xY w)Nzutf-8ADB_KEYBOARD_INPUT_TEXTrg   ADB_KEYBOARD_HIDETz?set FastInputIME failed. use "d(focused=True).set_text instead")focused)r5   encodebase64	b64encodedecoderf   r   warningswarnWarningset_text)r#   rg   btext
base64textcmds        r   	send_keyszInputMethodMixIn.send_keysk   s    	5 KK(E))%0779J+C  vz&:;  !45  	5MMS %..t44		5s   A+A. .;B,+B,Nr   c                     | j                  d       ddddddd}t        |t              r|j                  ||      }|r| j	                  d	d
t        |      i       y| j	                  d       y)a%  
        Simulate input method edito code

        Args:
            code (str or int): input method editor code

        Examples:
            send_action("search"), send_action(3)

        Refs:
            https://developer.android.com/reference/android/view/inputmethod/EditorInfo
        T   r`               )gorW   sendnextdonepreviousADB_KEYBOARD_EDITOR_CODEr   ADB_KEYBOARD_SMART_ENTERN)r5   rS   r   getrf   )r#   r   _InputMethodMixIn__aliass      r   send_actionzInputMethodMixIn.send_action{   ss     	4 
 dC ;;tT*D  !;fc$i=PQ  !;<r   c                 H    | j                  d       | j                  d       y )NTADB_KEYBOARD_CLEAR_TEXTr5   rf   r"   s    r   
clear_textzInputMethodMixIn.clear_text   s    4 67r   c                 X    | j                  g d      j                  j                         S )z Current input method
        Returns:
            ime_method

        Example output:
            "com.github.uiautomator/.FastInputIME"
        )r*   r   r,   r-   )r.   rU   stripr"   s    r   r0   zInputMethodMixIn.current_ime   s#     zzOPWW]]__r   timeoutc                     t        j                          |z   }t        j                          |k  rK| j                         | j                  k(  ryt        j                  d       t        j                          |k  rKy)z  Wait for input method is ready Tg?F)rF   r0   r/   rG   )r#   r   deadlines      r   r3   z InputMethodMixIn._wait_ime_ready   sX    99;(iikH$!T]]2JJsO iikH$ r   c                 |    | j                  g d      }|j                  j                         j                  d      S )N)r'   listz-srP   F)keepends)r.   rU   r   
splitlines)r#   rets     r   __get_ime_listzInputMethodMixIn.__get_ime_list   s2    jj45zz!,,e,<<r   c                 F    | j                          | j                  d       y)z Hide keyboard rj   Nr   r"   s    r   hide_keyboardzInputMethodMixIn.hide_keyboard   s    01r   zuse set_input_ime instead)reasonc                 $    | j                  |      S r7   )r5   r4   s     r   set_fastinput_imez"InputMethodMixIn.set_fastinput_ime   s    !!&))r   c                      y)z9 wait FastInputIME is ready (Depreacated in version 3.1) Nr   )r#   r   s     r   wait_fastinput_imez#InputMethodMixIn.wait_fastinput_ime   s     	r   )Tr7   )g      @)r   r   r   propertyr   r/   boolr5   r8   r2   r   r   r_   r	   r   rf   rw   r   r   r   r   r0   floatr3   r   r1   r   r   r   r   r   r   r   r   r   $   s6    5# 5 5D "6 6>  @B - -d38n -o -  AQs;DF Qc Q4S> Q <Q
5c 5 =c3h =:8`S ` u t =S	 =2
 23* * 4* 23 4r   r   )!__doc__rm   loggingrV   rF   rp   dataclassesr   pathlibr   typingr   r   r   r   rB   r	   uiautomator2.abstractr
   uiautomator2.exceptionsr   r   r   uiautomator2.utilsr   r   	getLoggerr   r>   r   re   BROADCAST_RESULT_CANCELEDr   r   r   r   <module>r      s~      	   !  . .   / Q Q @			8	$
  
   a} ar   