3
NZgA                 @   sh  d dl Z d dlZd dlZddlT ddlmZmZmZmZm	Z	 d dl
mZ d dlmZ ddlmZ yd dlmZ W n8 ek
r Z zeje dd	lmZ W Y ddZ[X nX dZd
ZdZdZejdejZejdejZejdZ ejdej!Z"ejdej!Z#ejdej!Z$ejdej!Z%i Z&da'G dd dZ(dd Z)dd Z*d!ddZ+dd Z,de-e.ddfdd Z/dS )"    N   )*)utilstuipasswordos_utilssmart_install)cups)core_install)to_string_utf8)import_module)dyn_import_mod         zv(.*):/(.*?)/(\S*?)\?(?:serial=(\S*)|device=(\S*)|ip=(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}[^&]*)|zc=(\S+))(?:&port=(\d))?s   \*NickName:\s*"(.*)"z$(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})zzc=(.*)z(.*)://(.*)zserial=(.*)z(\S*): (.*)Fc               @   s   e Zd ZdddZdS )DetectedDeviceFTc             C   s(   || _ || _|| _|| _|| _|| _d S )N)PrinterName	DeviceURI
DeviceTypeZPPDFileTypePPDFileError	IsEnabled)selfZPrinter_NameZ
Device_URIZDevice_TypeZppdTyper   r    r   /usr/share/hplip/base/queues.py__init__?   s    zDetectedDevice.__init__N)FT)__name__
__module____qualname__r   r   r   r   r   r   >   s   r   c       	      C   sT   |d krBt ||||||}| tkr2t|  j| qP|g}|t| < ntjd|  d S )Nz%s is not HP Device.)r   mapofDevicesappendlogwarn)	Keyprinter_name
device_uriback_endppd_fileTyper   Is_Print_Q_EnabledZdevice1Z
deviceListr   r   r   addToDeviceListM   s    
r(   c          &   C   s  t tjddd}t tjddd}tjd\}}d}g }|jdd-ksV|jd	d.krbtjd
 nXxV|j D ]J}y0t	j
|}|jd}	|jd}
|j|	|
f W ql tk
r   Y qlX qlW tj| tjd||f  |rx|D ]}|\}	}
|
jdr q|
jdrqtjtj|	 tjtjdt|	  yt|
\	}}}}}}}}}W n: tk
r   d/\	}}}}}}}}}d|
krd}Y nX tjd|
  tjjd|	d }d }d}tjj|stjd|  tt|	|
|||d ntjd|  yt|dj }W nb tk
rl   tjd|  tj|tj rJtjd|  ntjd|  d}t!|fS d}Y n6X yt"t#j
|jd}W n tk
r   d}Y nX tjd|  d|	 }tj|\}}tjd|j$dd  t%j
|
rt%j
|
jd}nt&j
|
rt&j
|
jd}nt'j
|
r6t'j
|
jd}nbt(j
|
rt(j
|
jd}t(j
|
jd}d|krr|}ntjd |
  d }ntjd |
  d }|d k	rd}|jd!d0krd}|d" | }tjd#|||||||||||f  d}|d$krd%|krtjd&|	  d}n@|d'kr<d%|kr<tjd(|	  d}n|d1krTtjd)|	  d }d*|krrt)}|sd}n8d+|krt*}|sd}nd,|krt+}n|rt}d}t||	|
|||| qW tjd t!|fS )2NZ	configurezhpcups-install0zhpijs-installz	lpstat -vTzNo destinations addedr   zlpstat:zNo Queue addedr   z.HPCups installation=%d  HPIJS installation =%dz
cups-pdf:/zipp:/- FZHPzDevice URI: %sz/etc/cups/ppdz.ppdzPPD %s file not foundzPPD: %srbzFail to read ppd=%s filezFile %s has read permissionsz)Insufficient permission to access file %szPPD Description: %szlpstat -p%szPrinter status: %s
zunknown protocol device_uri=%sZPaused_zyKey'%s': deviceType '%s' is_hp '%s' bus '%s' model '%s' serial '%s' dev_file '%s' host '%s' zc '%s' port '%s' Enabled'%d'hpfaxzHP FaxzMIncorrect PPD file for fax queue '%s'. Fax queue must use 'HP-Fax-hplip.ppd'.hpzUIncorrect PPD file for print queue '%s'. Print queue must not use 'HP-Fax-hplip.ppd'.zYDevice %s is not HPLIP installed. Device must use the hp: or hpfax: to function in HPLIP.ZhpcupsZhpijsZ
Postscriptr1   )	r+   Fr+   r+   r+   r+   r+   r+   r   r1   )r0   r/   ),Zto_boolZsys_confgetr   Zrunfindr    info
splitlinesLPSTAT_PATTERNsearchgroupr   AttributeErrordebug
startswithZboldlenparseDeviceURIErrorospathjoinexistserrorr(   HPOTHERopenreadIOErrorr!   accessR_OKr   r   NICKNAME_PATTERNreplaceUSB_PATTERNNET_PATTERNNET_ZC_PATTERNNET_OTHER_PATTERNHPCUPSHPIJSHPPS)modeZis_hpcups_installedZis_hpijs_installedstoutputstatusZcups_printerspmatchr#   r$   r%   is_hpbusmodelserialdev_filehostzcportZppd_filer&   r   ZfileptrZdesccmdr"   Zpart_1Zpart_2r'   r   r   r   parseQueuesY   s    














rb   c             C   s<  d }|t kr|d| jks"d| jkrJ| jdkr>tjd| j  qTd| j }n
d| j }|d krdatj| tj	d\}}|dkrtjd	 t
jd
 nf|dkrtjtjt dd | j\}}|tjkrtjd| j  n(tjd| j  tjdrd}	tj|	 n|| jdkr8datj	d| j \}
}|
dkrBtjd	 t
jd
 n8|dkrjtj| j tjd| j  ntjd| j  nd| jksd| jkr| jdkrtjd| j  ntjd| j  t}ntjd| j  t}|d kr| jdkrt}|r8|r8|r8da|j| j| j| |j  tjd |j  d S )Nr0   r/   Fz'%s' is configured correctly.zBPPD file for '%s' is not correct. Need to choose correct PPD file.zR'%s' is not configured using HPLIP. Need to remove and re-cofigure using hp-setup.Tz'Do you want to remove and re-configure?z	User Exitr   r+   z5Failed to remove '%s' queue.
Remove using hp-toolbox.zF' %s' removed successfully.
Re-configuring this printer by hp-setup...zhp-setupzhp-setup -iz1'%s Queue is paused. Do you want to enable queue?z'%s' is enabled successfullyzManually enable '%s'.zStarting GUI loop...)INTERACTIVE_MODEr   r   r    r:   r   Error_FoundrC   r   Zenter_yes_nosysexitr	   Zcups_operationZ
delPrinterZIPP_OKr4   r   Zwhichr   Zexecuter   ZenablePrinterZQUEUES_INCORRECT_PPDZQUEUES_CONFIG_ERRORZQUEUES_PAUSEDZinitr   ZshowZexec_)querS   dialogappZ	Error_msgZresponsevaluerV   Z
status_strra   Zresponcer   r   r   reconfigure_Queue   s^    










rk   c             C   s  t j| }|d krtt|jdj p*d}|dk}|jdj pDd}|dkrVtt|jdpbd}|jdppd}|jdp~d}|jdpd}d}	|s|jdpd }	}|jdpd}
|dk ryt|
}
W n ttfk
r   d}
Y nX |
dk rd}
||||||||	|
f	S )Nr   r+   r0   r/   hpaior   usbnetbtfwparr   r               r   )r0   r/   rl   )rm   rn   ro   rp   rq   )	DEVICE_URI_PATTERNrX   r>   ZERROR_INVALID_DEVICE_URIr8   lowerint
ValueError	TypeError)r$   mr%   rY   rZ   r[   r\   r]   r^   r_   r`   r   r   r   r=     s0    



r=   c             C   s  yddl m}m} W n( tk
r<   tjd tjd Y nX |tkryddl m	} W n tk
rv   tj
d Y nX tj|j t|\}}	|	rt|j dkrtjd xt|j D ]\}
}t|dkr|sdatj
d	t||d jf  xF|D ]}t||  qW qtjd
 tjd|d j  t|d | qW tj|d
d d | \}}|tkrhdatdkr|st|dkrtj
d n
tjd n
tj
d tj  n|tkr~|dkrtjd tjd tj|\}}t|d }t|d }|tj}|j d d
d
t!| }tj|j" t|\}}	|	rlt|j dkrXtjd xt|j D ]\}
}t|dkrtj
dt||d jf  |sda|j#d	t||d jf  xN|D ]}t|||| qW n0tjd
 tjd|d j  t|d ||| qfW tj||||| \}}|tkr8datdkrv|svt|dkr\d}nd}|j$| n
tj
d tj  d S )Nr   )devicepmlzDevice library is not avail.)r   z Failed to import password objectr   zNo queues found.TzB%d queues of same device %s is configured.
Remove unwanted queues.r+   z+Single print queue is configured for '%s'. FzNo Queue(s) configured.z*Queue(s) configured correctly using HPLIP.z/Could not complete Queue(s) configuration checkZqt3zsThis is not supported in Qt3, requires GUI support (try running with --qt4). Also, try using interactive (-i) mode.z.queuesconfz.setupdialogzC%d queues of same device %s is configured.  Remove unwanted queues.)%r+   r|   r}   ImportErrorr    rC   re   rf   rc   r   r!   r	   ZsetPasswordCallbackZshowPasswordPromptrb   listitemsr:   r<   rd   r   rk   r   disableZERROR_NO_SI_DEVICEr4   ZreleaseCupsInstanceGUI_MODEr   Zimport_dialogr   argvZQueuesDiagnoseZQUEUES_MSG_SENDINGZshowPasswordUIZshowMessageZshowSuccessMessage)ZpasswordObjrS   Z
ui_toolkitZ
quiet_modeZ
DEVICE_URIr|   r}   r   r   rV   keyvalrg   ZSI_stsZ	error_strZQApplicationZ
ui_packageZuiZsetupdialogri   rh   msgr   r   r   main_function@  s    


















r   )NN)0re   r?   regr+   r   r   r   r   r   Zprntr	   Z	installerr
   Zsixextr   	importlibr   r~   er    r:   r   rP   rQ   rR   rD   compileIrv   	MULTILINErJ   rM   
IGNORECASErN   rO   rL   r6   r   rd   r   r(   rb   rk   r=   r   ZUI_TOOLKIT_QT4r   r   r   r   r   <module>   s@   

 
A$