
    Je"                     z    d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
mZ ddlmZ ddlmZ ddlmZ  G d d	e      Zy)
z6
Language Server Protocol advanced configuration tab.
    N)QtSlot)	QGroupBoxQGridLayoutQLabelQMessageBoxQVBoxLayoutQWidget)SpyderPreferencesTab)_)check_connection_portc                   l     e Zd ZdZ ed      Z fdZd Zd Z e	e
      d        Zd Zd Zd	 Z xZS )
AdvancedConfigTabz PyLS advanced configuration tab.Advancedc                    t         |   |       t        t        d            }t	        t        d            }|j                  d       |j                  t        j                         | j                  t        d      d      | _
        | j                  t        d      dt        j                  d	      | _        | j                  t        d
      dt        j                  d	      | _        | j                  dddddd      | _        | j                  t        d      d      | _        | j                  t        d      d      | _        | j$                  j&                  j)                  | j*                         | j"                  j&                  j)                  | j,                         t/               }|j1                  | j                  j2                  dd       |j1                  | j                  j4                  dd       |j1                  | j                  j2                  dd       t/               }|j1                  | j                  j4                  dd       |j1                  | j                   j6                  dd       |j1                  | j                   j8                  dd       |j;                  |dd       t=               }|j1                  | j"                         |j1                  | j$                         t=               }|j;                  |       |j;                  |       t?               }|jA                  |       |jC                  | jE                  d             | j                  jF                  j)                  |jB                         | j                  jF                  j)                  | jH                         t=               }	|	j1                  |       |	j1                  | j                         |	j1                  |       |jA                  |	       t=               }
|
j1                  |       | jA                  |
       y )Nz$Python Language Server configurationzG<b>Warning</b>: Only modify these values if you know what you're doing!TzEnable advanced settingsadvanced/enabledz'Module for the Python language server: zadvanced/moduleF)	alignment	word_wrapz+IP Address and port to bind the server to: zadvanced/host: zadvanced/port   i  )min_max_stepzThis is an external serverzadvanced/externalz*Use stdio pipes to communicate with serverzadvanced/stdior      )%super__init__r   r   r   setWordWrapsetAlignmentr   AlignJustifycreate_checkboxadvanced_options_checkcreate_lineedit
Horizontaladvanced_moduleadvanced_hostcreate_spinboxadvanced_portexternal_server	use_stdiostateChangedconnectdisable_tcpdisable_stdior   	addWidgetlabeltextboxplabelspinbox	addLayoutr	   r
   	setLayout
setEnabled
get_optiontoggledshow_advanced_warning)selfparentlsp_advanced_groupadvanced_labeladvanced_g_layoutadvanced_host_port_g_layoutadvanced_server_layoutadvanced_options_layoutadvanced_options_widgetadvanced_layoutlayout	__class__s              f/usr/lib/python3/dist-packages/spyder/plugins/completion/providers/languageserver/conftabs/advanced.pyr   zAdvancedConfigTab.__init__   s    &q2(4 5 , -. 	""4(##BOO4 '+&:&:()+='?#  $3378  4   "11;<r}} 2  "00_15q 1 B#33*+ ! --:; 	##++D,<,<=))11$2D2DE (M##D$8$8$>$>1E##D$8$8$@$@!QG##D$6$6$<$<aC&1m##--d.@.@.H.H!QO#--d.@.@.G.GAN#--d.@.@.H.H!QO##$?AF "-(()=)=>((8"--))*;<))*@A #*)))*AB**4??;M+NO##++33#..	0##++33&&	( &-!!.1!!$"="=>!!"9:$$_5+,v    c                    |t         j                  k(  r| j                  j                  j	                  d       | j
                  j                  j	                  d       | j                  j                  j                          | j                  j                  d       | j                  j	                  d       y | j                  j                  j	                  d       | j
                  j                  j	                  d       | j                  j                  d       | j                  j	                  d       | j                  j                  j                  | j                         y )NFT)r   Checkedr&   r1   r6   r(   r3   r)   r+   
disconnect
setCheckedr,   r.   r:   states     rF   r-   zAdvancedConfigTab.disable_tcpk   s    BJJ&&11%8&&11%8  --88:  ++E2  ++E2&&11$7&&11$7  ++E2  ++D1  --55d6H6HIrG   c                 f   |t         j                  k(  r| j                  j                  j	                  d       | j
                  j                  j	                  d       | j                  j                  j	                  d       | j                  j                  j                          | j                  j                  d       | j                  j	                  d       y | j                  j                  j	                  d       | j
                  j                  j	                  d       | j                  j                  j	                  d       | j                  j                  d       | j                  j	                  d       | j                  j                  j                  | j                         y )NTF)r   rI   r&   r1   r6   r(   r3   r%   r*   r+   rJ   rK   r,   r-   rL   s     rF   r.   zAdvancedConfigTab.disable_stdioy   s&   BJJ&&11$7&&11$7  ((33E:NN''224NN%%e,NN%%e,&&11$7&&11$7  ((33D9NN%%e,NN%%d+NN''//0@0@ArG   c                     | j                  d      ry|r*t        j                  | t        d      t        d             yy)zZ
        Show a warning when trying to modify the PyLS advanced
        settings.
        r   NWarningz<b>Modifying these options can break code completion!!</b><br><br>If that's the case, please reset your Spyder preferences by going to the menu<br><br><tt>Tools > Reset Spyder to factory defaults</tt><br><br>instead of reporting a bug.)r7   r   warningr   rL   s     rF   r9   z'AdvancedConfigTab.show_advanced_warning   sC     ??-. ) 0 1
2 rG   c                 H   | j                   j                  j                         }|dvr| j                  j	                  d       | j                  j                         rt        | j                  j                  j                               }| j                  j                  d      }|j                  j                  d      }|>|d   }|7|d   d   s/|j                  |k(  r |j                  |k(  r| j                          yt!        ||      }|s| j#                  ||d       yy)	N)z	127.0.0.1	localhostTlsppythoninstanceconfigexternalF)r&   r1   textr)   rK   	isCheckedintr(   r3   pluginget_providerclientsgetserver_hostserver_portreport_no_address_changer   report_no_external_server)r:   hostportrT   pyclientrV   responses          rF   is_validzAdvancedConfigTab.is_valid   s   !!))..0
 11  ++D1 ))+t))116689D
 ++**51C{{x0H##J/($X.z: ,,4$00D8557$ -T48H..tT8DrG   c           
          t        j                  | t        d      t        d      j                  |||j	                                      y)za
        Report that connection couldn't be established with
        an external server.
        ErrorzIt appears there is no {language} language server listening at address:<br><br><tt>{host}:{port}</tt><br><br>Please verify that the provided information is correct and try again.)rd   re   languageN)r   criticalr   format
capitalize)r:   rd   re   rk   s       rF   rc   z+AdvancedConfigTab.report_no_external_server   sK    
 	gJ    !'Dt080C0C0E !' !G	
rG   c                 V    t        j                  | t        d      t        d             y)zn
        Report that server address has no changed after checking the
        external server option.
        rj   zThe address of the external server you are trying to connect to is the same as the one of the current internal server started by Spyder.<br><br>Please provide a different address!N)r   rl   r   )r:   s    rF   rb   z*AdvancedConfigTab.report_no_address_change   s)    
 	gJ 4 5	
rG   )__name__
__module____qualname____doc__r   TITLEr   r-   r.   r   boolr9   rh   rc   rb   __classcell__)rE   s   @rF   r   r      sJ    *jMEKZJB  
$Z2 22!F
$
rG   r   )rs   reqtpy.QtCorer   r   qtpy.QtWidgetsr   r   r   r   r	   r
   spyder.api.preferencesr   spyder.config.baser   spyder.utils.miscr   r    rG   rF   <module>r~      s8   
 
 !2 2 8   3L
, L
rG   