3
w]q'                 @   s   d dl m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mZ d dlm	Z	m
Z
 G d	d
 d
ejZeje edkre Zejejddg ej Zeje ej  ej  dS )    )GLib)GObject)Gtk)IBus)PangoN)	load_icon)_N_c                   s   e Zd Zd ZeddejjfeddejjejjB fdZ	 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(d) Zd*d+ Zd,d- Z  ZS ).EngineTreeViewzselected engineengines)zactive-enginer   c                s  t t| j  g | _d| _| jd tjtj	tj
| _| j| j | jjd| jd | jjd| jd | jjd| jd | jjd| jd | jj| jd  | jjdtjj tjtd}|jd	 tj }|jd
d |j|d |j|| j tj }|jd
d |jdtjj |j|d |j|| j  | j!| tj" }tjtj
}|j#d |j#d |j#d |jd
d |jd| |jdd |jdd |jdd |jd| j$ tjtd}|j%d |j&d |j'tj(j) |j|d |j|| j* | j+ jd| j, d S )NFTzrow-changedzrow-deletedzrow-insertedzrows-reordered   zInput Method   Zxalignr   Z	ellipsizeusjpxkbmodelztext-columnz	has-entryZeditableZchangedZKbd    )r   )r   )r   )-superr
   __init___EngineTreeView__engines_EngineTreeView__changedZset_reorderabler   Z	ListStorer   ZTYPE_PYOBJECTZTYPE_STRING_EngineTreeView__modelZ	set_modelZconnect&_EngineTreeView__emit_changed_delay_cbZset_default_sort_func_EngineTreeView__sort_enginesZset_sort_column_idZSortTypeZ	ASCENDINGZTreeViewColumnr   Zset_min_widthZCellRendererPixbufset_propertyZ
pack_startZset_cell_data_func"_EngineTreeView__icon_cell_data_cbZCellRendererTextr   ZEllipsizeModeZEND"_EngineTreeView__name_cell_data_cbZappend_columnZCellRendererComboappend)_EngineTreeView__engine_layout_changed_cbZ
set_expandZset_fixed_widthZ
set_sizingZTreeViewColumnSizingZFIXED$_EngineTreeView__layout_cell_data_cbget_selection%_EngineTreeView__selection_changed_cb)selfcolumnrendererr   )	__class__ '/usr/share/ibus/setup/enginetreeview.pyr   1   sT    







zEngineTreeView.__init__c             C   sp   || d }|| d }t j|j }t j|j }tj|}	tj|}
d||	f }d||
f }||k||k  S )Nr   z%s - %s)r   get_language_nameget_languagei18ngettext_engine_longname)r#   r   abdataZengine_aZengine_bZ
language_aZ
language_bZ
longname_aZ
longname_bZlabel_aZlabel_br'   r'   r(   Z__sort_enginesj   s    

zEngineTreeView.__sort_enginesc             G   s   | j d d S )Nzactive-engine)notify)r#   argsr'   r'   r(   Z__selection_changed_cbv   s    z%EngineTreeView.__selection_changed_cbc             G   s   | j rd| _ | jd d S )NFr   )r   r0   )r#   r1   r'   r'   r(   Z__emit_changedy   s    zEngineTreeView.__emit_changedc             G   s   | j sd| _ tj| j d S )NT)r   r   Zidle_add_EngineTreeView__emit_changed)r#   r1   r'   r'   r(   Z__emit_changed_delay_cb~   s    z&EngineTreeView.__emit_changed_delay_cbc       	      C   sN   | j j|d}|d krd S tjtjjd }t|j tjj}|jd| d S )Nr   pixbuf)	r   	get_valuer   Zicon_size_lookupZIconSizeZLARGE_TOOLBARr   Zget_iconr   )	r#   
celllayoutr%   r   itr/   engineZ	icon_sizer3   r'   r'   r(   Z__icon_cell_data_cb   s    z"EngineTreeView.__icon_cell_data_cbc       	      C   sf   | j j|d}|d krd S |jdd tj|j }tj|}|jdd||f  |jdtj	j
 d S )Nr   	sensitiveTtextz%s - %sweight)r   r4   r   r   r)   r*   r+   r,   r   WeightNORMAL)	r#   r5   r%   r   r6   r/   r7   languageZlongnamer'   r'   r(   Z__name_cell_data_cb   s    
z"EngineTreeView.__name_cell_data_cbc             C   sR   | j j|d}| j j|d}|jdd |s2|j}|jd| |jdtjj d S )Nr   r   r8   Tr9   r:   )r   r4   r   layoutr   r;   r<   )r#   r5   r%   r   r6   r/   r7   r>   r'   r'   r(   Z__layout_cell_data_cb   s    z$EngineTreeView.__layout_cell_data_cbc             C   s   d S )Nr   r   r   )r   Zget_iterget_propertyr4   Z	set_value)r#   Zcombopathr6   ir>   r'   r'   r(   Z__engine_layout_changed_cb   s      z)EngineTreeView.__engine_layout_changed_cbc             C   sd   |j dkr4| j }|d krd S | jj|d}|d S |j dkrRdd | jD }|S td|j  d S )Nzactive-enginer   r   c             S   s    g | ]}|d  dkr|d  qS )r   Nr'   ).0rr'   r'   r(   
<listcomp>   s    z2EngineTreeView.do_get_property.<locals>.<listcomp>zunknown property %s)nameget_selected_iterr   getAttributeError)r#   propr6   rowr   r'   r'   r(   do_get_property   s    

zEngineTreeView.do_get_propertyc             C   s:   |j dkrtdn"|j dkr(t| ntd|j  d S )Nzactive-enginezactive-engine is readonlyr   zunknown property %s)rE   rH   set_engines)r#   rI   valuer'   r'   r(   do_set_property   s
    



zEngineTreeView.do_set_propertyc             C   sl   | j j  g | _xN|D ]F}|| jkr&q| j jd }tj|j  | j j|d| | jj| qW | j  d S )Nr   )	r   clearr   r   r+   Zinit_textdomainZget_textdomainsetr2   )r#   r   er6   r'   r'   r(   rL      s    


zEngineTreeView.set_enginesc             C   s   | j  }|r|j d S d S )Nr   )r!   Zget_selected)r#   	selectionr'   r'   r(   rF      s    z EngineTreeView.get_selected_iterc             C   s   | j S )N)r   )r#   r'   r'   r(   get_engines   s    zEngineTreeView.get_enginesc             C   s
   | j dS )Nr   )r?   )r#   r'   r'   r(   get_sorted_engines   s    z!EngineTreeView.get_sorted_enginesc             C   s
   | j dS )Nzactive-engine)r?   )r#   r'   r'   r(   get_active_engine   s    z EngineTreeView.get_active_enginec             C   sD   |d ks|| j krd S | jjd }| jj|d| |g| j  | _ d S )Nr   )r   r   ZprependrP   )r#   r7   r6   r'   r'   r(   prepend_engine   s
    zEngineTreeView.prepend_enginec             C   sB   |d ks|| j krd S | jjd }| jj|d| | j j| d S )Nr   )r   r   r   rP   )r#   r7   r6   r'   r'   r(   append_engine   s
    zEngineTreeView.append_enginec          	   C   s   | j  }|d krd S | j| }|d }| jj| |jj d }| jj| y"| j| }| j }|j|j W n   Y nX d S )Nr   )rF   r   r   remover@   get_indicesr!   Zselect_path)r#   r6   rJ   r7   indexrR   r'   r'   r(   remove_engine   s    

zEngineTreeView.remove_enginec             C   sd   | j  }|d krd S | j| }|jj d }|dkr8d S | jj|| j|d  j | j|jd  d S )Nr   r   )rF   r   r@   rY   swapiterscroll_to_cell)r#   r6   rJ   rZ   r'   r'   r(   move_up_engine   s    
zEngineTreeView.move_up_enginec             C   s|   | j  }|d krd S | j| }|jj d }| jd }|jj d }||krPd S | jj|| j|d  j | j|jd  d S )Nr   r   r   )rF   r   r@   rY   r\   r]   r^   )r#   r6   rJ   rZ   Zlast_rowZ
last_indexr'   r'   r(   move_down_engine  s    

zEngineTreeView.move_down_engine) __name__
__module____qualname__Z__gtype_name__objectr   Z
ParamFlagsZREADABLEZWRITABLEZ__gproperties__r   r   r"   r2   r   r   r   r    r   rK   rN   rL   rF   rS   rT   rU   rV   rW   r[   r_   r`   __classcell__r'   r'   )r&   r(   r
   "   s<   9	r
   __main__Zzh)r=   )Zgi.repositoryr   r   r   r   r   r+   Ziconr   r   r	   ZTreeViewr
   Ztype_registerra   ZtreerL   Z
EngineDescZWindowwaddZshow_allmainr'   r'   r'   r(   <module>   s"    t

