
RLc           @   s  d  d k  Z  e  i d d e  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l	 Z	 d  d k
 l
 Z d e f d     YZ d e f d	     YZ d
 e f d     YZ d e i f d     YZ e d j o d  d k l Z d Z e d e  Z e e e i i    Z d GHd i g  Z e i   D] Z e d e q<[  GHd GHe i d  e i   GHd GHe i  d  e i   GHn d S(   iNt   ignores   apt API not stable yet(   t   ElementTree(   t   gettextt   LanguagePackageStatusc           B   s   e  Z d    Z RS(   c         C   s(   | |  _  t |  _ t |  _ t |  _ d  S(   N(   t   pkgname_templatet   Falset	   availablet	   installedt   doChange(   t   selft   pkg_template(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   __init__   s    			(   t   __name__t
   __module__R   (    (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR      s   t   LanguageInformationc           B   sV   e  Z d    Z e d    Z e d    Z e d    Z e d    Z d   Z RS(   c         C   sk   d  |  _ d  |  _ h  |  _ t d  |  i d <t d  |  i d <t d  |  i d <t d  |  i d <d  S(	   Ns   language-pack-%st   languagePacks   language-support-writing-%st   languageSupportWritingAidss   language-support-input-%st   languageSupportInputMethodss   language-support-fonts-%st   languageSupportFonts(   t   Nonet   languaget   languageCodet   languagePkgListR   (   R	   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR      s    			c         C   s   |  i  o |  i o t St S(   sK    returns True if only parts of the language support packages are installed (   t   notInstalledt   fullInstalledt   TrueR   (   R	   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   inconsistent'   s     c         C   s^   xW |  i  i   D]F } | i p q n | i o | i p | i o | i p t Sq Wt S(   sM    return True if all of the available language support packages are installed (   R   t   valuesR   R   R   R   R   (   R	   t   pkg(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR   ,   s     
 * 	c         C   s^   xW |  i  i   D]F } | i p q n | i o | i p | i o | i p t Sq Wt S(   sN    return True if none of the available language support packages are installed (   R   R   R   R   R   R   R   (   R	   R   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR   3   s     
 * 	c         C   s-   x& |  i  i   D] } | i o t Sq Wt S(   sM    returns true if anything in the state of the language packs/support changes (   R   R   R   R   R   (   R	   R   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   changes:   s
     
 	c         C   s   d |  i  |  i f S(   Ns   %s (%s)(   R   R   (   R	   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   __str__@   s    (	   R   R   R   t   propertyR   R   R   R   R   (    (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR      s   	t   ExceptionPkgCacheBrokenc           B   s   e  Z RS(    (   R   R   (    (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR    D   s   t   LanguageSelectorPkgCachec           B   sq   e  Z d  Z d Z d Z d   Z e d    Z d   Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z RS(   s+   /usr/share/language-selector/data/blacklists1   /usr/share/language-selector/data/langcode2locales-   /usr/share/language-selector/data/pkg_dependsc         C   s  t  i i |  |  |  i i d j o t    n | |  _ g  |  _ g  |  _ h  |  _	 h  |  _
 h  |  _ h  |  _ h  } g  } xD t |  i  D]3 } | i   } | i d  p | i |  q q Wx t |  i  D]n } yB | i   } d | j o | i d  \ } } n | } | } Wn t j
 o
 q n X| |  i	 | <q Wxt |  i  D]} | i d  o qWn yH | i   } | i d  d j o wWn | i d  \ } }	 }
 } Wn t j
 o
 qWn X| d j o |	 d j o |
 | | <qW| d j o |	 d j o d |	 j o | |  i j o g  |  i | <n x |	 i d  D]] } | |  i j o g  |  i | <n |  i | i d |
 d | f  |  i | i |  qUWq|	 |  i j o g  |  i |	 <n |  i |	 i d |
 d | f  qWqWWx|  i   D]} | | j o qn xt| i   D]f} | i |  oP| i d	  o?| i | d  } | d
 j ob xd d g D]M } | |  i
 j o g  |  i
 | <n |  i
 | i d | | d | f  qWq| |  i	 i   j oK | |  i
 j o g  |  i
 | <n |  i
 | i d | | d | f  qxZ|  i	 i   D]E} d | j p d | j o%d | j o | i d  \ } } n d } | i d  \ } } | d | | i   f d | | i   f d | | f d | | f d | d | d | | i   | f d | | i   | f g j oY |  i	 | } | |  i
 j o g  |  i
 | <n |  i
 | i d | | d | f  PqqRqRWq9q9WqWd  S(   Ni    t   #t   :t   trt    t   wat   |s   %ss   -baset   zhs   zh-hanss   zh-hantt   _t   @s   %s-%ss   %s%ss   %s-latns   %slatns   %s-%s-%ss   %s%s%s(   t   aptt   CacheR   t	   _depcachet   BrokenCountR    t   _localeinfot   to_instt   to_rmt   langpack_localest   pkg_translationst   pkg_writingt	   multilangt   opent	   BLACKLISTt   stript
   startswitht   appendt   LANGCODE_TO_LOCALEt   rstript   splitt
   ValueErrort   PACKAGE_DEPENDSt   findt   keyst   endswitht   replaceR   t   lower(   R	   t
   localeinfot   progresst   filter_listt	   blacklistt   lt   pkgcodet   localet   ct   lct   kt   vt   itemt   xt   langcodet   variantt   lcodet   ccode(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR   M   s    							  
  "*  ! .*  &c         C   s   x |  i  i D] } x | i D]v } | i d  i d  o q n | i d  i d  o q n | i d j o q n | i o | i o t Sq Wq Wt	 S(   s,    verify that a network package lists exists R%   s   cdrom:s   http://security.ubuntu.coms   Debian Package Index(
   t   _listt   Listt
   IndexFilest
   ArchiveURIR9   t   Labelt   Existst   HasPackagesR   R   (   R	   t	   metaindext	   indexfile(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   havePackageLists   s     
 c         C   s   |  i  i   d S(   s    clear the selections N(   R-   t   Init(   R	   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   clear   s    c         C   ss   g  } g  } xZ |  i    D]L } | i p
 | i o | i | i  n | i o | i | i  q q W| | f S(   N(   t
   getChangest   markedInstallt   markedUpgradeR:   t   namet   markedDelete(   R	   R0   R1   R   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   getChangesList   s     
c         C   s&   d | d | d | d | g } | S(   s>    helper that returns the list of needed pkgs for the language s   language-support-input-%ss   language-support-writing-%ss   language-support-fonts-%ss   language-pack-%s(    (   R	   R   t   pkg_list(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   _getPkgList   s
    c   
      C   s  x} | i  i   D]l } | i o\ yB | i o |  | i | i i   n |  | i | i i   Wq| t j
 o q| Xq q W| i  d } | i o | i p | i	 o | i o | i o | i |  i
 j o x |  i
 | i D] \ } } | |  j o |  | i p |  | i p |  | i oZ | |  j oM |  | i o |  | i o |  | i p |  | i o |  | i   q q Wq=n | i o | i p | i o | i o | i |  i
 j on xk |  i
 | i D]U \ } } | |  j o< |  | i p |  | i p |  | i o |  | i   qqWq=n | i  d } | i o | i p | i	 o| i o| i o| i |  i j olxi|  i | i D]S\ } } | |  j o qn d | j o x#| i d  D] } | |  j ow |  | i p |  | i p |  | i oM |  | i o |  | i o |  | i p |  | i o |  | i   qqWq| |  j ow |  | i p |  | i p |  | i oM |  | i o |  | i o |  | i p |  | i o |  | i   qqWqn| i o | i p | i o| i o| i |  i j ox|  i | i D]\ } } | |  j o qOn d } d } | |  i j oz xw |  i | D]d }	 d |	 } | |  j oG |  | i p |  | i p |  | i o |  | i o | d } qqWn d | j or xo | i d  D]Z } | |  j oG |  | i p |  | i p |  | i o |  | i o | d } q"q"Wn | d j oI | d j o< |  | i p |  | i p |  | i o |  | i   qOqOWqn d S(   sA    change the status of the support details (fonts, input methods) R   R   R'   i    s   language-support-writing-%si   N(   R   R   R   R   R   R   t
   markDeletet   markInstallt   SystemErrorR   R3   t   isInstalledRc   Rd   Rf   R4   R=   R5   (
   R	   t   liRP   R   t   translationt   pull_pkgt   pt   lcountt   pcountRI   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   tryChangeDetails   s     

4 * 4  *  
 c      	   C   s   g  } x |  i  |  D] } | |  j on y |  | i   | i |  Wn t j
 o n Xy |  | i   | i |  Wq t j
 o q Xq q Wd S(   s%    mark the given language for install N(   Ri   Rk   R:   Rl   (   R	   R   R0   Re   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   tryInstallLanguageL  s     c         C   sm   g  } x` |  i  |  D]O } | |  j o< y" |  | i t  | i |  Wqe t j
 o qe Xq q Wd S(   s$    mark the given language for remove N(   Ri   Rj   R   R:   Rl   (   R	   R   R1   Re   (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   tryRemoveLanguage\  s     c         C   s   g  } x |  i  i i   D] \ } } | d j o q n t   } | | _ | | _ xQ | i i   D]@ } | i | } | |  j | _	 | i	 o |  | i
 | _ qd qd Wt t d   | i i     d j o | i |  q q W| S(   s5    returns a list with language packs/support packages R(   c         S   s   |  i  S(    (   R   (   t   s(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   <lambda>v  s    i    (   R/   t   _langt   itemsR   R   R   R   R   R   R   Rm   R   t   lent   filterR:   (   R	   t   rest   codet   langRn   t   langpkg_statust   pkgname(    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   getLanguageInformationh  s"     			 
((   R   R   R7   R;   R?   R   R   R_   Ra   Rg   Ri   Rt   Ru   Rv   R   (    (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyR!   G   s   	l		
		i		t   __main__(   t
   LocaleInfos   /usr/share/language-selectort   languagelists   available language informations   , s   %ss   Trying to install 'zh'R(   s   Trying to remove it again(!   t   warningst   filterwarningst   FutureWarningR+   t   apt_pkgt   ost   os.patht   macrost   xml.etree.ElementTreeR   R   R)   t   objectR   R   t	   ExceptionR    R,   R!   R   R   t   datadirRn   RF   t
   OpProgressRM   t   joint   _[1]R   RQ   Ru   Rg   Rv   (    (    (    s>   /usr/lib/python2.6/dist-packages/LanguageSelector/LangCache.pyt   <module>   s4   	- 53