ó
çÞMc           @   sÎ   d  d l  Td e f d „  ƒ  YZ d e e j f d „  ƒ  YZ e d k rÊ e d ƒ Z e j	 d e
 e ƒ GHe j	 d e
 d	 g ƒ GHe j	 d
 e
 d g ƒ GHe j	 d
 e
 d d g ƒ GHe j	 d
 e
 d g ƒ GHn  d S(   iÿÿÿÿ(   t   *t   SoftwareIndexBrokenc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyR      s    t   CheckLanguageSupportc           B   s5   e  Z d d  „ Z d d „ Z d e d e d „ Z RS(   c         C   sž   t  j |  | ƒ | d  k r. t j ƒ  |  _ n	 | |  _ t d | ƒ |  _ t j	 j
 | d d ƒ |  _ t j	 j
 | d d ƒ |  _ t j	 j
 | d d ƒ |  _ d  S(   Nt   languagelistt   datat	   blacklistt   langcode2localet   pkg_depends(   t   LanguageSelectorBaset   __init__t   Nonet   aptt   Cachet   _cachet
   LocaleInfot   _localeinfot   ost   patht   joint	   BLACKLISTt   LANGCODE_TO_LOCALEt   PACKAGE_DEPENDS(   t   selft   datadirt   cache(    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyR      s    	c         C   s  | sj d | } | |  j  k rj |  j  | j rT |  j  | j rT |  j j | ƒ qg |  j j | ƒ qj n  | |  j k ríxq|  j | D]_\ } } | r/| | k ræ| |  j  k ræ| |  j  k ræ|  j  | j rö |  j  | j rö |  j  | j s|  j  | j r|  j j | ƒ q,|  j j | ƒ qæq‡ | |  j  k r‡ |  j  | j sn|  j  | j sn|  j  | j r‡ | |  j  k r‡ |  j  | j r°|  j  | j r°|  j  | j sÀ|  j  | j rÓ|  j j | ƒ qæ|  j j | ƒ q‡ q‡ Wn  | |  j	 k r	| |  j
 k r	xû|  j	 | D]é\ } } d | k r£xÎ| j d ƒ D][} | rä| | k rœ| |  j  k rœ| |  j  k rœ|  j  | j rª|  j  | j rª|  j  | j sº|  j  | j rÍ|  j j | ƒ n |  j j | ƒ PqœqA| |  j  k rA|  j  | j s#|  j  | j s#|  j  | j rA| |  j  k rA|  j  | j re|  j  | j re|  j  | j su|  j  | j rˆ|  j j | ƒ n |  j j | ƒ PqAqAWq| r?| | k r| |  j  k r| |  j  k r|  j  | j r|  j  | j r|  j  | j s|  j  | j r)|  j j | ƒ q<|  j j | ƒ qq| d k sŠ| |  j  k r|  j  | j sŠ|  j  | j sŠ|  j  | j r| |  j  k r|  j  | j rÌ|  j  | j rÌ|  j  | j sÜ|  j  | j rï|  j j | ƒ q|  j j | ƒ qqWn  d S(   s  
        Returns a list of uninstalled translation and/or writing aid packages.
        pkgcode = language code as used in the language-pack packagenames.
        If the list 'packages' is supplied, only check for extra translation and/or writing
        aid packages for that given list of packages.
        Otherwise check the full list.
        This function is to be called from getMissingPackages().
        s   language-pack-%st   |t    N(   R   t   is_installedt   marked_installt   missingt   addt	   installedt   pkg_translationst   marked_upgradet   marked_deletet   pkg_writingt   system_pkgcodet   split(   R   t   pkgcodet   packagest   pkgt   translationt   pull_pkgt   p(    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyt   findPackages   sœ    	
c         C   s^  |  j  j d k r t ‚ n  i  |  _ i  |  _ i  |  _ i  } g  } g  } t ƒ  |  _ t ƒ  |  _ d |  _	 xB t
 |  j ƒ D]1 } | j ƒ  } | j d ƒ sy | j | ƒ qy qy Wx{ t
 |  j ƒ D]j } y@ | j ƒ  } d | k r÷ | j d ƒ \ }	 }
 n | }	 | }
 Wn t k
 rq¾ n X|	 |  j |
 <q¾ Wxtt
 |  j ƒ D]c} | j d ƒ rWq<n  yF | j ƒ  } | j d ƒ d k rw<n  | j d ƒ \ } } } } Wn t k
 r³q<n X| d k rÙ| d k rÙ| | | <q<| d k r<| d k r<d	 | k r[xœ | j d	 ƒ D]G } | |  j k r2g  |  j | <n  |  j | j d
 | d
 | f ƒ qWqŸ| |  j k rzg  |  j | <n  |  j | j d
 | d
 | f ƒ q<q<WxŒ|  j  j ƒ  D]{} | | k rËq³n  x`| j ƒ  D]R} | j | ƒ rØ| j d ƒ rØ| j | d ƒ } | d k rzx	d d g D]K } | |  j k rMg  |  j | <n  |  j | j d
 | | d
 | f ƒ q(Wq*| |  j j ƒ  k r×| |  j k r®g  |  j | <n  |  j | j d
 | | d
 | f ƒ q*xP|  j j ƒ  D]<}
 d |
 k sd |
 k rçd |
 k r)|
 j d ƒ \ }
 } n d } |
 j d ƒ \ } } | d | | j ƒ  f d | | j ƒ  f d | | f d | | f d | d | d | | j ƒ  | f d | | j ƒ  | f g k r#|  j |
 } | |  j k rög  |  j | <n  |  j | j d
 | | d
 | f ƒ Pq#qçqçWqØqØWq³W| rd }	 | d k sV| d k rb| |  _	 nu | |  j k r„|  j | |  _	 nS d | k r©| j d ƒ d |  _	 n. d | k rÎ| j d ƒ d |  _	 n	 | |  _	 | ró|  j |  j	 | ƒ q8|  j |  j	 ƒ n2| rÙg  } xŠ |  j  j ƒ  D]y } | | k r:q"n  | j d ƒ r"| j d ƒ r"| j d ƒ r"| j d ƒ r"| j d d ƒ }	 | j |	 ƒ q"q"Wx–| D], }	 | rÅ|  j |	 | ƒ q¦|  j |	 ƒ q¦Wn_|  j j ƒ  d } | d k rd } n  | |  j k r#|  j | |  _	 n  g  } xª |  j  j ƒ  D]™ } | | k rQq9n  | j d ƒ r9| j d ƒ r9| j d ƒ r9| j d ƒ r9|  j  | j s°|  j  | j r9| j d d ƒ }	 | j |	 ƒ q9q9W|  j	 r|  j	 | k r| j |  j	 ƒ n  x4 | D], }	 | r'|  j |	 | ƒ q|  j |	 ƒ qW| rQ|  j |  j B} n	 |  j } | S(   s‡  
        Build a list of translation packages available in the archive,
        then call findPackages() to find out which packages are not
        installed yet, depending on the languages and packages installed
        on the system.
        If 'language' is supplied, only check for that language.
        If the list 'packages' is supplied, only check for that list of packages.
        i    R   t   #t   :t   trt   wat   fnt   imR   s   %ss   -baset   zhs   zh-hanss   zh-hantt   _t   @s   %s-%ss   %s%ss   %s-latns   %slatns   %s-%s-%ss   %s%s%ss   language-pack-s   language-pack-gnomes   language-pack-kdet   en_US(   R1   R2   (   R2   s   fnR4   N(    R   t   broken_countR   t   langpack_localesR"   R%   t   setR   R!   R&   t   openR   t   stript
   startswitht   appendR   t   rstripR'   t
   ValueErrorR   t   findt   keyst   endswitht   replacet   valuest   lowerR.   R   t   getSystemDefaultLanguageR   R   R   (   R   t   languaget   allR)   t   showInstalledt   filter_listR   t   showt   lR(   t   localet   ct   lct   kt   vt   itemt   xt   langcodet   variantt   lcodet   ccodet   pkgcodest   system_langcode(    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyt   getMissingPackagesz   s   						
))-)&				N(   R   R   R   R   R.   t   FalseR\   (    (    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyR      s   gt   __main__t   .t   ars   libreoffice-commont   fit   firefoxt   thunderbirdN(   t   LanguageSelectort	   ExceptionR   R
   R   R   R   R   t   clR\   t   TrueR   (    (    (    sI   /usr/lib/python2.7/dist-packages/LanguageSelector/CheckLanguageSupport.pyt   <module>   s   
ÿ /