Ñò
RüLc           @   sÓ   d  d k  l  Z  d  d k Z d  d k Z d  d k Z d e f d „  ƒ  YZ e d j ox e ƒ  Z d GHe i ƒ  GHd Ge i	 ƒ  GHe i
 d ƒ d	 Ge i d
 ƒ GHd Ge i	 ƒ  GHd Ge i ƒ  GHd Ge i	 ƒ  GHn d S(   iÿÿÿÿ(   t
   LocaleInfoNt   ImSwitchc           B   s§   e  Z d  Z e i i 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   __init__   s    c         C   s   t  i i |  i ƒ S(   s.    return True if im-switch is available at all (   t   ost   patht   existst   bin(   R   (    (    s=   /usr/lib/python2.6/dist-packages/LanguageSelector/ImSwitch.pyt	   available   s    c         C   sŠ   xƒ |  i  |  i f D]o } t i i | ƒ oV xS t i | ƒ D]> } t i i d | | f ƒ p t i 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   removeDanglingSymlinks   s      c         C   s•   xŽ |  i  |  i f D]z } xq | d f D]c } t i i | | ƒ } t i i | ƒ o5 t i i t i i | ƒ ƒ } | d j o t St	 Sq& 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   enabledForLocale"   s      c         C   sP   t  i d d | d g ƒ |  i | ƒ p# t  i d d | d |  i 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   enable1   s    c         C   s|   t  i i t  i i |  i | ƒ ƒ o# t  i t  i i |  i | ƒ ƒ n |  i | ƒ o  t i 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   disable:   s    %#c         C   s”   x |  i  |  i f D]y } t i i | ƒ o` x] | d f D]K } t i i | | ƒ } t i i | ƒ o t i i t i i | ƒ ƒ Sq9 Wq q Wd  S(   NR   (	   R
   R   R   R   R   R   R   R   t   None(   R   R   R   R   R   (    (    s=   /usr/lib/python2.6/dist-packages/LanguageSelector/ImSwitch.pyt   getInputMethodForLocaleC   s      )c         C   sJ   t  i i |  i ƒ p t  i |  i ƒ n t i 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   setInputMethodForLocaleL   s    c         C   sÂ   g  } xL t  |  i ƒ D]; } | i ƒ  } | o" | i d ƒ o | i | ƒ q q Wg  } xS t i |  i ƒ D]? } t i i	 |  i | ƒ o | | j o | i | ƒ qn qn 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   getAvailableInputMethodsQ   s      R   c         C   sL   |  i  | } t i i | ƒ o t i | ƒ n t i |  i  | | ƒ 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   setDefaultInputMethoda   s
    c         C   sV   d | } |  i  | } t i i | ƒ o t i | ƒ n t i | |  i  | ƒ 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.6/dist-packages/LanguageSelector/ImSwitch.pyt   resetDefaultInputMethodk   s    
c         C   s#   t  i i t  i i |  i | ƒ ƒ 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.6/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.6/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.6/dist-packages/LanguageSelector/ImSwitch.pyt   <module>   s&   q	