
,]c           @   s  d  Z  d d l j Z d d l Z d d l m Z d d l m Z m	 Z	 m
 Z
 m Z d d l m Z m Z m Z m Z m Z d d l m Z m Z d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, m- Z- m. Z. m/ Z/ m0 Z0 d d l1 m2 Z2 m3 Z3 m4 Z4 m5 Z5 m6 Z6 d d	 l7 m8 Z8 m9 Z9 d d
 l: m; Z; d d l< m= Z= d d l> m? Z? d d l@ mA ZA mB ZB d d lC mD ZE d d lC mF ZF d d lG mH ZH d d lI mJ ZJ d d lK mL ZL d d lM mN ZN d ZO d eP f d     YZQ d e/ f d     YZR d e f d     YZS d eR eQ f d     YZT d eT f d     YZU d eT f d      YZV d! eV f d"     YZW d# eV f d$     YZX d% e f d&     YZY d S('   s%   
Configuration dialog / Preferences.
iN(   t   API(   t   getexistingdirectoryt   getopenfilenamet   from_qvariantt   to_qvariant(   t   QSizet   Qtt   Signalt   Slott   QRegExp(   t   QColort   QRegExpValidator(   t   QButtonGroupt	   QCheckBoxt	   QComboBoxt   QDialogt   QDialogButtonBoxt   QDoubleSpinBoxt   QFontComboBoxt   QGridLayoutt	   QGroupBoxt   QHBoxLayoutt   QLabelt	   QLineEditt	   QListViewt   QListWidgett   QListWidgetItemt   QMessageBoxt   QPushButtont   QRadioButtont   QScrollAreat   QSpinBoxt	   QSplittert   QStackedWidgett   QStyleFactoryt
   QTabWidgett   QVBoxLayoutt   QWidgett   QApplication(   t   _t   LANGUAGE_CODESt   load_lang_conft   running_in_mac_appt   save_lang_conf(   t   get_fontt   set_font(   t   CONF(   t	   NoDefault(   t   is_gtk_desktop(   t   to_text_stringt   is_text_string(   t   icon_manager(   t   syntaxhighlighters(   t   getcwd_or_home(   t   ColorLayout(   t   FileComboBox(   t
   CodeEditors#   https://doc.qt.io/qt-5/highdpi.htmlt   ConfigAccessMixinc           B   s)   e  Z d  Z d Z d   Z e d  Z RS(   s0   Namespace for methods that access config storagec         C   s   t  j |  j | |  d  S(   N(   R.   t   sett   CONF_SECTION(   t   selft   optiont   value(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt
   set_option5   s    c         C   s   t  j |  j | |  S(   N(   R.   t   getR;   (   R<   R=   t   default(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt
   get_option8   s    N(   t   __name__t
   __module__t   __doc__t   NoneR;   R?   R/   RB   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR9   1   s   	t
   ConfigPagec           B   s   e  Z d  Z e e  Z e   Z d d  Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z RS(   s0   Base class for configuration page in Preferencesc         C   s&   t  j |  |  | |  _ t |  _ d  S(   N(   R%   t   __init__t   apply_callbackt   Falset   is_modified(   R<   t   parentRI   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH   C   s    	c         C   s   |  j    |  j   d S(   s   
        Initialize configuration page:
            * setup GUI widgets
            * load settings and change widgets accordingly
        N(   t
   setup_paget   load_from_conf(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt
   initializeH   s    
c         C   s
   t   d S(   s   Return configuration page nameN(   t   NotImplementedError(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   get_nameQ   s    c         C   s
   t   d S(   s&   Return configuration page icon (24x24)N(   RP   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   get_iconU   s    c         C   s
   t   d S(   s   Setup configuration page widgetN(   RP   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRM   Y   s    c         C   s   | |  _  |  j j |  d  S(   N(   RK   t   apply_button_enabledt   emit(   R<   t   state(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   set_modified]   s    	c         C   s
   t   d S(   s,   Return True if all widget contents are validN(   RP   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   is_valida   s    c         C   s   |  j  r |  j   |  j d k	 r/ |  j   n  |  j d k rK |  j   n  x. |  j D]# } | |  j k rU |  j   PqU qU W|  j	 t
  n  d S(   s   Apply changes callbacku   mainN(   RK   t   save_to_confRI   RF   R;   t
   _save_langt   restart_optionst   changed_optionst   prompt_restart_requiredRV   RJ   (   R<   t   restart_option(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   apply_changese   s    	

c         C   s
   t   d S(   s%   Load settings from configuration fileN(   RP   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRN   z   s    c         C   s
   t   d S(   s#   Save settings to configuration fileN(   RP   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRX   ~   s    N(   RC   RD   RE   R   t   boolRS   t   show_this_pageRF   RH   RO   RQ   RR   RM   RV   RW   R^   RN   RX   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRG   <   s   										t   ConfigDialogc           B   s   e  Z d  Z e   Z e e  Z d d  Z d   Z	 d   Z
 d d  Z e   d    Z d   Z d   Z d   Z d	   Z d
   Z RS(   s/   Spyder configuration ('Preferences') dialog boxc         C   s  t  j |  |  | |  _ t   |  _ t   |  _ t t d   |  _	 t
 t
 j t
 j Bt
 j B } | j t
 j  |  _ |  j t j  |  j t d   |  j t j d   |  j j t j  |  j j d  |  j j d  t   } | j |  j  | j |  j  t   } | j |  j	  | j d  | j |  t    } | j |  | j! |  |  j" |  |  j r|  j	 j# j$ |  j j%  n  |  j j& j$ |  j'  |  j j( j$ |  j j)  | j* j$ |  j+  | j, j$ |  j-  | j# j$ |  j.  t/ j0 d d t1    d  S(   Ns   Reset to defaultst   Preferencest	   configurei   i    t   maint   interface_language(2   R   RH   Rd   R!   t   pages_widgetR   t   contents_widgetR   R'   t   button_resetR   t   Okt   Applyt   Cancelt   buttont	   apply_btnt   setAttributeR   t   WA_DeleteOnCloset   setWindowTitlet   setWindowIcont   imat   icont   setMovementR   t   Statict
   setSpacingt   setCurrentRowR    t	   addWidgetR   t
   addStretchR$   t	   addLayoutt	   setLayoutt   clickedt   connectt   reset_spydert   currentChangedt   current_page_changedt   currentRowChangedt   setCurrentIndext   acceptedt   acceptt   rejectedt   rejectt   button_clickedR.   R:   R)   (   R<   RL   t   bboxt	   hsplittert	   btnlayoutt   vlayout(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH      sD    					c         C   s   |  j  j   S(   s   Return current page index(   Rg   t
   currentRow(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   get_current_index   s    c         C   s   |  j  j |  d S(   s   Set current page indexN(   Rg   Rw   (   R<   t   index(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   set_current_index   s    c         C   s:   | d k r |  j j   } n |  j j |  } | j   S(   s   Return page widgetN(   RF   Rf   t   currentWidgett   widget(   R<   R   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   get_page   s    c         C   sZ   xF t  |  j j    D]/ } |  j |  } | j   s; d S| j   q Wt j |   d S(   s   Reimplement Qt methodN(   t   rangeRf   t   countR   RW   R^   R   R   (   R<   R   t
   configpage(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      s    c         C   s<   | |  j  k r8 |  j   } | j   s+ d  S| j   n  d  S(   N(   Rm   R   RW   R^   (   R<   Rl   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      s
    c         C   s?   |  j  |  } |  j j | j d  k	  |  j j | j  d  S(   N(   R   Rm   t
   setVisibleRI   RF   t
   setEnabledRK   (   R<   R   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      s    c            s    j  j | j   | j j   j j     f d   | j j   j j  t    } | j	 t
  | j |    j j |  t   j  } y | j | j    Wn t k
 r n X| j | j    | j t j t j B | j t d d   d  S(   Nc            s     j  j |   S(   N(   Rg   Rw   (   t   row(   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   <lambda>   s    i    i   (   t   check_settingsR}   R`   Rg   R   RS   Rm   R   R   t   setWidgetResizablet   Truet	   setWidgetRf   Rx   R   t   setIconRR   t	   TypeErrort   setTextRQ   t   setFlagsR   t   ItemIsSelectablet   ItemIsEnabledt   setSizeHintR   (   R<   R   t
   scrollareat   item(    (   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   add_page   s    %c         C   s   |  j  j   d S(   sp   This method is called to check all configuration page settings
        after configuration dialog has been shownN(   R   RT   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   check_all_settings   s    c         C   s*   t  j |  |  |  j j |  j    d S(   sn   
        Reimplement Qt method to be able to save the widget's size from the
        main application
        N(   R   t   resizeEventt   size_changeRT   t   size(   R<   t   event(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      s    N(   RC   RD   RE   R   R   R   R   RF   RH   R   R   R   R   R   R   R   R   R   R   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRa      s   	7		
				t   SpyderConfigPagec           B   s  e  Z d  Z d Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z e e  d    Z e d d d e d	  Z e d d d e d e d
  Z e d e j d e d  Z e d d  Z d   Z e d d d  Z d d  Z e d d d d d  Z e d e d  Z e d e d  Z e d e d  Z e d e d e e d  Z d d d d d e d  Z d   Z  d   Z! RS(   s+   Plugin configuration dialog box page widgetc            s   t  j   | d   f d   i    _ i    _ i    _ i    _ i    _ i    _ i    _ i    _	 i    _
 t     _ t     _ d    _ d  S(   NRI   c              s     j    j  S(   N(   t   apply_settingsR[   (    (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    (   RG   RH   t
   checkboxest   radiobuttonst	   lineeditst   validate_datat	   spinboxest
   comboboxest	   fontboxest
   coloreditst   sceditsR:   R[   t   dictRZ   RF   t   default_button_group(   R<   RL   (    (   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH     s    									c         C   s
   t   d  S(   N(   RP   (   R<   t   options(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c         C   s   d S(   sZ   This method is called to check settings after configuration 
        dialog has been shownN(    (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      s    c         C   s)   t  j |  |  | s% t   |  _ n  d  S(   N(   RG   RV   R:   R[   (   R<   RU   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRV   %  s    c         C   s   x |  j  D] } | |  j k r
 | j   r
 |  j | \ } } t | j    } | |  s t j |  |  j   d | | f t j  t	 Sq
 q
 Wt
 S(   s,   Return True if all widget contents are valids   %s:<br><b>%s</b>(   R   R   t	   isEnabledR1   t   textR   t   criticalRQ   Ri   RJ   R   (   R<   t   lineeditt	   validatort   invalid_msgR   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRW   *  s    
c            s  x t    j j    D]r \ } \ } } | j   j | |   t d k sl | j j |   f d   q | j j |   f d   q Wxz t    j j    D]c \ } \ } } | j   j | |   | j	 j |   f d   | j
 r | j   j | <q q Wxz t    j j    D]c \ } \ } } | j   j | |   | j j |   f d   | j
 r| j   j | <qqWx^ t    j j    D]G \ } \ } } | j   j | |   | j j |   f d   qWx t    j j    D] \ } \ } }   j | |  } xi t | j    D]: }	 t | j |	  t  }
 t |
  t |  k r4Pq4q4W| j   d k rd }	 n  |	 r| j |	  n  | j j |   f d   | j
 r| j   j | <qqWx t    j j    D] \ \ } } }   j |  } | j |  | j | j    | d k rKd	 } n | } | j j |   f d
   | j j |   f d   qWx t    j  j    D] \ } \ } } t! |  } | j" } | j# } | j   j | |   t d k s| j j |   f d   n | j j |   f d   | j j |   f d   qWxYt    j$ j    D]B\ \ } } } \ } } | j" } | j# }   j | |  \ } } } | j |  | j |  | j |  | j j |   f d   t d k sW| j j |   f d   | j j |   f d   | j j |   f d   qi| j j |   f d   | j j |   f d   | j j |   f d   qiWd S(   s%   Load settings from configuration filet   pysidec            s     j  |  S(   N(   t   has_been_modified(   t   _foot   opt(   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   =  s    c            s     j  |   S(   N(   R   (   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   @  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   D  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   J  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   P  s    i    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   `  s    t   plugin_fontc            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   m  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   o  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   x  s    c            s     j  |   S(   N(   R   (   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   {  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   }  s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |  S(   N(   R   (   R   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |   S(   N(   R   (   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |   S(   N(   R   (   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c            s     j  |   S(   N(   R   (   R   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    N(%   t   listR   t   itemst
   setCheckedRB   R    R|   R}   R   t   toggledt   restart_requiredt
   label_textRZ   R   R   t   textChangedR   t   setValuet   valueChangedR   R   R   R   t   itemDataR1   RF   R   t   currentIndexChangedR   R,   t   setCurrentFontt	   pointSizeR   R   R   t   colorbtnR   (   R<   t   checkboxR=   RA   t   radiobuttonR   t   spinboxt   comboboxR>   R   t   datat   fontboxt   sizeboxt   fontt   propertyt   clayoutt   editt   btnt   cb_boldt	   cb_italict   colort   boldt   italic(    (   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRN   7  s    ( (	(	( (		(	 (		 .		c         C   s  x? t  |  j j    D]( \ } \ } } |  j | | j    q Wx? t  |  j j    D]( \ } \ } } |  j | | j    qX WxE t  |  j j    D]. \ } \ } } |  j | t | j     q Wx? t  |  j	 j    D]( \ } \ } } |  j | | j
    q WxW t  |  j j    D]@ \ } \ } } | j | j    } |  j | t | t   q$WxX t  |  j j    D]A \ \ }	 }
 } |	 j   } | j |
 j
    |  j | |  q~WxH t  |  j j    D]1 \ } \ } } |  j | t | j j     qWxx t  |  j j    D]a \ \ } } } \ } } t | j j    } | j   } | j   } |  j | | | | f  q$Wd S(   s#   Save settings to configuration fileN(   R   R   R   R?   t	   isCheckedR   R   R1   R   R   R>   R   R   t   currentIndexR   R   t   currentFontt   setPointSizeR-   R   R   R   (   R<   R   R=   t   _defaultR   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRX     s,    ((( ((((#1c         C   s!   |  j  t  |  j j |  d  S(   N(   RV   R   R[   t   add(   R<   R=   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    c   
         s   t  |  } | d  k	 r( | j |  n  | | f  j | < d  k	 sS  d  k	 r t      f d  }	 | j j |	  n  | S(   Nc            sp   |  s   rl  d  k	 r; t j   j    t j  n   d  k	 rl t j   j    t j  ql n  d  S(   N(   RF   R   t   warningRQ   Ri   t   information(   t
   is_checked(   t   msg_if_enabledt   msg_infot   msg_warningR<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   show_message  s    (   R   RF   t
   setToolTipR   RJ   R|   R}   (
   R<   R   R=   RA   t   tipR   R   R   R   R   (    (   R   R   R   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_checkbox  s    c
            s   t  |  }
 | d  k rE  j d  k r9 t    _ n   j } n  | j |
  | d  k	 rn |
 j |  n  | | f  j |
 < d  k	 s  d  k	 r      f d   } |
 j j |  n  |	 |
 _	 | |
 _
 |
 S(   Nc            sp   |  s   rl  d  k	 r; t j   j    t j  n   d  k	 rl t j   j    t j  ql n  d  S(   N(   RF   R   R   RQ   Ri   R   (   R   (   R   R   R   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    (   R   RF   R   R   t	   addButtonR   R   R   R}   R   R   (   R<   R   R=   RA   R   R   R   R   t   button_groupt   restartR   R   (    (   R   R   R   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_radiobutton  s    		c         C   s   t  |  } | j t  t   }	 | t j k r: t   n t   }
 |
 j |  |
 j |	  |
 j	 d d d d  | r |	 j
 |  n  | r |	 j t t |    n  | | f |  j |	 <t |   } | | _ |	 | _ | j |
  | |	 _ | |	 _ | S(   Ni    (   R   t   setWordWrapR   R   R   t   VerticalR$   R   Rx   t   setContentsMarginsR   t   setValidatorR   R	   R   R%   t   labelt   textboxR{   R   R   (   R<   R   R=   RA   R   t	   alignmentt   regexR   R   R   t   layoutR   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_lineedit  s&    	!				c   
         s   j  | | | d t j } x$  j D]   | j    r( Pq( q( Wt d  } t j | f  j   <t	 t
 j d  d   } | j t d   | j j    f d    t   } | j |  | j |  | j d d d d  t   }	 |	 j |  |	 S(   NR   s   Invalid directory patht   DirOpenIcont    s   Select directoryc              s    j     S(   N(   t   select_directory(    (   R   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     R  i    (   R  R   t
   HorizontalR   t   isAncestorOfR'   t   ospt   isdirR   R   Rr   Rs   R   R|   R}   R   Rx   R   R%   R{   (
   R<   R   R=   RA   R   R   t   msgt
   browse_btnR  t	   browsedir(    (   R   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_browsedir  s"    	c         C   se   t  | j    } t j |  s- t   } n  t d   } t |  | |  } | ra | j |  n  d S(   s   Select directoryN(   R1   R   R  R	  R5   R'   R   R   (   R<   R   t   basedirt   titlet	   directory(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    c            s
   j  | | | d t j } x$  j D]   | j    r( Pq( q( Wt d  } t j | f  j   <t	 t
 j d  d   } | j t d   | j j     f d    t   }	 |	 j |  |	 j |  |	 j d d d d  t   }
 |
 j |	  |
 S(   NR   s   Invalid file patht   FileIconR  s   Select filec              s    j      S(   N(   t   select_file(    (   R   t   filtersR<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   $  R  i    (   R  R   R  R   R  R'   R  t   isfileR   R   Rr   Rs   R   R|   R}   R   Rx   R   R%   R{   (   R<   R   R=   RA   R   R  R   R
  R  R  R  (    (   R   R  R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_browsefile  s"    	c         C   s   t  j t | j     } t  j |  s6 t   } n  | d k rQ t d  } n  t d  } t |  | | |  \ } } | r | j	 |  n  d S(   s   Select Files   All files (*)s   Select fileN(
   R  t   dirnameR1   R   R	  R5   RF   R'   R   R   (   R<   R   R  R  R  t   filenamet
   _selfilter(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR  -  s    c	         C   s  t  |   }	 | r* t |  }
 |
 |	 _ n d  }
 | rN t |  } | |	 _ n d  } | d  k	 r t |  t k r~ t   } n t   } | j	 d  | j
 |  n	 t   } | d  k	 r | j |  n  | d  k	 r | j |  n  | d  k	 r| j |  n  | | f |  j | <t   } x3 |
 | | f D]" } | d  k	 r-| j |  q-q-W| j d  | j d d d d  | |	 _ |	 j |  |	 S(   Ni   i    (   R%   R   t   plabelRF   t   slabelt   typet   intR   R   t   setDecimalst   setSingleStept
   setMinimumt
   setMaximumR   R   R   Rx   Ry   R   R   R{   (   R<   t   prefixt   suffixR=   RA   t   min_t   max_t   stepR   R   R  R  R   R  t	   subwidget(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_spinbox9  s@    				c   
      C   s   t  |  } t t t j  |   } | j j d  | d  k	 rP | j |  n  | | f |  j	 | <| rs | | f St
   } | j |  | j |  | j d  | j d d d d  t |   }	 |	 j |  |	 S(   NiP   i   i    (   R   R6   R
   R   t   blackR   t   setMaximumWidthRF   R   R   R   Rx   Rz   Ry   R   R%   R{   (
   R<   R   R=   RA   R   t   without_layoutR   R   R  R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_coloredit`  s     
	c         C   sp  t  |  } t t t j  |   } | j j d  | d  k	 rP | j |  n  t	   } | j
 t j d   | j t d   t	   }	 |	 j
 t j d   |	 j t d   | | f |  j | | |	 f <| r | | | |	 f St   }
 |
 j |  |
 j |  |
 j d  |
 j |  |
 j |	  |
 j d  |
 j d d d d  t |   } | j |
  | S(	   NiP   R   t   BoldR   t   Italici
   i   i    (   R   R6   R
   R   R(  R   R)  RF   R   R   R   Rr   Rs   R'   R   R   Rx   Rz   t
   addSpacingRy   R   R%   R{   (   R<   R   R=   RA   R   R*  R   R   R   R   R  R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_scedits  s2    			c         C   sx  t  |  } t   } | d k	 r1 | j |  n  xE | D]= \ }	 }
 |	 d k oY |
 d k s8 | j |	 t |
   q8 q8 Wd } x\ t |  D]N \ } } | \ }	 }
 |	 d k r |
 d k r | j | |  | d 7} q q W| | f |  j | <t	   } | j
 |  | j
 |  | j d  | j d d d d  t |   } | | _ | | _ | j |  | | _ | | _ | S(   s   choices: couples (name, key)i    i   N(   R   R   RF   R   t   addItemR   t	   enumeratet   insertSeparatorR   R   Rx   Ry   R   R%   R   R   R{   R   R   (   R<   R   t   choicesR=   RA   R   R   R   R   t   namet   keyR   R   R   R  R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_combobox  s4    						c
            sm  t   d | d |	 }
 | |
 _ | |
 _ |
 j     |   _ |   _ | | f  j   <| d k	 rw |
 j |  n  |
 j |  t d  } t	 j
 | f  j   <t t j d  d   } | j t d   | j j     f d    t   } | j |
 d d d d	  | j | d d
  | j d d d d  t   } |
 | _ | | _ | j |  | S(   s   choices: couples (name, key)t   adjust_to_contentst   default_line_edits   Invalid file pathR  R  s   Select filec              s    j      S(   N(   R  (    (   R   R  R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     R  i    i	   i
   N(   R7   R   R   t   lineEditR   RF   R   t   addItemsR'   R  R  R   R   Rr   Rs   R|   R}   R   Rx   R   R%   R   R  R{   (   R<   R   R3  R=   RA   R   R   R  R7  R8  R   R
  R  R  R   (    (   R   R  R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_file_combobox  s2    								c         C   sm  | r t  |  } n t  t d   } t   } | d k	 rL | j |  n  t  d t d   }	 t   }
 |
 j d d  | |  j | |
 f <t   } x' | | |	 |
 f D] } | j	 |  q W| j
 d  t |   } | | _ |	 | _ | | _ |
 | _ | j |  | se| d k r,t d  } n  t |  } | j |  | d k	 ra| j |  n  | S| Sd S(	   s"   Option=None -> setting plugin fonts   Font: s     s   Size: i   id   i   s
   Font styleN(   R   R'   R   RF   t   setFontFiltersR   t   setRangeR   R   Rx   Ry   R%   t	   fontlabelt	   sizelabelR   R   R{   R   R   (   R<   R=   R   R  R   t   fontfilterst   without_groupR>  R   R?  R   R  R&  R   t   group(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_fontgroup  s:    							c            s?   t  |  } | j j |  | j j t d   f d   | S(   NR  c            s     j  |  S(   N(   R   (   t   checkedR   (   R<   (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR      R  (   R   R|   R}   RJ   (   R<   R   t   callbackR   (    (   R<   s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   create_button  s    c         G   sN   t    } t   } x | D] } | j |  q W| j d  | j |  | S(   sA   Create simple tab widget page: widgets added in a vertical layouti   (   R%   R$   Rx   Ry   R{   (   R<   t   widgetsR   R  t   widg(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt
   create_tab  s    		N("   RC   RD   RE   RF   R;   RH   R   R   RV   RW   RN   RX   R   t   strR   R/   RJ   R   R   R   R   R  R  R  R  R  R'  R+  R/  R6  R;  RC  RF  RI  (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     sR   						b				
&	 	+	t   PluginConfigPagec           B   s)   e  Z d  Z d   Z d   Z d   Z RS(   s+   Plugin configuration dialog box page widgetc         C   sM   | |  _  | j |  _ | j |  _ | j |  _ | j |  _ t j |  |  d  S(   N(	   t   pluginRB   R?   t   get_plugin_fontR,   t   apply_plugin_settingsR   R   RH   (   R<   RL  RL   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH     s    	c         C   s   |  j  j   S(   N(   RL  t   get_plugin_title(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRQ     s    c         C   s   |  j  j   S(   N(   RL  t   get_plugin_icon(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRR     s    (   RC   RD   RE   RH   RQ   RR   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRK    s   		t   GeneralConfigPagec           B   sV   e  Z d  Z d Z d Z d Z d   Z d   Z d   Z	 d   Z
 d   Z d   Z RS(   s}   Config page that maintains reference to main Spyder window
       and allows to specify page name and icon declaratively
    c         C   s   t  j |  |  | |  _ d  S(   N(   R   RH   Rd   (   R<   RL   Rd   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH   (  s    c         C   s   |  j  S(   s   Configuration page name(   t   NAME(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRQ   ,  s    c         C   s   |  j  S(   s"   Loads page icon named by self.ICON(   t   ICON(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRR   0  s    c         C   s
   t   d  S(   N(   RP   (   R<   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   4  s    c         C   s  |  j  } |  j } g  | D] } | | k r | | ^ q } t |  d k r\ t d  } n t d  } t d  } d } x! | D] } | d j |  7} q Wt d  }	 d j | | |  }
 t j |  |	 |
 t j t j B } | t j k r |  j	   n  d	 S(
   s*   Prompt the user with a request to restart.i   s8   Spyder needs to restart to change the following setting:s9   Spyder needs to restart to change the following settings:s   Do you wish to restart now?u    u   <li>{0}</li>t   Informationu   {0}<ul>{1}</ul><br>{2}N(
   RZ   R[   t   lenR'   t   formatR   R   t   Yest   NoR   (   R<   t   restart_optst   changed_optst   oR   t	   msg_startt   msg_endt   msg_optionsR=   t	   msg_titleR
  t   answer(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR\   7  s     		)c         C   s   |  j  j   d S(   s   Restart Spyder.N(   Rd   R   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   P  s    N(   RC   RD   RE   RF   R;   RR  RS  RH   RQ   RR   R   R\   R   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRQ    s   					t   MainConfigPagec           B   sG   e  Z d  Z e d  Z d   Z d   Z d   Z d   Z d   Z	 RS(   Rd   t   Generalc   A      C   sh  t  j d  |  _ |  j } t t d   } t j   } t g  | D] \ } } | | f ^ qC  } |  j	 t d  | d d t
 } d d d d	 g } t t | g  | D] }	 |	 j   ^ q   }
 |  j	 t d
  |
 d d t
 } | t d  d d t d  } | t d  d  } | t d  d  } | t d  d  } t   ro|  j d t
  | j t  n  t   } t   } | j | j d d  | j | j d d  | j | j d d  | j | j d d  | j |  | j d  t   } | j |  | j |  | j |  | j |  | j |  | j |  t t d   } g  t t j    D] } t |  ^ qo} t   rd | k rd g } n  t t | g  | D] } | j   ^ q  } |  j	 t d  | d d |  j j  } d d g } t t | g  | D] } | j   ^ q  } |  j	 t d  | d  d t
 } | t d!  d"  } | t d#  d$  } | t d%  d&  } | t d'  d( d t d)  }  | t d*  d+  }! |  j! d, t d-  d. d d d/  }" |! j" j# |" j$ j  |! j" j# |" j% j  |" j$ j |  j& d+   |" j% j |  j& d+   | t d0  d1  }# |  j! d, t d2  d3 d t' j(   d4 d d5 d6 d7 d8 }$ |# j" j# |$ j$ j  |# j" j# |$ j% j  |$ j$ j |  j& d1   |$ j% j |  j& d1   t   }% |% j |! d d  |% j |" j$ d d  |% j |" j% d d9  |% j |# d d  |% j |$ j$ d d  |% j |$ j% d d9  |% j) d9 d8  t   }& t   }' |' j | j d d  |' j | j d d  |' j | j d d  |' j | j d d  |& j |'  |& j d  t   }( |( j |&  |( j |  |( j |  |( j |  |( j |   |( j |%  | j |(  t t d:   }) | t d;  d<  }* | t d=  d> d |  j j* j+   }+ |  j! d, t d?  d@ d4 d8 d5 dA d7 d8 }, |+ j" j# |, j  |, j |  j& d>   |+ j |  j j* j,    |, j |  j j* j,    | t dB  dC d |  j j- j+   }- |  j! d, t d?  dD d4 d8 d5 dA d7 d8 }. |- j" j# |. j  |. j |  j& dC   |- j |  j j- j,    |. j |  j j- j,    |  j& d<  }/ |* j" j# |+ j  |* j" j# |, j  |* j" j# |- j  |* j" j# |. j  |+ j |/  |, j |/  |- j |/  |. j |/  t   }0 |0 j |+ d d  |0 j |, d d  |0 j |- d d  |0 j |. d d  t   }1 |1 j |*  |1 j |0  |) j |1  t t dE   }2 t. |2  }3 t/ t dF  j0 t1   }4 |4 j2 t
  |  j3 t dG  dH dI |3 }5 |  j3 t dJ  dK dI |3 d t dL  d t
 }6 |  j3 t dM  dN dI |3 d t dO  d t
 }7 |  j4 d, dP d t dQ  dR t5 j6 dS dT d t
 }8 |5 j" j# |8 j7  |6 j" j# |8 j7  |7 j" j# |8 j  t   }9 |9 j |4  t   }: |: j |5 d d  |: j |6 d d  |: j |7 d9 d  |: j |8 d9 d  |9 j |:  |2 j |9  |  j8 dU dV dW t dX  dY t9 j: dZ t
  }; |  j8 dU d[ dW t d\  dZ t
  }< t t d]   }= t   }> |> j |; j; d d  |> j |; j< d d  |> j |; j= d d9  |> j |; j> d d^  |> j |< j; d d  |> j |< j< d d  |> j |< j= d d9  |> j |< j> d d^  |= j |>  t?   }? |? j@ |  jA |= |2 |  t d_   |? j@ |  jA | |)  t d`   t   }@ |@ j |?  |  j |@  d  S(a   Nt   genprefsRb  s	   Language:Re   R   t	   Automatict   Desktopt   Softwaret   GLESs   Rendering engine:t   opengls   Use a single instancet   single_instanceR   s^   Set this to open external<br> Python files in an already running instance (Requires a restart)s   Prompt when exitingt   prompt_on_exits4   Show internal Spyder errors to report them to Githubt   show_internal_errorss   Check for updates on startupt   check_updates_on_startupi    i   t	   Interfaces   GTK+s   Qt windows stylet   windows_styleRA   s   Spyder 2s   Spyder 3s
   Icon themet
   icon_themes   Vertical title bars in panest   vertical_dockwidget_titlebarss   Vertical tabs in panest   vertical_tabss   Animated toolbars and panest   animated_dockss   Tear off menust   tear_off_menuss4   Set this to detach any<br> menu from the main windows   Custom margin for panes:t   use_custom_marginR  t   pixelst   custom_margini   s   Cursor blinking:t   use_custom_cursor_blinkingt   mst   custom_cursor_blinkingR#  R$  i  R%  id   i   s
   Status bars   Show status bart   show_status_bars   Show memory usage everys   memory_usage/enables    mss   memory_usage/timeouti@B s   Show CPU usage everys   cpu_usage/enables   cpu_usage/timeouts   Screen resolutions   Configuration for high DPI screens<br><br>Please see <a href="{0}">{0}</a><> for more information about these options (in English).t   Normalt   normal_screen_resolutionR   s   Enable auto high DPI scalingt   high_dpi_scalings   Set this for high DPI displayss   Set a custom high DPI scalingt   high_dpi_custom_scale_factors>   Set this for high DPI displays when auto scaling does not workt   high_dpi_custom_scale_factorssZ   Enter values for different screens separated by semicolons ';', float values are supportedR   R   s(   [0-9]+(?:\.[0-9]*)(;[0-9]+(?:\.[0-9]*))*R=   R   R  s   Plain text fontR@  RA  t	   rich_fonts   Rich text fontt   Fontsi   t
   Appearances   Advanced Settings(B   Rr   Rs   RS  R   R   R'   R(   R   t   sortedR6  R   R   t   zipt   lowerR*   R?   R   RJ   R   R   Rx   R   R   Rz   Ry   R$   R{   R"   t   keysRJ  R0   Rd   t   default_styleR'  R   R}   R   R  RB   R&   t   cursorFlashTimet   setColumnStretcht
   mem_statust   toolTipt   is_supportedt
   cpu_statusR   R   RV  t   HDPI_QT_PAGER   R   R  R   R  t   setDisabledRC  R   t   MonospacedFontsR>  R   R?  R   R#   t   addTabRI  (A   R<   t   newcbt   general_groupt	   languagesR5  t   valt   language_choicest   language_combot   opengl_optionst   ct   opengl_choicest   opengl_combot   single_instance_boxt
   prompt_boxt   popup_console_boxt   check_updatest   comboboxes_advanced_layoutt   cbs_adv_gridt   general_layoutt   interface_groupt   txtt   stylest   styleR3  t   style_combot   themest   themet   icon_choicest   icons_combot   vertdock_boxt   verttabs_boxt   animated_boxt   tear_off_boxt
   margin_boxt   margin_spint
   cursor_boxt   cursor_spint   margins_cursor_layoutt   comboboxes_layoutt
   cbs_layoutt   interface_layoutt
   sbar_groupRz  t
   memory_boxt   memory_spint   cpu_boxt   cpu_spint   status_bar_ot   cpu_memory_layoutt   sbar_layoutt   screen_resolution_groupt   screen_resolution_bgt   screen_resolution_labelt   normal_radiot   auto_scale_radiot   custom_scaling_radiot   custom_scaling_editt   screen_resolution_layoutt   screen_resolution_inner_layoutt   plain_text_fontt   rich_text_fontt   fonts_groupt   fonts_layoutt   tabsR   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRM   Y  s   	+		%							+..																																c         C   s   t  d |  S(   s"   Return global font used in Spyder.R=   (   R,   (   R<   R=   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR,   f  s    c         C   sE   t  | d | |  j j |  j j } x | D] } | j   q- Wd S(   s   Set global font used in Spyder.R=   N(   R-   Rd   t
   widgetlistt   thirdparty_pluginst   update_font(   R<   R   R=   t   pluginsRL  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR-   j  s    c         C   s   |  j  j   d  S(   N(   Rd   R   (   R<   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR   r  s    c         C   s   x] t  |  j j    D]F \ } \ } } | d k r | j | j    } t | t  } Pq q Wy t |  |  j d |  WnF t	 k
 r t
 j |  t d  t d  j t j    t
 j  d SXd S(   sX   
        Get selected language setting and save to language configuration file.
        Re   t   Errorsk   We're sorry but the following error occurred while trying to set your selected language:<br><br><tt>{}</tt>N(   R   R   R   R   R   R   R1   R+   R?   t	   ExceptionR   R   R'   RV  t	   tracebackt
   format_excRi   (   R<   R   R=   R   R   R>   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRY   u  s    (

(
   RC   RD   R;   R'   RR  RM   R,   R-   R   RY   (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRa  U  s   	 			t   ColorSchemeConfigPagec           B   s   e  Z d  Z e d  Z d   Z d   Z e d    Z e d    Z	 e d    Z
 d   Z d   Z d d d	  Z d
   Z d   Z d   Z d   Z e   d    Z RS(   t   color_schemess   Syntax coloringc         C   s?  t  j d  |  _ |  j d  } y | j | j d   Wn t k
 rN n X|  j d g   } t t d   } t	 t d   } t	 t d   } t	 t d   |  _
 t |   |  _ t |   |  _ t	 t d	   |  _ t d
 |  d |  j  |  _ i  |  _ | j t  |  j t d  d g d  } | j |  _ t   } t   } | j |  t   }	 |	 j | j  |	 j | j  t   }
 |
 j |	  |
 j |  |
 j |  j  |
 j |  j
  |
 j d  |
 j |  t   } | j |  j  t   } | j |
  | j |  | j |  t t d   } | j |  | j |  |  j |  | j  j! |  j"  | j  j! |  j#  |  j j  j! |  j$  |  j
 j  j! |  j%  |  j j& j! |  j'  |  j j& j! |  j(  x | D] } |  j j) |  qWx$ | D] } |  j j) | d t qW|  j*   |  j'   d  S(   Nt
   eyedroppert   namesu   Customt   custom_namess   Here you can select the color scheme used in the Editor and all other Spyder plugins.<br><br>You can also edit the color schemes provided by Spyder or create your own ones by using the options provided below.<br>s   Edit selecteds   Create new schemet   Deletet   ResetRL   t   stacks   Scheme:R  t   selectedi   s   Manage color schemest   custom(   R  R  (+   Rr   Rs   RS  RB   t   popR   t
   ValueErrorR   R'   R   t   delete_buttonR8   t   preview_editorR!   t   stacked_widgett   reset_buttont   SchemeEditort   scheme_editor_dialogt   scheme_choices_dictR   R   R6  R   t   schemes_comboboxR$   Rx   R   R   Rz   Ry   R   R{   R|   R}   t   create_new_schemet   edit_schemet   reset_to_defaultt   delete_schemeR   t   update_previewt   update_buttonst   add_color_scheme_stackt   update_combobox(   R<   R  R  t   about_labelt   edit_buttonRF  t   schemes_combobox_widgetR   t   manage_layoutt   combo_layoutt   buttons_layoutt   preview_layoutt   buttons_preview_layoutt   manage_groupR4  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRM     sr    								
c         C   s   |  j  d |  j  |  j j j d g  |  j j d  k	 rT |  j j j d g  n  |  j j d  k	 r |  j j j d g  n  |  j j d  k	 r |  j j j d g  n  |  j	   |  j
   d  S(   NR  t   color_scheme_name(   R?   t   current_schemeRd   t   editorRN  t
   ipyconsoleRF   t
   historylogt   helpR  R  (   R<   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR     s    
c         C   s   |  j  j   S(   N(   R  t   currentText(   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   current_scheme_name  s    c         C   s   |  j  |  j S(   N(   R  R  (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    c         C   s   |  j  j   S(   N(   R  R   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   current_scheme_index  s    c         C   sT  |  j  } |  j j t  |  j d  } y | j | j d   Wn t k
 rU n X|  j d g   } x1 | | D]% } | |  j |  j d j	 |   <qs W| r | d g | } n | } |  j } | j   xB | D]: } | d k r q n  | j |  j d j	 |   |  q W| r0| j t |   n  |  j j t  |  j j |  d S(   s    Recreates the combobox contents.R  u   CustomR  s   {0}/nameN(   R  R  t   blockSignalsR   RB   R  R   R  R  RV  RF   t   clearR0  R2  RU  RJ   R   (   R<   R   R  R  t   nR3  R   R4  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s.    	#	
&c         C   sw   |  j  } |  j d  } y | j | j d   Wn t k
 rE n X| | k } |  j j |  |  j j |  d S(   s6   Updates the enable status of delete and reset buttons.R  u   CustomN(   R  RB   R  R   R  R  R   R  (   R<   R  R  t   delete_enabled(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    	c         C   s   d } t  j d d  } | d k r0 |  j } n  |  j j d t d t d t d t   d | d	 |  |  j j	 |  |  j j
 d
  d S(   s   
        Update the color scheme of the preview editor and adds text.

        Note
        ----
        'index' is needed, because this is triggered by a signal that sends
        the selected index.
        sy   """A string"""

# A comment

# %% A cell

class Foo(object):
    def __init__(self):
        bar = 42
        print(bar)
R  t   blank_spacest   linenumberst   markerst   tab_modeR   t   show_blankst   color_schemet   PythonN(   R.   R@   RF   R  R  t   setup_editorR   RJ   R,   t   set_textt   set_language(   R<   R   t   scheme_nameR   R  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR  )  s    		c         C   s  |  j  d  } |  j  d g   } t |  d } g  | D] } t | j d  d  ^ q8 } x8 t t |   D]$ } | | | k rp | d } Pqp qp Wd j | d  } | j |  |  j d |  xW t j	 D]L } d j | |  }	 d j |  j
 |  }
 |  j  |
  } |  j |	 |  q W|  j d j |  |  |  j } | j | d	 t | j |  |  j   | j   r| j   }	 |  j d j |  |	  | | j |  d } |  j   |  j j |  n* | j |  |  j d |  | j |  d
 S(   s.   Creates a new color scheme with a custom name.R  R  i   t   -is
   custom-{0}s   {0}/{1}s   {0}/nameR  N(   RB   RU  R  t   splitR   RV  t   appendR?   R4   t   COLOR_SCHEME_KEYSR  R  R  R   t
   set_schemeRN   t   exec_t   get_scheme_nameR   R  R  R   t   removet   delete_color_scheme_stack(   R<   R  R  t   counterR  t   custom_indext   it   custom_nameR5  R4  t   default_nameR=   t   dlgR   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR  H  s<    ,
	

c         C   s   |  j  } | j |  j  | j   r~ | j   } x7 | D]/ } d j |  } | | } |  j | |  q8 W|  j d d  n  d S(   s   Edit current scheme.s   temp/{0}R  t   tempN(   R  R  R  R  t   get_edited_color_schemeRV  R?   R  (   R<   R!  t   temporal_color_schemeR5  R=   R>   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR  u  s    	
c         C   s9  |  j  } t j |  t d  t d  t j t j B } | t j k r5|  j d  } |  j d  |  j j	 | j
 d   |  j d d  |  j d g   } | | k r | j |  n  |  j d |  x6 t j D]+ } d j | |  } t j |  j |  q Wt j |  j d j |   |  j   |  j   n  d	 S(
   s3   Deletes the currently selected custom color scheme.t   Warnings,   Are you sure you want to delete this scheme?R  t   spyderR  R  s   {0}/{1}s   {0}/nameN(   R  R   R   R'   RW  RX  RB   R  R  R   R   R?   R  R4   R  RV  R.   t   remove_optionR;   R  R  (   R<   R  R`  R  R  R5  R=   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s&    		
c         C   s   |  j  } | j |  d S(   sW   
        Set the current stack in the dialog to the scheme with 'scheme_name'.
        N(   R  R  (   R<   R  R!  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    	c         C   s   |  j  } |  j d  } | | k r| xH t j D]= } d j | |  } t j |  j |  } |  j | |  q. W|  j	   n  d S(   s1   Restore initial values for default color schemes.R  s   {0}/{1}N(
   R  RB   R4   R  RV  R.   t   get_defaultR;   R?   RN   (   R<   t   schemeR  R5  R=   R>   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    	N(   RC   RD   R;   R'   RR  RM   R   R   R  R  R  R  R  RF   R  R  R  R  R  R   R  (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s   	S		"		-			R  c           B   sM   e  Z d  Z d d d  Z d   Z d   Z d   Z e d  Z	 d   Z
 RS(   s   A color scheme editor dialog.c         C   s   t  t |   j |  | |  _ | |  _ g  |  _ i  |  _ i  |  _ d  |  _	 d  |  _
 t t j t j B } t   } | j |  j  | j |  |  j |  | j j |  j  | j j |  j  | j j |  j  d  S(   N(   t   superR  RH   RL   R  t   orderRG  t   scheme_name_textboxRF   t   last_edited_color_schemet   last_used_schemeR   Ri   Rk   R$   Rx   R{   R   R}   R   R#  R   R   (   R<   RL   R  R   R  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyRH     s     								c         C   s)   |  j  j |  j j |   | |  _ d S(   s'   Set the current stack by 'scheme_name'.N(   R  R   R+  R   R.  (   R<   R  (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    c         C   s   |  j  |  j j   S(   sk   
        Returns the edited scheme name, needed to update the combobox on
        scheme creation.
        (   R,  R.  R   (   R<   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s    c         C   s   i  } |  j  } x |  j | D]s } |  j | | } t |  d k rY | d j   } n- | d j   | d j   | d j   f } | | | <q W| S(   s   
        Get the values of the last edited color scheme to be used in an instant
        preview in the preview editor, without using `apply`.
        i   i    i   (   R.  RG  RU  R   R   (   R<   R  R  R5  R   R>   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR#    s    	c      	   C   s  t  d  d d d d d d d d	 g f t  d
  d d d d d d g f t  d  d d g f g } |  j } | j t  d  d j |   } i  |  j | <| j j t j t j	 B |  j
 t  d   t   } | j | j  | j | j  | j |  j | <| s| j j t  n  t   } | j |  t   } t   }	 xt |  D]\ }
 } | \ } } t   } xt |  D]t\ } } d j | |  } |  j j |  } t j | } t |  r?| j | | d t \ } } | j t j t j	 B | j | | d d  | j | | d d  | g |  j | | <q|| j | | d t \ } } } } | j t j t j	 B | j | | d d  | j | | d d  | j | | d d  | j | | d d  | | | g |  j | | <q|Wt |  } | j |  |
 d k r)| j |  qN|	 j |  qNW| j |	  | j |  t   } | j |  |  j j |  |  j j  |  d S(   s<   Add a stack for a given scheme and connects the CONF values.t   Textt   normalt   commentt   stringt   numbert   keywordt   builtint
   definitiont   instancet	   Highlightt   currentcellt   currentlinet
   occurrencet	   matched_pt   unmatched_pt	   ctrlclickt
   Backgroundt
   backgroundt	   sideareass   Scheme name:s   {0}/names   Color scheme editors   {0}/{1}R*  i   i    i   i   N(!   R'   RL   R  RV  RG  R   t   setAlignmentR   t
   AlignRightt   AlignVCenterRp   R   Rx   R   R,  R  R   R$   Rz   R1  R   RB   R4   R  R2   R+  R/  R   R{   R%   R  R+  R  (   R<   R  R  t   color_scheme_groupsRL   t	   line_editt   name_layoutt	   cs_layoutt   h_layoutt   v_layoutR   R   t
   group_nameR  t   group_layoutR   R5  R=   R>   R4  R   R   R   R   t	   group_boxt	   stackitem(    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    sv    							c         C   sR   |  j  |  |  j j   } |  j j |  |  j j |  } |  j j |  d S(   s%   Remove stack widget by 'scheme_name'.N(   R  R  R   t   removeWidgetR+  R   R  (   R<   R  R   R   (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR  R  s
    N(   RC   RD   RE   RF   RH   R  R  R#  RJ   R  R  (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyR    s   			X(Z   RE   t   os.patht   pathR  R  t   qtpyR    t   qtpy.compatR   R   R   R   t   qtpy.QtCoreR   R   R   R   R	   t
   qtpy.QtGuiR
   R   t   qtpy.QtWidgetsR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   t   spyder.config.baseR'   R(   R)   R*   R+   t   spyder.config.guiR,   R-   t   spyder.config.mainR.   t   spyder.config.userR/   t   spyder.config.utilsR0   t   spyder.py3compatR1   R2   t   spyder.utilsR3   Rr   R4   t   spyder.utils.miscR5   t   spyder.widgets.colorsR6   t   spyder.widgets.comboboxesR7   t$   spyder.widgets.sourcecode.codeeditorR8   R  t   objectR9   RG   Ra   R   RK  RQ  Ra  R  R  (    (    (    s:   lib/python2.7/site-packages/spyder/plugins/configdialog.pyt   <module>	   sB   "(
(G  6 6 .