
    
8d                     `    d Z ddlmZmZmZ  G d de          Z G d dej                  ZdS )zD A generic Emacs-style kill ring, as well as a Qt-specific version.
    )QtCore	QtWidgetsQtGuic                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )KillRingz& A generic Emacs-style kill ring.
    c                 .    |                                   d S )N)clearselfs    3lib/python3.11/site-packages/qtconsole/kill_ring.py__init__zKillRing.__init__   s    

    c                 "    d| _         g | _        dS ) Clears the kill ring.
        N_index_ringr
   s    r   r	   zKillRing.clear   s     


r   c                 :    | j                             |           dS z, Adds some killed text to the ring.
        N)r   appendr   texts     r   killzKillRing.kill   s      	
$r   c                 \    t          | j                  | _        |                                 S )zr Yank back the most recently killed text.

        Returns
        -------
        A text string or None.
        )lenr   r   rotater
   s    r   yankzKillRing.yank    s!     $*oo{{}}r   c                 `    | xj         dz  c_         | j         dk    r| j        | j                  S dS )z{ Rotate the kill ring, then yank back the new top.

        Returns
        -------
        A text string or None.
           r   Nr   r
   s    r   r   zKillRing.rotate*   s5     	q;!:dk**tr   N)	__name__
__module____qualname____doc__r   r	   r   r   r    r   r   r   r      si                  
  
 
 
 
 
r   r   c                   F     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
 xZS )	
QtKillRingz/ A kill ring attached to Q[Plain]TextEdit.
    c                 &   t          |t          j        t          j        f          sJ t	                                                       t                      | _        d| _        d| _	        || _
        |j                            | j                   dS )zD Create a kill ring attached to the specified Qt text edit.
        NF)
isinstancer   	QTextEditQPlainTextEditsuperr   r   r   
_prev_yank_skip_cursor
_text_editcursorPositionChangedconnect_cursor_position_changed)r   	text_edit	__class__s     r   r   zQtKillRing.__init__>   s}     )i&99;S%TUUUUUZZ
!#'//0MNNNNNr   c                 F    | j                                          d| _        dS )r   N)r   r	   r-   r
   s    r   r	   zQtKillRing.clearK   s#     	
r   c                 :    | j                             |           dS r   )r   r   r   s     r   r   zQtKillRing.killQ   s     	
r   c                     |                                 }|r+|                                 |                     |           dS dS )z5 Kills the text selected by the give cursor.
        N)selectedTextremoveSelectedTextr   )r   cursorr   s      r   kill_cursorzQtKillRing.kill_cursorV   sL     ""$$ 	%%'''IIdOOOOO	 	r   c                     | j                                         }|r>d| _        | j                                        }|                    |           || _        dS dS )z2 Yank back the most recently killed text.
        TN)r   r   r.   r/   
textCursor
insertTextr-   r   r   r:   s      r   r   zQtKillRing.yank^   sa     z   	# $D_//11Fd###"DOOO		# 	#r   c                 Z   | j         r| j                                        }|rd| _        | j                                        }|                    t          j        j	        t          j        j
        t          | j                              |                    |           || _         dS dS dS )z; Rotate the kill ring, then yank back the new top.
        T)nN)r-   r   r   r.   r/   r=   movePositionr   QTextCursorLeft
KeepAnchorr   r>   r?   s      r   r   zQtKillRing.rotateh   s     ? 		':$$&&D '$(!3355##E$5$:$)$5$@(+DO(<(< $ > > > !!$'''"&		' 		'' 'r   c                 4    | j         r	d| _         d S d | _        d S )NF)r.   r-   r
   s    r   r2   z#QtKillRing._cursor_position_changed|   s&     	# %D"DOOOr   )r!   r"   r#   r$   r   r	   r   r;   r   r   r2   __classcell__)r4   s   @r   r'   r'   6   s         O O O O O    
  # # #' ' '(# # # # # # #r   r'   N)	r$   qtpyr   r   r   objectr   QObjectr'   r%   r   r   <module>rK      s     * ) ) ) ) ) ) ) ) )& & & & &v & & &PJ# J# J# J# J# J# J# J# J# J#r   