U
    9¡_äK  ã                   @   sð   d dl T d dlmZ d dlZd dlZd dlZe d¡ G dd„ deƒZ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G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZdS )é    )Ú*)ÚGtkNz1.9.55c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚIPPResolutionc           	      C   sÆ   t jdt jdi| _t j| _i | _| j ¡ D ]\}}|| j|< q*t|tƒr†t	 
d|¡ ¡ }t|d ƒ}t|d ƒ}| j |d | j¡}n|d }|d }|d }t | |||f¡}||_||_||_|S )NÚdpiÚdpcú(\d+)\D+(\d+)(.*)r   é   é   )ÚcupsÚIPP_RES_PER_INCHÚIPP_RES_PER_CMÚUNITS_BY_VALÚUNITS_DEFAULTÚUNITS_BY_STRÚitemsÚ
isinstanceÚstrÚreÚmatchÚgroupsÚintÚgetÚtupleÚ__new__ÚxresÚyresÚunits)	ÚclsÚvaluesÚvÚsÚmatchesr   r   r   Úself© r#   ú+/usr/share/system-config-printer/options.pyr       s*     ÿ
zIPPResolution.__new__c                 C   s   t  | j| j| jf¡S ©N)r   Ú__init__r   r   r   )r"   r   r#   r#   r$   r&   9   s    zIPPResolution.__init__c                 C   s    d| j | j| j | j| j¡f S )Nú%sx%s%s)r   r   r   r   r   r   ©r"   r#   r#   r$   Ú__str__<   s
    

ÿÿzIPPResolution.__str__N)Ú__name__Ú
__module__Ú__qualname__r   r&   r)   r#   r#   r#   r$   r      s   r   c                 C   sê  t |tƒrPt |tƒr>|| D ]}t |tƒst‚qt| |||ƒS t||ƒ t‚n–t |tƒsºt |tƒsºt |t	ƒr&t
|ƒdkr&t |d tƒršt |d tƒsºt |d tƒr&t |d tƒr&z8t |tƒsÞt |t	ƒrèt |d tƒrèt|ƒ}nt|ƒ}W n$ tk
r   t| |d|ƒ Y S X t| |||ƒS t |tƒrÈ|D ]P}t |t	ƒrft
|ƒdkrft| |||ƒ  S t |tƒs6t| |||ƒ  S q6zt|ƒ}W n$ tk
r¸   t| |||ƒ Y S X t| |||ƒS t |tƒrât| |||ƒS t‚d S )Nr	   r   r   Ú é   )r   Úlistr   Ú
ValueErrorÚOptionSelectManyÚprintÚNotImplementedErrorr   Úfloatr   ÚlenÚ
OptionTextÚOptionNumericÚOptionSelectOneResolutionÚOptionSelectOneÚOptionSelectOneNumber)Únamer   r    Ú	on_changeZvvZsvr#   r#   r$   ÚOptionWidgetA   s`    


 

ÿþ
ýüüûû
ÿÿ
r=   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚOptionInterfacec                 C   s   d S r%   r#   r(   r#   r#   r$   Úget_defaultm   s    zOptionInterface.get_defaultc                 C   s   t ‚d S r%   ©r3   r(   r#   r#   r$   Úget_current_valuep   s    z!OptionInterface.get_current_valuec                 C   s   t ‚d S r%   r@   r(   r#   r#   r$   Ú
is_changeds   s    zOptionInterface.is_changedN)r*   r+   r,   r?   rA   rB   r#   r#   r#   r$   r>   l   s   r>   c                   @   sl   e Zd ZdZdZdZddd„Zdd	„ Zd
d„ Zddd„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚOptionAlwaysShownr   r   r	   NFc                 C   sî   || _ || _|| _|tkr&dd„ }|}|| _|  |¡ || _t| jƒtj	kr~| j 
¡ d kr~td| j  ƒ t t¡}	| j |	¡ |d k	rÚ|tkrÚ| j 
¡ }	d}
i }|	 ¡ }|rÔ|	 |d¡|||
 < |
d7 }
|	 |¡}q¨|| _|| _|  d ¡ d S )Nc                 S   s(   t | ƒtkr |  ¡ dkrdS dS t| ƒS )N)ZfalseZnoZoffFT)Útyper   ÚlowerÚbool)Úxr#   r#   r$   Ú	bool_type‚   s
    z-OptionAlwaysShown.__init__.<locals>.bool_typezNo ComboBox model for %sr   r   )r;   ÚwidgetÚbuttonrF   Úipp_typeÚset_defaultÚcombobox_maprD   r   ÚComboBoxÚ	get_modelÚ
debugprintZ	ListStorer   Z	set_modelr   Úget_iter_firstÚ	get_valueÚ	iter_nextÚcombobox_dictÚuse_supportedÚreinit)r"   r;   rK   Úsystem_defaultrI   rJ   rM   rU   rH   ÚmodelÚiÚdictÚiterr#   r#   r$   r&   |   s6    
ÿ

zOptionAlwaysShown.__init__c                 C   s   | j S r%   )rW   r(   r#   r#   r$   r?   ¡   s    zOptionAlwaysShown.get_defaultc                 C   s   |   |¡| _d S r%   )rK   rW   )r"   rW   r#   r#   r$   rL   ¤   s    zOptionAlwaysShown.set_defaultc           
      C   s"  |dk	rÈ| j rÈt| jƒtjkrÆ| jtkrÆ| j ¡ }| ¡  t	j
 | j¡}|rbg | _tƒ | _d}|D ]Z}t|  |¡ƒ}|r¦| j |¡ | |¡}|| j|< |d7 }n|}| ¡ }	| |	d|¡ qfnt| jƒtjkrd| j ¡  t	j
 | j¡}|rg | _tƒ | _d}|D ]T}t|  |¡ƒ}|rN| j |¡ | |¡}|| j|< |d7 }n|}| j |¡ qndt| jƒtjkrÈ| jtkrÈ| jdk	rÈ| j ¡ }| ¡  |D ]"}| ¡ }	| |	d| j| ¡ q¤|dk	rø|  |¡| _|  | j¡ | j d¡ nd| _|  | j¡ | j d¡ | j| _dS )z¢Set the original value of the option and the supported choices.
        The special value None for original_value resets the option to the
        system default.Nr   r   TF)rU   rD   rI   r   rN   rK   r   rO   ÚclearÚ	ppdippstrZjob_optionsr   r;   rM   rZ   rT   ÚappendÚ	set_valueÚComboBoxTextZ
remove_allÚappend_textr   Úoriginal_valueÚset_widget_valuerJ   Úset_sensitiverW   ÚSTATE_UNCHANGEDÚstate)
r"   rb   Ú	supportedrX   ZtranslationsrY   ZeachZtxtÚtextr[   r#   r#   r$   rV   ª   sr    
ÿÿ







ÿþ

zOptionAlwaysShown.reinitc                 C   sì   t | jƒ}|tjkr | j |¡S |tjks4|tjkrÆ| jtksH| jt	kr | j
d kr | j ¡ }| ¡ }|d k	rŽ|  | |d¡¡|krŽ| |¡}qd|rÄ| j |¡ qè| j
r´| j
 |¡}n|}| j |¡S n"|tjkrÜ| j |¡S t|| jƒ‚d S ©Nr   )rD   rI   r   Ú
SpinButtonr_   rN   r`   rK   r   r   rM   rO   rQ   rR   rS   Úset_active_iterÚindexÚ
set_activeÚCheckButtonr3   r;   )r"   Z	ipp_valueÚtrX   r[   rl   r#   r#   r$   rc   í   s,    

ÿ
ÿ
z"OptionAlwaysShown.set_widget_valuec                 C   sì   t | jƒ}|tjkrNz|  | j ¡ ¡W S  tk
rJ   |  | j ¡ ¡ Y S X n†|tjkr~| j	rn| j	| j 
¡  S |  | j 
¡ ¡S |tjkrº| j ¡ }|d kr | j}| j	r°|  	|¡S |  |¡S |tjkrÔ|  | j 
¡ ¡S t|| j| jƒ t‚d S r%   )rD   rI   r   rj   rK   Úget_textr0   rR   rN   rM   Ú
get_activer`   Úget_active_textrW   rn   r2   r3   )r"   ro   r    r#   r#   r$   Úget_widget_value  s*    







z"OptionAlwaysShown.get_widget_valuec                 C   s   |   ¡ S r%   )rs   r(   r#   r#   r$   rA   )  s    z#OptionAlwaysShown.get_current_valuec                 C   sT   | j d k	r@| j| jkrdS | j| jkr<|  ¡ | j kr8dS dS dS | j| jkrPdS dS )NTF)rb   rf   ÚSTATE_RESETÚSTATE_ADJUSTEDrA   r(   r#   r#   r$   rB   ,  s    
zOptionAlwaysShown.is_changedc                 C   s$   |   | j¡ | j| _| j d¡ d S ©NF)rc   rW   rt   rf   rJ   rd   r(   r#   r#   r$   ÚresetB  s    zOptionAlwaysShown.resetc                 C   s   | j | _| j d¡ d S )NT)ru   rf   rJ   rd   r(   r#   r#   r$   ÚchangedG  s    zOptionAlwaysShown.changed)NF)N)r*   r+   r,   re   rt   ru   r&   r?   rL   rV   rc   rs   rA   rB   rw   rx   r#   r#   r#   r$   rC   v   s      ÿ
%
C"rC   c                   @   s@   e Zd Zddd„Zdd„ Zdd	„ Zdd
d„Zdd„ Zdd„ ZdS )ÚOptionAlwaysShownSpecialNFúSystem defaultc	           	   
   C   s*   || _ d| _tj| |||||||d d S )NF)rM   rU   )Úspecial_choiceÚspecial_choice_shownrC   r&   )	r"   r;   rK   rW   rI   rJ   rM   rU   r{   r#   r#   r$   r&   L  s     ýz!OptionAlwaysShownSpecial.__init__c                 C   sH   | j r
d S d| _ | j ¡ }| d¡}| |d| j¡ | j | ¡ ¡ d S )NTr   )r|   rI   rO   Úinsertr_   r{   rk   rQ   )r"   rX   r[   r#   r#   r$   Úshow_special_choiceV  s    

z,OptionAlwaysShownSpecial.show_special_choicec                 C   s,   | j s
d S d| _ | j ¡ }| | ¡ ¡ d S rv   )r|   rI   rO   ÚremoverQ   )r"   rX   r#   r#   r$   Úhide_special_choicea  s
    
z,OptionAlwaysShownSpecial.hide_special_choicec                 C   s.   |d k	r|   ¡  n|  ¡  tj| ||d d S )N)rg   )r€   r~   rC   rV   )r"   rb   rg   r#   r#   r$   rV   j  s    
zOptionAlwaysShownSpecial.reinitc                 C   s   |   ¡  t | ¡ d S r%   )r~   rC   rw   r(   r#   r#   r$   rw   r  s    zOptionAlwaysShownSpecial.resetc                 C   s$   t  | ¡ | j ¡ dkr |  ¡  d S ri   )rC   rx   rI   rq   r€   r(   r#   r#   r$   rx   v  s    
z OptionAlwaysShownSpecial.changed)NFrz   )N)	r*   r+   r,   r&   r~   r€   rV   rw   rx   r#   r#   r#   r$   ry   K  s       þ

	
ry   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ ZdS )
ÚOptionNc                 C   sT   || _ || _|| _|| _d| _|}| d¡s4|d7 }tj|d| _| j 	dd¡ d S )NFú:)Úlabelç        g      à?)
r;   Úvaluerg   r<   Úis_newÚendswithr   ZLabelrƒ   Zset_alignment)r"   r;   r…   rg   r<   rƒ   r#   r#   r$   r&     s    
zOption.__init__c                 C   s   t ‚d S r%   r@   r(   r#   r#   r$   rA   Œ  s    zOption.get_current_valuec                 C   s   | j pt|  ¡ ƒt| jƒkS r%   )r†   r   rA   r…   r(   r#   r#   r$   rB     s    ÿzOption.is_changedc                 G   s   |   | ¡ d S r%   )r<   )r"   rI   Úargsr#   r#   r$   rx   “  s    zOption.changed)r*   r+   r,   Z	conflictsr&   rA   rB   rx   r#   r#   r#   r$   r   {  s
   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r9   c                 C   sÂ   t  | ||||¡ t ¡ | _d }t|ƒD ],\}}| j t|ƒ¡ t|ƒt|ƒkr(|}q(|d k	rl| j |¡ nBt	d||f ƒ t	d| ƒ t
|ƒdkr®t	d|d ƒ | j d¡ | j d| j¡ d S )NzUnknown value for %s: %szChoices: %sr   zSelecting from choices:rx   )r   r&   r   r`   ÚselectorÚ	enumeratera   r   rm   rP   r5   Úconnectrx   )r"   r;   r…   rg   r<   ZselectedZnrZchoicer#   r#   r$   r&   š  s    
zOptionSelectOne.__init__c                 C   s
   | j  ¡ S r%   )r‰   rr   r(   r#   r#   r$   rA   ®  s    z!OptionSelectOne.get_current_valueN©r*   r+   r,   r&   rA   r#   r#   r#   r$   r9   ˜  s   r9   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r8   c                 C   sn   t jdt jdi| _t j| _i | _| j ¡ D ]\}}|| j|< q*|  |¡}tt	| j|ƒƒ}t
 | ||||¡ d S )Nr   r   )r
   r   r   r   r   r   r   Ústringr/   Úmapr9   r&   )r"   r;   r…   rg   r<   r   r    r#   r#   r$   r&   ´  s     ÿ
z"OptionSelectOneResolution.__init__c                 C   s$   d|d |d | j  |d d¡f S )Nr'   r   r   r	   r-   )r   r   )r"   r…   r#   r#   r$   r   À  s    ÿz OptionSelectOneResolution.stringc                 C   s:   t  d|¡ ¡ }t|d ƒt|d ƒ| j |d | j¡fS )Nr   r   r   r	   )r   r   r   r   r   r   r   )r"   r   r!   r#   r#   r$   r…   Ä  s    ÿzOptionSelectOneResolution.valuec                 C   s   |   | j ¡ ¡S r%   )r…   r‰   rr   r(   r#   r#   r$   rA   É  s    z+OptionSelectOneResolution.get_current_valueN)r*   r+   r,   r&   r   r…   rA   r#   r#   r#   r$   r8   ³  s   r8   c                   @   s   e Zd Zdd„ ZdS )r:   c                 C   s   t | j ¡ pdƒS ri   )r   r‰   rr   r(   r#   r#   r$   rA   Ð  s    z'OptionSelectOneNumber.get_current_valueN)r*   r+   r,   rA   r#   r#   r#   r$   r:   Î  s   r:   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r1   c                 C   sr   t  | ||||¡ g | _t ¡ }|D ]B}tj |¡}| ||k¡ | |¡ | 	d| j
¡ | j |¡ q$|| _d S )NZtoggled)r   r&   Ú
checkboxesr   ZVBoxrn   Znew_with_labelrm   Úaddr‹   rx   r^   r‰   )r"   r;   r…   rg   r<   Zvboxr    Zcheckboxr#   r#   r$   r&   ×  s    
zOptionSelectMany.__init__c                 C   s   dd„ t | j| jƒD ƒS )Nc                 S   s   g | ]\}}|  ¡ r|‘qS r#   )rq   )Ú.0r    Zchkr#   r#   r$   Ú
<listcomp>å  s    ÿz6OptionSelectMany.get_current_value.<locals>.<listcomp>)Úziprg   r   r(   r#   r#   r$   rA   ä  s    z"OptionSelectMany.get_current_valueNrŒ   r#   r#   r#   r$   r1   Õ  s   r1   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r7   c                 C   s¾   t |tƒp t |tƒo t |d tƒ| _| jr0d}nd}t |tƒsFd|f}t | ||||¡ tj||d |d dddd}t ¡ | _	| j	 
|¡ | j	 |¡ | jsª| j	 d¡ | j	 d	| j¡ d S )
Nr   r	   r   g      ð?g      @r„   )r…   rE   ÚupperZstep_incrementZpage_incrementZ	page_sizeTrx   )r   r4   r   Úis_floatr   r&   r   Z
Adjustmentrj   r‰   Zset_adjustmentZ
set_digitsZset_numericr‹   rx   )r"   r;   r…   rg   r<   ZdigitsZadjr#   r#   r$   r&   ë  s,    

þ
  þ
zOptionNumeric.__init__c                 C   s   | j r| j ¡ S | j ¡ S r%   )r•   r‰   rR   Zget_value_as_intr(   r#   r#   r$   rA     s    
zOptionNumeric.get_current_valueNrŒ   r#   r#   r#   r$   r7   ê  s   r7   c                   @   s   e Zd Zdd„ Zdd„ ZdS )r6   c                 C   s<   t  | ||||¡ t ¡ | _| j |¡ | j d| j¡ d S )Nrx   )r   r&   r   ZEntryr‰   Zset_textr‹   rx   )r"   r;   r…   rg   r<   r#   r#   r$   r&   	  s    
zOptionText.__init__c                 C   s
   | j  ¡ S r%   )r‰   rp   r(   r#   r#   r$   rA     s    zOptionText.get_current_valueNrŒ   r#   r#   r#   r$   r6     s   r6   )ÚdebugZgi.repositoryr   r
   r]   r   Zrequirer   r   r=   r>   rC   ry   r   r9   r8   r:   r1   r7   r6   r#   r#   r#   r$   Ú<module>   s$   
"+
 V0