U
    9¡_õ  ã                   @   s\   d dl mZ G dd„ dƒZeƒ Zd dlZd dl mZ d dlmZ ddlT G d	d
„ d
e	ƒZ
dS )é    )ÚGtkc                   @   s   e Zd ZdS )Ú	NoPrinterN)Ú__name__Ú
__module__Ú__qualname__© r   r   ú>/usr/share/system-config-printer/troubleshoot/ChoosePrinter.pyr      s   r   N)ÚGObject)ÚTimedOperationé   )Ú*c                   @   sL   e Z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S )ÚChoosePrinterc                 C   s  t  | |d¡ |  tdƒtdƒ¡}t ¡ }tjtdƒt ¡ dd}tjtdƒt ¡ dd}tjtd	ƒt ¡ d
d}| dd¡ | dd¡ | dd¡ | 	|¡ | 	|¡ | 	|¡ | 
d¡ t ¡ }| tjjtjj¡ | tjj¡ | |¡ | |ddd¡ || _| || ¡ d S )NzChoose printerzChoose Printerz|Please select the printer you are trying to use from the list below. If it does not appear in the list, select 'Not listed'.ÚNamer   )ÚtextZLocationr   ZInformationé   Z	resizableT)ÚQuestionÚ__init__Zinitial_vboxÚ_r   ZTreeViewZTreeViewColumnZCellRendererTextZset_propertyZappend_columnZset_rules_hintZScrolledWindowZ
set_policyZ
PolicyTypeZ	AUTOMATICZset_shadow_typeZ
ShadowTypeÚINÚaddZ
pack_startÚtreeviewZnew_page)ÚselfÚtroubleshooterZpage1ZtvÚnameÚlocationÚinfoÚswr   r   r   r   "   s>    
ÿ
 ÿ
 ÿ
 ÿ




zChoosePrinter.__init__c                 C   sÊ  t  ttttj¡}| j |¡ | d ¡}| |dt	dƒdddddt
¡	 | j ¡ }z0t d¡ | jtj|d ¡ }| j|j|d ¡ }d }g }| ¡ D ] \\}}	}
|d kr¬q–|	d k	rÂd||	f }n|}|d krâ| j|j|d ¡ }||krüt	d	ƒ}t	d	ƒ}n(|| }| d
t	d	ƒ¡}| dt	d	ƒ¡}| ||||
f¡ q–|jdd„ d |D ]2\}}}}
| d ¡}| |d|d|d|d|
¡	 qLW nB tjk
rš   Y n, tjk
r°   Y n tk
rÄ   Y nX dS )Nr   z
Not listedr   Ú r   é   )Úparentz%s/%sZUnknownzprinter-infozprinter-locationc                 S   s   | d S )Nr   r   )Úxr   r   r   Ú<lambda>g   ó    z'ChoosePrinter.display.<locals>.<lambda>)ÚkeyT)r   Z	ListStoreÚstrr	   ZTYPE_PYOBJECTr   Z	set_modelÚappendÚsetr   Ú	NotListedr   Z
get_windowÚcupsZ	setServerÚtimedopZ
ConnectionÚrunZgetDestsÚitemsZgetPrintersÚgetÚsortZ	HTTPErrorZIPPErrorÚRuntimeError)r   ÚmodelÚiterr   ÚcÚdestsZprintersZ
dests_listr   ÚinstanceÚdestZqueuer   r   Zprinterr   r   r   Údisplay@   sV    ý


ÿ


"zChoosePrinter.displayc                 C   s   | j  d|¡| _d S )Nzcursor-changed)r   ZconnectÚ	signal_id)r   Zhandlerr   r   r   Úconnect_signalsu   s    zChoosePrinter.connect_signalsc                 C   s   | j  | j¡ d S ©N)r   Z
disconnectr6   ©r   r   r   r   Údisconnect_signalsx   s    z ChoosePrinter.disconnect_signalsc                 C   s"   | j  ¡  ¡ \}}|d krdS dS )NFT)r   Úget_selectionÚget_selected)r   r/   r0   r   r   r   Úcan_click_forward{   s    zChoosePrinter.can_click_forwardc                 C   sZ   | j  ¡  ¡ \}}| |d¡}|tkrDG dd„ dƒ}d||ƒjdœS d||j|jdœS d S )Nr   c                   @   s   e Zd Zdd„ Zdd„ ZdS )z0ChoosePrinter.collect_answer.<locals>.enum_destsc                 S   s   g | _ | | jd ¡ d S r8   )r2   ZforeachÚeach)r   r/   r   r   r   r   †   s    z9ChoosePrinter.collect_answer.<locals>.enum_dests.__init__c                 S   s,   |  |d¡}|tkr(| j |j|jf¡ d S )Nr   )Ú	get_valuer'   r2   r%   r   r3   )r   r/   Úpathr0   Z	user_datar4   r   r   r   r>   Š   s
    
ÿz5ChoosePrinter.collect_answer.<locals>.enum_dests.eachN)r   r   r   r   r>   r   r   r   r   Ú
enum_dests…   s   rA   F)Úcups_queue_listedZcups_dests_availableT)rB   Z	cups_destZ
cups_queueZcups_instance)r   r;   r<   r?   r'   r2   r   r3   )r   r/   r0   r4   rA   r   r   r   Úcollect_answer   s    ÿýzChoosePrinter.collect_answerc                 C   s   | j  ¡  d S r8   )ÚopZcancelr9   r   r   r   Úcancel_operation˜   s    zChoosePrinter.cancel_operationc                 O   s   t ||Ž| _| jS r8   )r
   rD   )r   ÚargsÚkwargsr   r   r   r)   ›   s    zChoosePrinter.timedopN)r   r   r   r   r5   r7   r:   r=   rC   rE   r)   r   r   r   r   r   !   s   5r   )Zgi.repositoryr   r   r'   r(   r	   Ztimedopsr
   Úbaser   r   r   r   r   r   Ú<module>   s   