3
w]2                 @   s   d dl mZ d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlm	Z	 d dlm
Z
mZ eed\ZZZG dd	 d	ejZdS )
    )Gtk)GLib)IBusN)	load_icon)_N_   c            
       s  e Zd Zd Zejdejdejdejdejdejdejdejdejd	g	Zd3 f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d Z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-d. Zd/d0 Zd1d2 Z  ZS )4EngineDialogen_USZen_GBZde_DEZfr_FRZes_ESZzh_CNZja_JPZru_RUZar_EGNc          	      s  t t| jtd|dd tdtjjtdtjjf}| j|  | j	tjjd i | _
i | _i | _tjtjjtjjtjjddddd| _| jj| j tj }| jj| tjdtjjtjjd	| _|j| j | jj | _| jj| j | jj| jd  | jjd
| j  | jjd| j! d| _"| j# | _$d| _%d | _&tj'dddddd| _(| j(j)d | j(jd| j* | jj| j( | j+  d S )NzSelect an input methodT)titletransient_forZ	resizableZ_CancelZ_AddF   )Zhscrollbar_policyZvscrollbar_policyZshadow_typemargin_leftmargin_right
margin_topmargin_bottom)ZvexpandZhalignZvalignzrow-activatedzrow-selectedr   )Zhexpandr   r   r   r   zsearch-changed),superr	   __init__r   r   ResponseTypeZCANCELAPPLYZadd_buttonsset_response_sensitive_EngineDialog__engines_for_lang_EngineDialog__untrans_for_lang_EngineDialog__langsZScrolledWindow
PolicyTypeZNEVERZ
ShadowTypeIN_EngineDialog__scrolledZvboxaddZViewportZListBoxAlignZFILL_EngineDialog__listZget_vadjustment_EngineDialog__adjustmentZset_adjustmentZset_filter_func_EngineDialog__list_filterZconnect_EngineDialog__row_activated_EngineDialog__row_selected_EngineDialog__showing_extra_EngineDialog__more_row_new_EngineDialog__more_row _EngineDialog__filter_timeout_id_EngineDialog__filter_wordZSearchEntry_EngineDialog__filter_entryZset_no_show_all_EngineDialog__filter_changedshow_all)selfr   ZbuttonsZviewport)	__class__ %/usr/share/ibus/setup/enginedialog.pyr   7   sX    




zEngineDialog.__init__c             C   sz   || j kr| j S | j r$|jr$dS | jd kr2dS |jj }|jj }| jd krv| jj }|j|rhdS |j|rvdS dS )NFT)r&   r$   is_extrar(   nameloweruntrans
startswith)r,   rowdatar1   r3   Zwordr.   r.   r/   Z__list_filterl   s    







zEngineDialog.__list_filterc             C   sX   || j kr| j  d S |jr4| jjd | j  d S |jrT| jjd | j| d S d S )N )r&   _EngineDialog__show_morebackr)   Zset_text_EngineDialog__show_lang_rows	lang_info$_EngineDialog__show_engines_for_lang)r,   boxr5   r.   r.   r/   Z__row_activated   s    

zEngineDialog.__row_activatedc             C   s   | j tjj|d k d S )N)r   r   r   r   )r,   r=   r5   r.   r.   r/   Z__row_selected   s    zEngineDialog.__row_selectedc             C   s   t jt jjd}|tkrdt jj t jjk}|rBt j	j
dt jj}nt j	j
dt jj}|j|ddd |d krt|t jj}t j	|d}	|j|	ddd t j|d}
|
j| |
jt jj |
jd	 |
jd	 |
jd
 |
jd
 |j|
ddd |S )N)orientationzgo-previous-rtl-symboliczgo-previous-symbolicFTr   )pixbuf)label   r   )r   BoxOrientation
HORIZONTALROW_TRAVEL_DIRECTION_BACKWARDZWidgetZget_default_directionZTextDirectionZRTLImagenew_from_icon_nameIconSizeMENU
pack_startr   ZLARGE_TOOLBARZLabel
set_halign
set_valignr   CENTERset_margin_leftset_margin_rightset_margin_topset_margin_bottom)r,   texticonZ	alignment	directionhboxZrtlarrowr?   Zimager@   r.   r.   r/   Z__padded_label_new   s.    





zEngineDialog.__padded_label_newc             C   s0   t j }||_d|_d|_d|_d|_d |_|S )NFr7   )r   
ListBoxRowr1   r0   r;   r9   r3   engine)r,   rR   r5   r.   r.   r/   Z__list_box_row_new   s    zEngineDialog.__list_box_row_newc             C   sd   | j |}d|_t| jdkr*| j| |_| j rB|| jkrBd|_| j|d t	j
jt}|j| |S )NTr   )_EngineDialog__list_box_row_newr;   lenr   r3   r$    _EngineDialog__initial_languagesr0   _EngineDialog__padded_label_newr   r   rM   ROW_TRAVEL_DIRECTION_NONEr   )r,   rR   r5   widgetr.   r.   r/   Z__lang_row_new   s    

zEngineDialog.__lang_row_newc             C   s   t j }t jt jjd}|j| |jtd t jj	dt j
j}|jd |jd |jd |jd |jt jj |jt jj |j|ddd |S )N)r>   u   More…zview-more-symbolicrA   r   Tr   )r   rW   rB   rC   rD   r   set_tooltip_textr   rF   rG   rH   rI   rN   rO   rP   rQ   rK   r   rM   rL   rJ   )r,   r5   rU   rV   r.   r.   r/   Z__more_row_new   s    





zEngineDialog.__more_row_newc             C   s8   | j |}d|_d|_| j|d tjjt}|j| |S )NT)	rY   r;   r9   r\   r   r   rM   rE   r   )r,   rR   r5   r^   r.   r.   r/   Z__back_row_new   s    

zEngineDialog.__back_row_newc             C   s^   t j|}t j|}| j|}|j |_|j| ||_| j||j	 t
jjt}|j| |S )N)i18ngettext_engine_longnameZgettext_engine_descriptionrY   Zget_longnamer3   r_   rX   r\   Zget_iconr   r   ZSTARTr]   r   )r,   rX   ZlongnameZdescriptionr5   r^   r.   r.   r/   Z__engine_row_new   s    





zEngineDialog.__engine_row_newc             C   sL   | j j d tjjkrd S | j \}}| j|| | j jtjjtjj d S )Nr   )r   Z
get_policyr   r   Z	AUTOMATICZget_sizeZset_size_requestZ
set_policy)r,   widthZheightr.   r.   r/   Z__set_fixed_size   s    zEngineDialog.__set_fixed_sizec             C   s$   x| j j D ]}| j j| qW d S )N)r   Zget_childrenremove)r,   lr.   r.   r/   Z__remove_all_children   s    z"EngineDialog.__remove_all_childrenc             C   sT   |j }dd }| j| jtj|d x(| j| D ]}| j|}| jj| q2W d S )Nc             S   sD   | j  |j  kr0tj| }tj|}tj||S t|j  | j   S )N)Zget_rankr`   ra   localestrcollint)abZ
a_longnameZ
b_longnamer.   r.   r/   
cmp_engine  s
    

z;EngineDialog.__add_engine_rows_for_lang.<locals>.cmp_engine)key)r1   r   sort	functools
cmp_to_key_EngineDialog__engine_row_newr   r   )r,   r5   langrj   er.   r.   r/   Z__add_engine_rows_for_lang  s    

z'EngineDialog.__add_engine_rows_for_langc             C   sv   | j   x$| jD ]}| j|}| jj| qW | jj| j | jj  | jj| jj	  | jj
  | jjtjj d S )N)"_EngineDialog__remove_all_childrenr   _EngineDialog__lang_row_newr   r   r&   r+   r    	set_value	get_lowerinvalidate_filterZset_selection_moder   ZSelectionModeZSINGLE)r,   rp   r5   r.   r.   r/   Z__show_lang_rows  s    


zEngineDialog.__show_lang_rowsc             C   s&   | j   | jj  d| _| jj  d S )NT)_EngineDialog__set_fixed_sizer)   Zshowr$   r   rv   )r,   r.   r.   r/   Z__show_more   s    
zEngineDialog.__show_morec             C   sV   |j }| j  | j  | j|}| jj| | j| | jj  | jj	| jj
  d S )N)r1   rw   rr   _EngineDialog__back_row_newr   r   '_EngineDialog__add_engine_rows_for_langr+   r    rt   ru   )r,   r5   rR   r.   r.   r/   Z__show_engines_for_lang'  s    


z$EngineDialog.__show_engines_for_langc             C   s4   | j j }|dkrd | _n|| _| jj  d| _dS )Nr7   r   F)r)   Zget_textr(   r   rv   r'   )r,   rR   r.   r.   r/   Z__do_filter2  s    

zEngineDialog.__do_filterc             C   s   | j dkrtjd| j| _ d S )Nr      )r'   r   Ztimeout_add_EngineDialog__do_filter)r,   entryr.   r.   r/   Z__filter_changed=  s    
zEngineDialog.__filter_changedc       	      C   sj  i | _ i | _x||D ]t}tj|j }|d kr0d}|| j krDg | j |< tj|j  | j | j| tj	|j }|d kr|d}|| j|< qW t
| j j }|jtjtjd tj d }|d ks|dkrd}tj|}||kr|j| |jd| tjd}||kr(||kr(|j| |jd| tjd|krX|jtjd |tjdg7 }|| _| j  d S )Nr7   )rk   r   Cr
      ZOther)r   r   r   get_language_nameZget_languager`   Zinit_textdomainZget_textdomainappendZget_untranslated_language_namelistkeysrl   rm   rn   re   rf   Z	getlocalerc   insertr   r:   )	r,   Zenginesrq   rd   r3   r   locZcurrent_langZen_langr.   r.   r/   set_enginesB  s@    






zEngineDialog.set_enginesc             C   s   | j j }|d krd S |jS )N)r   Zget_selected_rowrX   )r,   r5   r.   r.   r/   get_selected_engineo  s    
z EngineDialog.get_selected_engine)N)__name__
__module____qualname__Z__gtype_name__r   r   r[   r   r!   r"   r#   r\   rY   rs   r%   rx   ro   rw   rr   ry   r:   r8   r<   r{   r*   r   r   __classcell__r.   r.   )r-   r/   r	   *   s<   5	-r	   )Zgi.repositoryr   r   r   rm   gettextr`   re   rS   r   r   r   r   ranger]   ZROW_TRAVEL_DIRECTION_FORWARDrE   ZDialogr	   r.   r.   r.   r/   <module>   s   