ó
È”Mc           @   sº   d  d l  m Z d  d l m Z 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 Td  d l Z d  d l Z d  d l Z d	 e f d
 „  ƒ  YZ d S(   iÿÿÿÿ(   t   TextProgress(   t	   Interfacet   getScreenWidth(   t	   sizeToStrt   printColumns(   t   OPTIONALt   ALWAYS(   t   Fetcher(   t   Report(   t   *Nt   TextInterfacec           B   s›   e  Z d  „  Z e d „ Z d „  Z d „  Z d „  Z e d „ Z e d „ Z	 e d „ Z
 d „  Z d d e d	 „ Z e d
 „ Z d „  Z d e d „ Z RS(   c         C   s)   t  j |  | ƒ t ƒ  |  _ t |  _ d  S(   N(   R   t   __init__R    t	   _progresst   Falset   _activestatus(   t   selft   ctrl(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyR   #   s    c         C   s0   |  j  j | ƒ |  j  j t | t ƒ ƒ |  j  S(   N(   R   t	   setHasSubt   setFetcherModet
   isinstanceR   (   R   t   objt   hassub(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   getProgress(   s    c         C   s   |  j  S(   N(   R   (   R   R   (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   getSubProgress-   s    c         C   s7   |  j  r Hn	 t |  _  t j j | ƒ t j j ƒ  d  S(   N(   R   t   Truet   syst   stdoutt   writet   flush(   R   t   msg(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt
   showStatus0   s
    		c         C   s   |  j  r t |  _  Hn  d  S(   N(   R   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt
   hideStatus8   s    		c         C   s˜   |  j  ƒ  | r t d ƒ p% t d ƒ } y  t | | ƒ j ƒ  j ƒ  } Wn t t f k
 rc Ht SXH| r” t d ƒ j | ƒ o“ t d ƒ j | ƒ S| S(   Ns
   %s (Y/n): s
   %s (y/N): t   yest   no(	   R   t   _t	   raw_inputt   stript   lowert   KeyboardInterruptt   EOFErrorR   t
   startswith(   R   t   questiont   defaultt   maskt   res(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   askYesNo=   s    
 c         C   s›   |  j  ƒ  | r t d ƒ } n t d ƒ } y  t | | ƒ j ƒ  j ƒ  } Wn t t f k
 rf Ht SXH| r— t d ƒ j | ƒ o– t d ƒ j | ƒ S| S(   Ns   %s (Continue/cancel): s   %s (continue/Cancel): t   continuet   cancel(	   R   R"   R#   R$   R%   R&   R'   R   R(   (   R   R)   R*   R+   R,   (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   askContCancelK   s    
 c         C   s˜   |  j  ƒ  | r t d ƒ p% t d ƒ } y  t | | ƒ j ƒ  j ƒ  } Wn t t f k
 rc Ht SXH| r” t d ƒ j | ƒ o“ t d ƒ j | ƒ S| S(   Ns   %s (Ok/cancel): s   %s (ok/Cancel): t   okR/   (	   R   R"   R#   R$   R%   R&   R'   R   R(   (   R   R)   R*   R+   R,   (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   askOkCancel\   s    
 c         C   s   |  j  | d t ƒS(   Nt   confirm(   t   showChangeSetR   (   R   t	   changeset(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   confirmChangeSetj   s    c         C   sf   H| r | GHn  | d 7} y( | r1 t  | ƒ } n t j | ƒ } Wn t t f k
 r` d } n XH| S(   Ns   : t    (   R#   t   getpassR&   R'   (   R   t   promptt   messaget
   widthcharst   echoR,   (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   askInputm   s    

c         C   s3   |  j  j ƒ  t j |  | | ƒ } |  j  j ƒ  | S(   N(   R   t   lockR   t   askPasswordt   unlock(   R   t   locationt   cachingt   passwd(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyR?   |   s    c         C   sN   |  j  ƒ  Ht d ƒ GHHx | D] } d Gt | ƒ GHq WH|  j t d ƒ t ƒ S(   Ns7   Insert one or more of the following removable channels:s      s	   Continue?(   R   R"   t   strR2   R   (   R   t   channelst   channel(    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   insertRemovableChannels‚   s    
c            s”  |  j  ƒ  t | ƒ ‰ ˆ j ƒ  t j d t ƒ sq t ƒ  ‰ t j d t | ƒ d k ƒ ‰ d  ‡ ‡ f d † } n$ ‡ f d †  ‰  t	 ‡  ‡ f d † } H| rÂ t
 d ƒ t | ƒ GH| | t ƒ Hn  ˆ j j ƒ  } | rú t
 d ƒ t | ƒ GH| | ƒ Hn  ˆ j j ƒ  } | r2t
 d	 ƒ t | ƒ GH| | ƒ Hn  ˆ j j ƒ  } | rjt
 d
 ƒ t | ƒ GH| | ƒ Hn  ˆ j j ƒ  } | r¢t
 d ƒ t | ƒ GH| | ƒ Hn  ˆ j ƒ  } ˆ j ƒ  ˆ j ƒ  } | rít j j t
 d ƒ t | ƒ ƒ n  | d k rt j j t
 d ƒ t | ƒ ƒ n9 | d k  rU| d 9} t j j t
 d ƒ t | ƒ ƒ n  | sa| rtt j j d ƒ n  | r|  j t
 d ƒ t	 ƒ St	 S(   Ns   explain-changesetss   text-hide-versioni(   c            sI   ˆ r% g  |  D] } | j  ^ q }  n  |  j ƒ  t |  d d d ˆ  ƒd  S(   Nt   indenti   t   width(   t   namet   sortR   (   t   pkgst   showrelationst   x(   t   screenwidtht   hideversion(    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   showPackages—   s    
c            sŠ   |  ˆ  j  k s- |  ˆ  j k s- |  ˆ  j k r7 t d ƒ S|  ˆ  j k rP t d ƒ S|  ˆ  j k ri t d ƒ S|  ˆ  j k r‚ t d ƒ Sd Sd  S(   Ns   (installed)s
   (upgraded)s	   (removed)s   (downgraded)R7   (   t
   installingt	   upgradingt   downgradingR"   t   upgradedt   removedt
   downgraded(   t   pkg(   t   report(    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   being   s    



c            s­  |  j  ƒ  xœ|  D]”} d G| GH| r | ˆ j k rr d Gt d ƒ GHx+ ˆ j | D] } d G| Gˆ  | ƒ GHqR Wn  | ˆ j k r¾ d Gt d ƒ GHx+ ˆ j | D] } d G| Gˆ  | ƒ GHqž Wn  | ˆ j k r
d Gt d ƒ GHx+ ˆ j | D] } d G| Gˆ  | ƒ GHqê Wn  | ˆ j k rVd Gt d ƒ GHx+ ˆ j | D] } d G| Gˆ  | ƒ GHq6Wn  | ˆ j k r¥d Gt d ƒ GHx+ ˆ j | D] } d G| Gˆ  | ƒ GHq‚Wq¥q q Wd  S(	   Nt    s      s	   Upgrades:s        s   Downgrades:s	   Requires:s   Required By:s
   Conflicts:(   RK   RS   R"   RT   t   requirest
   requiredbyt	   conflicts(   RL   RM   RX   t   upgpkgt   dwnpkgt   reqpkgt   cnfpkg(   RZ   RY   (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyRQ   ª   s0    
	s   Kept packages (%d):s   Upgrading packages (%d):s   Downgrading packages (%d):s   Installing packages (%d):s   Removing packages (%d):s    %s of package files are needed. i    s   %s will be used.iÿÿÿÿs   %s will be freed.s   

s   Confirm changes?(   R   R   t   computet   sysconft   getR   R   t   lent   NoneR   R"   RS   t   keysRT   RR   RV   t   getDownloadSizet   getInstallSizet   getRemoveSizeR   R   R   R   R-   (   R   R5   t   keepR3   RQ   RL   t   dsizet   size(    (   RZ   RY   RP   RO   sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyR4   Ž   sb    

	



#
#N(   t   __name__t
   __module__R   R   R   R   R   R   R-   R0   R2   R6   Rg   R   R=   R   R?   RG   R4   (    (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyR
   !   s   						(   t   smart.interfaces.text.progressR    t   smart.interfaceR   R   t   smart.util.strtoolsR   R   t   smart.constR   R   t   smart.fetcherR   t   smart.reportR   t   smartR8   R   t   osR
   (    (    (    sC   /usr/lib/python2.7/dist-packages/smart/interfaces/text/interface.pyt   <module>   s   
