3
Z@                 @   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j Z	e
d eje e Zg Zd	d
 Zdd Zdd Zejejde ejejde ejejd e	j  [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 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| j d | _t d|   | jddd d S )Nz%s: cancel()z%s -> 'error'r   r   Zcanceled)r   r   r
   ZcancelOperationemit)r   r   r   r   cancel?   s    
zOpenPrintingRequest.cancelc             C   s$   t d|   | j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|   | jd|  d S  fdd D | _g | _t | _| j s^| j  d S )Nr   z%s -> 'error'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   y| j j }|\}}W n  tk
r6   td|   dS X tjrHd| j_nd| j_t }tj	rfd|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|   | jd|| d S |rtd|   i }xj|j D ]^}|| }d|krnt|d dkstj rd|krt|d dkr|| ||< qJtd|  qJW t|dkrtd|   |\}}|| j|< | jj	| | j
 s| j  d S )	Nr   z%s -> 'error'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(      s4    
z(OpenPrintingRequest._printer_drivers_gotc             C   s(   d | _ td|   | j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*   xt D ]}| j| qW tjdtj d S )Nr!   )handlersZ
disconnectr   Ztimeout_add_secondsmainloopquit)objZhandlerr   r   r   done   s    
r9   c             C   s$   t d|  t t| t|  d S )Nz	Error: %d)printreprr9   )r8   r    errr   r   r   r      s    r   c             C   s   t | t | t|  d S )N)r4   r9   )r8   r   r.   r   r   r   r      s    r   z
ricoh 8000)r&   r	   debugZgi.repositoryr   r   r/   r4   ZMainLoopr6   Zset_debuggingZset_debugprint_fnr   Zreqr5   r9   r   r   r-   ZconnectZidle_addr   Zrunr   r   r   r   <module>   s(    
