3
NZS                 @   sf  d dl Z d dlZd dlZd dlT d dlT d dlmZ d dlmZ d dl	m
Z
mZ d dlT d dlT d dlT e jde jZd ZdZdZd	Zd
ZdZdZdZdd Zdd Zdd ZdddZeZdddZdd Z dd Z!dd Z"G dd  d e#Z$ed!Z%dd"d#Z&e&Z'dd$d%Z(e(Z)dd&d'Z*e*Z+dd(d)Z,e,Z-G d*d+ d+e.Z/G d,d- d-e.Z0G d.d/ d/e.Z1ed0d1fed2d3fed4d5fed6d7fed8d9fed:d;fed<d=fed>d?fed@dAfed@dAfedBdCfedDdEfedFdGfedHdIfedJdKfedLdMfedNdOfedNdOfedPdQfedRdSfedTdUfedVdWfedXdYfedZd[fed\d]fed^d_fed`dafedbdcfddZ2da3dedf Z4da5dgdh Z6ediedjedkedledmednedoedpedqedredsedtduZ7edvedwfedxedyfedzed{fed|ed}fed~edfededfededfdZ8dd Z9dd Z:dd Z;dS )    N)*)utils)cups)PY3
to_unicodez
(?is)<.*?>                     c             C   s   t jd| d S )NZui_utils)QApplication	translate)t r    /usr/share/hplip/ui5/ui_utils.py__translate4   s    r   c               C   s   t jttj d S )N)r   ZsetOverrideCursorZQCursorQtZ
WaitCursorr   r   r   r   beginWaitCursor8   s    r   c               C   s   t j  d S )N)r   ZrestoreOverrideCursorr   r   r   r   endWaitCursor<   s    r   c             C   s8  dj tjj| d dg} |d kr>tj}tjj tj dd}n&tjj tj|}tjj tj dd|}x||gD ]}tjj || }tjj|r|d k	rt|}|\}}	t	j
|j||	tjtjS t	|S xXtj|ddd| dD ]@}
|d k	rt|
}|\}}	t	j
|j||	tjtjS t	|
S qW qnW tjd	|   t	 S )
N r   z.pngdataZimagesTF)Zrecurse	abs_pathsZreturn_folderspatternzPixmap '%s' not found!)joinospathsplitextprop	image_dirgetcwdexistsZQImageZQPixmapZ	fromImageZscaledr   ZIgnoreAspectRatioZSmoothTransformationr   Z	walkFileslogerror)namesubdirZ	resize_tor    ZldirdfZimgxywr   r   r   load_pixmapA   s,    
r,   32x32c             C   s0   dj tjj| d dg} dtjj tj||  S )Nr   r   z.pngzfile://)r   r   r   r   r   r    )r%   r&   r   r   r   getPynotifyIconc   s    r.   c             C   s|   | d krdS y6t s@y| j } W n  tk
r> } z| S d }~X nX W n4 ttfk
rv } ztjd|  W Y d d }~X nX | S )Nr   z&value_str() Failed to convert data: %s)r   ZtoStringAttributeError
ValueError	TypeErrorr#   warn)r   er   r   r   	value_strh   s     r4   c             C   s   d\}}| d kr||fS yVt r,t| }d}n@y| j \}}W n. tk
rj } zt| }d}W Y d d }~X nX W n8 ttfk
r } ztjd| |f  W Y d d }~X nX ||fS )Nr   FTz+value_int() Failed to convert data[%s]:%s  )r   F)r   intZtoIntr/   r0   r1   r#   r2   )r   iokr3   r   r   r   	value_intw   s    $r8   c             C   s   d}| d kr|S yt rHt| tkr4| j dkr4d}q| dkrBd}qd}n`y| j }W nR tk
r } z6t| tkr| j d	krd}n| d
krd}nd}W Y d d }~X nX W n4 ttfk
r } ztj	d|  W Y d d }~X nX |S )NFfalse0r   Tz'value_bool() Failed to convert data :%s)r9   r:   )Fr   )r9   r:   )Fr   )
r   typestrlowerZtoBoolr/   r0   r1   r#   r2   )r   br3   r   r   r   
value_bool   s*     r?   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )UserSettingsc             C   s   t jd krtj|  ntj| tjjt jdtj t| _	t
| _d| _d| _d| _d| _d| _d| _d| _d| _d| _g | _d| _d| _d| _d| _d	| _d	| _d| _| j  d S )
Nz
hplip.confr   F   r   r   T.r   )r   Zuser_dir	QSettings__init__r   r   r   Z	IniFormatZSYSTRAY_VISIBLE_SHOW_ALWAYSsystray_visibleZSYSTRAY_MESSAGES_SHOW_ALLsystray_messageslast_used_device_urilast_used_printerversion	date_timeauto_refreshauto_refresh_rateauto_refresh_typepolling_intervalpollingdevice_listworking_dirvoice_phoneemail_addressupgrade_notifyupgrade_last_update_timeupgrade_pending_update_timelatest_available_versionloadDefaults)selfr   r   r   rD      s.    
zUserSettings.__init__c             C   sV   xP|D ]H}|j  d }tj|}|rdjtjj||dj|j  dd  gS qW dS )Nr    r   r   )splitr   Zwhichr   r   r   )rY   Zcmdscbasenamer   r   r   r   __setup   s    

.zUserSettings.__setupc             C   s&   | j ddddg| _| j dg| _d S )Nzsimple-scan %SANE_URI%zxsane -V %SANE_URI%ZkookaZ
xscanimagezhp-fab)_UserSettings__setupcmd_scancmd_fab)rY   r   r   r   rX      s    zUserSettings.loadDefaultsc             C   sN  t jd | j  | jd t| jdd | _t| jdd | _| j  | jd t	| jdph| j
| _
t	| jdp~| j| _t	| jd	p| j| _| j  | jd
 t	| jdp| j| _| j  | jd t| jdd pt| j| _t| jd| _t| jdd pt| j| _| j  | jd t	| jd| _t	| jd| _| j  | jd t| jd| _t| jdd pt| j| _tt	| jdjtd| _| j  | jd t	| jd| _tt	| jd| _| j  | jd t| jd| _t	| jd| _t| jdd | _t| jdd | _| j  d S )NzLoading user settings...settingsrE   r   rF   	last_used
device_uriprinter_namerQ   commandsscanrefreshrateenabler;   ZinstallationrI   rJ   rO   intervalrP   ,faxrR   rS   upgradenotify_upgraderW   last_upgraded_timepending_upgrade_time) r#   debugsync
beginGroupr8   valuerE   rF   endGroupr4   rG   rH   rQ   r`   r5   rL   r?   rK   rM   rI   rJ   rO   rN   r   r[   polling_device_listrR   rS   rT   rW   rU   rV   )rY   r   r   r   load   sL    




 

 

zUserSettings.loadc             C   s  t jd | jd | jd| j | jd| j | j  | jd | jd| j | jd| j | jd| j	 | j  | jd	 | jd
| j
 | j  | jd | jd| j | jd| j | jd| j | j  | jd | jd| j | jd| j | jdtdj| j | j  | jd | jd| j | jd| j | j  | jd | jd| j | jdk rvttj | _| jd| j | jd| j | j  | j  d S )NzSaving user settings...rb   rE   rF   rc   rd   re   rQ   rf   rg   rh   ri   rj   r;   rO   rk   rP   rl   rm   rR   rS   rn   ro   r   rp   rq   )r#   rr   rt   ZsetValuerE   rF   rv   rG   rH   rQ   r`   rL   rK   rM   rO   rN   r   r   rw   rR   rS   rT   rU   r5   timerV   rs   )rY   r   r   r   save
  sF    







zUserSettings.savec             C   s   t jd| j  t jd| j  t jd| j  t jd| j  t jd| j  t jd| j  t jd| j  t jd| j	  t jd	| j
  t jd
| j  d S )NzFAB command: %szScan command: %szAuto refresh: %szAuto refresh rate: %szAuto refresh type: %szSystray visible: %dzSystray messages: %dzLast used device URI: %szLast used printer: %szWorking directory: %s)r#   rr   ra   r`   rK   rL   rM   rE   rF   rG   rH   rQ   )rY   r   r   r   rr   :  s    zUserSettings.debugN)	__name__
__module____qualname__rD   r_   rX   rx   rz   rr   r   r   r   r   r@      s   	60r@   zHP Device Managerc             C   sT   t jtjdt| |d kr4| d k	r0| j }nt}tj| ||tj	tj
B tj
 d S )NrZ   )r#   r$   pat_html_removesubr   windowTitleDEFAULT_TITLEQMessageBoxZcriticalOkNoButton)parentZ
error_text
title_textr   r   r   	FailureUIJ  s    
r   c             C   sT   t jtjdt| |d kr4| d k	r0| j }nt}tj| ||tj	tj
B tj
 d S )NrZ   )r#   r2   r~   r   r   r   r   r   warningr   r   )r   Z	warn_textr   r   r   r   	WarningUI]  s    
r   c             C   sT   t jtjdt| |d kr4| d k	r0| j }nt}tj| ||tj	tj
B tj
 d S )NrZ   )r#   infor~   r   r   r   r   r   Zinformationr   r   )r   textr   r   r   r   	SuccessUIq  s    
r   c             C   s   t d}t| ||S )Nzw<b>Unable to communicate with device or device is in an error state.</b><p>Please check device setup and try again.</p>)r   r   )r   r   r   r   r   r   CheckDeviceUI  s    r   c               @   s   e Zd ZdddZdd ZdS )PrinterNameValidatorNc             C   s   t j| | d S )N)
QValidatorrD   )rY   r   r   r   r   rD     s    zPrinterNameValidator.__init__c             C   sD   t j}t|}|st j}n ||d  tjkr4t j}nt j}|||fS )Nr   )r   Invalidr   
Acceptabler   ZINVALID_PRINTER_NAME_CHARS)rY   
input_datapos
returnCoder   r   r   validate  s    zPrinterNameValidator.validate)N)r{   r|   r}   rD   r   r   r   r   r   r     s   
r   c               @   s   e Zd ZdddZdd ZdS )PhoneNumValidatorNc             C   s   t j| | d S )N)r   rD   )rY   r   r   r   r   rD     s    zPhoneNumValidator.__init__c             C   sF   t j}t|}|st j}n"||d  tdkr6t j}nt j}|||fS )Nr   z0123456789-(+).,#* )r   r   r   r   )rY   r   r   r   r   r   r   r     s    zPhoneNumValidator.validate)N)r{   r|   r}   rD   r   r   r   r   r   r     s   
r   c               @   s   e Zd ZdddZdd ZdS )AddressBookNameValidatorNc             C   s   t j| | || _d S )N)r   rD   db)rY   r   r   r   r   r   rD     s    z!AddressBookNameValidator.__init__c             C   s\   t j}t|}|st j}n8|| jj kr0t j}n"||d  tdkrLt j}nt j}|||fS )Nr   z|\/")r   r   r   r   r   Zget_all_names)rY   r   r   r   r   r   r   r     s    z!AddressBookNameValidator.validate)N)r{   r|   r}   rD   r   r   r   r   r   r     s   
r   zPDF Documentz.pdfzPostscript Documentz.pszHP Graphics Language Filez.hgl, .hpg, .plt, .prnzC Shell Scriptz	.csh, .shzC Source Codez.czC/C++ Source Codez.c, .cpp, .cxxzPerl Scriptz.plzPython Programz.pyzShell Scriptz.shz
Plain Textz
.txt, .logzHTML Dcoumentz.htm, .htmlz	GIF Imagez.gifz	PNG Imagez.pngz
JPEG Imagez.jpg, .jpegz
TIFF Imagez.tif, .tiffzBitmap (BMP) Imagez.bmpzPhoto CD Imagez.pcdzPortable Image (PNM)z.pnmzPortable B&W Image (PBM)z.pbmzPortable Grayscale Image (PGM)z.pgmzPortable Color Image (PPM)z.ppmzSGI RGBz.rgbzX11 Bitmap (XBM)z.xbmzX11 Pixmap (XPM)z.xpmzSun Raster Formatz.raszHPLIP Fax Filez.g3, .g4)zapplication/pdfzapplication/postscriptzapplication/vnd.hp-HPGLzapplication/x-cshellzapplication/x-csourceztext/cppzapplication/x-perlzapplication/x-pythonzapplication/x-shellzapplication/x-shz
text/plainz	text/htmlz	image/gifz	image/pngz
image/jpegz
image/tiffzimage/x-bitmapzimage/x-bmpzimage/x-photocdzimage/x-portable-anymapzimage/x-portable-bitmapzimage/x-portable-graymapzimage/x-portable-pixmapzimage/x-sgi-rgbzimage/x-xbitmapzimage/x-xpixmapzimage/x-sun-rasterzapplication/hplip-faxc             C   s  t d krttddtddfttddtddfttddtddfttddtddfttddtddfttddtddfttd	dtd	dft	td
dtd
dft
tddtddfttddtddfttddtddfttddtddfia t j| t t S )NZidle16x16busyr$   inkdroptonerr7   r   paperprintrg   Zpcardrm   Z
makecopies)status_iconsERROR_STATE_CLEARr,   ERROR_STATE_BUSYERROR_STATE_ERRORERROR_STATE_LOW_SUPPLIESERROR_STATE_OKERROR_STATE_WARNINGERROR_STATE_LOW_PAPERERROR_STATE_PRINTINGERROR_STATE_SCANNINGERROR_STATE_PHOTOCARDERROR_STATE_FAXINGERROR_STATE_COPYINGget)error_stater   r   r   getStatusListIcon  s    r   c             C   s  t d krtd
ttddtddfttddtddfttddtddfttddtddfttddtddfttddtddft	tddtddft
tddtddfttddtddfttddtddfttddtddfttd	dtd	dfia t j| t t S )Nr   r   r$   r   r   r7   r   r   Zrefresh1)NN)overlay_iconsr   r   r,   r   r   r   r   r   r   r   r   r   r   ZERROR_STATE_REFRESHINGr   )r   r   r   r   getStatusOverlayIcon  s    
r   ZoneZtwoZthreeZfourZfiveZsixZsevenZeightZnineZtenZelevenZtwelve)r   r   r	   r
   r   r   r      	   
         yearZyearsmonthZmonthsweekZweeksdayZdayshourZhoursminuteZminutessecondseconds)r   r   r   r   r   r   r   c             C   s6   t  }|jt|  t j }|j|}tdt| S )Nz(%s ago))Z	QDateTimeZ	setTime_tr5   ZcurrentDateTimeZsecsTor   	stringify)ZpastZt1Zt2Zdeltar   r   r   getTimeDeltaDesc5  s
    
r   c             C   sN   ddddddg}x4|D ],\}}| |krt tt| | }||fS qW | dfS )Nr   3r    ' r   :	 r   Q r     r   <   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r5   roundfloat)r   Zunit_limits	unit_namelimitamountr   r   r   getSecondsInUnitsB  s    r   c             C   sd   t | \}}yt| }W n tk
r4   t|}Y nX |dkrLt| d }nt| d }d||f S )Nr   r   z%s %s)r   	NUM_REPRSKeyErrorr   
UNIT_NAMES)r   r   r   Zi18n_amountZ	i18n_unitr   r   r   r   R  s    r   )NN)r-   )N)N)N)N)<rer   ry   Zbase.gZ
base.codesbaser   Zprntr   Zbase.sixextr   r   ZPyQt5.QtCoreZPyQt5.QtGuiZPyQt5.QtWidgetscompileIr~   ZFAB_NAME_ADDZFAB_NAME_RENAMEZFAB_NAME_REMOVEZFAB_NAME_DETAILS_CHANGEDZFAB_GROUP_ADDZFAB_GROUP_RENAMEZFAB_GROUP_REMOVEZFAB_GROUP_MEMBERSHIP_CHANGEDr   r   r   r,   Z
loadPixmapr.   r4   r8   r?   rC   r@   r   r   ZshowFailureUir   ZshowWarningUir   ZshowSuccessUir   ZcheckDeviceUir   r   r   r   ZMIME_TYPES_DESCr   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   

 






























