ó
‹²,]c           @   s  d  Z  d d l Z d d l m Z m Z d d l m Z d d l m Z	 d d l
 m Z d „  Z d „  Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ y? d d l m Z d „  Z d d „ Z d e f d „  ƒ  YZ Wn e k
 rè n Xd „  Z e d k re ƒ  n  d S(   s    
Environment variable utilities
iÿÿÿÿN(   t   QDialogt   QMessageBox(   t   _(   t   icon_manager(   t   CollectionsEditorc         C   sd   t  j j } xQ |  D]I } | |  | k r g  |  | j | ƒ D] } | j ƒ  ^ q= |  | <q q W|  S(   s   Dict --> Dict of lists(   t   ost   patht   pathsept   splitt   strip(   t   envdictt   sept   keyR   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   envdict2listdict   s
    7c         C   sH   xA |  D]9 } t  |  | t ƒ r t j j j |  | ƒ |  | <q q W|  S(   s   Dict of lists --> Dict(   t
   isinstancet   listR   R   R   t   join(   t   listdictR   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   listdict2envdict    s    $t   RemoteEnvDialogc           B   s   e  Z d  Z d d „ Z RS(   s,   Remote process environment variables dialog.c         C   sœ   t  t |  ƒ j | ƒ y> |  j t | ƒ d t d ƒ d d d t d t j d ƒ ƒWnA t	 k
 r— } t
 j | t d ƒ t d	 ƒ j | ƒ t
 j ƒ n Xd  S(
   Nt   titles   Environment variablest   widthi¼  t   readonlyt   icont   environt   Warningsd   An error occurred while trying to show your environment variables. The error was<br><br><tt>{0}</tt>(   t   superR   t   __init__t   setupR   R   t   Truet   imaR   t	   ExceptionR   t   warningt   formatt   Ok(   t   selfR   t   parentt   e(    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyR   +   s    	N(   t   __name__t
   __module__t   __doc__t   NoneR   (    (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyR   (   s   t	   EnvDialogc           B   s   e  Z d  Z d „  Z RS(   s   Environment variables Dialogc         C   s   t  j |  t t j ƒ ƒ d  S(   N(   R   R   t   dictR   R   (   R#   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyR   B   s    (   R&   R'   R(   R   (    (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyR*   @   s   (   t   winregc          C   s‚   t  ƒ  }  t j t j d ƒ } xW t d t j | ƒ d ƒ D]9 } y( t j | | ƒ } | d |  | d <Wq; Pq; Xq; Wt |  ƒ S(   s0   Return HKCU (current user) environment variablest   Environmenti    i   (   R+   R,   t   OpenKeyt   HKEY_CURRENT_USERt   ranget   QueryInfoKeyt	   EnumValueR   (   t   regR   t   indext   value(    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   get_user_envJ   s    	#	c   
      C   sL  t  |  ƒ }  t ƒ  } t j t j d ƒ } xO |  D]G } y  t j | | ƒ \ } | | <Wq1 t k
 rw t j | | <q1 Xq1 Wt j t j d d t j ƒ } x/ |  D]' } t j	 | | d | | |  | ƒ q¡ WyI d d l
 m } d d l m } m } m }	 | | | d d |	 d ƒ Wn0 t k
 rGt j | t d ƒ t d ƒ ƒ n Xd	 S(
   s-   Set HKCU (current user) environment variablesR-   i    iÿÿÿÿ(   t   SendMessageTimeout(   t   HWND_BROADCASTt   WM_SETTINGCHANGEt   SMTO_ABORTIFHUNGiˆ  R   s   Module <b>pywin32 was not found</b>.<br>Please restart this Windows <i>session</i> (not the computer) for changes to take effect.N(   R   R+   R,   R.   R/   t   QueryValueExt   WindowsErrort   REG_EXPAND_SZt   KEY_SET_VALUEt
   SetValueExt   win32guiR7   t   win32conR8   R9   R:   R   R   R    R   (
   R3   R$   t   typesR   t   namet   _xR7   R8   R9   R:   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   set_user_envV   s(    	 %t   WinUserEnvDialogc           B   s#   e  Z d  Z d d „ Z d „  Z RS(   s)   Windows User Environment Variables Editorc         C   sj   t  t |  ƒ j | ƒ |  j t ƒ  d d d d ƒ| d  k rG |  } n  t j | t d ƒ t d ƒ ƒ d  S(   NR   s   HKEY_CURRENT_USER\EnvironmentR   iX  R   sÅ  If you accept changes, this will modify the current user environment variables directly <b>in Windows registry</b>. Use it with precautions, at your own risks.<br><br>Note that for changes to take effect, you will need to restart the parent process of this application (simply restart Spyder if you have executed it from a Windows shortcut, otherwise restart any application from which you may have executed it, like <i>Python(x,y) Home</i> for example)(	   R   RF   R   R   R6   R)   R   R    R   (   R#   R$   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyR   r   s    	c         C   s-   t  t |  j ƒ  ƒ d |  ƒt j |  ƒ d S(   s   Reimplement Qt methodR$   N(   RE   R   t	   get_valueR    t   accept(   R#   (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyRH   „   s    N(   R&   R'   R(   R)   R   RH   (    (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyRF   p   s   c          C   sU   d d l  m }  |  ƒ  } t j d k r4 t ƒ  } n	 t ƒ  } | j ƒ  | j ƒ  d S(   s'   Run Windows environment variable editoriÿÿÿÿ(   t   qapplicationt   ntN(   t   spyder.utils.qthelpersRI   R   RC   RF   R*   t   showt   exec_(   RI   t   appt   dialog(    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   mainŒ   s    		
t   __main__(   R(   R   t   qtpy.QtWidgetsR    R   t   spyder.config.baseR   t   spyder.utilsR   R   t1   spyder.widgets.variableexplorer.collectionseditorR   R   R   R   R*   t   spyder.py3compatR,   R6   R)   RE   RF   R   RP   R&   (    (    (    s3   lib/python2.7/site-packages/spyder/utils/environ.pyt   <module>	   s&   					