
ñxR½  ã               @   s   d  d l  m Z d  d l  m Z 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
 m Z d  d l Z d  d l Td  d l m Z Gd	 d
 „  d
 e ƒ Z e d k rü e d d ƒ Z e j e j j ƒ  ƒ e e j ƒ  ƒ d S)é    )Úprint_function)Úabsolute_importNÚignorezapt API not stable yet)Ú
LocaleInfo)Ú*)Úmacrosc               @   sy   e  Z d  Z d Z d d d „ Z d d „  Z d d „  Z d	 d
 „  Z d d „  Z d d „  Z	 d d „  Z
 d d „  Z d S)ÚLanguageSelectorBasez' base class for language-selector code Ú c             C   s+   | |  _  t d |  j  ƒ |  _ d  |  _ d  S)NZlanguagelist)Ú_datadirr   Ú_localeinfoÚ_cache)ÚselfÚdatadir© r   úC/usr/lib/python3/dist-packages/LanguageSelector/LanguageSelector.pyÚ__init__   s    	zLanguageSelectorBase.__init__c             C   s   t  j j |  j | ƒ |  _ d  S)N)ÚLanguageSelectorZ	LangCacheZLanguageSelectorPkgCacher   r   )r   Úprogressr   r   r   Ú	openCache    s    zLanguageSelectorBase.openCachec             C   sv   |  j  r6 t j |  j t j j |  j  d d ƒ ƒ } n t j |  j ƒ } g  } x! | j ƒ  D] } | j | ƒ q[ W| S)zh
        return a list of language packs that are not installed
        but should be installed
        ÚdataZpkg_depends)	r
   Úlanguage_support_pkgsZLanguageSupportr   ÚosÚpathÚjoinÚmissingÚappend)r   Zlsr   Zpackr   r   r   ÚgetMissingLangPacks#   s    	!z(LanguageSelectorBase.getMissingLangPacksc             C   sD   t  j ƒ  } | j d d ƒ } t  j | d d ƒ} | j | ƒ d S)z1 write various LC_* variables (e.g. de_DE.UTF-8) zcom.ubuntu.LanguageSelectorú/Údbus_interfaceN)ÚdbusÚ	SystemBusÚ
get_objectÚ	InterfaceZSetSystemDefaultFormatsEnv)r   Z
sysFormatsÚbusÚobjÚifacer   r   r   ÚwriteSysFormatsSetting2   s    z+LanguageSelectorBase.writeSysFormatsSettingc             C   sD   t  j ƒ  } | j d d ƒ } t  j | d d ƒ} | j | ƒ d S)z2 write the system "LANGUAGE" and "LANG" variables zcom.ubuntu.LanguageSelectorr   r   N)r   r    r!   r"   ZSetSystemDefaultLanguageEnv)r   ZsysLanguager#   r$   r%   r   r   r   ÚwriteSysLanguageSetting9   s    z,LanguageSelectorBase.writeSysLanguageSettingc             C   s—   t  j ƒ  } | d k r6 t j d t  j d ƒ ƒ d St j ƒ  } | j d d | ƒ } t j | d d ƒ} t	 j
 |  j | ƒ } | j | d	 ƒ d S)
z1 write various LC_* variables (e.g. de_DE.UTF-8) r   z&No formats locale saved for user '%s'.ÚUSERNzorg.freedesktop.Accountsz /org/freedesktop/Accounts/User%ir   zorg.freedesktop.Accounts.UserZ	SYSLOCALE)r   ÚgetuidÚwarningsÚwarnÚgetenvr   r    r!   r"   r   ZLangpackMacrosr
   ZSetFormatsLocale)r   ZuserFormatsÚuidr#   r$   r%   Zmacrr   r   r   ÚwriteUserFormatsSetting@   s    	z,LanguageSelectorBase.writeUserFormatsSettingc             C   s‡   t  j ƒ  } | d k r6 t j d t  j d ƒ ƒ d St j ƒ  } | j d d | ƒ } t j | d d ƒ} | j	 |  j
 | ƒ ƒ d S)	z0 write the user "LANGUAGE" and "LANG" variables r   z No language saved for user '%s'.r(   Nzorg.freedesktop.Accountsz /org/freedesktop/Accounts/User%ir   zorg.freedesktop.Accounts.User)r   r)   r*   r+   r,   r   r    r!   r"   ZSetLanguageÚvalidateLangList)r   ÚuserLanguager-   r#   r$   r%   r   r   r   ÚwriteUserLanguageSettingM   s    	z-LanguageSelectorBase.writeUserLanguageSettingc             C   sš   g  } d } x[ | j  d ƒ D]J } | j d ƒ s= | d k rS | j | ƒ d } q | s | j | ƒ q Wd j | ƒ } | | k r– t j d d ƒ | S)z^
        remove possible non-English elements after the first
        English element
        Fú:Zen_ZenTz;The language list was modified by the program, since there z:should not be any non-English items after an English item.)ÚsplitÚ
startswithr   r   r*   r+   )r   r0   ZtmpZis_engZlangZvalidatedLangListr   r   r   r/   Y   s    		z%LanguageSelectorBase.validateLangListN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r&   r'   r.   r1   r/   r   r   r   r   r      s   r   Ú__main__r   z..)Z
__future__r   r   r*   ÚfilterwarningsÚFutureWarningZaptr   r   r   ZLanguageSelector.LocaleInfor   ZLanguageSelector.LangCacher   ZLanguageSelector.utilsr   Úobjectr   r5   Zlsbr   r   Z
OpProgressÚprintZverifyPackageListsr   r   r   r   Ú<module>   s    
V