U
    9_@                     @   s   d dl Z d dlZd dlT d dlmZ G dd dejZedkrd dlmZ e Z	e
d ee e Zg Zd	d
 Zdd Zdd Zeede eede eejd e	  [dS )    N)*)GObjectc                   @   sz   e Zd ZejjdejejffejjdeejffdZ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S )OpenPrintingRequestN)finishederrorc                 K   s:   t j |  td tjjf || _d | _td|   d S )NZStartingz+%s)r   __init__
debugprintcupshelpersopenprintingZOpenPrinting_handle)selfargs r   7/usr/share/system-config-printer/OpenPrintingRequest.pyr   5   s
    zOpenPrintingRequest.__init__c                 C   s   t d|   d S )Nz-%s)r   r   r   r   r   __del__<   s    zOpenPrintingRequest.__del__c                 C   sH   t d|   | jd k	r*| j| j d | _t d|   | ddd d S )Nz%s: cancel()%s -> 'error'r   r   Zcanceled)r   r   r
   ZcancelOperationemitr   r   r   r   cancel?   s    
zOpenPrintingRequest.cancelc                 C   s$   t d|   | j|| j|| _d S )Nz%s: searchPrinters())r   r
   searchPrinters_printers_gotr   )r   Z
searchterm	user_datar   r   r   r   H   s
    z"OpenPrintingRequest.searchPrintersc                    sb   d | _ |dkr,td|   | d|  d S  fdd D | _g | _t | _|  s^|   d S )Nr   r   r   c                    s   g | ]}| | fqS r   r   ).0xprintersr   r   
<listcomp>U   s   z5OpenPrintingRequest._printers_got.<locals>.<listcomp>)	r   r   r   downloadable_printers_uncheckeddownloadable_printersdictdownloadable_drivers_query_next_printer_drivers_got)r   statusr   r   r   r   r   r   N   s    
z!OpenPrintingRequest._printers_gotc                 C   s   z| j  }|\}}W n" tk
r8   td|   Y dS X tjrJd| j_nd| j_t }tj	rhd|d< nd|d< tj
|d< td	| |f  | jj|| j||d
| _dS )z
        If there are more printers to query, kick off a query and
        return True.

        Otherwise return False.
        z'%s: All printer driver queries finishedF   r   1ZonlyppdfilesZonlydownloadpackagesystemz%s: Querying drivers for %s)r   Zextra_optionsT)r   pop
IndexErrorr   configZDOWNLOADABLE_ONLYFREEr
   Zonlyfreer   DOWNLOADABLE_ONLYPPDr&   ZlistDrivers_printer_drivers_gotr   )r   r   
printer_idprinter_nameZoptionsr   r   r   r!   ^   s*    



z'OpenPrintingRequest._query_next_printerc           	      C   s   d | _ |dkr,td|   | d|| d S |rtd|   i }| D ]\}|| }d|krlt|d dkstjsd|krt|d dkr|| ||< qHtd|  qHt|dkrtd|   |\}}|| j|< | j	| | 
 s|   d S )	Nr   r   r   z%s: - drivers foundZppdsZpackagesz!Not using invalid driver entry %sz.%s: - drivers with installable resources found)r   r   r   keyslenr)   r*   r    r   appendr!   r"   )	r   r#   r   driversZdrivers_installableZ	driverkeyZdriverr,   r-   r   r   r   r+      s@    
z(OpenPrintingRequest._printer_drivers_gotc                 C   s(   d | _ td|   | d| j| j d S )Nz%s -> 'finished'r   )r   r   r   r   r    r   r   r   r   r"      s    z OpenPrintingRequest._drivers_got)N)__name__
__module____qualname__r   ZSignalFlagsZRUN_LASTZTYPE_PYOBJECTintZ__gsignals__r   r   r   r   r   r!   r+   r"   r   r   r   r   r       s&   
	
#"r   __main__)pprintTc                 C   s&   t D ]}| | qtdtj d S )Nr$   )handlersZ
disconnectr   Ztimeout_add_secondsmainloopquit)objZhandlerr   r   r   done   s    r<   c                 C   s$   t d|  t t| t|  d S )Nz	Error: %d)printreprr<   )r;   r#   errr   r   r   r      s    r   c                 C   s   t | t | t|  d S )N)r7   r<   )r;   r   r1   r   r   r   r      s    r   z
ricoh 8000)r)   r	   debugZgi.repositoryr   r   r2   r7   ZMainLoopr9   Zset_debuggingZset_debugprint_fnr   Zreqr8   r<   r   r   r0   ZconnectZidle_addr   runr   r   r   r   <module>   s(    
