o
    Ú€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 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   ó0   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   ó   z+LanguageSelectorBase.writeSysFormatsSettingc                 C   r   )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   r*   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   r0   r1   r2   r3   r"   r#   r$   r%   ZSetLanguageÚvalidateLangList)r   ÚuserLanguager4   r&   r'   r(   r   r   r   ÚwriteUserLanguageSettingM   s   ÿz-LanguageSelectorBase.writeUserLanguageSettingc                 C   s‚   g }d}|  d¡D ]'}|dkr| ddg¡  n| d¡s!|dkr)| |¡ d}q	|s0| |¡ q	d |¡}||kr?t d¡ |S )zN
        remove elements which can be assumed to cause user confusion
        Fú:Úen_USÚenZen_Tz.The language list was modified by the program.)ÚsplitÚextendÚ
startswithr   r   r1   r2   )r   r7   ÚtmpZis_engÚlangZvalidatedLangListr   r   r   r6   Y   s    

€

z%LanguageSelectorBase.validateLangListN)r	   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r)   r+   r5   r8   r6   r   r   r   r   r      s    
r   Ú__main__z..)r   )Z
__future__r   r   r1   ÚfilterwarningsÚFutureWarningZaptr"   r   r   ZLanguageSelector.LocaleInfor   ZLanguageSelector.LangCacher   ZLanguageSelector.utilsr   Úobjectr   rA   Zlsbr   r   Z
OpProgressÚprintZverifyPackageListsr   r   r   r   Ú<module>   s$   W
ý