3
Z8                 @   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 j| |d | jtdtd}tj }tjtdtj dd}tjtdtj dd}tjtd	tj d
d}|jdd |jdd |jdd |j	| |j	| |j	| |j
d tj }|jtjjtjj |jtjj |j| |j|ddd || _|j||  d S )NzChoose network printerzChoose Network PrinterzPlease 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      s0    









zChooseNetworkPrinter.__init__c             C   s  | j j}|d rdS |jdds$dS |d }tjttttj}|| _| j	j
| |jd }|j|dtdddd	dd
d	 | j j }yHttjd|i|d| _| jj }t|j|d| _| jj }d }g }	x|j D ]\\}
}}|
d krq|d k	r d|
|f }n|
}|d kr$t|j| _| jj }|
|kr@td}td}n(||
 }|jdtd}|jdtd}|	j||||f qW |	jdd d x:|	D ]2\}}}}|jd }|j|d|d|d	|d
|	 qW 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
      host)kwargsparent)r   z%s/%sZUnknownzprinter-infozprinter-locationc             S   s   | d S )Nr   r   )xr   r   r   <lambda>o   s    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opZ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:   sf    










$zChooseNetworkPrinter.displayc             C   s   | j 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| j d S )N)r   Z
disconnectr3   )r   r   r   r   disconnect_signals   s    z'ChooseNetworkPrinter.disconnect_signalsc             C   s"   | j j 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jddsi S | jj j \}}|s.i S |j|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| jd  d S )N)r/   Zforeacheach)r   r%   r   r   r   r      s    z@ChooseNetworkPrinter.collect_answer.<locals>.enum_dests.__init__c             S   s(   |j |d}|r$| jj|j|jf d S )Nr   )	get_valuer/   r&   r   r0   )r   r%   pathr-   Z	user_datar1   r   r   r   r9      s    z<ChooseNetworkPrinter.collect_answer.<locals>.enum_dests.eachN)__name__
__module____qualname__r   r9   r   r   r   r   
enum_dests   s   r?   )remote_cups_queue_listedZremote_cups_dests_availableT)r@   Zremote_cups_destZremote_cups_queueZremote_cups_instance)
r   r"   r#   r   r6   r7   r:   r/   r   r0   )r   r%   r-   r1   r?   r   r   r   collect_answer   s    
z#ChooseNetworkPrinter.collect_answerc             C   s   | j j  d S )N)r)   Zcancel)r   r   r   r   cancel_operation   s    z%ChooseNetworkPrinter.cancel_operationN)
r<   r=   r>   r   r2   r4   r5   r8   rA   rB   r   r   r   r   r      s   Cr   )	Zgi.repositoryr   r(   r   Ztimedopsr   baser   r   r   r   r   r   <module>   s
   