
    k!f                     H   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 d dlmZ  G d	 d
e      Zedk(  rI ed      Zej)                  ej*                  j-                                 eej1                                yy)    )print_function)absolute_importNignorezapt API not stable yet)
LocaleInfo)*)macrosc                   B    e Zd ZdZddZd Zd Zd Zd Zd Z	d Z
d	 Zy
)LanguageSelectorBasez' base class for language-selector code c                 V    || _         t        d| j                         | _        d | _        y )Nlanguagelist)_datadirr   _localeinfo_cache)selfdatadirs     C/usr/lib/python3/dist-packages/LanguageSelector/LanguageSelector.py__init__zLanguageSelectorBase.__init__   s#    %ndmmD    c                 b    t         j                  j                  | j                  |      | _        y )N)LanguageSelector	LangCacheLanguageSelectorPkgCacher   r   )r   progresss     r   	openCachezLanguageSelectorBase.openCache    s#    &00II$JZJZ\der   c                 @   | j                   rJt        j                  | j                  t        j
                  j                  | j                   dd            }nt        j                  | j                        }g }|j                         D ]  }|j                  |        |S )zh
        return a list of language packs that are not installed
        but should be installed
        datapkg_depends)	r   language_support_pkgsLanguageSupportr   ospathjoinmissingappend)r   lsr#   packs       r   getMissingLangPacksz(LanguageSelectorBase.getMissingLangPacks#   s{    
 ==&66t{{GGLLFHB '66t{{CBJJL 	!DNN4 	!r   c                     t        j                         }|j                  dd      }t        j                  |d      }|j	                  |       y)1 write various LC_* variables (e.g. de_DE.UTF-8) com.ubuntu.LanguageSelector/dbus_interfaceN)dbus	SystemBus
get_object	InterfaceSetSystemDefaultFormatsEnv)r   
sysFormatsbusobjifaces        r   writeSysFormatsSettingz+LanguageSelectorBase.writeSysFormatsSetting2   s>    nnnn:3?s2OP((4r   c                     t        j                         }|j                  dd      }t        j                  |d      }|j	                  |       y)z2 write the system "LANGUAGE" and "LANG" variables r*   r+   r,   N)r.   r/   r0   r1   SetSystemDefaultLanguageEnv)r   sysLanguager4   r5   r6   s        r   writeSysLanguageSettingz,LanguageSelectorBase.writeSysLanguageSetting9   s>    nnnn:3?s2OP))+6r   c                 v   t        j                         }|dk(  r,t        j                  dt        j                  d      z         yt        j                         }|j                  dd|z        }t        j                  |d      }t        j                  | j                  |      }|j                  |d	          y)
r)   r   z&No formats locale saved for user '%s'.USERNorg.freedesktop.Accounts /org/freedesktop/Accounts/User%iorg.freedesktop.Accounts.Userr,   	SYSLOCALE)r    getuidwarningswarngetenvr.   r/   r0   r1   r   LangpackMacrosr   SetFormatsLocale)r   userFormatsuidr4   r5   r6   macrs          r   writeUserFormatsSettingz,LanguageSelectorBase.writeUserFormatsSetting@   s    iik!8MMBRYYvEVVWnnnn7>DFs3RS$$T]]K@tK01r   c                 N   t        j                         }|dk(  r,t        j                  dt        j                  d      z         yt        j                         }|j                  dd|z        }t        j                  |d      }|j                  | j                  |             y)	z0 write the user "LANGUAGE" and "LANG" variables r   z No language saved for user '%s'.r=   Nr>   r?   r@   r,   )r    rB   rC   rD   rE   r.   r/   r0   r1   SetLanguagevalidateLangList)r   userLanguagerI   r4   r5   r6   s         r   writeUserLanguageSettingz-LanguageSelectorBase.writeUserLanguageSettingM   s    iik!8MM<ryy?PPQnnnn7>DFs3RS$//=>r   c                 @   g }d}|j                  d      D ]Z  }|dk(  r|j                  ddg        n@|j                  d      s|dk(  r|j                  |       d}G|rJ|j                  |       \ dj	                  |      }||k7  rt        j                  d       |S )zN
        remove elements which can be assumed to cause user confusion
        F:en_USenen_Tz.The language list was modified by the program.)splitextend
startswithr$   r"   rC   rD   )r   rO   tmpis_englangvalidatedLangLists         r   rN   z%LanguageSelectorBase.validateLangListY   s      &&s+ 	!Dw

GT?+'44<

4 

4 	!  HHSM,MMJK  r   N) )__name__
__module____qualname____doc__r   r   r'   r7   r;   rK   rP   rN    r   r   r
   r
      s.    1f572
?!r   r
   __main__z..)r   )
__future__r   r   rC   filterwarningsFutureWarningaptr.   r    r   LanguageSelector.LocaleInfor   LanguageSelector.LangCacher   LanguageSelector.utilsr   objectr
   r^   lsbr   r   
OpProgressprintverifyPackageListsrb   r   r   <module>rp      s    & &    ":M J 
  	  2 ! $ #T!6 T!n z
t
,CMM#,,))+,	#
 
 
"# r   