U
    9¡_8  ã                   @   sH   d dl m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 )	é    )ÚGtkN)ÚGObject)ÚTimedOperationé   )Ú*c                   @   sD   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S )ÚChooseNetworkPrinterc                 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 network printerzChoose Network Printerz„Please select the network 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Úsw© r   úE/usr/share/system-config-printer/troubleshoot/ChooseNetworkPrinter.pyr      s>    
ÿ
 ÿ
 ÿ
 ÿ




zChooseNetworkPrinter.__init__c                 C   s
  | j j}|d rdS | dd¡s$dS |d }t ttttj¡}|| _| j	 
|¡ | d ¡}| |dtdƒddd	dd
d¡	 | j  ¡ }z>ttjd|i|d| _| j ¡ }t|j|d| _| j ¡ }d }g }	| ¡ D ]¦\\}
}}|
d kræqÐ|d k	rüd|
|f }n|
}|d kr t|jƒ| _| j ¡ }|
|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
|¡	 qŒW nB tjk
rÚ   Y n, tjk
rð   Y n tk
r   Y nX dS )NZcups_queue_listedFÚremote_server_cupsZremote_server_try_connectr   z
Not listedr   Ú r
   é   Zhost)ÚkwargsÚparent)r   z%s/%sZUnknownzprinter-infozprinter-locationc                 S   s   | d S )Nr   r   )Úxr   r   r   Ú<lambda>o   ó    z.ChooseNetworkPrinter.display.<locals>.<lambda>)ÚkeyT)r   ÚanswersÚgetr   Z	ListStoreÚstrr   ZTYPE_PYOBJECTÚmodelr   Z	set_modelÚappendÚsetr   Z
get_windowr   ÚcupsZ
ConnectionÚopÚrunZgetDestsÚitemsZgetPrintersÚsortZ	HTTPErrorZIPPErrorÚRuntimeError)r   r"   Zserverr%   Úiterr   ÚcÚdestsZprintersZ
dests_listr   ÚinstanceÚdestZqueuer   r   Zprinterr   r   r   Údisplay:   sj    ý

þ






"zChooseNetworkPrinter.displayc                 C   s   | j  d|¡| _d S )Nzcursor-changed)r   ZconnectÚ	signal_id)r   Zhandlerr   r   r   Úconnect_signals}   s    z$ChooseNetworkPrinter.connect_signalsc                 C   s   | j  | j¡ d S ©N)r   Z
disconnectr4   ©r   r   r   r   Údisconnect_signals€   s    z'ChooseNetworkPrinter.disconnect_signalsc                 C   s"   | j  ¡  ¡ \}}|d krdS dS )NFT)r   Úget_selectionÚget_selected)r   r%   r.   r   r   r   Úcan_click_forwardƒ   s    z&ChooseNetworkPrinter.can_click_forwardc                 C   sv   | j j dd¡si S | j ¡  ¡ \}}|s.i S | |d¡}|dkr`G dd„ dƒ}d||ƒjdœS d||j|j	d	œS d S )
Nr   Fr   r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )z7ChooseNetworkPrinter.collect_answer.<locals>.enum_destsc                 S   s   g | _ | | jd ¡ d S r6   )r0   ZforeachÚeach)r   r%   r   r   r   r   ”   s    z@ChooseNetworkPrinter.collect_answer.<locals>.enum_dests.__init__c                 S   s(   |  |d¡}|r$| j |j|jf¡ d S )Nr   )Ú	get_valuer0   r&   r   r1   )r   r%   Úpathr.   Z	user_datar2   r   r   r   r<   ˜   s    z<ChooseNetworkPrinter.collect_answer.<locals>.enum_dests.eachN)Ú__name__Ú
__module__Ú__qualname__r   r<   r   r   r   r   Ú
enum_dests“   s   rB   )Úremote_cups_queue_listedZremote_cups_dests_availableT)rC   Zremote_cups_destZremote_cups_queueZremote_cups_instance)
r   r"   r#   r   r9   r:   r=   r0   r   r1   )r   r%   r.   r2   rB   r   r   r   Úcollect_answer‰   s     
ÿýz#ChooseNetworkPrinter.collect_answerc                 C   s   | j  ¡  d S r6   )r)   Zcancelr7   r   r   r   Úcancel_operation¥   s    z%ChooseNetworkPrinter.cancel_operationN)
r?   r@   rA   r   r3   r5   r8   r;   rD   rE   r   r   r   r   r      s   Cr   )	Zgi.repositoryr   r(   r   Ztimedopsr   Úbaser   r   r   r   r   r   Ú<module>   s
   