3
Z                 @   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 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 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   "   s0    









zChoosePrinter.__init__c             C   s  t jttttj}| jj| |jd }|j|dt	ddddddt
	 | jj }y8tjd | jtj|dj }| j|j|dj }d }g }x|j D ]\\}}	}
|d krq|	d k	rd||	f }n|}|d kr| j|j|dj }||krt	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|
	 qRW W 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   s    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
ConnectionZ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@   sR    




$zChoosePrinter.displayc             C   s   | j 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| j d S )N)r   Z
disconnectr4   )r   r   r   r   disconnect_signalsx   s    z ChoosePrinter.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ChoosePrinter.can_click_forwardc             C   sZ   | j j j \}}|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| jd  d S )N)r0   Zforeacheach)r   r-   r   r   r   r      s    z9ChoosePrinter.collect_answer.<locals>.enum_dests.__init__c             S   s,   |j |d}|tkr(| jj|j|jf d S )Nr   )	get_valuer&   r0   r$   r   r1   )r   r-   pathr.   Z	user_datar2   r   r   r   r:      s    
z5ChoosePrinter.collect_answer.<locals>.enum_dests.eachN)r   r   r   r   r:   r   r   r   r   
enum_dests   s   r=   F)cups_queue_listedZcups_dests_availableT)r>   Z	cups_destZ
cups_queueZcups_instance)r   r7   r8   r;   r&   r0   r   r1   )r   r-   r.   r2   r=   r   r   r   collect_answer   s    zChoosePrinter.collect_answerc             C   s   | j j  d S )N)opZcancel)r   r   r   r   cancel_operation   s    zChoosePrinter.cancel_operationc             O   s   t ||| _| jS )N)r
   r@   )r   argskwargsr   r   r   r(      s    zChoosePrinter.timedopN)r   r   r   r   r3   r5   r6   r9   r?   rA   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   