+
    Qi0X  c                  s*  a  0 t $ R t^ RIHt RtRtRtRtRt^ RI	t	^ RI
t
^ RIHtHtHt ^ R	IHt ^ R
IHt ^ RIHt ^ RIt]P,                  ! RR4       ]P,                  ! RR4       ]P,                  ! RR4       ^ RIHtHtHt ^RIHt ^RIHt ^RIHt ^RIHt ^RIH t  ^RIH!t! ^RIH"t" ^RIH#t# ^RIH$t$ ^RI%H&t& ]'       d   ^RI'H(t(  ! R R4      t) ! R R ])4      t* ! R! R"])4      t+ ! R# R$])4      t, ! R% R&4      t-]-! 4       t.R&]/R'&   R( R) lt0R# )*z#Utilities related to the clipboard.)annotationsz$Id$z
$Revision$z$Date$zLCopyright (c) 2024-2025 Igalia, S.L.Copyright (c) 2024 GNOME Foundation Inc.ZLGPLN)AnyCallableTYPE_CHECKING)SessionMessageBus)	DBusError)InterfaceProxyAtspiz2.0Gdkz3.0Gtk)r   r   r	   )cmdnames)dbus_service)debug)input_event)input_event_manager)keybindings)messages)script_manager)settings_manager)AXUtilities)defaultc                  sz    ] tR t^BtRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltR R ltRtR# )_ClipboardManagerz3Base class for interacting with clipboard managers.c               $    V ^8  d   QhRRRRRR/# )   namestrchange_callbackCallable[[str], None]returnNone Zformat   "3/usr/lib/python3.14/site-packages/orca/clipboard.py__annotate___ClipboardManager.__annotate__E   s"     & &S &3H &T &    c                	s:    Wn         W n        R V n        RV n        R# ) FN)_name_change_callback	_contents
_is_active)selfr   r   s   &&&r!   __init__Z_ClipboardManager.__init__E   s    
7F  %r$   c                   V ^8  d   QhRR/# )r   r   boolr   r   r    r!   r"   r#   K   s      4 r$   c                s    V P                   # )z'Returns True if this manager is active.)r)   r*      &r!   	is_activeZ_ClipboardManager.is_activeK   s     r$   c               r,   r   r   r   r   r   r    r!   r"   r#   P   s     1 1 1r$   c                    R# )"Connects to the clipboard manager.Nr   r.   r/   r!   connectZ_ClipboardManager.connectP       r$   c               r,   r1   r   r   r    r!   r"   r#   S   s     6 6D 6r$   c                r2   'Disconnects from the clipboard manager.Nr   r.   r/   r!   
disconnectZ_ClipboardManager.disconnectS   r5   r$   c                    V ^8  d   QhRRRR/# r   textr   r   r   r   r   r    r!   r"   r#   V   s     : : : :r$   c                r2   +Sets the contents of the clipboard to text.Nr   r*   r;      &&r!   set_contentsZ_ClipboardManager.set_contentsV   r5   r$   c               r,   r   r   r   r   r   r    r!   r"   r#   Y   s      c r$   c                sh    V P                   '       g   V P                  4       V n         V P                   # )z1Returns the pre-stored contents of the clipboard.)r(   _get_contentsr.   r/   r!   get_contentsZ_ClipboardManager.get_contentsY   s'     ~~~!//1DN~~r$   c               r,   rA   r   r   r    r!   r"   r#   `   s      s r$   c                r2   )2Obtains and returns the contents of the clipboard.r%   r   r.   r/   r!   rB   Z_ClipboardManager._get_contents`   s     r$   c               r   )r   argsztuple[Any, ...]kwargszdict[str, Any]r   r   r   r   r    r!   r"   r#   e   s"     . ./ .^ .X\ .r$   c                s    V P                    RV RV 2p\        P                  ! \        P                  VR4       V P	                  4       V n        V P                  V P
                  4       R# )z;Notifies the registered callback that the contents changed.z: Contents changed. Z TN)r&   r   print_message
LEVEL_INFOrB   r(   r'   )r*   rE   rF   msgs   &*, r!   _on_contents_changedZ&_ClipboardManager._on_contents_changede   sY     0ax@E,,c48++-dnn-r$   )r'   r(   r)   r&   N)__name__
__module____qualname____firstlineno____doc__r+   r0   r4   r8   r@   rC   rB   rJ   __static_attributes__r   r$   r!   r   r   B   s2    =&
16:
. .r$   r   c                  sb   a  ] tR t^mtRtR V 3R lltR R ltR R ltR R	 ltR
 R lt	Rt
V ;t# )_ClipboardManagerFallbackz;Class for interacting with the clipboard via Gtk.Clipboard.c               r9   r   r   r   r   r   r   r   r    r!   r"   &_ClipboardManagerFallback.__annotate__p   s     , ,(= ,$ ,r$   c                	s6   < \         SV `  R V4       RV n        R# )ZFALLBACKN)superr+   _handler_idr*   r   	__class__   &&r!   r+   Z"_ClipboardManagerFallback.__init__p   s    _5'+r$   c               r,   r1   r   r   r    r!   r"   rS   t   s       r$   c                s    V P                   e   R# \        P                  P                  \        P
                  P                  RR4      4      pVP                  RV P                  4      V n         RV n	        R# )r3   N	CLIPBOARDFzowner-changeT)
rU   r	   	Clipboardgetr   Atominternr4   rJ   r)   r*   	clipboard   & r!   r4   Z!_ClipboardManagerFallback.connectt   sX     'MM%%chhook5&IJ	$,,^T=V=VWr$   c               r,   r1   r   r   r    r!   r"   rS   ~   s     	  	 D 	 r$   c                s    RV n         V P                  f   R# \        P                  P	                  \
        P                  P                  RR4      4      pVP                  V P                  4       RV n        R# )r7   FNrY   )	r)   rU   r	   rZ   r[   r   r\   r]   r8   r^   r`   r!   r8   Z$_ClipboardManagerFallback.disconnect~   sY      #MM%%chhook5&IJ	T--.r$   c               r,   rA   r   r   r    r!   r"   rS      s      s r$   c                s   V P                   f   R# \        P                  P                  \        P
                  P                  RR4      4      pVP                  4       pVf+   Rp\        P                  ! \        P                  VR4       R# VP                  RR4      pRV 2p\        P                  ! \        P                  VR4       V# )	rD   r%   rY   Fz(FALLBACK: Have handler, but text is NoneT
\nzFALLBACK: Clipboard contents: )rU   r	   rZ   r[   r   r\   r]   Zwait_for_textr   rG   rH   replace)r*   r_   resultrI   debug_strings   &    r!   rB   Z'_ClipboardManagerFallback._get_contents   s     #MM%%chhook5&IJ	((*><C 0 0#t<~~dE2.|n=E,,c48r$   c               r9   r:   r   r   r    r!   r"   rS           % % % %r$   c                s    RV 2p\         P                  ! \         P                  VR4       \        P                  P                  \        P                  P                  RR4      4      pVP                  VR4       R# )r=   z)FALLBACK: Setting clipboard contents to: TrY   FNi)
r   rG   rH   r	   rZ   r[   r   r\   r]   set_text)r*   r;   rI   r_      &&  r!   r@   Z&_ClipboardManagerFallback.set_contents   s[     :$@E,,c48MM%%chhook5&IJ	4$r$   )rU   r)   rK   rL   rM   rN   rO   r+   r4   r8   rB   r@   rP   Z__classcell__rW      @r!   rQ   rQ   m   s)    E, ,	 $% %r$   rQ   c                  sb   a  ] tR t^tRtR V 3R lltR R ltR R ltR R	 ltR
 R lt	Rt
V ;t# )_ClipboardManagerGPastez4Class for interacting with the clipboard via GPaste.c               r9   rR   r   r   r    r!   r"   $_ClipboardManagerGPaste.__annotate__   s     8 8(= 8$ 8r$   c                	sn   < \         SV `  R V4       RV n        RV n        RV n        RV n        RV n        R# )ZGPASTEN)rT   r+   _bus_gpaste_proxy_props_proxy_signal_subscription_original_active_staterV   rX   r!   r+   Z _ClipboardManagerGPaste.__init__   s9    ?3.2	483704!37#r$   c               r,   r1   r   r   r    r!   r"   rm      s     " " "r$   c                s,    \        4       V n        V P                  P                  RR4      V n        V P                  P                  RRR4      V n        V P                  P                  RR4      V n         T P                  P                  RR4      T n        T P                  '       g   R	p\        P                  ! \        P                  TR4       T P                  P                  R4       T P                  P                  RR4      pR
\        T4       2p\        P                  ! \        P                  TR4       T P                  P                  P                  T P                  4      T n        RT n        R#   \         d7   pRT 2p\        P                  ! \        P                  TR4        Rp?R# Rp?ii ; i  \         dL   pRT 2p\        P                  ! \        P                  TR4       RT n        RT n        RT n         Rp?R# Rp?ii ; i)r3   zorg.gnome.GPastez/org/gnome/GPastezorg.freedesktop.DBus.Propertiesorg.gnome.GPaste2Activez8CLIPBOARD PRESENTER: Could not access GPaste interface: TNz=CLIPBOARD PRESENTER: GPaste is not active. Enabling Tracking.$CLIPBOARD PRESENTER: Is active now: z:CLIPBOARD PRESENTER: Could not connect to GPaste signals: )r   rn   	get_proxyro   rp   Getrr   r   r   rG   rH   Trackr-   ZUpdater4   rJ   rq   r)   )r*   errorrI   	new_state   &   r!   r4   Z_ClipboardManagerGPaste.connect   s   	)+DI!%!4!45GI\!]D !%		 3 3"$79Z!D +/*;*;*?*?@SU]*^D'	*.*;*;*?*?@SU]*^D'...U##E$4$4c4@""((. --112ExP	<T)_<MN##E$4$4c4@(,(:(:(A(A(I(I$JcJc(dD%"DO!  	LUGTC 0 0#t<	"  	NugVC 0 0#t<!%D $DDII	s8   A3E9 62F= )CF= 9F:+F55F:=HA HHc               r,   r1   r   r   r    r!   r"   rm      s        D  r$   c                sr   V P                   e   V P                  f+   Rp\        P                  ! \        P                  VR4       R# V P
                  e"   V P
                  P                  4        RV n        V P                  '       g   Rp\        P                  ! \        P                  VR4       V P                   P                  R4       V P                  P                  RR4      pR\        V4       2p\        P                  ! \        P                  VR4       RV n         RV n        RV n        RV n        R# )	r7   NzCCLIPBOARD PRESENTER: Cannot disconnect due to missing interface(s).TzDCLIPBOARD PRESENTER: Restoring inactive state by disabling tracking.Frs   rt   ru   )ro   rp   r   rG   rH   rq   r8   rr   rx   rw   r-   rn   r)   )r*   rI   rz      &  r!   r8   Z"_ClipboardManagerGPaste.disconnect   s     %):):)BWC 0 0#t<$$0%%002(,D%***XC 0 0#t<$$U+))--.A8LI8i8IJC 0 0#t<! 	r$   c               r,   rA   r   r   r    r!   r"   rm           
 
s 
r$   c                s    V P                   f   R# V P                   P                  ^ 4      ^,          pVP                  RR4      pRV 2p\        P                  ! \        P
                  VR4       V# )rD   r%   ra   rb   zGPASTE: Clipboard contents: T)ro   ZGetElementAtIndexrc   r   rG   rH   r*   rd   re   rI   r{   r!   rB   Z%_ClipboardManagerGPaste._get_contents   sg     %##55a8;~~dE2,\N;E,,c48r$   c               r9   r:   r   r   r    r!   r"   rm      rf   r$   c                s\    V P                   f   R# V P                   P                  V4       R# r<   )ro   ZAddr>   r?   r!   r@   Z$_ClipboardManagerGPaste.set_contents   s'     %t$r$   )rn   ro   r)   rr   rp   rq   ri   rj   rk   r!   rl   rl      s*    >8 8"H 2
% %r$   rl   c                  sb   a  ] tR t^tRtR V 3R lltR R ltR R ltR R	 ltR
 R lt	Rt
V ;t# )_ClipboardManagerKlipperz6Class for interacting with the clipboard via Klipper .c               r9   rR   r   r   r    r!   r"   %_ClipboardManagerKlipper.__annotate__  s     5 5(= 5$ 5r$   c                	sR   < \         SV `  R V4       RV n        RV n        RV n        R# )ZKLIPPERN)rT   r+   rn   _klipper_proxyrq   rV   rX   r!   r+   Z!_ClipboardManagerKlipper.__init__  s)    O4.2	5904!r$   c               r,   r1   r   r   r    r!   r"   r     s       r$   c                s@    \        4       V n        V P                  P                  RR4      V n        V P                  P	                  4         T P                  P                  P                  T P                  4      T n        RT n        R#   \
         d7   pRT 2p\        P                  ! \        P                  TR4        Rp?R# Rp?ii ; i  \
         dE   pRT 2p\        P                  ! \        P                  TR4       RT n        RT n         Rp?R# Rp?ii ; i)r3   zorg.kde.klipperz/klipperz9CLIPBOARD PRESENTER: Could not access klipper interface: TNz:CLIPBOARD PRESENTER: Could not connect to klipper signal: )r   rn   rv   r   getClipboardContentsr   r   rG   rH   ZclipboardHistoryUpdatedr4   rJ   rq   r)   )r*   ry   rI   r|   r!   r4   Z _ClipboardManagerKlipper.connect  s    		)+DI"&))"5"56G"TD 446		(,(;(;(S(S([([)))D% #DO  	MeWUC 0 0#t<	  	NugVC 0 0#t<"&DDII		s0   A
B
 ;C 
C+CCD9DDc               r,   r1   r   r   r    r!   r"   r   !  s        D  r$   c                s    V P                   e   V P                   P                  4        RV n         RV n        RV n        RV n        R# )r7   NF)rq   r8   r   rn   r)   r.   r/   r!   r8   Z#_ClipboardManagerKlipper.disconnect!  s@     $$0%%002$(!"	r$   c               r,   rA   r   r   r    r!   r"   r   +  r}   r$   c                s    V P                   f   R# V P                   P                  4       pVP                  RR4      pRV 2p\        P                  ! \        P
                  VR4       V# )rD   r%   ra   rb   zKLIPPER: Clipboard contents: T)r   r   rc   r   rG   rH   r~   r{   r!   rB   Z&_ClipboardManagerKlipper._get_contents+  s`     &$$99;~~dE2-l^<E,,c48r$   c               r9   r:   r   r   r    r!   r"   r   7  s     7 7 7 7r$   c                s    V P                   f   R# RV 2p\        P                  ! \        P                  VR4       V P                   P	                  V4       R# )r=   Nz(KLIPPER: Setting clipboard contents to: T)r   r   rG   rH   ZsetClipboardContentsr*   r;   rI      && r!   r@   Z%_ClipboardManagerKlipper.set_contents7  sK     &8?E,,c48006r$   )rn   r)   r   rq   ri   rj   rk   r!   r   r      s)    @5 52 
7 7r$   r   c                  s   ] tR tRtRtR R ltR%R R lltR&R R lltR	 R
 ltR R lt	]
P                  R'R R ll4       tR R ltR R ltR R ltR R ltR R ltR(R R lltR R ltR R ltR  R! ltR" R# ltR$tR# ))ClipboardPresenteriA  z(Manages clipboard-related functionality.c               r,   r1   r   r   r    r!   r"   ClipboardPresenter.__annotate__D  s     I I$ Ir$   c                	s   \         P                  P                  V P                  4      V n        R V n        \        P                  ! 4       V n        RV n        V P                  R4      V n
        \        P                  ! 4       V n        Rp\        P                  ! \        P                   VR4       \"        P$                  ! 4       pVP'                  RV 4       R# )r%   NTz0CLIPBOARD PRESENTER: Registering D-Bus commands.r   )r   ZEventListenerZnew	_listener_event_listener_last_clipboard_update_texttime_last_clipboard_update_time_managerget_handlers	_handlersr   KeyBindings	_bindingsr   rG   rH   r   Zget_remote_controllerZregister_decorated_module)r*   rI   Z
controllerr|   r!   r+   ZClipboardPresenter.__init__D  s    494G4G4K4KDNN4[02(26))+(26CGCTCTUYCZ2=2I2I2K@E,,c48!779
,,-A4Hr$   c               $    V ^8  d   QhRRRRRR/# )r   refreshr-   
is_desktopr   zkeybindings.KeyBindingsr   r   r    r!   r"   r   Q  s$      15	 r$   c                sN   V'       dc   RV 2p\         P                  ! \         P                  VR4       V P                  P	                  R4       V P                  4        V P                  # V P                  P                  4       '       d   V P                  4        V P                  # )z,Returns the clipboard-presenter keybindings.z6CLIPBOARD PRESENTER: Refreshing bindings. Is desktop: Tz)CLIPBOARD PRESENTER: Refreshing bindings.)r   rG   rH   r   Zremove_key_grabs_setup_bindingsZis_empty)r*   r   r   rI   s   &&& r!   get_bindingsZClipboardPresenter.get_bindingsQ  s    
 J:,WC 0 0#t<NN++,WX  " ~~ ^^$$&&  "~~r$   c               r9   )r   r   r-   r   z(dict[str, input_event.InputEventHandler]r   r   r    r!   r"   r   `  s      D 5] r$   c                s    V'       d9   Rp\         P                  ! \         P                  VR4       V P                  4        V P                  # )z)Returns the clipboard-presenter handlers.z)CLIPBOARD PRESENTER: Refreshing handlers.T)r   rG   rH   _setup_handlersr   )r*   r   rI   r   r!   r   ZClipboardPresenter.get_handlers`  s:     =C 0 0#t<  "~~r$   c               r,   r1   r   r   r    r!   r"   r   j  s     5 5 5r$   c                s    / V n         \        P                  ! V P                  \        P
                  4      V P                   R&   R# )zASets up and returns the clipboard-presenter input event handlers.present_clipboard_contentsN)r   r   ZInputEventHandlerr   r
   ZCLIPBOARD_PRESENT_CONTENTSr.   r/   r!   r   Z"ClipboardPresenter._setup_handlersj  s<      ))//335 	34r$   c               r,   r1   r   r   r    r!   r"   r   t  s     3 3 3r$   c           
     sz   \         P                  ! 4       V n        V P                  P                  \         P                  ! R\         P
                  \         P                  V P                  R,          ^R4      4       \        P                  ! 4       P                  V P                  V P                  R4      V n        R# )z9Sets up and returns the clipboard-presenter key bindings.r%   r   TFN)r   r   r   ZaddZ
KeyBindingZDEFAULT_MODIFIER_MASKZNO_MODIFIER_MASKr   r   get_managerZoverride_key_bindingsr.   r/   r!   r   Z"ClipboardPresenter._setup_bindingst  s     %002""11,,;<	 *557MMNNDNNE3r$   Nc               s(    V ^8  d   QhRRRRRRRR/# )r   scriptzdefault.Scripteventzinput_event.InputEvent | Nonenotify_userr-   r   r   r   r    r!   r"   r     s2       - 	
 
r$   c                s   RVRVRV.p\         P                  ! \         P                  VR4       V P                  f+   Rp\         P                  ! \         P                  VR4       R# V P                  P                  4       pV'       d   \        V4      R8  d    \        P                  ! \        V4      4      pVP                  \        P                  V,          V4       R# )z Presents the clipboard contents.z8CLIPBOARD PRESENTER: present_clipboard_contents. Script:zEvent:znotify_user:Tz@CLIPBOARD PRESENTER: Cannot present contents, no active manager.Fi  )r   print_tokensrH   r   rG   rC   Zlenr   Zcharacter_countpresent_messageZCLIPBOARD_CONTAINS)r*   r   r   r   tokensrI   contentss   &&&&   r!   r   Z-ClipboardPresenter.present_clipboard_contents  s     MfE>;@5++VT:== TC 0 0#t<==--/3x=4///H>Hx::XExPr$   c               r,   r1   r   r   r    r!   r"   r     s     9 9$ 9r$   c                s   V P                   e   R# Rp\        V P                  4      pVP                  4        VP	                  4       '       d1   Wn         Rp\
        P                  ! \
        P                  VR4       R# \        V P                  4      pVP                  4        VP	                  4       '       d1   Wn         Rp\
        P                  ! \
        P                  VR4       R# \        V P                  4      V n         V P                   P                  4        Rp\
        P                  ! \
        P                  VR4       R# )r3   Nz#CLIPBOARD PRESENTER: Using Klipper.Tz"CLIPBOARD PRESENTER: Using GPaste.z5CLIPBOARD PRESENTER: Using Gtk.Clipboard as fallback.)
r   r   "_present_clipboard_contents_changer4   r0   r   rG   rH   rl   rQ   )r*   managerrI   r|   r!   _connectZClipboardPresenter._connect  s     ==$,0
 +4+R+RS#M7C 0 0#t< *$*Q*QR#M6C 0 0#t<1$2Y2YZEE,,c48r$   c               r,   r1   r   r   r    r!   r"   r     s     # #T #r$   c                sZ    V P                   f   R# V P                   P                  4        R# r6   )r   r8   r.   r/   r!   _disconnectZClipboardPresenter._disconnect  s!     ==   "r$   c               r,   rA   r   r   r    r!   r"   r     s      s r$   c                s$   V P                   f+   Rp\        P                  ! \        P                  VR4       R# V P                   P	                  4       pVP                  RR4      pRV 2p\        P                  ! \        P                  VR4       V# )zReturns the clipboard contents.z;CLIPBOARD PRESENTER: Cannot get contents, no active managerTr%   ra   rb   z'CLIPBOARD PRESENTER: Current contents: )r   r   rG   rH   rC   rc   )r*   rI   rd   re   r{   r!   rB   Z ClipboardPresenter._get_contents  sy     == OC 0 0#t<++-~~dE27~FE,,c48r$   c               r,   r1   r   r   r    r!   r"   r     s     V V$ Vr$   c                    \         P                  ! \         P                  RR4       V P                  P	                  R4       V P                  4        \         P                  ! \         P                  RR4       R# )zActivates the presenter.zCLIPBOARD PRESENTER: ActivatingTobject:text-changedzCLIPBOARD PRESENTER: ActivatedN)r   rG   rH   r   Zregisterr   r.   r/   r!   activateZClipboardPresenter.activate  sV     	E,,.OQUV%%&;<E,,.NPTUr$   c               r,   r1   r   r   r    r!   r"   r     s     X XD Xr$   c                r   )zDeactivates the presenter.z!CLIPBOARD PRESENTER: DeactivatingTr   z CLIPBOARD PRESENTER: DeactivatedN)r   rG   rH   r   Z
deregisterr   r.   r/   r!   
deactivateZClipboardPresenter.deactivate  sY     	E,,.QSWX''(=>E,,.PRVWr$   c               r   )r   r;   r   	separatorr   r   r   r   r    r!   r"   r     s!     - - - -t -r$   c                sN   V P                   f+   Rp\        P                  ! \        P                  VR4       R# V P                   P	                  4       pV V V 2pRV RV R2p\        P                  ! \        P                  VR4       V P                   P                  V4       R# )z'Appends text to the clipboard contents.Nz;CLIPBOARD PRESENTER: Cannot append text, no active manager.Tz CLIPBOARD PRESENTER: Appending 'z'. New contents: ''.)r   r   rG   rH   rC   r@   )r*   r;   r   rI   Zold_textZnew_texts   &&&   r!   append_textZClipboardPresenter.append_text  s     == OC 0 0#t<==--/Z	{4&106H
RTUE,,c48""8,r$   c               r9   r:   r   r   r    r!   r"   r     s     
) 
)S 
)T 
)r$   c                s   V P                   f+   Rp\        P                  ! \        P                  VR4       R# RV R2p\        P                  ! \        P                  VR4       V P                   P	                  V4       R# )z$Sets the clipboard contents to text.Nz8CLIPBOARD PRESENTER: Cannot set text, no active manager.Tz&CLIPBOARD PRESENTER: Setting text to 'r   )r   r   rG   rH   r@   r   r   r!   rg   ZClipboardPresenter.set_text  sf     == LC 0 0#t<6tfB?E,,c48""4(r$   c               r9   )r   r   Atspi.Eventr   r-   r   r   r    r!   r"   r     s     ! ![ !T !r$   c                sJ   VP                   P                  R4      '       g   R# \        P                  ! VP                  4      '       g)   \        P
                  ! VP                  4      '       g   R# \        P                  ! 4       pVP                  4       '       d   VP                  4       '       d   R# VP                  4       '       d   R# RVP                   9   d   VP                  4       '       d   R# V P                  4       pV'       g   R# VP                  V8X  d   R# \        \        P                   ! RVP                  4      4      \        \        P                   ! RV4      4      8w  d   R# VP                  VP                  P#                  4       4      '       d   R# R# )zLReturns True if event is a text changed event associated with the clipboard.r   FZdeleteTz\w)ZtypeZ
startswithr   Zis_editableZsourceZis_terminalr   r   Zlast_event_was_commandZlast_event_was_undoZlast_event_was_backspacelast_event_was_pasterB   any_datar-   reZsearchZrstrip)r*   r   r   r   rh   r!   is_clipboard_text_changed_eventZ2ClipboardPresenter.is_clipboard_text_changed_event  s!    zz$$%:;;''559P9PQVQ]Q]9^9^%113--//73N3N3P3P++--uzz!g&B&B&D&D%%'>>X%		%01T"))E8:T5UU u~~44677r$   c               r9   )r   stringr   r   r   r   r   r    r!   r"   r   !  s      9  9  9  9r$   c                s   RV R2p\         P                  ! \         P                  VR4       WP                  8X  dV   \        P                  ! 4       V P
                  ,
          ^8  d+   Rp\         P                  ! \         P                  VR4       R# Wn        \        P                  ! 4       V n        \        P                  ! 4       P                  4       pVf   R# \        P                  ! 4       pVP                  4       '       d1   VP                  \        P                  \        P                  4       R# VP                  4       '       d1   VP                  \        P                   \        P"                  4       R# VP%                  4       '       d1   VP                  \        P&                  \        P(                  4       R# Rp\         P                  ! \         P                  VR4       R# )z'Presents the clipboard contents change.z+CLIPBOARD PRESENTER: Contents changed to: 'Z'Tz=CLIPBOARD PRESENTER: Not presenting change: likely duplicate.NzFCLIPBOARD PRESENTER: Not presenting change: is not cut, copy, or paste)r   rG   rH   r   r   r   r   r   Zget_active_scriptr   Zlast_event_was_cutr   r   ZCLIPBOARD_CUT_FULLZCLIPBOARD_CUT_BRIEFZlast_event_was_copyZCLIPBOARD_COPIED_FULLZCLIPBOARD_COPIED_BRIEFr   ZCLIPBOARD_PASTED_FULLZCLIPBOARD_PASTED_BRIEF)r*   r   rI   r   r   s   &&   r!   r   Z5ClipboardPresenter._present_clipboard_contents_change!  sW    <F81EE,,c48555yy{T===AQC 0 0#t<+1(+/99;(++-??A>%113%%''""8#>#>@\@\]&&((""8#A#A8CbCbc''))""8#A#A8CbCbcVE,,c48r$   c               r9   )r   r   r   r   r   r   r   r    r!   r"   r   C  s     D D{ Dt Dr$   c                s    RV.p\         P                  ! \         P                  VR4       V P                  V4      '       d   V P	                  VP
                  4       R# R# )z(Generic listener for events of interest.z*CLIPBOARD PRESENTER: Possible change eventTN)r   r   rH   r   r   r   )r*   r   r   r   r!   r   ZClipboardPresenter._listenerC  sN     ?F5++VT://6633ENNC 7r$   )r   r   r   r   r   r   )FT)F)NT)ra   )rK   rL   rM   rN   rO   r+   r   r   r   r   r   Zcommandr   r   r   rB   r   r   r   rg   r   r   r   rP   r   r$   r!   r   r   A  sw    2I53$  .9B#VX-
)!F 9DD Dr$   r   
_presenterc               r,   )r   r   r   r   r   r    r!   r"   r"   M  s      ) r$   c                 s    \         # )z*Returns the Clipboard Presenter singleton.)r   r   r$   r!   get_presenterr   M  s
     r$   )1__conditional_annotations__rO   Z
__future__r    Z__id__Z__version__Z__date__Z__copyright__Z__license__r   r   Ztypingr   r   r   Zdasbus.connectionr   Zdasbus.errorr   Zdasbus.client.proxyr   ZgiZrequire_versionZgi.repositoryr   r   r	   r%   r
   r   r   r   r   r   r   r   r   Zax_utilitiesr   Zscriptsr   r   rQ   rl   r   r   r   Z__annotations__r   )r   rk   r!   <module>r      s   4 * #; 	  / / / " . 	   7E "   5%     5%   ) )     !     % ). ).V4% 1 4%lZ%/ Z%x@70 @7DHD HDV "4!5
 5r$   