
    Je                         d Z ddlmZ ddlm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  G d
 de      Zy)z
Main interpreter Plugin.
    N)Slot)PluginsSpyderPluginV2)on_plugin_availableon_plugin_teardown_)MainInterpreterConfigPage)MainInterpreterContainer)get_python_executablec                   x   e Zd ZdZdZej                  gZej                  gZ	e
ZeZeZdZdZed        Zd Zd Zd Z eej                        d	        Z eej                        d
        Z eej                        d        Z eej                        d        Zed        Zd Z ee       d        Z!y)MainInterpreterz"
    Main interpreter Plugin.
    main_interpreterFc                      t        d      S )NzPython interpreterr        G/usr/lib/python3/dist-packages/spyder/plugins/maininterpreter/plugin.pyget_namezMainInterpreter.get_name+   s    %&&r   c                     t        d      S )Nz)Main Python interpreter to open consoles.r   selfs    r   get_descriptionzMainInterpreter.get_description/   s    <==r   c                 $    | j                  d      S )Npython)create_iconr   s    r   get_iconzMainInterpreter.get_icon2   s    ))r   c                    | j                         }|j                  j                  | j                         |j                  j                  | j
                         | j                  d      rf| j                  d      }t        j                  |      s?| j                  dd       | j                  dd       | j                  dt                      y y y )Ncustomcustom_interpreterFdefaultT
executable)get_containersig_open_preferences_requestedconnect_open_interpreter_preferences(sig_add_to_custom_interpreters_requested_add_to_custom_interpretersget_confospisfileset_confr   )r   	containerinterpreters      r   on_initializezMainInterpreter.on_initialize5   s    &&(	 	0088..	

 	::BB,,	
 =="--(<=K::k*h.i.l,A,CD + #r   )pluginc                 d    | j                  t        j                        }|j                  |        y N)
get_pluginr   Preferencesregister_plugin_preferencesr   preferencess     r   on_preferences_availablez(MainInterpreter.on_preferences_availableK   s&     oog&9&9://5r   c                 x    | j                  t        j                        }|j                  | j                         y r1   )r2   r   	StatusBaradd_status_widgetinterpreter_statusr   	statusbars     r   on_statusbar_availablez&MainInterpreter.on_statusbar_availableQ   s,     OOG$5$56	##D$;$;<r   c                 d    | j                  t        j                        }|j                  |        y r1   )r2   r   r3   deregister_plugin_preferencesr5   s     r   on_preferences_teardownz'MainInterpreter.on_preferences_teardownW   s&     oog&9&9:11$7r   c                     | j                  t        j                        }|j                  | j                  j
                         y r1   )r2   r   r9   remove_status_widgetr;   IDr<   s     r   on_statusbar_teardownz%MainInterpreter.on_statusbar_teardown]   s2     OOG$5$56	&&t'>'>'A'ABr   c                 6    | j                         j                  S r1   )r"   r;   r   s    r   r;   z"MainInterpreter.interpreter_statusc   s    !!#666r   c                     | j                   j                          | j                   j                  }|j                         }|j                  }|j                  d      }|j                  |       y)z<Open the Preferences dialog in the main interpreter section.r   N)_mainshow_preferencesr6   r"   dialogget_index_by_nameset_current_index)r   r6   r,   dlgindexs        r   r%   z-MainInterpreter._open_interpreter_preferencesh   sY    

##%jj,,--/	%%&89e$r   c                 v    | j                  d      }||vr$|j                  |       | j                  d|       yy)z0Add a new interpreter to the list of saved ones.custom_interpreters_listN)r(   appendr+   )r   r-   custom_lists      r   r'   z+MainInterpreter._add_to_custom_interpretersq   s=     mm$>?k){+MM4kB *r   N)"__name__
__module____qualname____doc__NAMEr   r3   REQUIRESr9   OPTIONALr   CONTAINER_CLASSr
   CONF_WIDGET_CLASSCONF_SECTION	CONF_FILECAN_BE_DISABLEDstaticmethodr   r   r   r.   r   r7   r>   r   rA   rE   propertyr;   r%   r   strr'   r   r   r   r   r      s    D##$H!!"H.O1LIO ' '>*E,  3 346 56
  1 12= 3=
 w2238 48
 w001C 2C
 7 7% 
#YC Cr   r   )rV   os.pathpathr)   qtpy.QtCorer   spyder.api.pluginsr   r   )spyder.api.plugin_registration.decoratorsr   r   spyder.api.translationsr	   'spyder.plugins.maininterpreter.confpager
   (spyder.plugins.maininterpreter.containerr   spyder.utils.miscr   r   r   r   r   <module>rk      s:   
   7- % M M 3[Cn [Cr   