3
NZ                 @   s  d dl Z 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	 d dl
mZ d dlT ddlT d dlmZ d dlmZmZmZ yd dlT d dlT W n, ek
r   d dlT d dlT d dlT Y nX ddlmZ dd	lmZ dd
lmZmZ yd dlmZ dZ W n$ ek
r   dZ e!j"d Y nX d Z#dZ$dZ%dZ&d Z'dZ(dZ)dZ*d Z+dZ,d Z-dZ.dZ/G dd de0Z1dd Z2dddZ3G dd de4Z5G dd de0eZ6dS )    N)*)deviceutilsmodelspkit)cups   )pluginhandler)
to_unicodePY3from_unicode_to_str)	Ui_Dialog)PluginDialog)WifiSetupDialogSUCCESS_CONNECTED)faxTFz*Fax setup disabled - Python 2.3+ required.      c               @   sB   e Zd ZdddZdddZdd	 Zd
d Zdd ZdddZdS )PasswordDialogNr   c             C   sR  t j| | | jttdd || _t| }|jdddd |jd t	| | _
|j| j
dddd t	| | _|j| jdd t| | _| jjtj |j| jdddd t	| | _|j| jdd t| | _| jjtj |j| jdddd t| | _|j| jdd | j  | jtd	d
j| j  | jjj| j | jjj| j d S )Nhp_logo128x128      r   r   r   r   i     )QDialog__init__setWindowIconQIconload_pixmappromptZQGridLayoutZsetContentsMarginsZ
setSpacingZQLabelPromptTextLabelZ	addWidgetUsernameTextLabelZ	QLineEditUsernameLineEditZsetEchoModeZNormalPasswordTextLabelPasswordLineEditZPasswordZQPushButtonOkPushButtonlanguageChangeZresizeZQSizeZ
expandedToZminimumSizeHintclickedconnectZacceptZreturnPressed)selfr   parentnameZmodalZflZLayout r,   #/usr/share/hplip/ui5/setupdialog.pyr   Q   s0    






zPasswordDialog.__init__Tc             C   s,   | j j| |s(| j jd | j jd d S )NTz'QLineEdit {background-color: lightgray})r"   setTextZsetReadOnlysetStyleSheet)r)   ZdefUserallowUsernameEditr,   r,   r-   setDefaultUsernamev   s    z!PasswordDialog.setDefaultUsernamec             C   s   t | jj S )N)r
   r"   text)r)   r,   r,   r-   getUsername|   s    zPasswordDialog.getUsernamec             C   s   t | jj S )N)r
   r$   r2   )r)   r,   r,   r-   getPassword   s    zPasswordDialog.getPasswordc             C   s^   | j | jd | jj| j| j | jj| jd | jj| jd | jj| jd d S )Nz+HP Device Manager - Enter Username/Passwordz	Username:z	Password:ZOK)ZsetWindowTitle_PasswordDialog__trr    r.   r   r!   r#   r%   )r)   r,   r,   r-   r&      s
    zPasswordDialog.languageChangec             C   s   t jd||S )NSetupDialog)qApp	translate)r)   scr,   r,   r-   __tr   s    zPasswordDialog.__tr)NNr   r   )T)N)	__name__
__module____qualname__r   r1   r3   r4   r&   r5   r,   r,   r,   r-   r   P   s   
%
r   c          	   C   s    zt | d }t||  W d X d S )N)r   	FailureUI)r   dlgr,   r,   r-   FailureMessageUI   s    
rA   c          
   C   sH   z@t | d }|d kr |j|| |j tjkr>|j |j fS W d X dS )N )rB   rB   )r   r1   exec_r   ZAcceptedr3   r4   )r   ZuserNamer0   r@   r,   r,   r-   showPasswordUI   s    
rD   c               @   s   e Zd Zdd ZdS )DeviceTableWidgetItemc             C   s   t j| |t j || _d S )N)QTableWidgetItemr   ZUserType
device_uri)r)   r2   rG   r,   r,   r-   r      s    zDeviceTableWidgetItem.__init__N)r<   r=   r>   r   r,   r,   r,   r-   rE      s   rE   c               @   s  e Zd Zdzd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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'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)dQdR Z*dSdT Z+dUdV Z,dWdX Z-dYdZ Z.d[d\ Z/d]d^ Z0d_d` Z1d{dbdcZ2ddde Z3dfdg Z4dhdi Z5djdk Z6dldm Z7dndo Z8dpdq Z9drds Z:e;fdtduZ<dvdw Z=d|dxdyZ>dS )}r6   NFc             C   s   t j| | | j|  || _|| _|| _|| _|r@tjd|  | j	  | jr^t
jd| j n*| jrzd| _t
jd| j nt
jd| j tjt d S )NzUsing device: %sr   )r   r   ZsetupUiparamjd_portrG   removeloginfoinitUiQTimer
singleShotshowRemovePageskip_discoverydiscovery_methodshowDevicesPageshowDiscoveryPager   ZsetPasswordCallbackrD   )r)   r*   rH   rI   rG   rJ   r,   r,   r-   r      s     
zSetupDialog.__init__c             C   s   | j ttdd | jjj| j | jjj| j | j	jj| j
 | jjj| j tjtjtj | jrz| j  d| _n| j  | j  | j  t| _d S )Nr   r   r   )r   r   r   ZCancelButtonr'   r(   CancelButton_clicked
BackButtonBackButton_clicked
NextButtonNextButton_clickedManualGroupBoxManualGroupBox_clickedsignalSIGINTSIG_DFLrJ   initRemovePagemax_pageinitDiscoveryPageinitDevicesPageinitAddPrinterPagePAGE_ADD_PRINTER)r)   r,   r,   r-   rM      s    zSetupDialog.initUic             C   s  | j jd | jd | jjd d| _d| _d| _d| _| jj	t
j | jj	t
j | jj	t
j i | _d| _d| _d| _d| _d| _t| _| jrtjd d| _d| _| jj| j | jj| j | jjd | jj	d | j  rd| _nt!| | j"d	 t#j$j%| j}|d k	r0| j jd | jd nt#j&j%| j}|d k	rht
jrh| jjd | j'd nHt#j(j%| j}|d k	rt
jr| jjd | j)d nt!| | j"d
 n| j*ry$t#j+| j*\	}}| _}}}}}}	W n& t,k
r   tj-d| j*  Y nxX |}
| jdkrfytj.d t/j0|d }
W n" t/j1k
rV   tj.d Y nX tj.d|
  | j*|||
fi| _d| _n6t
j rt
j rd| _d| _| j jd | jd t
j2rt
j3r| j4j5dt | j4j5dt6 | j4j5dt7 n| j4j	d | j8j9j:| j; | j j<j:| j= | jj<j:| j> | jj<j:| j? | jj<j:| j@ | jAjBj:| jC | jDjBj:| jE | jj<j:| jF | jG  d S )NTFr   usb      rB   zSearching for device...z_<b>Device not found.</b> <p>Please make sure your printer is properly connected and powered-on.z*<b>Invalid manual discovery parameter.</b>z Invalid device URI specified: %snetz$Trying to get hostname for device...zFailed.zHost name=%szAll devices/printerszSingle function printers onlyzAll-in-one/MFP devices only)HUsbRadioButton
setCheckedsetUsbRadioButtonrZ   advancedmanualrQ   rR   NetworkRadioButton
setEnabledprop	net_buildWirelessButtonParallelRadioButton	par_builddevicesbustimeoutttlsearchprint_test_pageDEVICE_DESC_ALLdevice_descrH   rK   rL   ManualParamLineEditr.   JetDirectSpinBoxZsetValuerI   DiscoveryOptionsGroupBoxmanualDiscoveryr?   _SetupDialog__trr   Zusb_patmatchZdev_patsetParallelRadioButtonip_patsetNetworkRadioButtonrG   parseDeviceURIErrorerrordebugsocketgethostbyaddrherror	fax_buildZ
scan_buildDeviceTypeComboBoxZaddItemDEVICE_DESC_SINGLE_FUNCDEVICE_DESC_MULTI_FUNCAdvancedButtonr'   r(   AdvancedButton_clickedZtoggledUsbRadioButton_toggledNetworkRadioButton_toggledWirelessButton_toggledParallelRadioButton_toggledNetworkTTLSpinBoxZvalueChangedNetworkTTLSpinBox_valueChangedNetworkTimeoutSpinBox"NetworkTimeoutSpinBox_valueChangedManualGroupBox_toggledshowAdvanced)r)   r   back_endis_hpmodelserialdev_filehostzcportr+   r,   r,   r-   ra      s    


$

zSetupDialog.initDiscoveryPagec             C   s   | j j|  d S )N)r   ro   )r)   checkedr,   r,   r-   r   M  s    z"SetupDialog.ManualGroupBox_toggledc             C   s&  t j| j| j\}}}|r"tjd|  t j|\	}}}}}}	}
}}|
}|dkry0t jj|d k	rtj	d|  t
j|
d }W n t
jt
jfk
r   Y nX ||||fi| _|dkr| jjd | jd nN|dkrtjr| jjd | jd n(|dkrtjr| jjd | jd dS dS )	NzFound device: %srh   z&Getting host name from IP address (%s)r   re   TparF)r   ZmakeURIrH   rI   rK   rL   r   r   ry   r   r   r   r   Zgaierrorru   ri   rj   rk   rp   rq   rn   r   rt   rs   r   )r)   rG   Zsane_urifax_urir   r   rv   r   r   r   r   r   r   r+   r,   r,   r-   r   Q  s0    
zSetupDialog.manualDiscoveryc             C   s   || _ | jj }| j| d S )N)rm   rn   	isCheckedsetJetDirect)r)   r   Znetworkr,   r,   r-   r[   w  s    
z"SetupDialog.ManualGroupBox_clickedc             C   s0   | j jd | jjd | jt | jt d S )NFT)rV   ro   rX   setNextButtonBUTTON_NEXTdisplayPagePAGE_DISCOVERY)r)   r,   r,   r-   rT   }  s    
zSetupDialog.showDiscoveryPagec             C   s   | j  | _ | j  d S )N)rl   r   )r)   r,   r,   r-   r     s    
z"SetupDialog.AdvancedButton_clickedc             C   st   | j r<| jjt | jj| jd | jjtt	dd n4| jjt
 | jj| jd | jjtt	dd d S )NzHide Advanced OptionsZminus16x16zShow Advanced OptionsZplus)rl   ZAdvancedStackedWidgetsetCurrentIndexADVANCED_SHOWr   r.   r   setIconr   r   ADVANCED_HIDE)r)   r,   r,   r-   r     s    zSetupDialog.showAdvancedc             C   s(   | j j|o| j | jj|o | j d S )N)ZJetDirectLabelro   rm   r~   )r)   enabledr,   r,   r-   r     s    zSetupDialog.setJetDirectc             C   s4   | j j| | jj| | jj| | jj| d S )N)ZNetworkTimeoutLabelro   r   ZNetworkTTLLabelr   )r)   r   r,   r,   r-   setNetworkOptions  s    zSetupDialog.setNetworkOptionsc             C   s(   | j j| | jj| | jj| d S )N)SearchLineEditro   r   ZDeviceTypeLabel)r)   r   r,   r,   r-   setSearchOptions  s    zSetupDialog.setSearchOptionsc             C   s   | j j| d S )N)rZ   ro   )r)   r   r,   r,   r-   setManualDiscovery  s    zSetupDialog.setManualDiscoveryc             C   s(   | j j| | jj| | jjd d S )Nr   )ZNetworkDiscoveryMethodLabelro   NetworkDiscoveryMethodComboBoxr   )r)   r   r,   r,   r-   setNetworkDiscovery  s    zSetupDialog.setNetworkDiscoveryc             C   s   | j | d S )N)rk   )r)   radio_enabledr,   r,   r-   r     s    z"SetupDialog.UsbRadioButton_toggledc             C   sX   | j |  | j|  | j|  | j| | j| |rT| jj| jd d| _d S )NzUSB bus ID:device ID (bbb:ddd):re   )	r   r   r   r   r   ManualParamLabelr.   r   rv   )r)   r   r,   r,   r-   rk     s    

zSetupDialog.setUsbRadioButtonc             C   s   | j | d S )N)r   )r)   r   r,   r,   r-   r     s    z&SetupDialog.NetworkRadioButton_toggledc             C   sR   | j | | j| | j| | j| | j| |rN| jj| jd d| _d S )NzIP Address or network name:rh   )	r   r   r   r   r   r   r.   r   rv   )r)   r   r,   r,   r-   r     s    




z!SetupDialog.setNetworkRadioButtonc             C   s   | j | d S )N)setWirelessButton)r)   r   r,   r,   r-   r     s    z"SetupDialog.WirelessButton_toggledc             C   s\   | j |  | j|  | j|  | j|  | j|  |rX| jj| jd d| _d S )NzIP Address or network name:rh   )	r   r   r   r   r   r   r.   r   rv   )r)   r   r,   r,   r-   r     s    zSetupDialog.setWirelessButtonc             C   s   | j | d S )N)r   )r)   r   r,   r,   r-   r     s    z'SetupDialog.ParallelRadioButton_toggledc             C   s\   | j |  | j|  | j|  | j|  | j|  |rX| jj| jd d| _d S )NzDevice node (/dev/...):r   )	r   r   r   r   r   r   r.   r   rv   )r)   r   r,   r,   r-   r     s    z"SetupDialog.setParallelRadioButtonc             C   s
   || _ d S )N)rx   )r)   rx   r,   r,   r-   r     s    z*SetupDialog.NetworkTTLSpinBox_valueChangedc             C   s
   || _ d S )N)rw   )r)   rw   r,   r,   r-   r     s    z.SetupDialog.NetworkTimeoutSpinBox_valueChangedc             C   s   | j jj| j d S )N)ZRefreshButtonr'   r(   RefreshButton_clicked)r)   r,   r,   r-   rb      s    zSetupDialog.initDevicesPagec             C   s  | j jd | jt d}tjttj zZ| j	s| j
rN| jrN| j  n6d}| jdkr| jdkrld}n| jdkr|d}nd}tjd	| j| j| j| jpd
| j|f  ntjd| j| jpd
| jf  | jtkrdtjtfi}n| jtkrdtjtfi}ni }| jdkrbyddlm} W n  tk
r<   tjd Y n&X tj  |j t!d tjttj t"j#| jg| j| j|| j|d| _	W d tj  X | j$  | j	r
| j%jd | j&j't(dd t)| j	dkr| j*j+| j,d n| j*j+| j,dt)| j	  | j-  nn| j%jd | j&j't(dd tjd| j  | j*j+| j,d | jdkrxt.j/ rxt0| | j,d| j,d | j1t2 d S )NTrB   rh   r   Zslpr   ZmdnsZavahizGSearching... (bus=%s, timeout=%d, ttl=%d, search=%s desc=%d, method=%s)z(None)z)Searching... (bus=%s, search=%s, desc=%d)z	scan-typere   )smart_installz+Failed to Import smart_install.py from baseqt4)Z
net_searchrL   r   z5<b>1 device found.</b> Click <i>Next</i> to continue.zX<b>%s devices found.</b> Select the device to install and click <i>Next</i> to continue.Fr   zNo devices found on bus: %szm<b>No devices found.</b><br>Click <i>Back</i> to change discovery options, or <i>Refresh</i> to search again.ar  <b>HPLIP cannot detect printers in your network.</b><p>This may be due to existing firewall settings blocking the required ports.
                When you are in a trusted network environment, you may open the ports for network services like mdns and slp in the firewall. For detailed steps follow the link.
                <b>http://hplipopensource.com/node/374</b></p>zHP Device Manager)3rV   ro   r   r   QApplicationsetOverrideCursorQCursorQt
WaitCursorru   rm   rH   r   rv   rR   rK   rL   rw   rx   ry   r|   r   operatorleZSCAN_TYPE_NONEr   gtbaser   ImportErrorr   restoreOverrideCursordisableGUI_MODEr   ZprobeDevicesclearDevicesTablerX   ZDevicesFoundIconZ	setPixmapr   lenZDevicesFoundLabelr.   r   loadDevicesTabler   Z	check_lanr?   r   PAGE_DEVICES)r)   ry   Znet_search_typeZfilter_dictr   r,   r,   r-   rS     sj    







zSetupDialog.showDevicesPagec          
   C   s  | j jt| j | jdkrr| jdkrP| jd| jd| jd| jdg}d}q| jd| jd| jdg}d}n| jd| jdg}d	}| j jt| | j j| t	j
t	jB }xt| jD ]\}}tj|\	}}}}	}
}}}}tj|	}tt||}|j| | j j|d| tt|}|j| | j j||| | jdkrtt|}|j| | j j|d	| | jdkrtt| j| d }|j| | j j|d| qW | j j  | j jd | j jd
 | j jd d S )Nrh   r   ZModelz
IP Addressz	Host Namez
Device URIr   r   r   T)DevicesTableWidgetsetRowCountr   ru   rv   rR   r   setColumnCountsetHorizontalHeaderLabelsr   ItemIsSelectableItemIsEnabled	enumerater   r   r   ZnormalizeModelUINamerE   strsetFlagssetItemrF   resizeColumnsToContentsZ	selectRowZsetSortingEnabledZ	sortItems)r)   headersZdevice_uri_colflagsrowdr   r   rv   r   r   r   r   r   r   Zmodel_uiir,   r,   r-   r   V  sB    

$







zSetupDialog.loadDevicesTablec             C   s&   | j j  | j jd | j jd d S )Nr   )r   clearr   r   )r)   r,   r,   r-   r     s    
zSetupDialog.clearDevicesTablec             C   s    | j   g | _tjd| j d S )Nr   )r   ru   rN   rO   rS   )r)   r,   r,   r-   r     s    z!SetupDialog.RefreshButton_clickedc             C   s   i | _ | jjj| j | jjj| j | jjj| j	 | j
jj| j | jjt| j | jjt| j | jjt| j | jjttdd | jjj| j | jj| jd d| _d| _d| _d| _d| _d| _d S )NZfolder_openr   z4Browse for an alternative PPD file for this printer.FrB   T)mqPrinterNameLineEditZ
textEditedr(   PrinterNameLineEdit_textEditedFaxNameLineEditFaxNameLineEdit_textEditedSetupPrintGroupBoxr'   SetupPrintGroupBox_clickedSetupFaxGroupBoxSetupFaxGroupBox_clickedZsetValidatorZPrinterNameValidatorFaxNumberLineEditZPhoneNumValidatorZOtherPPDButtonr   r   r   OtherPPDButton_clicked
setToolTipr   printer_fax_names_sameprinter_namefax_namefax_setup_ok	fax_setupprint_setup)r)   r,   r,   r-   rc     s"    zSetupDialog.initAddPrinterPagec             C   s,  t j }| jjdt}| jjdt}|tkr|j t jkrtj	|t
k|\}}|sft| | jd d S | sz|j t jkr|t
krt| | jd d S t| | jd | jt | j | _| jr| jjd | jjd | jjd | jjd | j  | j  n6d | _| jjd | jjd | jjd | jjd trtjr| jjdtttfkrd| _| jj d | jjd | j! | _| jr| j"  | j#  nd| _| jj d | jjd n0| jj d | jjd d	| _$d| _%d| _d| _&| js| jr| j'  | j(t) nt*j+d
 | j,  d S )Npluginzplugin-reasonzn<b>Unable to find an appropriate su/sudo utiltity to run hp-plugin.</b><p>Install kdesu, gnomesu, or gksu.</p>a	  <b>The device you are trying to setup requires a binary plug-in. Some functionalities may not work as expected without plug-ins.<p> Please run 'hp-plugin' as normal user to install plug-ins.</b></p><p>Visit <u>http://hplipopensource.com</u> for more infomation.</p>zEither you have chosen to skip the installation of the optional plug-in or that installation has failed.  Your printer may not function at optimal performance.TFzfax-typerB   zExiting the setup...)-r	   ZPluginHandler   getZPLUGIN_NONEZPLUGIN_REASON_NONEZ	getStatusZPLUGIN_INSTALLEDr   Zrun_plugin_commandZPLUGIN_REQUIREDr?   r   Z	WarningUIr   BUTTON_ADD_PRINTERsetDefaultPrinterNamer   r   setCheckablero   SendTestPageCheckBoxfindPrinterPPD	updatePPD	print_ppdfax_import_okrp   r   ZFAX_TYPE_NONEZFAX_TYPE_NOT_SUPPORTEDr   r   rj   setDefaultFaxName
findFaxPPDreadwriteFaxInformationr   fax_name_okr   setAddPrinterButtonr   rd   rK   rL   close)r)   Z	pluginObjr   Zplugin_reasonokZsudo_okr,   r,   r-   showAddPrinterPage  sf    





zSetupDialog.showAddPrinterPagec             C   s   | j d krdtjd| j  | jj| jd y| jjd W n tk
rP   Y nX | j	jt
d nJ| jj| j d  | j	j| j d  y| jjd W n tk
r   Y nX d S )Nz0No appropriate print PPD file found for model %sz6(Not found. Click browse button to select a PPD file.)zbackground-color: yellowrB   r   r   )r   rK   r   r   ZPPDFileLineEditr.   r   r/   AttributeErrorPrinterDescriptionLineEditr   )r)   r,   r,   r-   r     s    
zSetupDialog.updatePPDc             C   s\   t tj| | jdtjdd| jd}|rXtjj|rX|t	j
|f| _| j  | j  d S )NzSelect PPD FiledirsZppdz)PPD Files (*.ppd *.ppd.gz);;All Files (*))r
   ZQFileDialogZgetOpenFileNamer   Zsys_confr   ospathexistsr   ZgetPPDDescriptionr   r   r  )r)   bZppd_filer,   r,   r-   r     s    
z"SetupDialog.OtherPPDButton_clickedc          
   C   sd   t jttj zDd | _tj | _tj	| j
| j| j| _d| jksLd| jkrRd | _W d t j  X d S )NZscanjetZdigital_sender)r   r   r   r   r   r   r   ZgetSystemPPDsZppdsZgetPPDFile2r   r   r   )r)   r,   r,   r-   r     s    

zSetupDialog.findPrinterPPDc             C   s   t jttj zbtj| j| j\| _	}}| j	r8d| _
n8d| _
t| | jd|  d| _| jjd | jjd W d t j  X d S )NTFz^<b>Unable to locate the HPLIP Fax PPD file:</b><p>%s.ppd.gz</p><p>Fax setup has been disabled.)r   r   r   r   r   r   ZgetFaxPPDFiler   r   fax_ppdr   r?   r   r   r   rj   ro   r   )r)   Zfax_ppd_nameZnickr,   r,   r-   r     s    zSetupDialog.findFaxPPDc          	      sp  t jdg| _tj| j dd tj D | _t j| j	\	}}}}}}}}}	t
j|jddjddd}
|
 t jdg}| j	| jkr | j| j	 ks |krJ| jdd	j fd
d|D  }tj| | j |tjtjB tjtjkr@d}x\ d|  }||kr2| j	| jks$|| j| j	 kr2 d| 7  P |d7 }qW n
d| _dS d| _| jj  tj   | _dS )Nhpc             S   s   g | ]
}|j qS r,   )r+   ).0pr,   r,   r-   
<listcomp>1  s    z5SetupDialog.setDefaultPrinterName.<locals>.<listcomp>seriesrB   Series_z<b>One or more print queues already exist for this device: %s</b>.<br> <b>Would you like to install another print queue for this device ?</b>z, c                s   g | ]} |kr|qS r,   r,   )r  printer)r   r,   r-   r  <  s    r   z_%dr   FT)r   getSupportedCUPSDevicesZinstalled_print_devicesrK   r   r   ZgetPrintersinstalled_queuesr   rG   r   xstripreplacegetSupportedCUPSPrinterNamesr   joinQMessageBoxwarningwindowTitleYesNoNoButtonprinter_name_okr   r.   r   )r)   r   r   rv   r   r   r   r   r   r   default_modelZinstalled_printer_names	warn_textr   tr,   )r   r-   r   -  s>    
*
z!SetupDialog.setDefaultPrinterNamec          	      sh  t jdg| _tj| j | jjdd| _t j| j\	}}}}}}}}}	t	j
|jddjddd}
|
d  t jdg}| j| jkr | j| j ks |krL| jd	d
j fdd|D  }tj| | j |tjtjB tjB tjkrBd}x\ d|  }||kr4| j| jks&|| j| j kr4 d| 7  P |d7 }qW n
d| _dS d| _| jj   | _dS )Nhpfaxzhp:zhpfax:r  rB   r  r  Z_faxz<b>One or more fax queues already exist for this device: %s</b>.<br> <b>Would you like to install another fax queue for this device ?</b>z, c                s   g | ]} |kr|qS r,   r,   )r  Z
fax_device)r   r,   r-   r  f  s    z1SetupDialog.setDefaultFaxName.<locals>.<listcomp>r   z_%dr   FT)r   r  Zinstalled_fax_devicesrK   r   rG   r  r   r   r   r  r  r   r  r  r  r  r  r   r!  r  r   r.   r   )r)   r   r   rv   r   r   r   r   r   r   r#  Zinstalled_fax_namesr$  r   r%  r,   )r   r-   r   V  s<    

*zSetupDialog.setDefaultFaxNamec             C   s   t || _d| _| js0| jj| jd d| _n| j| jkrr| jd}| jj| | jj| d| _d| _d| _	n\| j| j
kr| jj| jd d| _n6| j	r| j| jkrd| _	d| _| jjtd| jj  | j  | j  d S )NTz&You must enter a name for the printer.FzOThe printer name and fax name must be different. Please choose different names.zHA printer already exists with this name. Please choose a different name.ztextEdited(const QString &))r
   r   r"  r   r   r   r   r   r  r   r  emitSIGNALr2   setIndicatorsr  )r)   r%  r9   r,   r,   r-   r   ~  s.    

z*SetupDialog.PrinterNameLineEdit_textEditedc             C   s   t || _d| _| js0| jj| jd d| _n| j| jkrr| jd}| jj| | jj| d| _d| _d| _	n\| j| j
kr| jj| jd d| _n6| j	r| j| jkrd| _	d| _| jjtd| jj  | j  | j  d S )NTzYou must enter a fax name.FzOThe printer name and fax name must be different. Please choose different names.zDA fax already exists with this name. Please choose a different name.ztextEdited(const QString&))r
   r   r  r   r   r   r   r   r"  r   r  r'  r(  r2   r)  r  )r)   r%  r9   r,   r,   r-   r     s.    

z&SetupDialog.FaxNameLineEdit_textEditedc             C   sH   | j j s$| jjd | jjd n| jjd | jjd | j  d S )NFT)r   r   r   r   ro   r  )r)   r,   r,   r-   r     s    
z&SetupDialog.SetupPrintGroupBox_clickedc             C   s   | j   d S )N)r  )r)   r,   r,   r-   r     s    z$SetupDialog.SetupFaxGroupBox_clickedc             C   s   | j r>| jjtd y| jjd W qd tk
r:   Y qdX n&y| jjd W n tk
rb   Y nX | jr| jjtd y| jjd W q tk
r   Y qX n&y| jjd W n tk
r   Y nX d S )NrB   zbackground-color: yellow)r"  r   r   r   r/   r  r  r   )r)   r,   r,   r-   r)    s(    zSetupDialog.setIndicatorsc             C   sP   | j j s| jj r@| jj| jr0| jr0| jd k	p:| jo:| j	 n| jjd d S )NF)
r   r   r   rX   ro   r   r"  r   r   r  )r)   r,   r,   r-   r    s    zSetupDialog.setAddPrinterButtonc             C   sv   | j rL| j }|tjks,|tjks,|tjkr,|tjkr>| j  | jrL| j	  | j
rj| j tjkrj| jd | j  d S )NF)r   setupPrinterr   IPP_FORBIDDENIPP_NOT_AUTHENTICATEDIPP_NOT_AUTHORIZEDIPP_OKflashFirmwarerz   printTestPager   setupFaxr   r  )r)   Z	print_stsr,   r,   r-   
addPrinter  s    

zSetupDialog.addPrinterc             C   s   | j jddrytj| j}W n> tk
r\ } z"t| | jd|j|j	f  W Y d d }~X n.X |j
 rrtjd nt| | jd |j  d S )Nzfw-downloadFzD<b>Error opening device. Firmware download is Failed.</b><p>%s (%s).zFirmware download successful.
z#<b>Firmware download is Failed.</b>)r   r   r   DevicerG   r   r?   r   msgoptZdownloadFirmwarerK   rL   r  )r)   r   er,   r,   r-   r/    s    .zSetupDialog.flashFirmwarec             C   s   t j}tjttj ztjj	| j
d sNt| j| j| jd| j
d | jf}n"t| j| j| j| j
d d| jf}t jt jtd| f| \}}tjtjdg |t jkrtj  t| | jd|  ntjt| j| j W d tj  X |S )Nr   rB   r   r  z0<b>Printer queue setup failed.</b> <p>Error : %s)r   IPP_BAD_REQUESTr   r   r   r   r   r	  r
  r  r   r   r   rG   print_location
print_desccups_operationr2  r   rK   r   r   r  r.  r   r?   r   r   	sendEventEVENT_CUPS_QUEUES_ADDED)r)   statusZadd_prnt_args
status_strr,   r,   r-   r*    s    $"

zSetupDialog.setupPrinterc             C   s   t j}tjttj ztjj	| j
sJt j| j| j| jd| j
| j\}}n"t j| j| j| j| j
d| j\}}tjtjdg |t jkrtj  t| | jd|  ntjt| j| j W d tj  X |S )NrB   r&  z+<b>Fax queue setup failed.</b><p>Error : %s)r   r7  r   r   r   r   r   r	  r
  r  r  r2  r   r   fax_locationfax_descrK   r   r   r  r.  r   r?   r   r   r;  r<  )r)   r=  r>  r,   r,   r-   r1  -  s    

zSetupDialog.setupFaxTc          !   C   s  zt jttj tj| jdd}xy|j  W n^ t	k
r   | j
d}tjt| tj| | j |tjtjB tjtjB tjtjkrP Y q(X zd}d}x|d7 }y>|rt|j | _t|j | _n|j| j |j| j W n| t	k
rb   | j
d}tjt| tj| | j |tjtjB tjtjB tjtjkrDP tjd d}|d	kr^P Y qX d}P qW W d |j  X |r|r| jj | j | j!j | j P q(W W d t j"  X d S )
NT)Zdisable_dbuszMUnable to communicate with the device. Please check the device and try again.r   r   zP<b>Device I/O Error</b><p>Could not communicate with device. Device may be busy.rf   F   )#r   r   r   r   r   r   ZgetFaxDevicer   openr   r   rK   r   r
   r  Zcriticalr  ZRetryZDefaultZCancelZEscaper!  ZgetPhoneNum
fax_numberZgetStationNamefax_name_companyZsetStationNameZsetPhoneNumZtimeZsleepr  r   r.   NameCompanyLineEditr   )r)   readr   Z
error_textZtriesr  r,   r,   r-   r   G  sb    










z#SetupDialog.readwriteFaxInformationc          "   C   s  yt j| j}W n> tk
rN } z"t| | jd|j|jf  W Y d d }~X nX y|j  W n$ tk
r   t| | jd Y nX |j	 r|j
  y|j| j W nZ tk
r } z>|jtkrt| | jd nt| | jd|j|jf  W Y d d }~X nX nt| | jd |j
  d S )Nz<b>Device error:</b><p>%s (%s).zG<b>Unable to print to printer.</b><p>Please check device and try again.zZ<b>No CUPS queue found for device.</b><p>Please install the printer in CUPS and try again.z6<b>Printer Error</b><p>An error occured: %s (code=%d).zn<b>Printer Error.</b><p>Printer is busy, offline, or in an error state. Please check the device and try again.)r   r3  rG   r   r?   r   r4  r5  rB  ZisIdleAndNoErrorr  r0  r   Z$ERROR_NO_CUPS_QUEUE_FOUND_FOR_DEVICE)r)   r   r6  r,   r,   r-   r0    s$    .

0zSetupDialog.printTestPagec             C   s   d S )Nr,   )r)   r,   r,   r-   r_     s    zSetupDialog.initRemovePagec          
   C   s$  | j t | jj| jd | jt | jjd | j	jd | j
j j  tjddg| _tj| j | jst| | jd | j  d S | j
jt| j | jd| jd| jd| jd	g}| j
jt| | j
j| tjtjB }d
}x&| jD ]}t| j
}|jj| j | j
j|d
| tj |j!\	}}}}	}
}}}}| j!d k	rh| j!|j!krh|j"tj# t$t%|j&}|j'| |j(tj)|j& | j
j*|d| |dkr| jd}n
| jd}t$|}|j'| | j
j*|d| t$t%|j!}|j'| | j
j*|d| |d7 }qW | j
j+  d S )NzStep 1 of 1Fr  r&  zr<b>No printers or faxes found to remove.</b><p>You must setup a least one printer or fax before you can remove it.ZSelectzPrinter (Queue) NameZTypez
Device URIr   r   ZFaxZPrinterr   r   ),r   PAGE_REMOVEStepTextr.   r   r   BUTTON_REMOVErV   ro   rX   RemoveDevicesTableWidgetZverticalHeaderZhider   ZgetSupportedCUPSPrintersZinstalled_printersrK   r   r?   r  r   r   r   r   r   r   r   Z	QCheckBoxZstateChangedr(   CheckBox_stateChangedZsetCellWidgetr   rG   ZsetCheckStateCheckedrF   r   r+   r   ZsetDataUserRoler   r   )r)   r   r   r   r  widgetr   r   rv   r   r   r   r   r   r   r   typr,   r,   r-   rP     sP    

$





zSetupDialog.showRemovePagec             C   sR   xLt | jj D ].}| jj|d}|j tjkr| jjd P qW | jjd d S )Nr   TF)	rangerJ  rowCount
cellWidget
checkStater   rL  rX   ro   )r)   r   r   rN  r,   r,   r-   rK    s    z!SetupDialog.CheckBox_stateChangedc          	   C   s  | j j }|tkr| jj | _t| jj | _	| j
j | _t| jj | _t| jj| jj d | _| jj | _| jj rt| d dd}|j  |jtkrd| _|j| _	d| _| jj s| j  n|tkr4| jj }| jj |dj!| _!t"j#| j!| _$t"j%| j!\	}}}}}}	}
}}t&j'|j( | _)| j*  n|t+kr| j,j | _-| j.j | _/| j0j | _1t2t| j3j | _4t2t| j5j | _6t2t| j7j | _8t2t| j9j | _:t| j;j | _<t| j=j | _>| j?  n|t@krxtA| jBjC D ]}| jBjD|d}|jE tFjGkr| jBj |d}ttH|jItFjJ}t"jK|}tLjMd|  tNjOtNjPtQd| |\}}|tNjRkrtS| | jTd	||f  |tNjUks|tNjVks|tNjWkrP ntXjYtZ|| qW | j[  n
tLj\d
 d S )Nr   F)rG   Z
standaloneTrh   r   zRemoving printer: %sr   z1<b>Unable to delete '%s' queue. </b><p>Error : %szInvalid page!)]StackedWidgetcurrentIndexr   rZ   r   rm   r
   r}   r2   rH   r~   valuerI   r   ry   Z	value_intr   ZitemDatar|   r   rR   rr   r   rC   Zsuccessr   Zhnrv   rS   r   r   Z
currentRowitemrG   r   ZqueryModelByURIr   r   r   ZnormalizeModelNamelowerr   r  rd   r   rz   r   r   r   r   r   ZPrinterLocationLineEditr8  r  r9  ZFaxDescriptionLineEditr@  ZFaxLocationLineEditr?  rE  rD  r   rC  r2  rG  rP  rJ  rQ  rR  rS  r   rL  Z	value_strdatarM  ZgetDeviceURIByPrinterNamerK   r   r   r:  Z
delPrinterr   r.  r?   r   r+  r,  r-  r   r;  ZEVENT_CUPS_QUEUES_REMOVEDr  r   )r)   r  r@   r   r   r   rv   r   r   r   r   r   r   rN  rW  r  Zurir=  r>  r,   r,   r-   rY     sf    








$
zSetupDialog.NextButton_clickedc             C   sB   | j j }|tkr"i | _| j  n|tkr4| j  n
tjd d S )NzInvalid page!)	rT  rU  r   ru   rT   rd   rS   rK   r   )r)   r  r,   r,   r-   rW   >  s    


zSetupDialog.BackButton_clickedc             C   s   | j   d S )N)r  )r)   r,   r,   r-   rU   K  s    z SetupDialog.CancelButton_clickedc             C   s   | j j| | j| d S )N)rT  r   updateStepText)r)   Zpager,   r,   r-   r   O  s    zSetupDialog.displayPagec             C   sr   |t kr| jj| jd nR|tkr8| jj| jd n6|tkrT| jj| jd n|tkrn| jj| jd d S )NzAdd PrinterzNext >ZFinishZRemove)r   rX   r.   r   r   BUTTON_FINISHrI  )r)   rO  r,   r,   r-   r   T  s    zSetupDialog.setNextButtonc             C   s(   | j j| jd|d | jd f  d S )NzStep %s of %sr   )rH  r.   r   r`   )r)   r  r,   r,   r-   rZ  _  s    zSetupDialog.updateStepTextc             C   s   t jd||S )Nr6   )r7   r8   )r)   r9   r:   r,   r,   r-   r;   c  s    zSetupDialog.__tr)NF)T)N)?r<   r=   r>   r   rM   ra   r   r   r[   rT   r   r   r   r   r   r   r   r   rk   r   r   r   r   r   r   r   r   rb   rS   r   r   r   rc   r  r   r   r   r   r   r   r   r   r   r   r)  r  r2  r/  r*  r1  r   r0  r_   rP   rK  rY   rW   rU   r   r[  r   rZ  r   r,   r,   r,   r-   r6      sv   
g&R.	F)( 	
J<Ar6   )NT)7r   r   
subprocessr\   Zbase.gr   r   r   r   r   Zprntr   Z
base.codesZui_utilsZ	installerr	   Zbase.sixextr
   r   r   ZPyQt5.QtCoreZPyQt5.QtGuir   ZPyQt5.QtWidgetsZsetupdialog_baser   Zplugindialogr   Zwifisetupdialogr   r   r   r   rK   r  r   r   rd   rG  r   r[  r   rI  r   r   r{   r   r   r   r   rA   rD   rF   rE   r6   r,   r,   r,   r-   <module>   sX   @
