3
NZ                 @   s  d dl Z d dlZd dlmZ d dlmZ d dlZd dlT d dlm	Z	m
Z
mZ d dlmZ d dlT ddlT d dlT d dlT d dlT ddlmZ dd	lmZmZ dd
lmZmZ ddlmZ ddlmZ d ZdZ dZ!dZ"dZ#dZ$d Z%dZ&dZ'dZ(e)j*Z+e+r$yd dl,m,Z, W n e-k
r"   dZ+Y nX e+s4e.j/d dZ0e+ry0d dl1Z1e2e1j3Z4e4dkrbdZ0n
e.j/d W n  e-k
r   e.j/d Y nX e0se.j/d e+rddl5m6Z6 e0rd dl,m7Z7 G dd de8eZ9dS )    N)queue)
to_unicode)*)deviceutilspml)cups   )	Ui_Dialog)	FileTableFILETABLE_TYPE_FAX)PrinterNameComboBox!PRINTERNAMECOMBOBOX_TYPE_FAX_ONLY)PrintSettingsDialog)FaxSetupDialog         zapplication/hplip-fax-coverpage)faxFzFax disabled.z2.0Tz@Pre-2.0 version of Reportlab installed. Fax coverpages disabled.z1Reportlab not installed. Fax coverpages disabled.z?Please install version 2.0+ of Reportlab for coverpage support.)	FABWindow)
coverpagesc               @   s0  e Zd Zdd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.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zdd;d<Zd=d> Z d?d@ Z!dAdB Z"dCdD Z#ddFdGZ$dHdI Z%dJdK Z&ddLdMZ'dNdO Z(dPdQ Z)dRdS Z*dTdU Z+dVdW Z,dXdY Z-dZd[ Z.dd]d^Z/d_d` Z0dadb Z1dcdd Z2dedf Z3dgdh Z4didj Z5dkdl Z6dmdn Z7dodp Z8dqdr Z9dsdt Z:dudv Z;dwdx Z<dydz Z=d{d| Z>d}d~ Z?dd Z@dd ZAdd ZBdd ZCdd ZDdddZEdS )SendFaxDialogNc             C   s   t j| | | j|  || _|d k	r,|| _ntj| j| _|| _d | _tj	 \| _
| _}d | _d | _g | _g | _| j  | jrtrtjd| j q| j  tjd| j ntjd| j d S )Nr   )QDialog__init__ZsetupUiprinter_name
device_urir   ZgetDeviceURIByPrinterNameargsdevZ	init_dbus
dbus_availservice
CheckTimer	lock_file	file_listrecipient_listinitUicoverpages_enabledQTimerZ
singleShotdisplayCoverpagePagelockAndLoaddisplayFilesPagedisplaySelectFaxPage)selfparentr   r   r   Zsession_bus r-   %/usr/share/hplip/ui5/sendfaxdialog.pyr   d   s(    
zSendFaxDialog.__init__c             C   s   | j jj| j | jjj| j | jjj| j tjtj	tj
 | j  | j  | j  | j  | j  | jttdd d S )NZhp_logoZ128x128)CancelButtonclickedconnectCancelButton_clicked
BackButtonBackButton_clicked
NextButtonNextButton_clickedsignalSIGINTSIG_DFLinitSelectFaxPageinitCoverpagePageinitFilesPageinitRecipientsPageinitSendFaxPageZsetWindowIconQIconload_pixmap)r+   r-   r-   r.   r$      s    zSendFaxDialog.initUic             C   sp   | j d kr0t| | _ | j jj| j | j jd | jrl| jd krltj	d| j d\}| _|slt
jd| j  d S )Ni  zhp-sendfax-%sTz(hp-sendfax is already running for fax %s)r    r&   timeoutr1   CheckTimer_timeoutstartr   r!   r   Zlock_applogerror)r+   okr-   r-   r.   r(      s    

zSendFaxDialog.lockAndLoadc             C   sh   | j jt | j jj| j | j jj| j | jj	j| j
 | jj	j| j | jd k	rd| j j| j d S )N)FaxComboBoxsetTyper   Z"PrinterNameComboBox_currentChangedr1   FaxComboBox_currentChangedZPrinterNameComboBox_noPrintersFaxComboBox_noPrintersZFaxOptionsButtonr0   FaxOptionsButton_clickedZFaxSetupButtonFaxSetupButton_clickedr   ZsetInitialPrinter)r+   r-   r-   r.   r:      s    
zSendFaxDialog.initSelectFaxPagec             C   sp   | j jd | jt ts6t| | jd | j  d S | jsXt| | jd | j  d S | j	j
  | jt d S )NFz<b>PC send fax support is not enabled.</b><p>Re-install HPLIP with fax support or use the device front panel to send a fax.</p><p>Click <i>OK</i> to exit.</p>z<b>PC send fax support requires DBus and hp-systray.</b><p>Please check the HPLIP installation for proper installation of DBus and hp-systray support.</p><p>Click <i>OK</i> to exit.</p>)r3   
setEnabledupdateStepTextPAGE_SELECT_FAXfax_enabled	FailureUI_SendFaxDialog__trcloser   rG   updateUidisplayPage)r+   r-   r-   r.   r*      s    

z"SendFaxDialog.displaySelectFaxPagec             C   s   || _ || _d S )N)r   r   )r+   r   r   r-   r-   r.   rI      s    z(SendFaxDialog.FaxComboBox_currentChangedc             C   s   t | | jd | j  d S )Nz<b>No installed fax devices found.</b><p>Please setup a fax device and try again (try using 'hp-setup').</p><p>Click <i>OK</i> to exit.</p>)rQ   rR   rS   )r+   r-   r-   r.   rJ      s    z$SendFaxDialog.FaxComboBox_noPrintersc             C   s   t | | jdd}|j  d S )NT)Zfax_mode)r   r   exec_)r+   dlgr-   r-   r.   rK      s    z&SendFaxDialog.FaxOptionsButton_clickedc             C   s   t | | j}|j  d S )N)r   r   rV   )r+   rW   r-   r-   r.   rL      s    z$SendFaxDialog.FaxSetupButton_clickedc             C   s  d| _ d| _d| _d
\| _}d| _d| _| jjtt	dd | j
jtt	dd trttjj | _| jjd| _t| jd | _| j| j | _| jjj| j | j
jj| j | jjt j| j | jjj| j  | j!jd	 j| j" | j#jt j| j$ n| jj%d d S )N Fr   prev16x16nextZbasicr	   zconst QString &)NN)&cover_page_messagecover_page_represerve_formattingcover_page_funclast_job_idbusyPrevCoverPageButtonsetIconr?   r@   NextCoverPageButtonr%   listr   
COVERPAGESkeyscover_page_listindexcover_page_indexlencover_page_maxcover_page_namer0   r1   PrevCoverPageButton_clickedNextCoverPageButton_clickedCoverPageGroupBoxtoggledboolCoverPageGroupBox_toggledMessageEdittextChangedMessageEdit_textChangedZRegardingEditRegardingEdit_textChangedZPreserveFormattingCheckBox"PreserveFormattingCheckBox_toggledrM   )r+   Zcover_page_pngr-   r-   r.   r;      s(    
zSendFaxDialog.initCoverpagePagec             C   s>   | j jd | jjd | j  | j  | j  | jt d S )NFT)r3   rM   r5   r(   updateCoverpageButtonsdisplayCoverpagePreviewrU   PAGE_COVERPAGE)r+   r-   r-   r.   r'      s    z"SendFaxDialog.displayCoverpagePagec             C   s   t | jj | _d S )N)r   rt   ZtoPlainTextr\   )r+   r-   r-   r.   rv     s    z%SendFaxDialog.MessageEdit_textChangedc             C   s   t || _d S )N)r   r]   )r+   tr-   r-   r.   rw     s    z'SendFaxDialog.RegardingEdit_textChangedc             C   s
   || _ d S )N)r^   )r+   br-   r-   r.   rx   
  s    z0SendFaxDialog.PreserveFormattingCheckBox_toggledc             C   s4   |  j d8  _ | j dk r d| _ n| j  | j  d S )Nr	   r   )rj   ry   r'   )r+   r-   r-   r.   rn     s
    
z)SendFaxDialog.PrevCoverPageButton_clickedc             C   s8   |  j d7  _ | j | jkr$| j| _ n| j  | j  d S )Nr	   )rj   rl   ry   r'   )r+   r-   r-   r.   ro     s
    
z)SendFaxDialog.NextCoverPageButton_clickedc             C   sx   t rX| j| j | _tj| j d | _| jjt	d| j  | j
jttj| j d d | jj rl| j  n| j  d S )Nr   z<i>"%s"</i>r	   other)r%   rh   rj   rm   r   rf   r_   ZCoverPageNamesetTextstrZCoverPagePreviewZ	setPixmapr@   rp   	isCheckedaddCoverPageremoveCoverPage)r+   r-   r-   r.   rz      s    

z%SendFaxDialog.displayCoverpagePreviewc             C   s<   | j j }| jj|o| jdk | jj|o4| j| jk d S )Nr   )rp   r   rb   rM   rj   rd   rl   )r+   enabledr-   r-   r.   ry   -  s    
z$SendFaxDialog.updateCoverpageButtonsc             C   s"   | j   |r| j  n| j  d S )N)ry   r   r   )r+   r}   r-   r-   r.   rs   3  s    
z'SendFaxDialog.CoverPageGroupBox_toggledc             C   s4   | j   | jj| jt| jd| j | jdd d S )NzHP Fax Coverpage: "%s"z
Cover Pager	   )r   
FilesTableaddFilerm   MIME_TYPE_COVERPAGErR   )r+   r-   r-   r.   r   ;  s    zSendFaxDialog.addCoverPagec             C   s   | j jt d S )N)r   ZremoveFileByMIMETyper   )r+   r-   r-   r.   r   B  s    zSendFaxDialog.removeCoverPagec             C   s8   | j jt j| j | j j| | j jt j| j d S )N)rp   rq   rr   Z
disconnectrs   Z
setCheckedr1   )r+   r}   r-   r-   r.   toggleCoverPageF  s    zSendFaxDialog.toggleCoverPagec             C   sN   | j jt | j j| j | j jj| j | j jj| j	 | j j
j| j d S )N)r   rH   r   ZsetFaxCallbackFileTable_callbackZisEmptyr1   FilesTable_isEmptyZ	isNotEmptFilesTable_isNotEmptyZfileListChangedFilesTable_fileListChanged)r+   r-   r-   r.   r<   Q  s
    zSendFaxDialog.initFilesPagec             C   s   | j jd | jd k	rdxF| jD ]<}tjjtjj|}tjj|rtj|tj	r| j
| qW d | _| j  | jj| j j  | jjt | jj| jd| j  | jt d S )NFzaNote: You may also add files to the fax by printing from any application to the '%s' fax printer.)r   rT   r   ospathabspath
expanduserexistsaccessR_OK
renderFilerestoreNextButtonr5   rM   Z
isNotEmptyr3   r%   ZFilesPageNoter   rR   r   rU   
PAGE_FILES)r+   afr-   r-   r.   r)   Y  s    
zSendFaxDialog.displayFilesPagec             C   s   | j j tkr| jjd d S )NF)StackedWidgetcurrentIndexr   r5   rM   )r+   r-   r-   r.   r   k  s    z SendFaxDialog.FilesTable_isEmptyc             C   s   | j j tkr| jjd d S )NT)r   r   r   r5   rM   )r+   r-   r-   r.   r   p  s    z#SendFaxDialog.FilesTable_isNotEmptyc             C   s    | j j| _| j| j jt d S )N)r   r"   r   ZisMIMETypeInListr   )r+   r-   r-   r.   r   u  s    
z(SendFaxDialog.FilesTable_fileListChangedc             C   s  | j jt| j  tj | _t| | _| jjt	j
 | jjj| j | j jd j| j | jjd j| j | jjj| j | jjj| j | jjj| j | jjj| j | jjj| j | jjj| j | jjj| j  | j!j"j| j# | j!j$d j| j% | jj&t't(dd | jj&t't(dd | jj&t't(dd | jj&t't(dd | jj&t't(dd | jj&t't(d	d | jj&t't(d
d | jj)d | j*d| j*d| j*dg| _+d S )Nzconst QString &zQTableWidgetItem *fabrZ   Zadd_userZ	add_usersZremove_userZup_userZ	down_userZadd_user_quickFNamez
Fax numberZNotes),QuickAddFaxEditZsetValidatorZPhoneNumValidatorr   ZFaxAddressBookdbr   r   ZsetWindowFlagsQtZToolZdatabaseChangedr1   FABWindow_databaseChangedru   QuickAddFaxEdit_textChangedQuickAddNameEditQuickAddNameEdit_textChangedQuickAddButtonr0   QuickAddButton_clickedZ	FABButtonFABButton_clickedAddIndividualButtonAddIndividualButton_clickedAddGroupButtonAddGroupButton_clickedRemoveRecipientButtonRemoveRecipientButton_clickedMoveRecipientUpButtonMoveRecipientUpButton_clickedMoveRecipientDownButtonMoveRecipientDownButton_clickedRecipientsTableZitemSelectionChanged$RecipientsTable_itemSelectionChangedZitemDoubleClicked!RecipientsTable_itemDoubleClickedrc   r?   r@   rM   rR   recipient_headers)r+   r-   r-   r.   r=   ~  s2    

z SendFaxDialog.initRecipientsPagerX   c                s    j j  |tttttfkr0tjd  j	  n|t
krvtjd|   j j } fdd|D  _ j	   j  nv|tkrtjd||f  xZt jD ]$\}}||kr| j|<  j  P qW  j	  n|tkrtjd|   j  d S )NzFax address book has changedz*Fax address book has changed: '%s' removedc                s   g | ]}| j kr|qS r-   )r#   ).0x)r+   r-   r.   
<listcomp>  s    z;SendFaxDialog.FABWindow_databaseChanged.<locals>.<listcomp>z2Fax address book has changed: '%s' renamed to '%s'z2Fax address book has changed: '%s' details changed)r   loadZFAB_NAME_ADDZFAB_GROUP_ADDZFAB_GROUP_RENAMEZFAB_GROUP_REMOVEZFAB_GROUP_MEMBERSHIP_CHANGEDrD   debugupdateAddressBookZFAB_NAME_REMOVEget_all_namesr#   updateRecipientTableZFAB_NAME_RENAME	enumerateZFAB_NAME_DETAILS_CHANGED)r+   actions1s2Z	all_namesinr-   )r+   r.   r     s,    







z'SendFaxDialog.FABWindow_databaseChangedc             C   s:   | j   | j  | j  | jt | j  | jjd d S )NT)r   r   enableQuickAddButtonrU   PAGE_RECIPIENTSr   r3   rM   )r+   r-   r-   r.   displayRecipientsPage  s    
z#SendFaxDialog.displayRecipientsPagec             C   sL  dd | j j D }| j j }| jj  | jj  d}|j  x>|D ]6}|| jkrD| j j|}|d rD| jj	| |d7 }qDW |r| j
jd | jjd n| j
jd | jjd d}|j  xN|D ]F}x@| j j|D ]0}|jd o|| jkr| jj	| |d7 }P qW qW |r0| jjd | jjd n| jjd | jjd d S )	Nc             S   s   g | ]}|j d s|qS )__)
startswith)r   r   r-   r-   r.   r     s    z3SendFaxDialog.updateAddressBook.<locals>.<listcomp>r   r   r	   TFr   )r   r   Zget_all_groupsAddIndividualComboBoxclearAddGroupComboBoxsortr#   getZaddItemr   rM   group_membersr   r   )r+   namesgroupsr   r   datagr-   r-   r.   r     s<    






zSendFaxDialog.updateAddressBookc       	      C   s  y| j  }W n ttfk
r(   d }Y nX | jj  | jjd | jjd | jrt| j}| jjt| j	 | jj
| j	 | jj| tjtjB }d }xt| jD ]\}}tt|}|j| | jj|d| |d k	r||kr|}| jj|}|sqtt|d }|j| | jj|d| tt|d }|j| | jj|d| qW | jj  | jj  |d k	r~| jj| n| jj| jjdd | jjd n| j  | jjd d S )Nr   r   r	   Znotesr   TF)getCurrentRecipient	TypeErrorAttributeErrorr   r   ZsetRowCountZsetColumnCountr#   rk   r   ZsetHorizontalHeaderLabelsr   ZItemIsSelectableZItemIsEnabledr   ZQTableWidgetItemr   ZsetFlagsZsetItemr   r   ZresizeColumnsToContentsZresizeRowsToContentsZsetCurrentItemitemr5   rM   enableRecipientListButtons)	r+   rY   num_recipientsflagsjrowr   r   kr-   r-   r.   r     sJ    








z"SendFaxDialog.updateRecipientTablec             C   sF   | j j }t| j}| j|dk|dko,|dk|dko>||d k  d S )Nr   r	   )r   
currentRowrk   r#   r   )r+   Zcurrent_rowr   r-   r-   r.   r   :  s
    


z2SendFaxDialog.RecipientsTable_itemSelectionChangedFc             C   s^   |r| j jd n| j jd |r0| jjd n| jjd |rN| jjd n| jjd d S )NTF)r   rM   r   r   )r+   Zenable_removeZenable_up_moveZenable_down_mover-   r-   r.   r   B  s    z(SendFaxDialog.enableRecipientListButtonsc             C   s   | j d t| d S )N)r   r   )r+   r   r-   r-   r.   r   S  s    z)SendFaxDialog.QuickAddFaxEdit_textChangedc             C   s   | j t| d S )N)r   r   )r+   namer-   r-   r.   r   W  s    z*SendFaxDialog.QuickAddNameEdit_textChangedc             C   s   |d krt | jj }|d kr,t | jj }d}|rB|| jj k}|rny| jjd W q tk
rj   Y qX n&y| jjd W n tk
r   Y nX |r| r|r| jj	d n| jj	d d S )NFzbackground-color: yellowrX   T)
r   r   textr   r   r   ZsetStyleSheetr   r   rM   )r+   r   r   Zexisting_namer-   r-   r.   r   [  s&    z"SendFaxDialog.enableQuickAddButtonc             C   s`   t | jj }t | jj }| jj|| | j| | j  | jj  | jj  | j	dd d S )NrX   )
r   r   r   r   r   ZaddNameaddRecipientr   r   r   )r+   r   r   r-   r-   r.   r   v  s    


z$SendFaxDialog.QuickAddButton_clickedc             C   s   | j t| jj  d S )N)r   r   r   currentText)r+   r-   r-   r.   r     s    z)SendFaxDialog.AddIndividualButton_clickedc             C   s   | j t| jj  d S )N)addGroupr   r   r   )r+   r-   r-   r.   r     s    z$SendFaxDialog.AddGroupButton_clickedc             C   sR   | j  }| jd d  }x6t|D ]*\}}||kr | j|= | j  | j  P q W d S )N)r   r#   r   r   r   )r+   r   Ztempr   r   r-   r-   r.   r     s    z+SendFaxDialog.RemoveRecipientButton_clickedc             C   s   t j| j| j  | j  d S )N)r   Zlist_move_upr#   r   r   )r+   r-   r-   r.   r     s    z+SendFaxDialog.MoveRecipientUpButton_clickedc             C   s   t j| j| j  | j  d S )N)r   Zlist_move_downr#   r   r   )r+   r-   r-   r.   r     s    z-SendFaxDialog.MoveRecipientDownButton_clickedc             C   s4   | j j| j j d}|d k	r(t|j S tdS d S )Nr   rX   )r   r   r   r   r   )r+   r   r-   r-   r.   r     s    z!SendFaxDialog.getCurrentRecipientTc             C   s:   || j kr6|jd r6| j j| |r6| j  | j  d S )Nr   )r#   r   appendr   r   )r+   r   updater-   r-   r.   r     s
    zSendFaxDialog.addRecipientc             C   s6   x | j j|D ]}| j|d qW | j  | j  d S )NF)r   r   r   r   r   )r+   groupr   r-   r-   r.   r     s    zSendFaxDialog.addGroupc             C   s   | j j  d S )N)r   show)r+   r-   r-   r.   r     s    zSendFaxDialog.FABButton_clickedc             C   sR   |d k	rN|j  |j  }}|dkr0| jj|d}| jjt|j  | jj  d S )Nr   )	r   columnr   r   r   ZselectByNamer   r   r   )r+   r   r   colr-   r-   r.   r     s    z/SendFaxDialog.RecipientsTable_itemDoubleClickedc             C   s^   t tdd| _t tdd| _t tdd| _t tdd| _tj | _tj | _	d| _
d S )NinforZ   ZwarningrE   ra   F)r?   r@   	info_icon	warn_icon
error_icon	busy_iconr   ZQueueupdate_queueevent_queuesend_fax_active)r+   r-   r-   r.   r>     s    

zSendFaxDialog.initSendFaxPagec             C   s4   | j t | j| jd| j | jj| jd d S )NzReady to send fax.zSend Fax)rU   PAGE_SEND_FAXaddStatusMessagerR   r   r5   r   )r+   r-   r-   r.   displaySendFaxPage  s    
z SendFaxDialog.displaySendFaxPagec          ,   C   s(  | j jd | jjd | jj  d| _g }tj| j}|d k	rt	j
j|rt|dj jddkrt| | jd| j  | j  d S t  tj| j}tj| j| jd |d | _zy| jj  W n. tk
r } ztj|j W Y d d }~X nX y| jjdd W n< tk
r@ } ztjd	|j  t| j_ W Y d d }~X nX W d | jj  t!  X | jj t"kr| jj t#t$fkrt| | jd
| jj%  | j jd d S tj& | _'xT| j'D ]J}|j(| jkr|j)tj*krt| | jd| j  | j jd d S P qW tj+d x@| j,D ]6}| j-j.|}|j/| tj+d|d |d f  qW tj+d x| j0D ]}tj+| q^W | jj1t2| jdd | jj3|| j0| j4| j5| j6| j7| j| j8| j9	st| | jd | jj1t:| jdd d| _d| _;| j<  d S d| _;| j<  t=| | _>| j>j?j@| jA | j>jBd d S )NFTrbs   HP Faxr	   z<b>Fax configuration error.</b><p>The CUPS fax queue for '%s' is incorrectly configured.<p>Please make sure that the CUPS fax queue is configured with the 'HPLIP Fax' Model/Driver.zfax-type)ZquickzQuery device error (%s).z<b>Device is busy or in an error state (code=%s)</b><p>Please wait for the device to become idle or clear the error and try again.ze<b>The CUPS queue for '%s' is in a stopped or busy state.</b><p>Please check the queue and try again.zRecipient list:zName=%s Number=%sr   r   z
File list:r   rX   zC<b>Send fax is active.</b><p>Please wait for operation to complete.i  )Cr5   rM   r3   r    stopra   r   ZgetPPDr   r   r   r   openreadfindrQ   rR   rS   beginWaitCursorr   ZqueryModelByURIr   r   ZgetFaxDevicer   ErrorrD   warnmsgZqueryDevicerE   ZERROR_STATE_ERRORerror_stateendWaitCursorZERROR_STATE_MAX_OKZERROR_STATE_LOW_SUPPLIESZERROR_STATE_LOW_PAPERZstatus_codeZgetPrintersZcups_printersr   stateZIPP_PRINTER_STATE_STOPPEDr   r#   r   r   r   r"   	sendEventZEVENT_START_FAX_JOBZ	sendFaxesr\   r]   r_   r^   r   r   EVENT_FAX_JOB_FAILr   setCancelCloseButtonr&   SendFaxTimerrA   r1   SendFaxTimer_timeoutrC   )r+   Zphone_num_listZppd_fileZmqepentryr   r-   r-   r.   executeSendFax  s    




 

zSendFaxDialog.executeSendFaxc             C   s0   | j r| jj| jd n| jj| jd d S )NzCancel SendZClose)r   r/   r   rR   )r+   r-   r-   r.   r  6  s    z"SendFaxDialog.setCancelCloseButtonc             C   sR   | j rF| j| jd| j | jjtjdddf | jj	t
| jdd n| j  d S )NzCancelling job...rX   r   )r   r   rR   r   r   Zputr   ZEVENT_FAX_SEND_CANCELEDr   r   ZEVENT_FAX_JOB_CANCELEDr   rS   )r+   r-   r-   r.   r2   =  s
    z"SendFaxDialog.CancelButton_clickedc             C   sJ  xB| j j rDy| j jd\}}}W n tjk
r>   P Y nX |tjkrjd| _d| _| j	  | j
j  q|tjkr| j| jd| | j q|tjkr| j| jd| | j q|tjkr| j| jd| | j q|tjk r| j| jd| | j q|tjkr&| j| jd||f | j q|tjkrH| j| jd| j q|tjtjtjtjtjtjtjfkrd| _d| _| j	  | j
j  |tjkr| jjtj\}}|tj kr| j| jd	| j! n"| j| jd
tj"j|d | j! | jj#t$| j%dd q|tjkr8| j| jd| j! | jj#t$| j%dd q|tjkrn| j| jd| j! | jj#t$| j%dd q|tjkr| j| jd| j! | jj#t$| j%dd q|tjkr| j| jd| j! | jj#t$| j%dd q|tjkr| j| jd| j! | jj#t$| j%dd q|tjkr| j| jd| j& | jj#t'| j%dd qW d S )Nr   FzProcessing page %s...zSending fax to %s...zDialing %s...zConnecting to %s...zSending page %s to %s...zCleaning up...z6Fax send error (Possible cause: No answer or dialtone)zFax send error (%s)zUnknown errorrX   z$Fax send error (Error in connecting)z&Fax send error (Error in transmitting)z*Fax send error (Problem with the fax line)z(Fax Job Cancelled)zFax is busy.zSend fax job complete.)(r   Zqsizer   r   ZEmptyr   ZSTATUS_IDLEra   r   r  r  r   ZSTATUS_PROCESSING_FILESr   rR   r   ZSTATUS_SENDING_TO_RECIPIENTZSTATUS_DIALINGZSTATUS_CONNECTINGZSTATUS_SENDINGZSTATUS_CLEANUPSTATUS_ERRORZSTATUS_BUSYZSTATUS_COMPLETEDZSTATUS_ERROR_IN_CONNECTINGZSTATUS_ERROR_IN_TRANSMITTINGZSTATUS_ERROR_PROBLEM_IN_FAXLINEZSTATUS_JOB_CANCELr   ZgetPMLr   ZOID_FAX_DOWNLOAD_ERRORZDN_ERROR_NONEr   ZDN_ERROR_STRr   r  r   r   ZEVENT_END_FAX_JOB)r+   ZstatusZpage_numargZresult_coder   r-   r-   r.   r  F  sj    





"
z"SendFaxDialog.SendFaxTimer_timeoutc             C   s   t j| t||| j d S )N)rD   r   ZQListWidgetItemZ
StatusList)r+   r   Ziconr-   r-   r.   r     s    
zSendFaxDialog.addStatusMessagec             C   s   t jd|  | j| d S )NzFileTable_callback(%s))rD   r   r   )r+   r   r-   r-   r.   r     s    z SendFaxDialog.FileTable_callbackc             C   s>   d| _ t  ztj| j|tjj|| _W d d| _ t	  X d S )NTF)
ra   r   r   Z	printFiler   r   r   basenamer`   r   )r+   r   r-   r-   r.   r     s    zSendFaxDialog.renderFilec       
      C   s   | j sy*| jj| jtj| j\}}}}}}}}W n4 tk
rd }	 ztj	d|	  d }W Y d d }	~	X nX |rd| _tj	d||f  | j
|| d S )Nz*Exception caught in CheckTimer_timeout: %sr   zA new fax has arrived: %s (%d))ra   r   ZCheckForWaitingFaxr   propusernamer`   	ExceptionrD   r   addFileFromJob)
r+   r   r   Z
event_coder  Zjob_idtitleZtimedatefax_filer  r-   r-   r.   rB     s    *z SendFaxDialog.CheckTimer_timeoutc       
      C   sN   d| _ z4| j|\}}}}}}}	|r8| jj|dd|| W d d| _ t  X d S )NTzapplication/hplip-faxz	HPLIP FaxF)ra   getFileInfor   r   r   )
r+   r  r  rF   	num_pageshort_dpivert_dpi	page_size
resolutionencodingr-   r-   r.   r    s    zSendFaxDialog.addFileFromJobc          
   C   s   t |d}|jtj}|j  t|tjkr:tjd dS tj	d|d tj \
}}}}}}	}
}}}tj
d||||||	|
|f  d||||	|
|fS )	Nr   z/Invalid fax file! (truncated header or no data)Fr   z>8sBIHHBBBIIz>Magic=%s Ver=%d Pages=%d hDPI=%d vDPI=%d Size=%d Res=%d Enc=%dT)Fr   r   r   r   r   r   )r   r   r   ZFILE_HEADER_SIZErS   rk   rD   rE   structZunpackr   )r+   r  r   headerZmgversionr  r  r  r  r  r  Z	reserved1Z	reserved2r-   r-   r.   r    s    

*zSendFaxDialog.getFileInfoc             C   s"   | j d k	rtj| j  |j  d S )N)r!   r   ZunlockZaccept)r+   r  r-   r-   r.   
closeEvent  s    
zSendFaxDialog.closeEventc             C   s   | j | | jj| d S )N)rN   r   setCurrentIndex)r+   Zpager-   r-   r.   rU     s    
zSendFaxDialog.displayPagec             C   s   | j j }|tkrtjd nl|tkr2tjd nX|tkrP| j jt | j  n:|t	krn| j jt | j
  n|tkr| j jt	 | j  d S )NzInvalid!)r   r   rO   rD   rE   r{   r   r  r'   r   r)   r   r   )r+   r  r-   r-   r.   r4     s    


z SendFaxDialog.BackButton_clickedc             C   s   | j j }|tkr(| j jt | j  nj|tkrF| j jt | j  nL|tkrd| j jt | j	  n.|tkr| j jt
 | j  n|t
kr| j  d S )N)r   r   rO   r  r{   r'   r   r)   r   r   r   r   r  )r+   r  r-   r-   r.   r6     s    




z SendFaxDialog.NextButton_clickedc             C   s&   | j j| jd|d td f  d S )NzStep %s of %sr	   )ZStepTextr   rR   PAGE_MAX)r+   r  r-   r-   r.   rN     s    zSendFaxDialog.updateStepTextc             C   s   | j j| jd d S )NzNext >)r5   r   rR   )r+   r-   r-   r.   r     s    zSendFaxDialog.restoreNextButtonc             C   s   t jd|jd|S )Nr   zutf-8)ZqApp	translateencode)r+   scr-   r-   r.   Z__tr!  s    zSendFaxDialog.__tr)NN)rX   rX   )FFF)NN)T)N)F__name__
__module____qualname__r   r$   r(   r:   r*   rI   rJ   rK   rL   r;   r'   rv   rw   rx   rn   ro   rz   ry   rs   r   r   r   r<   r)   r   r   r   r=   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   r   r  r  r2   r  r   r   r   rB   r  r  r  rU   r4   r6   rN   r   rR   r-   r-   r-   r.   r   c   s   
 			2
	-5



Y	K	
	r   ):operatorr  Zbase.sixext.movesr   Zbase.sixextr   r7   Zbase.gbaser   r   r   Zprntr   Z
base.codesZui_utilsZPyQt5.QtCoreZPyQt5.QtGuiZPyQt5.QtWidgetsZsendfaxdialog_baser
   Z	filetabler   r   Zprinternamecomboboxr   r   Zprintsettingsdialogr   Zfaxsetupdialogr   rO   r{   r   r   r   r  ZSTATUS_INFORMATIONZSTATUS_WARNINGr	  r   r  Z	fax_buildrP   r   ImportErrorrD   r   r%   Z	reportlabr   ZVersionZverZ	fabwindowr   r   r   r   r-   r-   r-   r.   <module>   sh   




