ó
qúªLc           @   sÑ   d  d l  m  Z  d  d l Z d  d l Z d  d l Z d e f d „  ƒ  YZ e d k rÍ e ƒ  Z d GHe j ƒ  GHd Ge j	 ƒ  GHe j
 d ƒ d	 Ge j d
 ƒ GHd Ge j	 ƒ  GHd Ge j ƒ  GHd Ge j	 ƒ  GHn  d S(   iÿÿÿÿ(   t
   LocaleInfoNt   ImSwitchc           B   s§   e  Z d  Z e j j d ƒ Z d Z d Z d Z	 d „  Z
 d „  Z d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d d „ Z d d „ Z d d „ Z RS(   s   /etc/X11/xinit/xinput.d/s   ~/.xinput.d/s   /usr/bin/im-switcht   ibuss5   /usr/share/language-selector/data/im-switch.blacklistc         C   s   d  S(   N(    (   t   self(    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   __init__   s    c         C   s   t  j j |  j ƒ S(   s.    return True if im-switch is available at all (   t   ost   patht   existst   bin(   R   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt	   available   s    c         C   s†   x |  j  |  j f D]k } t j j | ƒ r xP t j | ƒ D]< } t j j d | | f ƒ s; t j d | | f ƒ q; q; Wq q Wd  S(   Ns   %s/%s(   t   local_confdirt   global_confdirR   R   R   t   listdirt   unlink(   R   t   dirt   dentry(    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   removeDanglingSymlinks   s
    c         C   s‘   xŠ |  j  |  j f D]v } xm | d f D]_ } t j j | | ƒ } t j j | ƒ r& t j j t j j | ƒ ƒ } | d k r t St	 Sq& Wq Wt S(   s@    check if we have a config for this specifc locale (e.g. ja_JP) t   all_ALLt   nonet   default(   R   s   default(
   R
   R   R   R   t   joinR   t   basenamet   realpatht   Falset   True(   R   t   localeR   t   namet   targett   im_name(    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   enabledForLocale"   s    c         C   sN   t  j d d | d g ƒ |  j | ƒ sJ t  j d d | d |  j g ƒ n  d S(   s     enable input methods for locales	   im-switchs   -zs   -as   -sN(   t
   subprocesst   callR   t   default_method(   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   enable1   s    c         C   sx   t  j j t  j j |  j | ƒ ƒ rF t  j t  j j |  j | ƒ ƒ n  |  j | ƒ rt t j d d | d d g ƒ n  d S(   s!    disable input method for locale s	   im-switchs   -zs   -sR   N(	   R   R   R   R   R
   R   R   R   R   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   disable:   s    $"c         C   s   x‰ |  j  |  j f D]u } t j j | ƒ r xZ | d f D]I } t j j | | ƒ } t j j | ƒ r8 t j j t j j | ƒ ƒ Sq8 Wq q Wd  S(   NR   (	   R
   R   R   R   R   R   R   R   t   None(   R   R   R   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   getInputMethodForLocaleC   s    'c         C   sH   t  j j |  j ƒ s( t  j |  j ƒ n  t j d d | d | g ƒ d  S(   Ns	   im-switchs   -zs   -s(   R   R   R   R
   t   mkdirR   R   (   R   t   imR   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   setInputMethodForLocaleL   s    c         C   s¼   g  } xI t  |  j ƒ D]8 } | j ƒ  } | r | j d ƒ r | j | ƒ q q Wg  } xP t j |  j ƒ D]< } t j j	 |  j | ƒ rk | | k rk | j | ƒ qk qk Wd g t
 | ƒ S(   s2    return the input methods available via im-switch t   #R   (   t   opent   blacklist_filet   stript
   startswitht   appendR   R   R   R   t   islinkt   sorted(   R   t	   blacklistt   lt   inputMethodsR   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   getAvailableInputMethodsQ   s    R   c         C   sJ   |  j  | } t j j | ƒ r/ t j | ƒ n  t j |  j  | | ƒ t S(   sX    sets the default input method for the given locale
            (in ll_CC form)
        (   t   confdirR   R   R.   R   t   symlinkR   (   R   t   methodR   R1   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   setDefaultInputMethoda   s
    c         C   sT   d | } |  j  | } t j j | ƒ r9 t j | ƒ n  t j | |  j  | ƒ t S(   sU    reset the default input method to auto (controlled by
            im-switch
        s   /etc/alternatives/xinput-%s(   R4   R   R   R.   R   R5   R   (   R   R   t   dR1   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   resetDefaultInputMethodk   s    
c         C   s#   t  j j t  j j |  j | ƒ ƒ S(   sb    get the current default input method for the selected
            locale (in ll_CC form)
        (   R   R   R   R   R
   (   R   R   (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   getCurrentInputMethodv   s    (   t   __name__t
   __module__R   R   R   t
   expanduserR
   R   R    R*   R   R	   R   R   R!   R"   R$   R'   R3   R7   R9   R:   (    (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyR      s"   												
t   __main__s   available input methods: s   current method: i   s   switching to 'th-xim': s   th-xims   reset default: (   R    R   t   sysR   t   objectR   R;   R&   R3   R:   t   exitR7   R9   (    (    (    s=   /usr/lib/python2.7/dist-packages/LanguageSelector/ImSwitch.pyt   <module>   s&   q	