
2Nc           @   s  d  d l  Z  e  j d d e  d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 d  d l m Z d e f d     YZ d e f d	     YZ d
 e f d     YZ d e j f d     YZ e d k rd  d l m Z d Z e d e  Z e e e j j    Z d GHd j g  e j   D] Z d e ^ qC GHd GHe j d  e j   GHd GHe j  d  e j   GHn  d S(   iNt   ignores   apt API not stable yet(   t   ElementTree(   t   gettextt   LanguagePackageStatusc           B   s   e  Z d    Z d   Z RS(   c         C   s1   | |  _  | |  _ t |  _ t |  _ t |  _ d  S(   N(   t   languageCodet   pkgname_templatet   Falset	   availablet	   installedt   doChange(   t   selfR   t   pkg_template(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   __init__   s
    				c         C   s8   d |  j  |  j t |  j  t |  j  t |  j  f S(   NsZ   LanguagePackageStatus(langcode: %s, pkgname %s, available: %s, installed: %s, doChange: %s(   R   R   t   strR   R   R	   (   R
   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   __str__   s    (   t   __name__t
   __module__R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR      s   	t   LanguageInformationc           B   s\   e  Z d d d   Z e d    Z e d    Z e d    Z e d    Z d   Z	 RS(   c         C   s   | |  _  | |  _ i  |  _ t | d  |  j d <t t d  sT d t j d k r t | d  |  j d <t | d  |  j d	 <t | d
  |  j d <n  xO |  j j   D]> } | j | } | | k | _	 | j	 r | | j
 | _ q q Wd  S(   Ns   language-pack-%st   languagePackt   argvs   gnome-i    s   language-support-writing-%st   languageSupportWritingAidss   language-support-input-%st   languageSupportInputMethodss   language-support-fonts-%st   languageSupportFonts(   R   t   languaget   languagePkgListR   t   hasattrt   sysR   t
   itervaluesR   R   t   is_installedR   (   R
   t   cacheR   R   t   langpkg_statust   pkgname(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR      s    			#	c         C   s   |  j  r |  j r t St S(   sK    returns True if only parts of the language support packages are installed (   t   notInstalledt   fullInstalledt   TrueR   (   R
   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   inconsistent3   s     c         C   sW   xP |  j  j   D]? } | j s% q n  | j r8 | j pH | j oH | j s t Sq 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.7/dist-packages/LanguageSelector/LangCache.pyR!   8   s    	 & c         C   sW   xP |  j  j   D]? } | j s% q n  | j r9 | j pH | j oH | j s t Sq 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.7/dist-packages/LanguageSelector/LangCache.pyR    ?   s    	 & c         C   s+   x$ |  j  j   D] } | j r t Sq 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.7/dist-packages/LanguageSelector/LangCache.pyt   changesF   s    	 c         C   s   d |  j  |  j f S(   Ns   %s (%s)(   R   R   (   R
   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR   L   s    N(
   R   R   t   NoneR   t   propertyR#   R!   R    R&   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR      s   t   ExceptionPkgCacheBrokenc           B   s   e  Z RS(    (   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR)   P   s   t   LanguageSelectorPkgCachec           B   s   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 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   sy  t  j j |  |  |  j j d k r1 t    n  | |  _ g  |  _ g  |  _ i  |  _	 i  |  _
 i  |  _ i  |  _ i  } g  } xB t |  j  D]1 } | j   } | j d  s | j |  q q Wx{ t |  j  D]j } y@ | j   } d | k r
| j d  \ } } n | } | } Wn t k
 r-q n X| |  j	 | <q Wxt |  j  D]} | j d  rjqOn  yF | j   } | j d  d k rwOn  | j d  \ } }	 }
 } Wn t k
 rqOn X| d k r|	 d k r|
 | | <qO| d k rO|	 d k rOd	 |	 k r| |  j k r/g  |  j | <n  x |	 j d	  D][ } | |  j k rdg  |  j | <n  |  j | j d
 |
 d
 | f  |  j | j |  q?Wq|	 |  j k rg  |  j |	 <n  |  j |	 j d
 |
 d
 | f  qOqOWx|  j   D]{} | | k rqn  x`| j   D]R} | j |  r| j d  r| j | d  } | d k rx	d d g D]K } | |  j
 k rg  |  j
 | <n  |  j
 | j d
 | | d
 | f  qkWqm| |  j	 j   k r| |  j
 k rg  |  j
 | <n  |  j
 | j d
 | | d
 | f  qmxP|  j	 j   D]<} d | k sHd | k r*d | k rl| 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 rf|  j	 | } | |  j
 k r9g  |  j
 | <n  |  j
 | j d
 | | d
 | f  Pqfq*q*WqqWqWd  S(   Ni    t   #t   :t   trt   wat    t   fnt   imt   |s   %ss   -baset   zhs   zh-hanss   zh-hantt   _t   @s   %s-%ss   %s%ss   %s-latns   %slatns   %s-%s-%ss   %s%s%s(   R-   R.   (   R.   s   fnR1   (   t   aptt   CacheR   t	   _depcachet   broken_countR)   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.7/dist-packages/LanguageSelector/LangCache.pyR   Y   s    							
")-)&c         C   s   x |  j  j D] } xx | j D]m } | j d  j d  rA q n  | j d  j d  r_ q n  | j d k rt q n  | j r | j r t Sq 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   index_filest   archive_uriRD   t   labelt   existst   has_packagesR"   R   (   R
   t	   metaindext	   indexfile(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   havePackageLists   s    c         C   s   |  j  j   d S(   s    clear the selections N(   R8   t   init(   R
   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   clear   s    c         C   s   |  j    \ } } t S(   N(   t   getChangesListR"   (   R
   R;   R<   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   verify_no_unexpected_changes   s    c         C   sn   g  } g  } xU |  j    D]G } | j s1 | j rD | j | j  n  | j r | j | j  q q W| | f S(   N(   t   get_changest   marked_installt   marked_upgradeRE   t   namet   marked_delete(   R
   R;   R<   R%   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyRm      s    	c         C   s   d | g } | S(   s>    helper that returns the list of needed pkgs for the language s   language-pack-%s(    (   R
   R   t   pkg_list(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   _getPkgList   s    c         C   s   x | j  j   D] \ } } | j r ye | j | j } | j rR |  | j   n |  | j   | d k r |  j |  |  j	 |  n  Wq t
 k
 r t    q Xq q Wd S(   sA    change the status of the support details (fonts, input methods) R   N(   R   t	   iteritemsR	   R   R   R   t   mark_deletet   mark_installt%   _mark_additional_translation_packagest   _mark_additional_writing_aidst   SystemErrorR)   (   R
   t   lit   keyR[   R   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   tryChangeDetails   s    		c         C   sI  | j  |  j k r d  S| j r | j r x|  j | j  D] \ } } | |  k r: |  | j sy |  | j sy |  | j r: | |  k r: |  | j r |  | j r |  | j s |  | j r: |  | j   q: q: Wnq | j rExe |  j | j  D]P \ } } | |  k r |  | j s-|  | j s-|  | j r |  | j	   q q Wn  d  S(   N(
   R   R>   R   R   R   Rp   Rq   Rs   Rx   Rw   (   R
   t   lang_pack_statusR%   t   translation(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyRy   
  s*    	c         C   s  | j  |  j k r d  S| j r| j rxy|  j | j  D]I\ } } | |  k rX q: n  d | k r x| j d  D] } | |  k rt |  | j s |  | j s |  | j rt |  | j r |  | j r |  | j s |  | j rt |  | j	   qt qt Wq: | d k s;| |  k r: |  | j s;|  | j s;|  | j r: |  | j re|  | j re|  | j sr|  | j r: |  | j	   q: q: Wn| j r| j
 rx|  j | j  D] \ } } | |  k rqn  d } d } d | k rNxh | j d  D]T } | |  k r|  | j s,|  | j s,|  | j r|  | j r| d } qqWn  | d k r| d k r|  | j s|  | j s|  | j r|  | j   qqWn  d  S(   NR2   R/   i    i   (   R   R?   R   R   RH   R   Rp   Rq   Rs   Rx   R	   Rw   (   R
   t   writing_aid_statusR%   t   pull_pkgt   pt   lcountt   pcount(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyRz   #  sZ    c         C   sf   g  } xY |  j  |  D]H } | |  k r y |  | j   | j |  Wq^ t k
 rZ q^ Xq q Wd S(   s%    mark the given language for install N(   Ru   Rx   RE   R{   (   R
   R   R;   Rr   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   tryInstallLanguage[  s    c         C   si   g  } x\ |  j  |  D]K } | |  k r y" |  | j t  | j |  Wqa t k
 r] qa Xq q Wd S(   s$    mark the given language for remove N(   Ru   Rw   R"   RE   R{   (   R
   R   R<   Rr   (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   tryRemoveLanguagef  s    c         C   s   g  } x |  j  j j   D]k \ } } | d k r7 q n  t |  | |  } g  | j j   D] } | j rY | ^ qY r | j |  q q W| S(   s5    returns a list with language packs/support packages R3   (   R:   t   _langt   itemsR   R   R   R   RE   (   R
   t   rest   codet   langR|   t   s(    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   getLanguageInformationr  s    +(   R   R   RB   RF   RJ   R   R(   Rj   Rl   Rn   Rm   Ru   R~   Ry   Rz   R   R   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyR*   S   s   	l			
	
			8		t   __main__(   t
   LocaleInfos   /usr/share/language-selectort   languagelists   available language informations   , s   %ss   Trying to install 'zh'R3   s   Trying to remove it again(!   t   warningst   filterwarningst   FutureWarningR6   t   apt_pkgt   ost   os.pathR   t   macrost   xml.etree.ElementTreeR   R   R4   t   objectR   R   t	   ExceptionR)   R7   R*   R   R   t   datadirR|   RQ   t
   OpProgressRX   t   joinR   R\   R   Rm   R   (    (    (    s>   /usr/lib/python2.7/dist-packages/LanguageSelector/LangCache.pyt   <module>   s6   3 -+