
    G@dN                         d Z ddlmZmZ ddlmZ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mZmZ  G d	 d
eeee          Z G d dee          ZdS )z#Control widgets used by ShellWidget    )QtSignal)QColorQTextFrameFormat)	QTextEdit)QStylePalette)restore_keyevent)CallTipWidget)BaseEditMixinGetHelpMixinTracebackLinksMixinc                        e Zd ZdZeZ ee          Z ee	          Z
 e            Z ee          Z	 d
dZd Zd Zd Zd Z fdZ fd	Z xZS )ControlWidgetzw
    Subclass of QTextEdit with features from Spyder's mixins to use as the
    control widget for IPython widgets
    Nc                     t          j        | |           t          j        |            t          j        |            t	          j        |            t          | d          | _        g | _        d| _        d S )NF)hide_timer_on)	r   __init__r   r   r   r
   calltip_widgetfound_resultscalltipsselfparents     Mlib/python3.11/site-packages/spyder/plugins/ipythonconsole/widgets/control.pyr   zControlWidget.__init__)   sr    4(((t$$$$T***d###+DFFF     c                     t                      }|                    d           |                    d           |                    t	          t
          j                             |                                 }|                    |           dS )a"  
        Insert a horizontal ruler with the appropriate color according
        to our theme in the current cursor position.

        We have to do this because html hr elements can't be stylized
        in QTextEdit.

        Taken from https://stackoverflow.com/a/50016969/438386
           i'  N)	r   	setHeightsetWidthsetBackgroundr   r   COLOR_TEXT_1
textCursorinsertFrame)r   rulercursors      r   insert_horizontal_rulerz%ControlWidget.insert_horizontal_ruler6   s{     !""uF=#=>>???""5!!!!!r   c                    |                                  j        | _        |                                 r?|                                 }|r)|                                s|                     |           |                     |           dS )z Action for '(' N)parentWidget_prompt_poscurrent_prompt_posget_current_line_to_cursorget_last_objisdigitshow_object_infoinsert_text)r   textlast_objs      r   _key_paren_leftzControlWidget._key_paren_leftH   s    "&"3"3"5"5"A**,, 	0((**H 0 0 0 2 2 0%%h///r   c                 :    | j                             d           dS zReimplement Qt MethodTNsig_visibility_changedemitr   events     r   	showEventzControlWidget.showEventR       #((.....r   c                    t          |          \  }}}}}|t          j        k    rK|                                 s7| j        r0|                                 j        s|                     |           dS t          j	        | |           dS z4Reimplement Qt Method - Basic keypress event handlerN)
r	   r   Key_ParenLefthas_selected_texthelp_enabledr   _readingr1   r   keyPressEventr   r8   r/   keyctrlshifts         r   rA   zControlWidget.keyPressEventV   s    (8(?(?%tS$2###D,B,B,D,D#% $.2kkmm.D $  &&&&& #D%00000r   c                     | j                                          t          t          |                               |          S z7Reimplement Qt method to send focus change notification)sig_focus_changedr6   superr   focusInEventr   r8   	__class__s     r   rJ   zControlWidget.focusInEvent`   s6    ##%%%]D))66u===r   c                     | j                                          t          t          |                               |          S rG   )rH   r6   rI   r   focusOutEventrK   s     r   rN   zControlWidget.focusOutEvente   s6    ##%%%]D))77>>>r   N)__name__
__module____qualname____doc__r   QT_CLASSr   boolr5   strsig_go_to_error_requestedrH   dictsig_help_requestedr   r%   r1   r9   rA   rJ   rN   __classcell__rL   s   @r   r   r      s          H#VD\\ &s
 
 
 
" " "$  / / /1 1 1> > > > >
? ? ? ? ? ? ? ? ?r   r   c                        e Zd ZdZeZ ee          Z e            Z	 e            Z
ddZd Zd Z fdZ fdZ xZS )	PageControlWidgetz
    Subclass of QTextEdit with features from Spyder's mixins.BaseEditMixin to
    use as the paging widget for IPython widgets
    Nc                 f    t          j        | |           t          j        |            g | _        d S rO   )r   r   r   r   r   s     r   r   zPageControlWidget.__init__u   s4    4(((t$$$r   c                 :    | j                             d           dS r3   r4   r7   s     r   r9   zPageControlWidget.showEventz   r:   r   c                     t          |          \  }}}}}|t          j        k    r/|                                 r| j                                         dS t          j        | |           dS r<   )r	   r   	Key_Slash	isVisiblesig_show_find_widget_requestedr6   r   rA   rB   s         r   rA   zPageControlWidget.keyPressEvent~   sl    (8(?(?%tS$",4>>#3#3/4466666 #D%00000r   c                     | j                                          t          t          |                               |          S rG   )rH   r6   rI   r]   rJ   rK   s     r   rJ   zPageControlWidget.focusInEvent   s7    ##%%%&--::5AAAr   c                     | j                                          t          t          |                               |          S rG   )rH   r6   rI   r]   rN   rK   s     r   rN   zPageControlWidget.focusOutEvent   s7    ##%%%&--;;EBBBr   rO   )rP   rQ   rR   rS   r   rT   r   rU   r5   rc   rH   r   r9   rA   rJ   rN   rZ   r[   s   @r   r]   r]   k   s          H#VD\\%+VXX"       
/ / /1 1 1B B B B B
C C C C C C C C Cr   r]   N)rS   qtpy.QtCorer   r   
qtpy.QtGuir   r   qtpy.QtWidgetsr   spyder.utils.paletter   spyder.utils.qthelpersr	   spyder.widgets.calltipr
   spyder.widgets.mixinsr   r   r   r   r]    r   r   <module>rn      s6   * ) # " " " " " " " / / / / / / / / $ $ $ $ $ $ / . . . . . 3 3 3 3 3 3 0 0 0 0 0 08 8 8 8 8 8 8 8 8 8R? R? R? R? R?'}R? R? R?j%C %C %C %C %C	= %C %C %C %C %Cr   