U
    ą^,                     @   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e edkr e Ze Zeej j!kre"  d dl#Z#e#$d  e%de&  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dededededededede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 t }| j| tjdtjjtjjd	| _|| j | j | _| j| j | j| jd  | j d
| j! d| _"| # | _$| %  | &  | '  d S )NzSelect a languageT)titletransient_forZ	resizableZ_CancelZ_OKen   )Zhscrollbar_policyZvscrollbar_policyZshadow_typeZmargin_startZ
margin_endZ
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   sV    
 

zEmojiLangChooser.__init__c           
      C   s  t jtd }t |D ]h}d}||s.q|dt|t|  }d}||sVq|t|d  }t|t	
|}| j| qt| jdkrtd| tjd tdt	
d}| j| d S dd	 }| jjt|d
 t d }|d ks|dkrd}d}	| jD ]:}|jt	
|kr| j| | j|	| |	d7 }	q| jD ]:}|jt	
dkrN| j| | j|	| |	d7 }	qNd S )Nz	/../dictsz.dictr   zemoji-zNot found dicts in %s)filer   c                 S   s(   | j | j }|j |j }||k||k  S r   )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langr7   Zlocindexr   r   r   Z__load_lang_listn   sB    



z!EmojiLangChooser.__load_lang_listc                 C   s>   |j | jkr| j| || jkr*| j S | js:|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|   d S |j| _d S r   )r.   _EmojiLangChooser__show_morer   r!   )r   ZboxrT   r   r   r   Z__row_activated   s    
z EmojiLangChooser.__row_activatedc                 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arrowrX   ZimagerY   r   r   r   Z__padded_label_new   s8      




z#EmojiLangChooser.__padded_label_newc                 C   s"   t  }|j|_|j|_d|_|S )NF)r   
ListBoxRowr   r   rS   )r   rQ   rT   r   r   r   Z__list_box_row_new   s
    z#EmojiLangChooser.__list_box_row_newc                 C   s   |  |}|j}|j| jkr$d|_nB|d krN||jkrNd|j|jf }d|_n| jsf|j| jkrfd|_| |d tj	j
t}|| |S )NFz%s (%s)T)#_EmojiLangChooser__list_box_row_newr   r   r!   rS   r,   $_EmojiLangChooser__initial_languages#_EmojiLangChooser__padded_label_newr   r'   rf   ROW_TRAVEL_DIRECTION_NONEr&   )r   rQ   	prev_langrT   rY   Zwidgetr   r   r   Z__lang_row_new   s$    


zEmojiLangChooser.__lang_row_newc                 C   s   t  }d |_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 )NrW   u   More…zview-more-symbolicrZ   r   Tr   )r   rp   r   r[   r\   r]   r&   Zset_tooltip_textr	   r_   r`   ra   rb   rg   rh   ri   rj   rd   r'   rf   re   rc   )r   rT   rn   ro   r   r   r   Z__more_row_new   s     




zEmojiLangChooser.__more_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   r   Z__set_fixed_size   s    z!EmojiLangChooser.__set_fixed_sizec                 C   s    | j  D ]}| j | q
d S r   )r(   Zget_childrenrL   )r   lr   r   r   Z__remove_all_children  s    z&EmojiLangChooser.__remove_all_childrenc                 C   s|   |    d }| jD ] }| ||}| j| |}q| j| j | j  | j| j	  | j
  | jtjj d S r   )&_EmojiLangChooser__remove_all_childrenr"   _EmojiLangChooser__lang_row_newr(   r&   r.   r1   r)   Z	set_valueZ	get_lowerinvalidate_filterZset_selection_moder   ZSelectionModeZSINGLE)r   ru   rQ   rT   r   r   r   Z__show_lang_rows  s    


z!EmojiLangChooser.__show_lang_rowsc                 C   s   |    d| _| j  d S )NT)!_EmojiLangChooser__set_fixed_sizer,   r(   rz   r   r   r   r   Z__show_more  s    zEmojiLangChooser.__show_morec                 C   s   | j S r   )r!   r|   r   r   r   get_selected_lang  s    z"EmojiLangChooser.get_selected_lang)NN)r   r   r   __gtype_name__r   rC   rr   r   r/   r*   r+   rs   rq   ry   r-   r{   rx   r0   rV   r}   __classcell__r   r   r2   r   r   4   s0   -.
	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   rQ   zlang for emojo-*.dictr   c                    s   t t|   d| _d S )Nr   )r   r   r   _EmojiLangButton__langr|   r2   r   r   r   *  s    zEmojiLangButton.__init__c                 C   s"   |j dkr| jS td|j  d S NrQ   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| | ntd|j  d S r   )r   set_langr   )r   r   valuer   r   r   do_set_property6  s    
zEmojiLangButton.do_set_propertyc                 C   sL   t | j|  d}| }|tjjkr2|  d S | |	  |  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$   || _ | d | t| d S )NrQ   )r   ZnotifyZ	set_labelr   rC   r   rQ   r   r   r   r   H  s    
zEmojiLangButton.set_langc                 C   s   | j S r   )r   r   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   r2   r   r     s   
r   __main__zSelected language:)'Z
__future__r   __all__Zgi.repositoryr   r   r   r   rI   gettextZi18nrK   r;   rl   r   r	   r
   listrangert   ZROW_TRAVEL_DIRECTION_FORWARDr^   r   ZDialogr   ZButtonr   Ztype_registerr   r   r   r   r   r    r   rF   exitrE   r}   r   r   r   r   <module>   s:   
 k4


