
    =	f=                         d dl Z d dlZd dlZd dlZd dl d dlmZmZ d dlm	Z	 d dl
 ddl d dlmZmZmZ d dl d dl d dl ddlmZ d ZdZ G d d	e      Zy)
    N)*)utilsmagic)cups   )
to_unicodeto_string_utf8from_unicode_to_str)MimeTypesDialogc                       e Zd Z e       Z e       Z e       Zd Zd Zd Z	d Z
d Zd Zd Zd Zdd	Zd
 Zd Zd Zd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dZy)	FileTablec                    t         j                  | |       || _        | j                          g | _        t
        | _        d | _        d | _        t        j                         | _        t               | _        | j                  j                          | j                  j                          | j                  j                   | _        y N)QWidget__init__parentinitUi	file_listFILETABLE_TYPE_PRINTtypselected_filenamefax_add_callbackr   getAllowableMIMETypesallowable_mime_typesUserSettingsuser_settingsloaddebugworking_dir)selfr   s     !/usr/share/hplip/ui5/filetable.pyr   zFileTable.__init__8   s    v&'!% $$($>$>$@!)^!  "--99    c                    t        |       | _        | j                  j                  d       t        |       | _        | j                  j                  d       | j                  j                  | j                  dddd       t        |       | _        | j                  j                  d       | j                  j                  | j                  dddd       t        |       | _        | j                  j                  d       | j                  j                  | j                  dddd       t        |       | _	        | j                  j                  d       | j                  j                  | j                  dd	dd       t        |       | _
        | j                  j                  d
       | j                  j                  | j                  dddd       t        ddt        j                  t        j                        }| j                  j                  |dddd       t        |       | _        | j                   j                  d       | j                  j                  | j                   dddd       | j                  j#                  | j%                  d             | j                  j'                  t)        t+        dd                   | j                  j,                  j/                  | j0                         | j                  j'                  t)        t+        dd                   | j                  j#                  | j%                  d             | j                  j,                  j/                  | j2                         | j                  j#                  | j%                  d             | j                  j'                  t)        t+        dd                   | j                  j,                  j/                  | j4                         | j                  j#                  | j%                  d             | j                  j'                  t)        t+        dd                   | j                  j,                  j/                  | j6                         | j                   j#                  | j%                  d             | j                   j'                  t)        t+        dd                   | j                   j,                  j/                  | j8                         | j                  j;                  t<        j>                         | j                  j@                  d   j/                  | jB                         | j%                  d      | j%                  d      | j%                  d      g| _"        | j                  jG                  d        | j                  jH                  j/                  | jJ                         y )!N
gridlayoutr   r   r      AddFileButtonRemoveFileButtonMoveFileUpButton   MoveFileDownButton   [         ShowTypesButton   zAdd...list_add16x16list_removeRemovezMove Upupz	Move DowndownzShow Valid Types...	mimetypeszconst QPoint &NameTypezFolder/PathF)&QGridLayoutr$   setObjectNameQTableWidgetr   	addWidgetQPushButtonr&   r'   r(   r*   QSpacerItemQSizePolicy	ExpandingMinimumaddItemr/   setText_FileTable__trsetIconQIconload_pixmapclickedconnectAddFileButton_clickedRemoveFileButton_clickedMoveFileUpButton_clickedMoveFileDownButton_clickedShowTypesButton_clickedsetContextMenuPolicyQtCustomContextMenucustomContextMenuRequested$FileTable_customContextMenuRequestedheaderssetSortingEnableditemSelectionChangedFileTable_itemSelectionChanged)r    
spacerItems     r!   r   zFileTable.initUiK   sD   %d+%%l3%d+$$[1!!$..1Qq9(.((9!!$"4"4Qq1= +D 1++,>?!!$"7"7!Aa@ +D 1++,>?!!$"7"7!Aa@"-d"3--.BC!!$"9"9!AaB B{'<'<[=P=PQ

1Qq3*40**+<=!!$"6"6q1Q?""499X#67""5Z)I#JK""**4+E+EF%%eKw,O&PQ%%dii&9:%%--d.K.KL%%dii	&:;%%eKg,F&GH%%--d.K.KL''		+(>?''k&'.J(KL''//0O0OP$$TYY/D%EF$$U;{G+L%MN$$,,T-I-IJ++B,@,@A 	112BCKKDLuLuv		&)499V+<dii>VW((/++33D4W4WXr"   c                 R    t         j                  j                  |      r|| _        y y r   )ospathexistsr   )r    ds     r!   setWorkingDirzFileTable.setWorkingDir{   s    77>>! D r"   c                    | j                   rit        j                  j                  | j                   d   d         | _        | j                  | j
                  _        | j
                  j                          | j                  S Nr   )r   r[   r\   pathnamer   r   saver    s    r!   getWorkingDirzFileTable.getWorkingDir   s`    >>!ww//q0A!0DED-1-=-=D*##%r"   c                 &   || _         | j                   t        k(  rw| j                  d      | j                  d      | j                  d      g| _        t        j                         r+| j                  j                  | j                  d             y y y )Nr8   r9   PagesFile)r   FILETABLE_TYPE_FAXrE   rU   logis_debugappend)r    ts     r!   setTypezFileTable.setType   sm    88)) IIf-tyy/@$))GBTUDL||~##DIIf$56  *r"   c                     || _         y r   )r   )r    callbacks     r!   setFaxCallbackzFileTable.setFaxCallback   s
     (r"   c                 ,    t        | j                        S r   )lenr   rd   s    r!   
isNotEmptyzFileTable.isNotEmpty   s    4>>""r"   c                 N    | j                         | _        | j                          y r   )currentFilenamer   setUpDownButtonsrd   s    r!   rX   z(FileTable.FileTable_itemSelectionChanged   s    !%!5!5!7r"   c                 L
   | j                   j                          | j                   j                  t        | j                               | j                   j                  d       | j                  r/| j                  j                          t        j                  t        t        j                               	 d }| j                   j                  t        | j                               | j                   j                  | j                         t        j                  t        j                   z  }t#        | j                        D ]  \  }}|\  }}}}	}
d}| j$                  t&        k(  r7|	rt)        |	      }nQt)        t*        j,                  j/                  |            }n(t)        t*        j,                  j/                  |            }|j1                  t        j2                  t5        |             |j7                  |       | j8                  | j8                  |k(  r|}| j                   j;                  |||       |dz  }t)        |      }|j7                  |       | j                   j;                  |||       |dz  }| j$                  t<        k(  r[t)        t*        j,                  j?                  |            }|j7                  |       | j                   j;                  |||       |dz  }| j$                  t&        k(  s|
dk  rt)        | jA                  d            }nt)        t5        |
            }|j7                  |       | j                   j;                  |||       |dz  }| j$                  t&        k(  s9tB        jE                         sOt)        |      }|j7                  |       | j                   j;                  |||        | j                   jG                          || j                   jI                  dd      }|jK                  d       | j                   jM                  |       t        jO                          | jP                  jS                  d       | jP                  jU                  tW        tY        dd                   | j[                          y | j\                  j                          | jP                  jS                  d       | j[                          |r%| j^                  j`                  j                          y y # t        jO                          w xY w)Nr   r   z	(unknown)Tr3   r2   F)1r   clearsetRowCountrs   r   setColumnCount	isNotEmptemitQApplicationsetOverrideCursorQCursorrQ   
WaitCursorrU   setHorizontalHeaderLabelsItemIsSelectableItemIsEnabled	enumerater   ri   QTableWidgetItemr[   r\   basenamesetDataUserRoler   setFlagsr   setItemr   dirnamerE   rj   rk   resizeColumnsToContentsitemsetSelectedsetCurrentItemrestoreOverrideCursorr'   
setEnabledrF   rG   rH   rw   isEmptyr&   rI   )r    show_add_file_if_emptyselectedflagsrowffilename	mime_typemime_type_desctitle	num_pagescolis                r!   updateUizFileTable.updateUi   s   ""3t~~#67%%a(>>NN!**72==+ABC5--c$,,.?@88F++b.>.>>'7 1@FCLMIHi	Cxx#55  0 7A 01A1A(1K LA -RWW-=-=h-GHIIbkk:h+?@JJu%--9..(:#$NN**3Q71HC )8AJJu%NN**3Q71HCxx#77,RWW__X-FG

5)..sC;qxx#55$q= 0;1G HA 0I1F GA

5)..sC;q88'99clln 0 :AJJu- NN223Q?c1@h 668##~~221a8H$$T*--h7 224!!,,T2!!))%M70S*TU!!# LL!!,,U3!!#%""**//1 & 224s!   8IT  A:T <T B T T#c                 :   | j                   r| j                  j                         }t        | j                         dkD  r7|t        | j                         dz
  k7  r| j                  j                  d       n| j                  j                  d       t        | j                         dkD  r!|dk7  r| j                  j                  d       y | j                  j                  d       y | j                  j                  d       | j                  j                  d       y )Nr   TFr   )r   r   
currentRowrs   r*   r   r(   r    r   s     r!   rw   zFileTable.setUpDownButtons   s    >>))+A4>>"Q&1DNN0CA0E+E''2248''22594>>"Q&16%%006%%007 ##..u5!!,,U3r"   c                 x   | j                   t        k(  r| j                  d      }nfd}	 t        j                  dt        j
                  t        j
                        }|j                         \  }}t        |      }| j                  d      }t        j                  | || j                  | j                  d            }|d   D cg c]  }t        |       }}|r7| j                  |       | j                   t        k(  r| j!                  d       y y y # t        $ r Y  t        j                          Y xY wc c}w )	NzSelect File(s) to Print 
getenforce)stdoutstderrzSelect File(s) to SendzAll files (*)r   F)r   r   rE   
subprocessPopenPIPEcommunicater	   OSErrorrj   	exceptionQFileDialoggetOpenFileNamesr   r   addFileListr   )r    sstatperrfilesr   s          r!   rK   zFileTable.AddFileButton_clicked  s   88++		34AD $$\*//R\RaRabMMO	c%d+ 		23A,,T1d6F6F		RaHbc(-a11A11U#xx//e$ 0     2s   AD D7	D4D4c                 4    |D ]  }| j                  |        y r   )addFileFromUI)r    r   r   s      r!   r   zFileTable.addFileList/  s     	"Aq!	"r"   c                 x   t         j                  j                  t         j                  j                  |            }t        j                  d|z         t         j                  j                  |      rt        j                  |t         j                        rzt        j                  |      }|}t        j                  d|d|       	 t        |   d   }| j                  t        k(  r| j                  |||||       y | j                  |       y t#        | | j%                  d|z        | j%                  d             y # t         $ ro | j                  t        k(  r,t#        | | j%                  d      | j%                  d             n-t#        | | j%                  d      | j%                  d             Y y Y y w xY w)	NzTrying to add file: %szFile type of file z: r   a(  <b>You are trying to add a file  that cannot be directly printed with this utility.</b><p>To print this file, use the print command in the application that created it.<p>Note: Click <i>Show Valid Types...</i> to view a list of compatible file types that can be directly printed from this utility.zHP Device Managera]  <b>You are trying to add a file  that cannot be directly faxed with this utility.</b><p>To fax this file, use the print command in the application that created it (using the appropriate fax print queue).<p>Note: Click <i>Show Valid Types...</i> to view a list of compatible file types that can be directly added to the fax file list in this utility.z~<b>Unable to add file '%s' to file list (file not found or insufficient permissions).</b><p>Check the file name and try again.)r[   r\   abspath
expanduserrj   r   r]   accessR_OKr   r   MIME_TYPES_DESCr   r   addFiler   KeyError	FailureUIrE   )r    r   r   r   r   r   s         r!   r   zFileTable.addFileFromUI4  sl   GGOOBGG..q12		*Q./77>>!1bgg!6*I&NIIAyAB-!0!;A!> 8833LLI~uiP))!,dDII  'g  hi  'i  jii 346  88833dDII  /Y  %Z		"568 dDII  /N  %O		"56888s   E A3F98F9c                     t         j                  d|||||fz         | j                  j                  |||||f       | j	                          | j
                  j                          y )NzAdding file %s (%s,%s,%s,%d))rj   r   r   rl   r   fileListChangedr}   )r    r   r   r   r   r   s         r!   r   zFileTable.addFileN  sY    		0Ay.RWYb3ccdq)^UINO!!#r"   c                     | j                   j                  | j                   j                         d      }|y t        |j	                  t
        j                              S ra   )r   r   r   	value_strdatarQ   r   r   s     r!   rv   zFileTable.currentFilenameV  sE    NN 9 9 ;Q?9,--r"   c                 J    | j                         }|y | j                  |      S r   )rv   
removeFiler    r   s     r!   rL   z"FileTable.RemoveFileButton_clicked^  s(    '')x((r"   c                     | j                   d d  }d}|D ]U  \  }}}}}|t        |      k(  r:| j                   |= | j                  j                          | j	                  d        y |dz  }W y Nr   Fr   )r   r   r   r}   r   )	r    r   tempindexr   r   r   r   r   s	            r!   r   zFileTable.removeFilef  sr    ~~a >B 	:Ay.%Jx((NN5)$$))+e$QJE	r"   c                     | j                   d d  }d}|D ]L  \  }}}}}||k(  r:| j                   |= | j                  j                          | j                  d        y |dz  }N y r   )r   r   r}   r   )	r    r   r   r   r   mr   r   r   s	            r!   removeFileByMIMETypezFileTable.removeFileByMIMETypes  sl    ~~a =A 	9Ha	I~NN5)$$))+e$QJE	r"   c                 @    | j                   D ]  \  }}}}}||k(  s y y)NTF)r   )r    r   r   r   r   r   r   s          r!   isMIMETypeInListzFileTable.isMIMETypeInList  s/    =A^^ 	9Ha	I~	 r"   c                     i }| j                   D ]  }t        j                  |d      ||<    t        ||       }|j	                          y )N)Unknownzn/a)r   r   getr   exec_)r    xadlgs       r!   rO   z!FileTable.ShowTypesButton_clicked  sJ    ** 	>A"&&q*<=AaD	> a&		r"   c                     | j                         }|y t        j                  | j                  || j                         | j                          y r   )rv   r   list_move_upr   _FileTable__compareFilenamesr   r   s     r!   rM   z"FileTable.MoveFileUpButton_clicked  s>    '')4>>8T5L5LMr"   c                     | j                         }|y t        j                  | j                  || j                         | j                          y r   )rv   r   list_move_downr   r   r   r   s     r!   rN   z$FileTable.MoveFileDownButton_clicked  s>    '')T^^Xt7N7NOr"   c                     |d   |k(  S ra    )r    r   bs      r!   __compareFilenameszFileTable.__compareFilenames  s    tqyr"   c                     t        |       y r   )print)r    r   s     r!   rT   z.FileTable.FileTable_customContextMenuRequested  s	    ar"   Nc                 0    t         j                  d||      S )Nr   )qApp	translate)r    r   cs      r!   __trzFileTable.__tr  s    ~~k!A..r"   )T)r   r   r   ) __name__
__module____qualname__
pyqtSignalr   r   r|   r   r   r_   re   rn   rq   rt   rX   r   rw   rK   r   r   r   rv   rL   r   r   r   rO   rM   rN   r   rT   rE   r   r"   r!   r   r   2   s     lOlGI:&-Y`!
 7)# 
[2|4&%>"
64$.)

/r"   r   )sysos.pathr[   r   base.gbaser   r   prntr   
base.codesui_utilsbase.sixextr   r	   r
   PyQt5.QtCorePyQt5.QtGuiPyQt5.QtWidgetsmimetypesdialogr   r   ri   r   r   r   r"   r!   <module>r      sT   0   	       G G    -   z/ z/r"   