U
    ą^&                     @   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e edkre Zeejddg e Zee e  e  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  ZS ),EngineTreeViewzselected engineengines)active-enginer   c                    s  t t|   g | _d| _| d ttj	tj
| _| | j | jd| jd | jd| jd | jd| jd | jd| jd | j| jd  | jdtjj ttd}|d	 t }|d
d ||d ||| j t }|d
d |dtjj ||d ||| j  | !| t" }ttj
}|#d |#d |#d |d
d |d| |dd |dd |dd ttd}|$d |%d |&tj'j( ||d ||| j) | * d| j+ d S )NFTzrow-changedzrow-deletedzrow-insertedzrows-reorderedzInput Method   Zxalignr   Z	ellipsize)us)Zjp)Zxkbmodelztext-columnz	has-entryZeditableZKbd    Zchanged),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appendZ
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   2   sR    







zEngineTreeView.__init__c                 C   sp   || d }|| d }t | }t | }t|}	t|}
d||	f }d||
f }||k||k  S )Nr   %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   |  d d S Nr   )notifyr    argsr%   r%   r&   Z__selection_changed_cbv   s    z%EngineTreeView.__selection_changed_cbc                 G   s   | j rd| _ | d d S )NFr   )r   r0   r1   r%   r%   r&   Z__emit_changedy   s    zEngineTreeView.__emit_changedc                 G   s   | j sd| _ t| j d S )NT)r   r   Zidle_add_EngineTreeView__emit_changedr1   r%   r%   r&   Z__emit_changed_delay_cb~   s    z&EngineTreeView.__emit_changed_delay_cbc           	      C   sN   | j |d}|d krd S ttjjd }t| t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_sizer4   r%   r%   r&   Z__icon_cell_data_cb   s    z"EngineTreeView.__icon_cell_data_cbc           	      C   sf   | j |d}|d krd S |dd t| }t|}|dd||f  |dtj	j
 d S )Nr   	sensitiveTtextr'   weight)r   r5   r   r   r(   r)   r*   r+   r   WeightNORMAL)	r    r6   r"   r   r7   r.   r8   languageZlongnamer%   r%   r&   Z__name_cell_data_cb   s    

z"EngineTreeView.__name_cell_data_cbc                 C   sR   | j |d}| j |d}|dd |s2|j}|d| |dtjj d S )Nr      r9   Tr:   r;   )r   r5   r   layoutr   r<   r=   )r    r6   r"   r   r7   r.   r8   r@   r%   r%   r&   Z__layout_cell_data_cb   s    z$EngineTreeView.__layout_cell_data_cbc                 C   sd   |j dkr4|  }|d krd S | j|d}|d S |j dkrRdd | jD }|S td|j  d S )Nr   r   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>unknown property %s)nameget_selected_iterr   getAttributeError)r    propr7   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 )Nr   zactive-engine is readonlyr   rD   )rE   rH   set_engines)r    rI   valuer%   r%   r&   do_set_property   s
    



zEngineTreeView.do_set_propertyc                 C   sh   | j   g | _|D ]F}|| jkr$q| j d }t|  | j |d| | j| q|   d S Nr   )	r   clearr   r   r*   Zinit_textdomainZget_textdomainsetr3   )r    r   er7   r%   r%   r&   rL      s    

zEngineTreeView.set_enginesc                 C   s   |   }|r| 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
   |  dS )Nr   Zget_propertyrT   r%   r%   r&   get_sorted_engines   s    z!EngineTreeView.get_sorted_enginesc                 C   s
   |  dS r/   rV   rT   r%   r%   r&   get_active_engine   s    z EngineTreeView.get_active_enginec                 C   sD   |d ks|| j krd S | jd }| j|d| |g| j  | _ d S rO   )r   r   ZprependrQ   r    r8   r7   r%   r%   r&   prepend_engine   s
    zEngineTreeView.prepend_enginec                 C   sB   |d ks|| j krd S | jd }| j|d| | j | d S rO   )r   r   r   rQ   rY   r%   r%   r&   append_engine   s
    zEngineTreeView.append_enginec                 C   s   |   }|d krd S | j| }|d }| j| |j d }| j| z"| j| }|  }||j W n   Y nX d S rO   )rF   r   r   removepathget_indicesr   Zselect_path)r    r7   rJ   r8   indexrS   r%   r%   r&   remove_engine   s    

zEngineTreeView.remove_enginec                 C   sd   |   }|d krd S | j| }|j d }|dkr8d S | j|| j|d  j | |jd  d S )Nr   r?   rF   r   r]   r^   ZswapiterZscroll_to_cell)r    r7   rJ   r_   r%   r%   r&   move_up_engine   s    
zEngineTreeView.move_up_enginec                 C   s|   |   }|d krd S | j| }|j d }| jd }|j d }||krPd S | j|| j|d  j | |jd  d S )Nr   r   r?   ra   )r    r7   rJ   r_   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   r3   r   r   r   r   rK   rN   rL   rF   rU   rW   rX   rZ   r[   r`   rc   rd   __classcell__r%   r%   r#   r&   r
   #   s@   8	r
   __main__Zzh)r>   )Zgi.repositoryr   r   r   r   r   r*   Ziconr   r   r	   ZTreeViewr
   Ztype_registerre   ZtreerL   Z
EngineDescZWindowwaddZshow_allmainr%   r%   r%   r&   <module>   s"    m

