U
    ą^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dededededededede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|  | 	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 t }| j| tjdtjjtjjd	| _|| j | j | _| j| j | j| jd  | jd
| j  | jd| j! d| _"| # | _$d| _%d | _&tj'dddddd| _(| j()d | j(d| j* | j| j( | +  d S )NzSelect an input methodT)titletransient_forZ	resizableZ_CancelZ_AddF   )Zhscrollbar_policyZvscrollbar_policyZshadow_typemargin_start
margin_end
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   sd    
 

zEngineDialog.__init__c                 C   sx   || j kr| j S | js"|jr"dS | jd kr0dS |j }|j }| jd krt| j }||rfdS ||rtdS dS )NFT)r&   r$   is_extrar(   nameloweruntrans
startswith)r,   rowdatar2   r4   Zwordr/   r/   r0   Z__list_filterl   s    







zEngineDialog.__list_filterc                 C   sX   || j kr|   d S |jr4| jd |   d S |jrT| jd | | 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,   Zboxr6   r/   r/   r0   Z__row_activated   s    

zEngineDialog.__row_activatedc                 C   s   |  tjj|d k d S N)r   r   r   r   r>   r/   r/   r0   Z__row_selected   s    zEngineDialog.__row_selectedc                 C   s   t jt jjd}|tkrdt j t jjk}|rBt j	
dt jj}nt j	
dt jj}||ddd |d krt|t jj}t j	|d}	||	ddd t j|d}
|
| |
t jj |
d	 |
d	 |
d
 |
d
 ||
ddd |S )NZ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_startset_margin_endset_margin_topset_margin_bottom)r,   texticonZ	alignment	directionhboxZrtlarrowrA   ZimagerB   r/   r/   r0   Z__padded_label_new   s8      




zEngineDialog.__padded_label_newc                 C   s0   t  }||_d|_d|_d|_d|_d |_|S )NFr8   )r   
ListBoxRowr2   r1   r<   r:   r4   engine)r,   rT   r6   r/   r/   r0   Z__list_box_row_new   s    zEngineDialog.__list_box_row_newc                 C   sb   |  |}d|_t| jdkr*| j| |_| js@|| jkr@d|_| |d t	j
jt}|| |S )NTr   )_EngineDialog__list_box_row_newr<   lenr   r4   r$    _EngineDialog__initial_languagesr1   _EngineDialog__padded_label_newr   r   rO   ROW_TRAVEL_DIRECTION_NONEr   r,   rT   r6   widgetr/   r/   r0   Z__lang_row_new   s    

zEngineDialog.__lang_row_newc                 C   s   t  }t jt jjd}|| |td t j	dt j
j}|d |d |d |d |t jj |t jj ||ddd |S )Nr@   u   More…zview-more-symbolicrC   r   Tr   )r   rY   rD   rE   rF   r   set_tooltip_textr   rH   rI   rJ   rK   rP   rQ   rR   rS   rM   r   rO   rN   rL   )r,   r6   rW   rX   r/   r/   r0   Z__more_row_new   s    




zEngineDialog.__more_row_newc                 C   s8   |  |}d|_d|_| |d tjjt}|| |S NT)	r[   r<   r:   r^   r   r   rO   rG   r   r`   r/   r/   r0   Z__back_row_new   s    

zEngineDialog.__back_row_newc                 C   s^   t |}t |}| |}| |_|| ||_| ||	 t
jjt}|| |S r?   )i18ngettext_engine_longnameZgettext_engine_descriptionr[   Zget_longnamer4   rb   rZ   r^   Zget_iconr   r   ZSTARTr_   r   )r,   rZ   ZlongnameZdescriptionr6   ra   r/   r/   r0   Z__engine_row_new   s    





zEngineDialog.__engine_row_newc                 C   sL   | j  d tjjkrd S |  \}}| || | 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/   r0   Z__set_fixed_size   s    zEngineDialog.__set_fixed_sizec                 C   s    | j  D ]}| j | q
d S r?   )r   Zget_childrenremove)r,   lr/   r/   r0   Z__remove_all_children   s    z"EngineDialog.__remove_all_childrenc                 C   sP   |j }dd }| j| jt|d | j| D ]}| |}| j| q0d S )Nc                 S   sD   |   |  kr0t| }t|}t||S t|  |    S r?   )Zget_rankrd   re   localestrcollint)abZ
a_longnameZ
b_longnamer/   r/   r0   
cmp_engine  s
    

z;EngineDialog.__add_engine_rows_for_lang.<locals>.cmp_enginekey)r2   r   sort	functools
cmp_to_key_EngineDialog__engine_row_newr   r   )r,   r6   langrn   er/   r/   r0   Z__add_engine_rows_for_lang  s    

z'EngineDialog.__add_engine_rows_for_langc                 C   sr   |    | jD ]}| |}| j| q| j| j | j  | j| j	  | j
  | jtjj d S r?   )"_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,   ru   r6   r/   r/   r0   Z__show_lang_rows  s    



zEngineDialog.__show_lang_rowsc                 C   s&   |    | j  d| _| j  d S rc   )_EngineDialog__set_fixed_sizer)   Zshowr$   r   r{   )r,   r/   r/   r0   Z__show_more   s    
zEngineDialog.__show_morec                 C   sV   |j }|   |   | |}| j| | | | j  | j	| j
  d S r?   )r2   r|   rw   _EngineDialog__back_row_newr   r   '_EngineDialog__add_engine_rows_for_langr+   r    ry   rz   )r,   r6   rT   r/   r/   r0   Z__show_engines_for_lang'  s    


z$EngineDialog.__show_engines_for_langc                 C   s4   | j  }|dkrd | _n|| _| j  d| _dS )Nr8   r   F)r)   Zget_textr(   r   r{   r'   )r,   rT   r/   r/   r0   Z__do_filter2  s    

zEngineDialog.__do_filterc                 C   s   | j dkrtd| j| _ d S )Nr      )r'   r   Ztimeout_add_EngineDialog__do_filter)r,   entryr/   r/   r0   Z__filter_changed=  s    
zEngineDialog.__filter_changedc           	      C   sf  i | _ i | _|D ]t}t| }|d kr.d}|| j krBg | j |< t|  | j | | t	| }|d krzd}|| j|< qt
| j  }|jttjd t d }|d ks|dkrd}t|}||kr|| |d| td}||kr$||kr$|| |d| td|krT|td |tdg7 }|| _|   d S )Nr8   ro   r   Cr
      ZOther)r   r   r   get_language_nameZget_languagerd   Zinit_textdomainZget_textdomainappendZget_untranslated_language_namelistkeysrq   rr   rs   ri   rj   Z	getlocalerg   insertr   r;   )	r,   Zenginesrv   rh   r4   r   ZlocZcurrent_langZen_langr/   r/   r0   set_enginesB  s@    





zEngineDialog.set_enginesc                 C   s   | j  }|d krd S |jS r?   )r   Zget_selected_rowrZ   )r,   r6   r/   r/   r0   get_selected_engineo  s    
z EngineDialog.get_selected_engine)N)__name__
__module____qualname__Z__gtype_name__r   r   r]   r   r!   r"   r#   r^   r[   rx   r%   r}   rt   r|   rw   r~   r;   r9   r=   r   r*   r   r   __classcell__r/   r/   r-   r0   r	   *   s>   5	-r	   )Zgi.repositoryr   r   r   rr   gettextrd   ri   rU   r   r   r   r   ranger_   ZROW_TRAVEL_DIRECTION_FORWARDrG   ZDialogr	   r/   r/   r/   r0   <module>   s   
