U
    Ú€R]­  ã                   @   s¸   d dl mZ d dl mZ d dlZe 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T d dlmZ G d	d
„ d
eƒZedkr´eddZe ej ¡ ¡ ee ¡ ƒ dS )é    )Úprint_function)Úabsolute_importNÚignorezapt API not stable yet)Ú
LocaleInfo)Ú*)Úmacrosc                   @   sR   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|¡| _d S )N)ÚLanguageSelectorZ	LangCacheZLanguageSelectorPkgCacher   r   )r   Úprogressr   r   r   Ú	openCache    s    zLanguageSelectorBase.openCachec                 C   sP   | j r$t | jtj | j dd¡¡}nt | j¡}g }| ¡ D ]}| |¡ q<|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   s0   t  ¡ }| dd¡}t j|dd}| |¡ dS )ú1 write various LC_* variables (e.g. de_DE.UTF-8) úcom.ubuntu.LanguageSelectorú/©Zdbus_interfaceN)ÚdbusÚ	SystemBusÚ
get_objectÚ	InterfaceZSetSystemDefaultFormatsEnv)r   Z
sysFormatsÚbusÚobjÚifacer   r   r   ÚwriteSysFormatsSetting2   s    z+LanguageSelectorBase.writeSysFormatsSettingc                 C   s0   t  ¡ }| dd¡}t j|dd}| |¡ dS )z2 write the system "LANGUAGE" and "LANG" variables r   r   r    N)r!   r"   r#   r$   ZSetSystemDefaultLanguageEnv)r   ZsysLanguager%   r&   r'   r   r   r   ÚwriteSysLanguageSetting9   s    z,LanguageSelectorBase.writeSysLanguageSettingc                 C   sn   t  ¡ }|dkr(t dt  d¡ ¡ dS t ¡ }| dd| ¡}tj|dd}t	 
| j|¡}| |d	 ¡ dS )
r   r   z&No formats locale saved for user '%s'.ÚUSERNúorg.freedesktop.Accountsú /org/freedesktop/Accounts/User%iúorg.freedesktop.Accounts.Userr    Z	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   sb   t  ¡ }|dkr(t dt  d¡ ¡ dS t ¡ }| dd| ¡}tj|dd}| 	|  
|¡¡ dS )	z0 write the user "LANGUAGE" and "LANG" variables r   z No language saved for user '%s'.r*   Nr+   r,   r-   r    )r   r.   r/   r0   r1   r!   r"   r#   r$   ZSetLanguageÚvalidateLangList)r   ÚuserLanguager2   r%   r&   r'   r   r   r   ÚwriteUserLanguageSettingM   s    ÿz-LanguageSelectorBase.writeUserLanguageSettingc                 C   s„   g }d}|  d¡D ]P}|dkr2| ddg¡  qdq| d¡sD|dkrT| |¡ d}q|s| |¡ qd |¡}||kr€t d¡ |S )zN
        remove elements which can be assumed to cause user confusion
        Fú:Zen_USZenZen_Tz.The language list was modified by the program.)ÚsplitÚextendÚ
startswithr   r   r/   r0   )r   r5   ZtmpZis_engZlangZvalidatedLangListr   r   r   r4   Y   s    


z%LanguageSelectorBase.validateLangListN)r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r(   r)   r3   r6   r4   r   r   r   r   r      s   
r   Ú__main__z..)r   )Z
__future__r   r   r/   ÚfilterwarningsÚFutureWarningZaptr!   r   r   ZLanguageSelector.LocaleInfor   ZLanguageSelector.LangCacher   ZLanguageSelector.utilsr   Úobjectr   r;   Zlsbr   r   Z
OpProgressÚprintZverifyPackageListsr   r   r   r   Ú<module>   s    W
