
RLc           @   sL  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 Z d  d k	 Z	 d  d k
 Z
 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  d k Td  d k Z d e f d     YZ e d	 j o4 e d
 d  Z e i e i i    e i   GHn d S(   iNt   ignores   apt API not stable yet(   t   gettext(   t
   LocaleInfo(   t   *t   LanguageSelectorBasec           B   sJ   e  Z d  Z d d  Z d   Z d   Z d   Z d d d d d  Z RS(   s'    base class for language-selector code t    c         C   s+   | |  _  t d |  i   |  _ d  |  _ d  S(   Nt   languagelist(   t   _datadirR   t   _localeinfot   Nonet   _cache(   t   selft   datadir(    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt   __init__!   s    	c         C   s   t  |  i |  |  _ d  S(   N(   t   LanguageSelectorPkgCacheR   R
   (   R   t   progress(    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt	   openCache'   s    c      
   C   s  g  } x|  i  i   D]} d | i } | |  i  j oQ|  i  | i p" |  i  | i p |  i  | i o|  i  | i o| i |  i  i j o x |  i  i | i D] \ } } | |  i  j o |  i  | i p" |  i  | i p |  i  | i o |  i  | i ou | |  i  j oe |  i  | i o$ |  i  | i o |  i  | i p |  i  | i o | | j o | i |  q q Wqn d | i } | |  i  j o2|  i  | i p" |  i  | i p |  i  | i o| i |  i  i	 j ox|  i  i	 | i D]\ } } d | j o x| i
 d  D] } |  i  | o |  i  | i p" |  i  | i p |  i  | i o |  i  | i ou | |  i  j oe |  i  | i o$ |  i  | i o |  i  | i p |  i  | i o | | j o | i |  q-q-Wq| |  i  j o |  i  | i p" |  i  | i p |  i  | i o |  i  | i ou | |  i  j oe |  i  | i o$ |  i  | i o |  i  | i p |  i  | i o | | j o | i |  qqWqq q W|  i i   d } t i |  i |  }	 |	 d } |	 d }
 d |
 } | |  i  j o |  i  | i o} | | g 7} |
 |  i  i j oY xV |  i  i |
 D]@ \ } } |  i  | i o# |  i  | i o | i |  qvqvWqn t i |  i  |
  } xA | D]9 } | |  i  j o# |  i  | i o | i |  qqW|
 |  i  i	 j ox|  i  i	 |
 D]\ } } d | j o x| i
 d  D] } |  i  | o |  i  | i p" |  i  | i p |  i  | i o |  i  | i ou | |  i  j oe |  i  | i o$ |  i  | i o |  i  | i p |  i  | i o | | j o | i |  qhqhWq?| |  i  j o |  i  | i p" |  i  | i p |  i  | i o |  i  | i ou | |  i  j oe |  i  | i o$ |  i  | i o |  i  | i p |  i  | i o | | j o | i |  q?q?Wn | S(   sh   
        return a list of language packs that are not installed
        but should be installed
        s   language-pack-%ss   language-support-writing-%st   |i    t   LOCALEt   PKGCODE(   R
   t   getLanguageInformationt   languageCodet   isInstalledt   markedInstallt   markedUpgradet   markedDeletet   pkg_translationst   appendt   pkg_writingt   splitR   t   getSystemDefaultLanguaget   macrost   LangpackMacrosR   R   t   _getPkgList(   R   t   missingt   langInfot   trans_packaget   pkgt   translationt   pull_pkgt   pt   default_langt   macrt   pkgcodet   support_packagest   support_package(    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt   getMissingLangPacks*   s        !


 #   c         C   s.   t  i   d j o t i |  St d  d S(   sF    abstract interface for the frontends to run specific commands as rooti    s2   this method needs to be overwriten by the subclassN(   t   ost   getuidt
   subprocesst   callt   AttributeError(   R   t   cmd(    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt	   runAsRoot   s    c         C   s  g  } | p | o d d g } n0 | p | o | i  t i i d   n d  S| o- t i |  i |  } d } d | d } nk | o d } d | } nP | o- t i |  i |  } d	 } d
 | d } n | o d } d | } n x0| D](}	 t i	   }
 t
 } t i i |	  om t i |	 t i  oW xT t |	  D]B } t i |  } | i |  o t } | } n |
 i |  qFWn | t
 j o |
 i |  n |
 i   | p | o |  i d |
 i |	 g  q t i |	 t i  o' t i |
 i |	  t i |	 d  q q W| o<d } t i i d  ot i i |  ot i i d  }	 t i	   }
 t
 } t
 } g  } t i |  i |  } t i i |	  o x| t |	  D]j } t i |  } t |  d j o | i  |  n | d j o
 t } n | i d  o
 t } qqWn | t
 j o d } |
 i |  n | t
 j o d | d } |
 i |  n xG | D]? } | i d  o d | d } n | d } |
 i |  qW|
 i   t i |
 i |	  t i |	 d  d t i j oZ t i d } d | } t i i |  o, t i |	 d |  t i d | d  q_qcqgn | oj t i   } | i d  d } | | i    j o |  i d d d | g  q|  i d d d g  n d  S(    Ns   /etc/default/locales   /etc/environments
   ~/.profiles   LANG=s
   LANG="%s"
t	   SYSLOCALEs	   LANGUAGE=s   LANGUAGE="%s"
s   export LANG=s   export LANG="%s"
s   export LANGUAGE=s   export LANGUAGE="%s"
s   /bin/cpi  s   /etc/init.d/gdms   /var/run/gdm.pids   ~/.dmrci    s	   [Desktop]s	   Language=s   
[Desktop]
s   Language=%s
s   
t   USERs   /var/cache/gdm/%ss   %s/dmrct   :s   fontconfig-voodoos   -fs   --set=%ss   --remove-current(!   R   R/   t   patht
   expanduserR	   R   R    R   t   tempfilet   NamedTemporaryFilet   Falset   existst   accesst   R_OKt   opent   stringt   stript
   startswitht   Truet   writet   flushR5   t   namet   W_OKt   shutilt   copyt   chmodt   lent   environt
   FontConfigt   FontConfigHackR   t   getAvailableConfigs(   R   t   sysLangt   sysLanguaget   userLangt   userLanguaget	   conffilesR*   t
   findStringt	   setStringt   fnamet   outt   foundStringt   linet   tmpt	   gdmscriptt	   foundLangt   foundDesktopt
   filebuffert   useridR9   t   fct   defaultLanguageCode(    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt   writeLanguageSettings   s      

& 
 


$N(	   t   __name__t
   __module__t   __doc__R   R   R.   R5   R	   Re   (    (    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyR      s   			t   __main__R   s   ..(   t   warningst   filterwarningst   FutureWarningt   aptt   apt_pkgR/   RJ   R1   t   threadt   timeR   t   sysRB   R;   t   reRO   t   _R   t	   LangCacheR   t   objectR   Rf   t   lsbR   R   t
   OpProgresst   verifyPackageLists(    (    (    sE   /usr/lib/python2.6/dist-packages/LanguageSelector/LanguageSelector.pyt   <module>   s0   
 b