3
Z#                 @   s   d dl Z d dlmZ d dlZd dlZeje je jd d dlZdddZ	G dd dZ
G dd	 d	e
ZG d
d de
ZG dd deZdS )    N)Gtk)Zdomain	localedirc             C   s   | j }|tjkr2t| jdkr2td| j  tj}|tjkrLt| |||dS |tjkrft	| |||dS |tj
krt| |||dS dS )zFactory function   z%Treating Boolean option %s as PickOne)	tab_labelN)uicupsZPPD_UI_BOOLEANlenchoicesprintkeywordZPPD_UI_PICKONE
OptionBoolOptionPickOneZPPD_UI_PICKMANYOptionPickMany)optionppdguir   r    r   1/usr/share/system-config-printer/optionwidgets.pyOptionWidget   s    



r   c               @   sb   e Zd ZdddZdddZdd Zd	d
 Zdd Zdd Zdd Z	dddZ
dd Zdd ZdS )OptionNc                s    | _ || _|| _d| _|| _tj }tj | _tj	j
tjtjj}| jj| | jjd |j| j || _| jjd| j |j   fdd|jD | _t | _d| _d S )NTZclickedc                s(   g | ] }|j  jks |j jkr|qS r   )option1r   option2).0c)r   r   r   
<listcomp>F   s    z#Option.__init__.<locals>.<listcomp> )r   r   r   enabledr   r   ZVBoxZButtonbtnConflictZImageZnew_from_icon_nameZSTOCK_DIALOG_WARNINGZIconSizeZSMALL_TOOLBARaddZset_no_show_allZconflictIconconnecton_btnConflict_clickedshowconstraintsset	conflictsconflict_message)selfr   r   r   r   ZvboxZiconr   )r   r   __init__0   s$    


zOption.__init__Tc             C   s   | j j| || _d S )N)selectorZset_sensitiver   )r&   r   r   r   r   enableO   s    zOption.enablec             C   s   | j d d S )NF)r)   )r&   r   r   r   disableS   s    zOption.disablec             C   s   | j S )N)r   )r&   r   r   r   
is_enabledV   s    zOption.is_enabledc             C   s   t d S )N)NotImplemented)r&   r   r   r   get_current_valueY   s    zOption.get_current_valuec             C   s   | j  | jjkS )N)r-   r   	defchoice)r&   r   r   r   
is_changed\   s    zOption.is_changedc             C   s    | j r| jj| jj| j  d S )N)r   r   Z
markOptionr   r   r-   )r&   r   r   r   	writeback_   s    zOption.writebackc             C   s  | j  }x| jD ]}|j| jjkrB| jjj|jd }|j	}|j
}n| jjj|jd }|j
}|j	}|d krjqdd }|||r|||j  r| jj| |r|jdd q|| jkr| jj| |jdd qW tdg}t }	xL| jD ]B}
|
j| jjkr| jjj|
j}n| jjj|
j}||	|jj< qW xf|	j D ]Z}|jj}|j  }x0|jjD ]$}|d |krTtjj|d }qTW |jd||f  q6W d	j|}|| _| jr| jj| | jj  n
| jj  | jj|  | jS )
Nc             S   s   | dkr| |kS |dkS )Nr   NoneFalseOff)r1   r2   r3   r   )Zconstraint_choicevaluer   r   r   matchesr   s    z&Option.checkConflicts.<locals>.matchesF)update_otherszConflicts with:choicetextz%s: %s
)r-   r"   r   r   r   r   Zoptionsgetr   choice1choice2r$   r   checkConflictsremove_dictvaluesr8   r	   	ppdippstrr   appendjoinr%   r   Zset_tooltip_textr!   ZhideZoption_changed)r&   r6   r4   Z
constraintr   r;   r<   r5   ZtooltipZconflicting_optionsr   r   Zoptvalr7   r   r   r   r=   d   sT     




zOption.checkConflictsc             C   s   | j   d S )N)r=   )r&   Zwidgetr   r   r   	on_change   s    zOption.on_changec             C   s^   | j }x"|d k	r(t|tj r(|j }qW tj|ddtjjtjj	| j
d}|j  |j  d S )NT)parentZmodalZdestroy_with_parentZmessage_typeZbuttonsr8   )r   
isinstancer   ZWindowZ
get_parentZMessageDialogZMessageTypeZWARNINGZButtonsTypeZCLOSEr%   ZrunZdestroy)r&   ZbuttonrG   Zdialogr   r   r   r       s    
zOption.on_btnConflict_clicked)N)T)T)__name__
__module____qualname__r'   r)   r*   r+   r-   r/   r0   r=   rF   r    r   r   r   r   r   /   s   


?r   c               @   s   e Zd ZdddZdd ZdS )r   Nc             C   s   t jjtjj|j| _d | _d| _	d| _
x:|jD ]0}|d dkrL|d | _	|d dkr2|d | _
q2W | jj|j| j
k | jjdd | jjd	| j tj| ||||d
 d S )Nr2   Truer7   r1   r3   Ong        g      ?Ztoggled)r   )r1   r2   r3   )rL   rM   )r   ZCheckButtonZnew_with_labelrB   r   r:   r8   r(   labelfalsetruer	   
set_activer.   set_alignmentr   rF   r   r'   )r&   r   r   r   r   r   r   r   r   r'      s    
zOptionBool.__init__c             C   s   | j | jf| jj  S )N)rO   rP   r(   
get_active)r&   r   r   r   r-      s    zOptionBool.get_current_value)N)rI   rJ   rK   r'   r-   r   r   r   r   r      s   
r   c               @   s"   e Zd Zd ZdddZdd ZdS )r   Nc       	      C   s   t j | _tjj|j}|jds*|d7 }t j|d| _	| j	j
dd d }x@t|jD ]2\}}| jjtjj|d  |j|d krV|}qVW |d k	r| jj| nt|jd|j | jjd| j tj| ||||d	 d S )
N:)rN   g        g      ?r8   r7   zunknown value:Zchanged)r   )r   ZComboBoxTextr(   rB   r   r:   r8   endswithZLabelrN   rR   	enumerater	   Zappend_textr.   rQ   r
   r   rF   r   r'   )	r&   r   r   r   r   rN   ZselectedZnrr7   r   r   r   r'      s     

zOptionPickOne.__init__c             C   s   | j j| jj  d S )Nr7   )r   r	   r(   rS   )r&   r   r   r   r-      s    zOptionPickOne.get_current_value)N)rI   rJ   rK   widget_namer'   r-   r   r   r   r   r      s   
r   c               @   s   e Zd Zd ZdddZdS )r   Nc             C   s   t tj| ||||d d S )N)r   )r,   r   r'   )r&   r   r   r   r   r   r   r   r'      s    zOptionPickMany.__init__)N)rI   rJ   rK   rW   r'   r   r   r   r   r      s   r   )N)configZgi.repositoryr   r   gettextinstallZPACKAGEr   rB   r   r   r   r   r   r   r   r   r   <module>   s   
 