
    =	f                     d   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 d dlm	Z	m
Z
mZ d dlmZ d dl ddl d dl d dl d dl 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)jT                  Z+e+r	 d dl,m,Z, e+se.j_                  d       dZ0e+r0	 d dl1Z1 e2e1jf                        Z4e4dk\  rdZ0ne.j_                  d       e0se.j_                  d       e+rddl5m6Z6 e0rd dl,m7Z7  G d de8e      Z9y# e-$ r dZ+Y w xY w# e-$ r e.j_                  d       Y Uw xY w)    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                      e Zd ZdEd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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d Zd ZdFdZd Z d  Z!d! Z"d" Z#dGd#Z$d$ Z%d% Z&dEd&Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z-d- Z.dHd.Z/d/ Z0d0 Z1d1 Z2d2 Z3d3 Z4d4 Z5d5 Z6d6 Z7d7 Z8d8 Z9d9 Z:d: Z;d; Z<d< Z=d= Z>d> Z?d? Z@d@ ZAdA ZBdB ZCdC ZDdIdDZEy)JSendFaxDialogNc                 |   t         j                  | |       | j                  |        || _        ||| _        n$t        j                  | j                        | _        || _        d | _        t        j                         \  | _
        | _        }d | _        d | _        g | _        g | _        | j!                          | j                  rXt"        r!t$        j'                  d| j(                         y | j+                          t$        j'                  d| j,                         y t$        j'                  d| j.                         y Nr   )QDialog__init__setupUiprinter_name
device_urir   getDeviceURIByPrinterNameargsdev	init_dbus
dbus_availservice
CheckTimer	lock_file	file_listrecipient_listinitUicoverpages_enabledQTimer
singleShotdisplayCoverpagePagelockAndLoaddisplayFilesPagedisplaySelectFaxPage)selfparentr   r    r"   session_buss         %/usr/share/hplip/ui5/sendfaxdialog.pyr   zSendFaxDialog.__init__d   s    v&T(!(DO$>>t?P?PQDO	5;5E5E5G2{ !!!!T%>%>?  "!!!T%:%:;a!:!:;    c                 j   | 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                   y )Nhp_logo128x128)CancelButtonclickedconnectCancelButton_clicked
BackButtonBackButton_clicked
NextButtonNextButton_clickedsignalSIGINTSIG_DFLinitSelectFaxPageinitCoverpagePageinitFilesPageinitRecipientsPageinitSendFaxPagesetWindowIconQIconload_pixmapr3   s    r6   r+   zSendFaxDialog.initUi   s    !!))$*C*CD''(?(?@''(?(?@fmmV^^4  ! 	5Y	!BCDr7   c                    | j                   Zt        |       | _         | j                   j                  j                  | j                         | j                   j                  d       | j                  r^| j                  Qt        j                  d| j                  z  d      \  }| _        |s#t        j                  d| j                  z         y y y y )Ni  zhp-sendfax-%sTz(hp-sendfax is already running for fax %s)r'   r-   timeoutr=   CheckTimer_timeoutstartr   r(   r   lock_applogerror)r3   oks     r6   r0   zSendFaxDialog.lockAndLoad   s    ??"$TlDOOO##++D,C,CDOO!!$' !7!&$BSBS0SUY!ZB		DtGXGXXY  "8r7   c                    | j                   j                  t               | j                   j                  j	                  | j
                         | j                   j                  j	                  | j                         | j                  j                  j	                  | j                         | j                  j                  j	                  | j                         | j                  &| j                   j                  | j                         y y N)FaxComboBoxsetTyper   "PrinterNameComboBox_currentChangedr=   FaxComboBox_currentChangedPrinterNameComboBox_noPrintersFaxComboBox_noPrintersFaxOptionsButtonr<   FaxOptionsButton_clickedFaxSetupButtonFaxSetupButton_clickedr   setInitialPrinterrN   s    r6   rF   zSendFaxDialog.initSelectFaxPage   s      !BC;;CCDDcDcd77??@[@[\%%--d.K.KL##++D,G,GH(..t/@/@A )r7   c                    | j                   j                  d       | j                  t               t        s,t        | | j                  d             | j                          y | j                  s,t        | | j                  d             | j                          y | j                  j                          | j                  t               y )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>)r?   
setEnabledupdateStepTextPAGE_SELECT_FAXfax_enabled	FailureUI_SendFaxDialog__trcloser%   rY   updateUidisplayPagerN   s    r6   r2   z"SendFaxDialog.displaySelectFaxPage   s    ""5)O,dDII  'G  H  IJJLdDII  'b  c  dJJL!!#)r7   c                      || _         || _        y rX   )r   r    )r3   r    r   s      r6   r\   z(SendFaxDialog.FaxComboBox_currentChanged   s    ($r7   c                 Z    t        | | j                  d             | j                          y )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>)ri   rj   rk   rN   s    r6   r^   z$SendFaxDialog.FaxComboBox_noPrinters   s)    $4  f  g	h

r7   c                 T    t        | | j                  d      }|j                          y )NT)fax_mode)r   r   exec_r3   dlgs     r6   r`   z&SendFaxDialog.FaxOptionsButton_clicked   s    !$(9(9DI		r7   c                 P    t        | | j                        }|j                          y rX   )r   r    rr   rs   s     r6   rb   z$SendFaxDialog.FaxSetupButton_clicked   s    T4??3		r7   c                    d| _         d| _        d| _        d\  | _        }d| _        d| _        | j                  j                  t        t        dd                   | j                  j                  t        t        dd                   t        rt        t        j                  j                               | _        | j                   j#                  d      | _        t'        | j                         d	z
  | _        | j                   | j$                     | _        | j                  j,                  j/                  | j0                         | j                  j,                  j/                  | j2                         | j4                  j6                  t8           j/                  | j:                         | j<                  j>                  j/                  | j@                         | jB                  j>                  d
   j/                  | jD                         | jF                  j6                  t8           j/                  | jH                         y | j4                  jK                  d       y )N FNNr   prev16x16nextbasicr
   const QString &)&cover_page_messagecover_page_represerve_formattingcover_page_funclast_job_idbusyPrevCoverPageButtonsetIconrL   rM   NextCoverPageButtonr,   listr   
COVERPAGESkeyscover_page_listindexcover_page_indexlencover_page_maxcover_page_namer<   r=   PrevCoverPageButton_clickedNextCoverPageButton_clickedCoverPageGroupBoxtoggledboolCoverPageGroupBox_toggledMessageEdittextChangedMessageEdit_textChangedRegardingEditRegardingEdit_textChangedPreserveFormattingCheckBox"PreserveFormattingCheckBox_toggledre   )r3   cover_page_pngs     r6   rG   zSendFaxDialog.initCoverpagePage   s   "$#( /9,n	  (({67/K)LM  (({67/K)LM#'
(=(=(B(B(D#ED $($8$8$>$>w$GD!"%d&:&:";A"=D#'#7#78M8M#ND $$,,44T5U5UV$$,,44T5U5UV""**40889W9WX((001M1MN**+<=EEdFdFde++33D9AA$BiBij""--e4r7   c                     | j                   j                  d       | j                  j                  d       | j                          | j	                          | j                          | j                  t               y )NFT)r?   re   rA   r0   updateCoverpageButtonsdisplayCoverpagePreviewrm   PAGE_COVERPAGErN   s    r6   r/   z"SendFaxDialog.displayCoverpagePage   sX    ""5)""4(##%$$&(r7   c                 T    t        | j                  j                               | _        y rX   )r   r   toPlainTextr~   rN   s    r6   r   z%SendFaxDialog.MessageEdit_textChanged  s    ",T-=-=-I-I-K"Lr7   c                 $    t        |      | _        y rX   )r   r   )r3   ts     r6   r   z'SendFaxDialog.RegardingEdit_textChanged  s    ']r7   c                     || _         y rX   )r   r3   bs     r6   r   z0SendFaxDialog.PreserveFormattingCheckBox_toggled
  s
    #$ r7   c                     | xj                   dz  c_         | j                   dk  rd| _         y | j                          | j                          y )Nr
   r   )r   r   r/   rN   s    r6   r   z)SendFaxDialog.PrevCoverPageButton_clicked  sA    "  1$$%D!'')%%'r7   c                     | xj                   dz  c_         | j                   | j                  kD  r| j                  | _         y | j                          | j                          y )Nr
   )r   r   r   r/   rN   s    r6   r   z)SendFaxDialog.NextCoverPageButton_clicked  sM    "  4#6#66$($7$7D!'')%%'r7   c                    t         r| j                  | j                     | _        t        j
                  | j                     d   | _        | j                  j                  t        d| j                  z               | j                  j                  t        t        j
                  | j                     d   d             | j                  j                         r| j                          y | j!                          y )Nr   z<i>"%s"</i>r
   other)r,   r   r   r   r   r   r   CoverPageNamesetTextstrCoverPagePreview	setPixmaprM   r   	isCheckedaddCoverPageremoveCoverPagerN   s    r6   r   z%SendFaxDialog.displayCoverpagePreview   s    #'#7#78M8M#ND #-#8#89M9M#Nq#QD &&s=9M9M+M'NO!!++K
8M8MdNbNb8cde8fho,pq!!++-  "r7   c                     | j                   j                         }| j                  j                  |xr | j                  dk7         | j
                  j                  |xr | j                  | j                  k7         y r   )r   r   r   re   r   r   r   )r3   enableds     r6   r   z$SendFaxDialog.updateCoverpageButtons-  sf    ((224  ++G,R8M8MQR8RS  ++G,d8M8MQUQdQd8der7   c                 j    | j                          |r| j                          y | j                          y rX   )r   r   r   r   s     r6   r   z'SendFaxDialog.CoverPageGroupBox_toggled3  s)    ##%  "r7   c                     | j                          | j                  j                  | j                  t        | j                  d| j                  z        | j                  d      d       y )NzHP Fax Coverpage: "%s"z
Cover Pager
   )r   
FilesTableaddFiler   MIME_TYPE_COVERPAGErj   rN   s    r6   r   zSendFaxDialog.addCoverPage;  sQ     4 46I $		*B4CWCW*W X $		, 7	<r7   c                 B    | j                   j                  t               y rX   )r   removeFileByMIMETyper   rN   s    r6   r   zSendFaxDialog.removeCoverPageB  s    ,,-@Ar7   c                    | j                   j                  t           j                  | j                         | j                   j                  |       | j                   j                  t           j                  | j                         y rX   )r   r   r   
disconnectr   
setCheckedr=   r   s     r6   toggleCoverPagezSendFaxDialog.toggleCoverPageF  s`    &&t,778V8VW))!,&&t,44T5S5STr7   c                    | j                   j                  t               | j                   j                  | j                         | j                   j
                  j                  | j                         | j                   j                  j                  | j                         | j                   j                  j                  | j                         y rX   )r   rZ   r   setFaxCallbackFileTable_callbackisEmptyr=   FilesTable_isEmpty	isNotEmptFilesTable_isNotEmptyfileListChangedFilesTable_fileListChangedrN   s    r6   rH   zSendFaxDialog.initFilesPageQ  s     23&&t'>'>?''(?(?@!!))$*D*DE''//0O0OPr7   c                    | j                   j                  d       | j                  | j                  D ]  }t        j                  j                  t        j                  j                  |            }t        j                  j                  |      s_t        j                  |t        j                        s| j                  |        d | _        | j                          | j                  j                  | j                   j                                | j                  j                  t                | j"                  j%                  | j'                  d| j(                  z               | j+                  t,               y )NFzaNote: You may also add files to the fax by printing from any application to the '%s' fax printer.)r   rl   r"   ospathabspath
expanduserexistsaccessR_OK
renderFilerestoreNextButtonrA   re   
isNotEmptyr?   r,   FilesPageNoter   rj   r   rm   
PAGE_FILES)r3   afs      r6   r1   zSendFaxDialog.displayFilesPageY  s     '99 YY 'GGOOBGG$6$6q$9:77>>!$1bgg)>OOA&'
 DI ""4??#=#=#?@""#56""499  .Q  RV  Rc  Rc  .c  $d  	e$r7   c                 ~    | j                   j                         t        k(  r| j                  j	                  d       y y NFStackedWidgetcurrentIndexr   rA   re   rN   s    r6   r   z SendFaxDialog.FilesTable_isEmptyk  s0    **,
:OO&&u- ;r7   c                 ~    | j                   j                         t        k(  r| j                  j	                  d       y y NTr   rN   s    r6   r   z#SendFaxDialog.FilesTable_isNotEmptyp  s0    **,
:OO&&t, ;r7   c                     | j                   j                  | _        | j                  | j                   j                  t                     y rX   )r   r)   r   isMIMETypeInListr   rN   s    r6   r   z(SendFaxDialog.FilesTable_fileListChangedu  s1    22T__==>QRSr7   c                    | 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                  | j0                         | j2                  j&                  j                  | j4                         | j6                  j&                  j                  | j8                         | j:                  j&                  j                  | j<                         | j>                  j&                  j                  | j@                         | jB                  jD                  j                  | jF                         | jB                  jH                  d   j                  | jJ                         | j*                  jM                  tO        tQ        dd                   | j.                  jM                  tO        tQ        dd                   | j2                  jM                  tO        tQ        dd                   | j6                  jM                  tO        tQ        dd                   | j:                  jM                  tO        tQ        dd                   | j>                  jM                  tO        tQ        d	d                   | j$                  jM                  tO        tQ        d
d                   | j$                  jS                  d       | jU                  d      | jU                  d      | jU                  d      g| _+        y )Nr}   zQTableWidgetItem *fabrz   add_user	add_usersremove_userup_user	down_useradd_user_quickFNamez
Fax numberNotes),QuickAddFaxEditsetValidatorPhoneNumValidatorr   FaxAddressBookdbr   r   setWindowFlagsQtTooldatabaseChangedr=   FABWindow_databaseChangedr   QuickAddFaxEdit_textChangedQuickAddNameEditQuickAddNameEdit_textChangedQuickAddButtonr<   QuickAddButton_clicked	FABButtonFABButton_clickedAddIndividualButtonAddIndividualButton_clickedAddGroupButtonAddGroupButton_clickedRemoveRecipientButtonRemoveRecipientButton_clickedMoveRecipientUpButtonMoveRecipientUpButton_clickedMoveRecipientDownButtonMoveRecipientDownButton_clickedRecipientsTableitemSelectionChanged$RecipientsTable_itemSelectionChangeditemDoubleClicked!RecipientsTable_itemDoubleClickedr   rL   rM   re   rj   recipient_headersrN   s    r6   rI   z SendFaxDialog.initRecipientsPage~  s   ))*;D<P<P*QR $$& T?(  (()G)GH
 	(():;CCDDdDde 	))*;<DDTEfEfg##++D,G,GH&&t'='=>  ((001Q1QR##++D,G,GH""**2243U3UV""**2243U3UV$$,,44T5Y5YZ 	1199$:c:cd 	../CDLLTMsMst 	u[%@AB  (({:w/O)PQ##E+k7*K$LM""**5]G1T+UV""**5Y1P+QR$$,,U;{G3T-UV##E+6F*P$QR 	&&u-"&))F"3TYY|5LdiiX_N`!ar7   c                    | j                   j                          |t        t        t        t
        t        fv r&t        j                  d       | j                          y |t        k(  rwt        j                  d|z         | j                   j                         }|D cg c]  }|| j                  v s| c}| _        | j                          | j                          y |t        k(  rpt        j                  d|d|d       t        | j                        D ]+  \  }}||k(  s|| j                  |<   | j                           y  | j                          y |t         k(  r)t        j                  d|z         | j                          y y c c}w )NzFax address book has changedz*Fax address book has changed: '%s' removedzFax address book has changed: 'z' renamed to ''z2Fax address book has changed: '%s' details changed)r   loadFAB_NAME_ADDFAB_GROUP_ADDFAB_GROUP_RENAMEFAB_GROUP_REMOVEFAB_GROUP_MEMBERSHIP_CHANGEDrT   debugupdateAddressBookFAB_NAME_REMOVEget_all_namesr*   updateRecipientTableFAB_NAME_RENAME	enumerateFAB_NAME_DETAILS_CHANGED)r3   actions1s2	all_namesxins           r6   r   z'SendFaxDialog.FABWindow_databaseChanged  sH   lM3C&(DF F II45""$&IIBRGH--/I.7"T1@S@S;S1"TD""$%%'&IIbRTUV!$"5"56 )17-/D''*--/	) &&(//IIJROP%%' 0 #Us   F
1F
c                     | j                          | j                          | j                          | j                  t               | j                          | j                  j                  d       y r   )r  r  enableQuickAddButtonrm   PAGE_RECIPIENTSr   r?   re   rN   s    r6   displayRecipientsPagez#SendFaxDialog.displayRecipientsPage  sR     !!#!!#) ""4(r7   c                    | j                   j                         D cg c]  }|j                  d      r| }}| j                   j                         }| j                  j                          | j                  j                          d}|j                          |D ]R  }|| j                  vs| j                   j                  |      }|d   s3| j                  j                  |       |dz  }T |r7| j                  j                  d       | j                  j                  d       n6| j                  j                  d       | j                  j                  d       d}|j                          |D ]d  }| j                   j                  |      D ]D  }|j                  d      r|| j                  vs$| j                  j                  |       |dz  } d f |r7| j                  j                  d       | j                  j                  d       y | j                  j                  d       | j                  j                  d       y c c}w )N__r   r   r
   TF)r   r  
startswithget_all_groupsAddIndividualComboBoxclearAddGroupComboBoxsortr*   getaddItemr   re   group_membersr   )r3   r$  namesgroupsr#  datags          r6   r  zSendFaxDialog.updateAddressBook  s    GG113Nq1<<;MNN'')""((*##%

 	A+++ww{{1~;..66q9FA	 $$//5&&11$7 $$//6&&11%8  	AWW**1- ||D)at7J7J.J))11!4FA		 **40!!,,T2 **51!!,,U3Q Os
   IIc                    	 | j                         }| j                  j	                          | j                  j                  d       | j                  j                  d       | j                  rYt        | j                        }| j                  j                  t        | j                               | j                  j                  | j                         | j                  j                  |       t        j                  t        j                  z  }d }t        | j                        D ]  \  }}t        t!        |            }|j#                  |       | j                  j%                  |d|       |||k(  r|}| j&                  j)                  |      }|sot        t!        |d               }|j#                  |       | j                  j%                  |d|       t        t!        |d               }|j#                  |       | j                  j%                  |d|        | j                  j+                          | j                  j-                          || j                  j/                  |       n5| j                  j/                  | j                  j1                  dd             | j2                  j5                  d       y | j7                          | j2                  j5                  d       y # t        t        f$ r d }Y w xY w)Nr   r   r
   notesr   TF)getCurrentRecipient	TypeErrorAttributeErrorr  r.  setRowCountsetColumnCountr*   r   r  setHorizontalHeaderLabelsr   ItemIsSelectableItemIsEnabledr  QTableWidgetItemr   setFlagssetItemr   r1  resizeColumnsToContentsresizeRowsToContentssetCurrentItemitemrA   re   enableRecipientListButtons)	r3   ry   num_recipientsflagsjrowr$  r#  ks	            r6   r  z"SendFaxDialog.updateRecipientTable  sk   	++-D 	""$((+++A. !4!45N  //D4J4J0KL  ::4;Q;QR  ,,^<''"*:*::EA#D$7$78 8Q$SV,

5!$$,,S!Q7#T	AGGKKN$S5]3

5!$$,,S!Q7$S7_5

5!$$,,S!Q7#8&   88:  557}$$33A6$$33D4H4H4M4MaQR4STOO&&t, ++-OO&&u-_ >* 	D	s   K4 4L	L	c                     | j                   j                         }t        | j                        }| j	                  |dkD  |dkD  xr |dkD  |dkD  xr ||dz
  k         y )Nr   r
   )r  
currentRowr   r*   rI  )r3   current_rowrJ  s      r6   r
  z2SendFaxDialog.RecipientsTable_itemSelectionChanged:  sg    **557T001''(:,:Q,>,R;QR?,:Q,>,c;R`abRbCc	er7   c                 Z   |r| j                   j                  d       n| j                   j                  d       |r| j                  j                  d       n| j                  j                  d       |r| j                  j                  d       y | j                  j                  d       y NTF)r  re   r  r  )r3   enable_removeenable_up_moveenable_down_moves       r6   rI  z(SendFaxDialog.enableRecipientListButtonsB  s    &&11$7&&11%8&&11$7&&11%8((33D9((33E:r7   c                 :    | j                  d t        |             y rX   r&  r   )r3   r   s     r6   r   z)SendFaxDialog.QuickAddFaxEdit_textChangedS  s    !!$
38r7   c                 8    | j                  t        |             y rX   rX  )r3   names     r6   r   z*SendFaxDialog.QuickAddNameEdit_textChangedW  s    !!*T"23r7   c                    |#t        | j                  j                               }|#t        | j                  j                               }d}|r|| j                  j                         v }|r	 | j                  j                  d       n	 | j                  j                  d       |r |s|r| j                  j                  d       y | j                  j                  d       y # t        $ r Y Iw xY w# t        $ r Y Xw xY w)NFzbackground-color: yellowrw   T)
r   r   textr   r   r  setStyleSheetr<  r   re   )r3   rZ  r   existing_names       r6   r&  z"SendFaxDialog.enableQuickAddButton[  s    <d3388:;D;T116689C DGG$9$9$;;M%%334NO%%33B7 #**40**51 " 
 " s$   .C$ C3 $	C0/C03	C?>C?c                    t        | j                  j                               }t        | j                  j                               }| j                  j                  ||       | j                  |       | j                          | j                  j                          | j                  j                          | j                  dd       y )Nrw   )
r   r   r\  r   r   addNameaddRecipientr  r.  r&  )r3   rZ  r   s      r6   r   z$SendFaxDialog.QuickAddButton_clickedv  s    $//4467--2245s#$!!###%""$!!"b)r7   c                 h    | j                  t        | j                  j                                      y rX   )ra  r   r-  currentTextrN   s    r6   r   z)SendFaxDialog.AddIndividualButton_clicked  s$    *T%?%?%K%K%MNOr7   c                 h    | j                  t        | j                  j                                      y rX   )addGroupr   r/  rc  rN   s    r6   r  z$SendFaxDialog.AddGroupButton_clicked  s"    j!6!6!B!B!DEFr7   c                     | j                         }| j                  d d  }t        |      D ]9  \  }}||k(  s| j                  |= | j                          | j	                           y  y rX   )r:  r*   r  r  r  )r3   rZ  tempr#  r$  s        r6   r  z+SendFaxDialog.RemoveRecipientButton_clicked  sg    '')""1%dO 	DAqqy''*))+&&(	r7   c                     t        j                  | j                  | j                                | j	                          y rX   )r   list_move_upr*   r:  r  rN   s    r6   r  z+SendFaxDialog.MoveRecipientUpButton_clicked  s-    4..0H0H0JK!!#r7   c                     t        j                  | j                  | j                                | j	                          y rX   )r   list_move_downr*   r:  r  rN   s    r6   r  z-SendFaxDialog.MoveRecipientDownButton_clicked  s-    T00$2J2J2LM!!#r7   c                     | j                   j                  | j                   j                         d      }|t        |j	                               S t        d      S )Nr   rw   )r  rH  rP  r   r\  )r3   rH  s     r6   r:  z!SendFaxDialog.getCurrentRecipient  sJ    ##(()=)=)H)H)JANdiik**b>!r7   c                     || j                   vrQ|j                  d      s?| j                   j                  |       |r!| j                          | j	                          y y y y )Nr*  )r*   r+  appendr  r  )r3   rZ  updates      r6   ra  zSendFaxDialog.addRecipient  sX    t***4??43H&&t,))+&&(  4I*r7   c                     | j                   j                  |      D ]  }| j                  |d        | j                          | j	                          y r   )r   r3  ra  r  r  )r3   groupr$  s      r6   re  zSendFaxDialog.addGroup  sJ    &&u- 	(Aa'	( 	!!# r7   c                 8    | j                   j                          y rX   )r   showrN   s    r6   r   zSendFaxDialog.FABButton_clicked  s    r7   c                 $   ||j                         |j                         }}|dk7  r| j                  j                  |d      }| j                  j                  t        |j                                      | j                  j                          y y r   )	rM  columnr  rH  r   selectByNamer   r\  rs  )r3   rH  rM  cols       r6   r  z/SendFaxDialog.RecipientsTable_itemDoubleClicked  sk    xxz4;;=Cax++00a8HH!!*TYY["9:HHMMO r7   c                 F   t        t        dd            | _        t        t        dd            | _        t        t        dd            | _        t        t        dd            | _        t        j                         | _        t        j                         | _	        d| _
        y )Ninforz   warningrU   r   F)rL   rM   	info_icon	warn_icon
error_icon	busy_iconr   Queueupdate_queueevent_queuesend_fax_activerN   s    r6   rJ   zSendFaxDialog.initSendFaxPage  sr    {67;<{9g>?GW =>{67;<!KKM ;;=$r7   c                     | j                  t               | j                  | j                  d      | j                         | j
                  j                  | j                  d             y )NzReady to send fax.zSend Fax)rm   PAGE_SEND_FAXaddStatusMessagerj   r{  rA   r   rN   s    r6   displaySendFaxPagez SendFaxDialog.displaySendFaxPage  sI    'dii(<=t~~N		* 56r7   c                 ~   | j                   j                  d       | j                  j                  d       | j                  j	                          d| _        g }t        j                  | j                        }|t        j                  j                  |      ret        |d      j                         j                  d      dk(  r9t        | | j!                  d| j                  z               | j#                          y t%                t'        j(                  | j*                        }t-        j.                  | j*                  | j                  d |d         | _        	 	 | j0                  j                          	 | j0                  j;                  d       | j0                  j#                          tC                | j0                  j@                  tD        kD  rp| j0                  j@                  tF        tH        fvrNt        | | j!                  d
| j0                  jJ                  z               | j                   j                  d       y t        jL                         | _'        | jN                  D ]  }|jP                  | j                  k(  s|jR                  t        jT                  k(  rEt        | | j!                  d| j                  z               | j                   j                  d        y  n t4        jW                  d       | jX                  D ]O  }| jZ                  j]                  |      }|j_                  |       t4        jW                  d|d   d|d          Q t4        jW                  d       | j`                  D ]  }t4        jW                  |        | j0                  jc                  td        | j                  dd       | j0                  jg                  || j`                  | jh                  | jj                  | jl                  | jn                  | j                  | jp                  | jr                  	      sft        | | j!                  d             | j0                  jc                  tt        | j                  dd       d| _        d| _;        | jy                          y d| _;        | jy                          t{        |       | _>        | j|                  j~                  j                  | j                         | j|                  j                  d       y # t2        $ r*}t4        j7                  |j8                         Y d }~d }~ww xY w# t2        $ rB}t4        j=                  d	|j8                  z         t>        | j0                  _         Y d }~d }~ww xY w# | j0                  j#                          tC                w xY w)NFTrbs   HP Faxz<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)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=rZ  z Number=r   z
File list:r   rw   zC<b>Send fax is active.</b><p>Please wait for operation to complete.i  )CrA   re   r?   r'   stopr   r	   getPPDr   r   r   r   openreadfindri   rj   rk   beginWaitCursorr   queryModelByURIr    r   getFaxDevicer#   ErrorrT   warnmsgqueryDevicerU   ERROR_STATE_ERRORerror_stateendWaitCursorERROR_STATE_MAX_OKERROR_STATE_LOW_SUPPLIESERROR_STATE_LOW_PAPERstatus_codegetPrinterscups_printersrZ  stateIPP_PRINTER_STATE_STOPPEDr  r*   r   r1  rn  r)   	sendEventEVENT_START_FAX_JOB	sendFaxesr~   r   r   r   r  r  EVENT_FAX_JOB_FAILr  setCancelCloseButtonr-   SendFaxTimerrP   r=   SendFaxTimer_timeoutrR   )r3   phone_num_listppd_filemqepentryr   s           r6   executeSendFaxzSendFaxDialog.executeSendFax  s   ""5)""5)	;;t001BGGNN8$<Hd#((*//	:b@$		  +a  bf  bs  bs  +s  !t  u

##DOO4##DOO#'#4#4d#%j>3	 9$$4$0 HHNNO88"44HH  )ACX(YYdDII  'k  lp  lt  lt  l@  l@  '@  A  BOO&&t, "--/## 	Avv***77d<<<dDII  /V  W[  Wh  Wh  /h  %i  jOO..u5	 			#$$$ 	KAGGKKNE!!%(IIU6]E%LIJ	K
 			, 	AIIaL	 	.0A0A1bIxx!!.$..$BYBY"&"4"4d6J6JDLdLd"&"3"3T5F5FHXHXZ dDII&klmHH143D3DaLDI#(D %%'#!!#"4L!!))$*C*CD%y    
  9		4quu<='8$$9
 HHNNOsN   T 9U 	UU :V  UV 	V7VV VV &V<c                     | j                   r+| j                  j                  | j                  d             y | j                  j                  | j                  d             y )NzCancel SendClose)r  r;   r   rj   rN   s    r6   r  z"SendFaxDialog.setCancelCloseButton6  sE    %%dii&>?%%dii&89r7   c                 F   | j                   r| j                  | j                  d      | j                         | j                  j                  t        j                  dddf       | j                  j                  t        | j                  dd       y | j                          y )NzCancelling job...rw   r   )r  r  rj   r|  r  putr   EVENT_FAX_SEND_CANCELEDr#   r  EVENT_FAX_JOB_CANCELEDr   rk   rN   s    r6   r>   z"SendFaxDialog.CancelButton_clicked=  st    !!$)),?"@$..Q  #"="=r2r!JKHH5t7H7H!RPJJLr7   c           	         | j                   j                         r?	 | j                   j                  d      \  }}}|t
        j                  k(  r:d| _        d| _        | j                          | j                  j                          n|t
        j                  k(  r0| j                  | j                  d|z        | j                         nr|t
        j                   k(  r0| j                  | j                  d|z        | j                         n/|t
        j"                  k(  r0| j                  | j                  d|z        | j                         n|t
        j$                  k(  r0| j                  | j                  d|z        | j                         n|t
        j&                  k(  r4| j                  | j                  d|d|d	      | j                         nb|t
        j(                  k(  r-| j                  | j                  d
      | j                         n"|t
        j*                  t
        j,                  t
        j.                  t
        j0                  t
        j2                  t
        j4                  t
        j6                  fv rd| _        d| _        | j                          | j                  j                          |t
        j*                  k(  r| j8                  j;                  t<        j>                        \  }}|t<        j@                  k(  r,| j                  | j                  d      | jB                         nL| j                  | j                  dt<        jD                  j                  |d      z        | jB                         | j8                  jG                  tH        | jJ                  dd       n|t
        j0                  k(  rY| j                  | j                  d      | jB                         | j8                  jG                  tH        | jJ                  dd       n|t
        j2                  k(  rY| j                  | j                  d      | jB                         | j8                  jG                  tH        | jJ                  dd       n|t
        j4                  k(  rY| j                  | j                  d      | jB                         | j8                  jG                  tH        | jJ                  dd       n@|t
        j6                  k(  rX| j                  | j                  d      | jB                         | j8                  jG                  tH        | jJ                  dd       n|t
        j,                  k(  rX| j                  | j                  d      | jB                         | j8                  jG                  tH        | jJ                  dd       nj|t
        j.                  k(  rW| j                  | j                  d      | jL                         | j8                  jG                  tN        | jJ                  dd       | j                   j                         r>y y # t        j                  $ r Y y w xY w)Nr   FzProcessing page %s...zSending fax to %s...zDialing %s...zConnecting to %s...zSending page z to z...zCleaning up...z6Fax send error (Possible cause: No answer or dialtone)zFax send error (%s)zUnknown errorrw   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  qsizer1  r   Emptyr   STATUS_IDLEr   r  r  r  r  STATUS_PROCESSING_FILESr  rj   r~  STATUS_SENDING_TO_RECIPIENTSTATUS_DIALINGSTATUS_CONNECTINGSTATUS_SENDINGSTATUS_CLEANUPSTATUS_ERRORSTATUS_BUSYSTATUS_COMPLETEDSTATUS_ERROR_IN_CONNECTINGSTATUS_ERROR_IN_TRANSMITTINGSTATUS_ERROR_PROBLEM_IN_FAXLINESTATUS_JOB_CANCELr#   getPMLr   OID_FAX_DOWNLOAD_ERRORDN_ERROR_NONEr}  DN_ERROR_STRr  r  r   r{  EVENT_END_FAX_JOB)r3   statuspage_numargresult_coder  s         r6   r  z"SendFaxDialog.SendFaxTimer_timeoutF  s   %%'(,(9(9(=(=a(@%# (!	',$))+!!&&(3666%%dii0G0P&QSWSaSab3:::%%dii0Fs0J&KT^^\3---%%dii0C&DdnnU3000%%dii0Ec0I&JDNN[3---%%diiHUX0Y&Z&*nn6 3---%%dii0@&A4>>RC,,coos?S?SUXUsUs00#2U2UWZWlWlo o!	',$))+!!&&(S---/3xxs?Y?Y/Z,K"c&7&77--dii8p.qsw  tC  tC  D--dii8McN^N^NbNbcnp  OA  9A  /B  DH  DS  DS  THH&&'94;L;LaQSTs===))$))4Z*[]a]l]lmHH&&'94;L;LaQSTs???))$))4\*]_c_n_noHH&&'94;L;LaQSTsBBB))$))4`*acgcrcrsHH&&'94;L;LaQSTs444))$))4I*JDOO\HH&&'94;L;LaQSTs.))$))N*CT__UHH&&'94;L;LaQSTs333))$))4L*Mt~~^HH&&'8$:K:KQPRSO %%'' ;; s   Y Y21Y2c                 \    t         j                  |       t        ||| j                         y rX   )rT   r  QListWidgetItem
StatusList)r3   r\  icons      r6   r  zSendFaxDialog.addStatusMessage  s    		$dDOO4r7   c                 V    t         j                  d|z         | j                  |       y )NzFileTable_callback(%s))rT   r  r   r3   r   s     r6   r   z SendFaxDialog.FileTable_callback  s     		*Q./r7   c                     d| _         t                	 t        j                  | j                  |t
        j                  j                  |            | _        d| _         t                y # d| _         t                w xY wrS  )
r   r  r	   	printFiler   r   r   basenamer   r  r  s     r6   r   zSendFaxDialog.renderFile  s[    		#~~d.?.?BGGDTDTUVDWXDDIO DIOs   AA( (A;c                 |   | j                   s	 | j                  j                  | j                  t        j
                  | j                        \  }}}}}}}}|r4d| _        t        j                  d|fz         | j                  |       y y y # t        $ r$}	t        j                  d|	z         d }Y d }	~	`d }	~	ww xY w)Nz*Exception caught in CheckTimer_timeout: %sr   zA new fax has arrived: %s (%d))r   r&   CheckForWaitingFaxr    propusernamer   	ExceptionrT   r  addFileFromJob)
r3   r    r   
event_coder  job_idtitletimedatefax_filer  s
             r6   rQ   z SendFaxDialog.CheckTimer_timeout  s    yy LL33DOOT]]TXTdTde b
L*hxYa #$ 		:h=OOP##He4  
   		FJK s   AB 	B;B66B;c                     d| _         	 | j                  |      \  }}}}}}}	|r| j                  j                  |dd||       d| _         t	                y # d| _         t	                w xY w)NTzapplication/hplip-faxz	HPLIP FaxF)r   getFileInfor   r   r  )
r3   r  r  rV   	num_pageshort_dpivert_dpi	page_size
resolutionencodings
             r6   r  zSendFaxDialog.addFileFromJob  sn    		  * OB	8Xy*h''2I;X]_hi DIO DIOs   :A A(c                    t        |d      }|j                  t        j                        }|j	                          t        |      t        j                  k7  rt        j                  d       yt        j                  d|d t        j                         \
  }}}}}}	}
}}}t        j                  d||||||	|
|fz         d||||	|
|fS )Nr  z/Invalid fax file! (truncated header or no data))Fr   r   r   r   r   r   z>8sBIHHBBBIIz>Magic=%s Ver=%d Pages=%d hDPI=%d vDPI=%d Size=%d Res=%d Enc=%dT)r  r  r   FILE_HEADER_SIZErk   r   rT   rU   structunpackr  )r3   r  r   headermgversionr  r  r  r  r  r  	reserved1	reserved2s                 r6   r  zSendFaxDialog.getFileInfo  s    4 ,,-		v;#...IIGH, MM.&1F#2F2F*GH	7GY(I)Y 			Rw	8Xy*V^_` 	a i8Y
HUUr7   c                 z    | j                   t        j                  | j                          |j                          y rX   )r(   r   unlockaccept)r3   r  s     r6   
closeEventzSendFaxDialog.closeEvent  s%    >>%LL(	
r7   c                 \    | j                  |       | j                  j                  |       y rX   )rf   r   setCurrentIndex)r3   pages     r6   rm   zSendFaxDialog.displayPage  s$    D!**40r7   c                 
   | j                   j                         }|t        k(  rt        j	                  d       y |t
        k(  rt        j	                  d       y |t        k(  r0| j                   j                  t
               | j                          y |t        k(  r0| j                   j                  t               | j                          y |t        k(  r0| j                   j                  t               | j                          y y )NzInvalid!)r   r   rg   rT   rU   r   r   r  r/   r'  r1   r  r(  r3   r  s     r6   r@   z SendFaxDialog.BackButton_clicked  s    ++-IIj!. IIj!*_..~>%%'/!..z:!!#-..?&&(  r7   c                 4   | j                   j                         }|t        k(  r0| j                   j                  t               | j                          y |t        k(  r0| j                   j                  t               | j                          y |t        k(  r0| j                   j                  t               | j                          y |t        k(  r0| j                   j                  t               | j                          y |t        k(  r| j                          y y rX   )r   r   rg   r  r   r/   r   r1   r'  r(  r  r  r  r  s     r6   rB   z SendFaxDialog.NextButton_clicked  s    ++-..~>%%'. ..z:!!#*_..?&&(/!..}=##%-!  r7   c           	      x    | j                   j                  | j                  d|dz   dt        dz                y )NzStep r
   z of )StepTextr   rj   PAGE_MAXr  s     r6   rf   zSendFaxDialog.updateStepText  s*    dii1XaZ(HIJr7   c                 X    | j                   j                  | j                  d             y )NzNext >)rA   r   rj   rN   s    r6   r   zSendFaxDialog.restoreNextButton  s    		( 34r7   c                 N    t         j                  d|j                  d      |      S )Nr   zutf-8)qApp	translateencode)r3   scs      r6   __trzSendFaxDialog.__tr!  s    ~~oahhw.?BBr7   rx   )rw   rw   )FFF)TrX   )F__name__
__module____qualname__r   r+   r0   rF   r2   r\   r^   r`   rb   rG   r/   r   r   r   r   r   r   r   r   r   r   r   rH   r1   r   r   r   rI   r   r(  r  r  r
  rI  r   r   r&  r   r   r  r  r  r  r:  ra  re  r   r  rJ   r  r  r  r>   r  r  r   r   rQ   r  r  r  rm   r@   rB   rf   r   rj    r7   r6   r   r   c   sj   <@E"Z&B*$%

54)M+%((
#f#<BUQ%$.
-
T/bd(>))4Z2.je;"9426*PG$
$
")!%7V&r:HTV55 V.1)*",K5Cr7   r   ):operatorr  base.sixext.movesr   base.sixextr   rC   base.gbaser   r   r   prntr	   
base.codesui_utilsPyQt5.QtCorePyQt5.QtGuiPyQt5.QtWidgetssendfaxdialog_baser   	filetabler   r   printernamecomboboxr   r   printsettingsdialogr   faxsetupdialogr   rg   r   r   r'  r  r  STATUS_INFORMATIONSTATUS_WARNINGr  r   r  	fax_buildrh   r   ImportErrorrT   r  r,   	reportlabr   Versionver	fabwindowr   r   r   r   r  r7   r6   <module>r&     sE  .   # "   # #       * 4 W 4 * 
 7 nn HH_ 
F)##$%<!%HHWX
 HHNO$CGY CA   &  FDEFs$   D	 */D 	DDD/.D/