3
w],                 @   s$  d dl mZ dZd dlmZ 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Zd dlmZ d d	l
mZmZ eed
\ZZZG dd dZG dd dejZG dd dejZeje edkr e Zej Zeej j!krej"  d dl#Z#e#j$d  e%dej&  dS )    )print_functionEmojiLangButton)Gtk)GLib)GObject)IBusN)	load_icon)_N_   c               @   s   e Zd ZdddZdS )LanguageString c             C   s   || _ || _d S )N)idtrans)selfr   r    r   "/usr/share/ibus/setup/emojilang.py__init__0   s    zLanguageString.__init__N)r   )__name__
__module____qualname__r   r   r   r   r   r   /   s   r   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d% 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  ZS )&EmojiLangChooser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|  |d krLd}|| _	i | _
i | _i | _g | _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! d| _"| j# | _$| j%  | j&  | j'  d S )NzSelect a languageT)titletransient_forZ	resizableZ_CancelZ_OKen   )Zhscrollbar_policyZvscrollbar_policyZshadow_typeZmargin_leftZmargin_rightZ
margin_topZmargin_bottom)ZvexpandZhalignZvalignzrow-activatedF)(superr   r   r	   r   ResponseTypeZCANCELAPPLYZadd_buttons_EmojiLangChooser__idZ#_EmojiLangChooser__engines_for_langZ#_EmojiLangChooser__untrans_for_langZ_EmojiLangChooser__langs_EmojiLangChooser__lang_listZScrolledWindow
PolicyTypeZNEVERZ
ShadowTypeIN_EmojiLangChooser__scrolledZvboxaddZViewportZListBoxAlignZFILL_EmojiLangChooser__listZget_vadjustment_EmojiLangChooser__adjustmentZset_adjustmentZset_filter_func_EmojiLangChooser__list_filterZconnect _EmojiLangChooser__row_activated _EmojiLangChooser__showing_extra_EmojiLangChooser__more_row_new_EmojiLangChooser__more_row!_EmojiLangChooser__load_lang_list!_EmojiLangChooser__show_lang_rowsshow_all)r   r   r   ZbuttonsZviewport)	__class__r   r   r   A   sL    



zEmojiLangChooser.__init__c       
      C   s  t jjtd }xvt j|D ]h}d}|j|s0q|dt|t|  }d}|j|sXq|t|d  }t|t	j
|}| jj| qW t| jdkrtd| tjd tdt	j
d}| jj| d S dd	 }| jjtj|d
 tj d }|d ks|dkrd}d}	xD| jD ]:}|jt	j
|kr| jj| | jj|	| |	d7 }	qW xD| jD ]:}|jt	j
dkrZ| jj| | jj|	| |	d7 }	qZW d S )Nz	/../dictsz.dictr   zemoji-zNot found dicts in %s)filer   c             S   s(   | j | j }|j |j }||k||k  S )N)r   r   )abZlabel_aZlabel_br   r   r   cmp_lang   s    z3EmojiLangChooser.__load_lang_list.<locals>.cmp_lang)keyCr      )ospathdirname__file__listdirendswithlen
startswithr   r   get_language_namer!   appendprintsysstderrsort	functools
cmp_to_keylocaleZ	getlocaler   removeinsert)
r   ZdictdirfilenamesuffixZlang_idprefixlangr5   locindexr   r   r   Z__load_lang_listn   sB    

z!EmojiLangChooser.__load_lang_listc             C   s@   |j | jkr| jj| || jkr*| j S | j r<|jr<dS dS )NFT)r   r    r'   Z
select_rowr-   r+   is_extra)r   rowdatar   r   r   Z__list_filter   s    
zEmojiLangChooser.__list_filterc             C   s"   || j kr| j  d S |j| _d S )N)r-   _EmojiLangChooser__show_morer   r    )r   ZboxrS   r   r   r   Z__row_activated   s    
z EmojiLangChooser.__row_activatedc             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arrowrW   ZimagerX   r   r   r   Z__padded_label_new   s.    





z#EmojiLangChooser.__padded_label_newc             C   s"   t j }|j|_|j|_d|_|S )NF)r   
ListBoxRowr   r   rR   )r   rO   rS   r   r   r   Z__list_box_row_new   s
    z#EmojiLangChooser.__list_box_row_newc             C   s   | j |}|j}|j| jkr$d|_nD|d krN||jkrNd|j|jf }d|_n| j rh|j| jkrhd|_| j|d tj	j
t}|j| |S )NFz%s (%s)T)#_EmojiLangChooser__list_box_row_newr   r   r    rR   r+   $_EmojiLangChooser__initial_languages#_EmojiLangChooser__padded_label_newr   r&   re   ROW_TRAVEL_DIRECTION_NONEr%   )r   rO   	prev_langrS   rX   Zwidgetr   r   r   Z__lang_row_new   s     

zEmojiLangChooser.__lang_row_newc             C   s   t j }d |_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)rV   u   More…zview-more-symbolicrY   r   Tr   )r   ro   r   rZ   r[   r\   r%   Zset_tooltip_textr	   r^   r_   r`   ra   rf   rg   rh   ri   rc   r&   re   rd   rb   )r   rS   rm   rn   r   r   r   Z__more_row_new   s    





zEmojiLangChooser.__more_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!EmojiLangChooser.__set_fixed_sizec             C   s$   x| j j D ]}| j j| qW d S )N)r'   Zget_childrenrJ   )r   lr   r   r   Z__remove_all_children  s    z&EmojiLangChooser.__remove_all_childrenc             C   s   | j   d }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)&_EmojiLangChooser__remove_all_childrenr!   _EmojiLangChooser__lang_row_newr'   r%   r-   r0   r(   Z	set_valueZ	get_lowerinvalidate_filterZset_selection_moder   ZSelectionModeZSINGLE)r   rt   rO   rS   r   r   r   Z__show_lang_rows  s    

z!EmojiLangChooser.__show_lang_rowsc             C   s   | j   d| _| jj  d S )NT)!_EmojiLangChooser__set_fixed_sizer+   r'   ry   )r   r   r   r   Z__show_more  s    zEmojiLangChooser.__show_morec             C   s   | j S )N)r    )r   r   r   r   get_selected_lang  s    z"EmojiLangChooser.get_selected_lang)NN)r   r   r   __gtype_name__r   rA   rq   r   r.   r)   r*   rr   rp   rx   r,   rz   rw   r/   rU   r{   __classcell__r   r   )r1   r   r   4   s.   -.
	r   c                   sf   e Zd Zd ZdedddejjejjB fiZ	 fddZ
dd Zdd	 Zd
d Zdd Zdd Z  ZS )r   rO   zlang for emojo-*.dictr   c                s   t t| j  d| _d S )Nr   )r   r   r   _EmojiLangButton__lang)r   )r1   r   r   r   *  s    zEmojiLangButton.__init__c             C   s"   |j dkr| jS td|j  d S )NrO   zunknown property %s)namer~   AttributeError)r   propr   r   r   do_get_property/  s    
zEmojiLangButton.do_get_propertyc             C   s(   |j dkr| j| ntd|j  d S )NrO   zunknown property %s)r   set_langr   )r   r   valuer   r   r   do_set_property6  s    
zEmojiLangButton.do_set_propertyc             C   sL   t | j| j d}|j }|tjjkr2|j  d S | j|j	  |j  d S )N)r   r   )
r   r~   Zget_toplevelrunr   r   r   destroyr   r{   )r   dialogr   r   r   r   
do_clicked=  s    zEmojiLangButton.do_clickedc             C   s$   || _ | jd | jtj| d S )NrO   )r~   ZnotifyZ	set_labelr   rA   )r   rO   r   r   r   r   H  s    
zEmojiLangButton.set_langc             C   s   | j S )N)r~   )r   rO   r   r   r   get_langN  s    zEmojiLangButton.get_lang)r   r   r   r|   strr   Z
ParamFlagsZREADABLEZWRITABLEZ__gproperties__r   r   r   r   r   r   r}   r   r   )r1   r   r     s   __main__zSelected language:)r   )'Z
__future__r   __all__Zgi.repositoryr   r   r   r   rG   gettextZi18nrI   r9   rk   r   r	   r
   listrangers   ZROW_TRAVEL_DIRECTION_FORWARDr]   r   ZDialogr   ZButtonr   Ztype_registerr   r   r   r   r   r   r   rD   exitrC   r{   r   r   r   r   <module>   s4    k4


