U
    9¡_#  ã                   @   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r€t| |||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 ¡ }t ¡ | _tj	 
tjtjj¡}| j |¡ | j d¡ | | j¡ || _| j d| 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  |¡ || _d S ©N)ÚselectorZset_sensitiver   )r(   r   r   r   r   ÚenableO   s    zOption.enablec                 C   s   |   d¡ d S )NF)r,   ©r(   r   r   r   ÚdisableS   s    zOption.disablec                 C   s   | j S r*   )r   r-   r   r   r   Ú
is_enabledV   s    zOption.is_enabledc                 C   s   t ‚d S r*   )ÚNotImplementedr-   r   r   r   Úget_current_valueY   s    zOption.get_current_valuec                 C   s   |   ¡ | jjkS r*   )r1   r   Ú	defchoicer-   r   r   r   Ú
is_changed\   s    zOption.is_changedc                 C   s    | j r| j | jj|  ¡ ¡ d S r*   )r   r   Z
markOptionr   r   r1   r-   r   r   r   Ú	writeback_   s    zOption.writebackc                 C   sÐ  |   ¡ }| jD ]º}|j| jjkr@| jj |jd ¡}|j	}|j
}n| jj |jd ¡}|j
}|j	}|d krhqdd„ }|||ƒr¦|||  ¡ ƒr¦| j |¡ |rÈ|jdd q|| jkr| j |¡ |jdd qtdƒg}tƒ }	| jD ]B}
|
j| jjkr| jj |
j¡}n| jj |
j¡}||	|jj< qà|	 ¡ D ]V}|jj}|  ¡ }|jjD ]$}|d |krHtj |d ¡}qH| d||f ¡ q,d	 |¡}|| _| jr´| j |¡ | j ¡  n
| j ¡  | j | ¡ | jS )
Nc                 S   s   | dkr| |kS |dkS )Nr   ©ÚNoneÚFalseZOffr   )Zconstraint_choiceÚvaluer   r   r   Úmatchesr   s    z&Option.checkConflicts.<locals>.matchesF)Úupdate_otherszConflicts with:ÚchoiceÚtextz%s: %sÚ
)r1   r$   r   r   r   r   ZoptionsÚgetr   Úchoice1Úchoice2r&   r    ÚcheckConflictsÚremoveÚ_ÚdictÚvaluesr<   r
   Ú	ppdippstrr   ÚappendÚjoinr'   r   Zset_tooltip_textr#   ZhideZoption_changed)r(   r:   r8   Z
constraintr   r?   r@   r9   ZtooltipZconflicting_optionsr   r   ZoptÚvalr;   r   r   r   rA   d   sV    
 
ÿ




zOption.checkConflictsc                 C   s   |   ¡  d S r*   )rA   )r(   Zwidgetr   r   r   Ú	on_change£   s    zOption.on_changec                 C   sX   | j }|d k	r$t|tjƒs$| ¡ }qtj|ddtjjtjj	| j
d}| ¡  | ¡  d S )NT)ÚparentZmodalZdestroy_with_parentZmessage_typeZbuttonsr<   )r   Ú
isinstancer   ZWindowZ
get_parentZMessageDialogZMessageTypeZWARNINGZButtonsTypeZCLOSEr'   ÚrunZdestroy)r(   ZbuttonrK   Zdialogr   r   r   r"   ¦   s    
 üzOption.on_btnConflict_clicked)N)T)T)Ú__name__Ú
__module__Ú__qualname__r)   r,   r.   r/   r1   r3   r4   rA   rJ   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 tj |j¡¡| _d | _d| _	d| _
|jD ]0}|d dkrJ|d | _	|d dkr0|d | _
q0| j |j| j
k¡ | j dd¡ | j d| j¡ tj| ||||d	 d S )
Nr7   ÚTruer;   r5   )rQ   ZOnç        ç      à?Ztoggledr   )r   ZCheckButtonZnew_with_labelrF   r   r>   r<   r+   ÚlabelÚfalseÚtruer
   Ú
set_activer2   Úset_alignmentr!   rJ   r   r)   )r(   r   r   r   r   r   r   r   r   r)   ¶   s    ÿ

zOptionBool.__init__c                 C   s   | j | jf| j ¡  S r*   )rU   rV   r+   Ú
get_activer-   r   r   r   r1   Æ   s    zOptionBool.get_current_value)N)rN   rO   rP   r)   r1   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  ¡ | _tj |j¡}| d¡s*|d7 }t j|d| _	| j	 
dd¡ d }t|jƒD ]2\}}| j tj |d ¡¡ |j|d krT|}qT|d k	rž| j |¡ nt|jd|jƒ | j d| j¡ tj| ||||d	 d S )
Nú:)rT   rR   rS   r<   r;   zunknown value:Zchangedr   )r   ZComboBoxTextr+   rF   r   r>   r<   ÚendswithZLabelrT   rX   Ú	enumerater
   Zappend_textr2   rW   r   r!   rJ   r   r)   )	r(   r   r   r   r   rT   ZselectedZnrr;   r   r   r   r)   Î   s     

zOptionPickOne.__init__c                 C   s   | j j| j ¡  d S )Nr;   )r   r
   r+   rY   r-   r   r   r   r1   å   s    zOptionPickOne.get_current_value)N)rN   rO   rP   Úwidget_namer)   r1   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 )Nr   )r0   r   r)   )r(   r   r   r   r   r   r   r   r)   í   s    zOptionPickMany.__init__)N)rN   rO   rP   r]   r)   r   r   r   r   r   ê   s   r   )N)ZconfigZgi.repositoryr   r   ÚgettextÚinstallZPACKAGEr   rF   r   r   r   r   r   r   r   r   r   Ú<module>   s   
 