
    =	fS                        d dl Z d dlZd dlZd dl d dl d dlmZ d dlmZ d dl	m
Z
mZ d dl d dl d dl  e j                  de j                         Zd ZdZdZd	Zd
ZdZdZdZd Zd Zd ZddZeZddZd Z d Z!d Z" G d de#      Z$ ed      Z%ddZ&e&Z'ddZ(e(Z)ddZ*e*Z+ddZ,e,Z- G d de.      Z/ G d d e.      Z0 G d! d"e.      Z1i d# ed$      d%fd& ed'      d(fd) ed*      d+fd, ed-      d.fd/ ed0      d1fd2 ed3      d4fd5 ed6      d7fd8 ed9      d:fd; ed<      d=fd> ed<      d=fd? ed@      dAfdB edC      dDfdE edF      dGfdH edI      dJfdK edL      dMfdN edO      dPfdQ edR      dSf 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 edd      def edf      dgfdhZ2da3di Z4da5dj Z6 edk       edl       edm       edn       edo       edp       edq       edr       eds       edt       edu       edv      dwZ7 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 ed       ed      fdZ8d Z9d Z:d Z;y)    N)*)utils)cups)PY3
to_unicodez
(?is)<.*?>                     c                 0    t         j                  d| d       S )Nui_utils)QApplication	translate)ts     /usr/share/hplip/ui5/ui_utils.py__translater   4   s    !!*a66    c                  \    t         j                  t        t        j                               y N)r   setOverrideCursorQCursorQt
WaitCursor r   r   beginWaitCursorr   8   s    ""72==#9:r   c                  ,    t         j                          y r   )r   restoreOverrideCursorr   r   r   endWaitCursorr!   <   s    &&(r   c           
      d   dj                  t        j                  j                  |       d   dg      } |Dt        j
                  }t        j                  j                  t        j                         dd      }nbt        j                  j                  t        j
                  |      }t        j                  j                  t        j                         dd|      }||fD ],  }t        j                  j                  ||       }t        j                  j                  |      rd|Ut        |      }|\  }}	t        j                  |j                  ||	t        j                  t        j                              c S t        |      c S t        j                   |ddd|       D ]i  }
|Wt        |
      }|\  }}	t        j                  |j                  ||	t        j                  t        j                              c c S t        |
      c c S  / t"        j%                  d	| z         t               S )
N r   .pngdataimagesTF)recurse	abs_pathsreturn_folderspatternzPixmap '%s' not found!)joinospathsplitextprop	image_dirgetcwdexistsQImageQPixmap	fromImagescaledr   IgnoreAspectRatioSmoothTransformationr   	walkFileslogerror)namesubdir	resize_tor0   ldirdfimgxyws              r   load_pixmaprF   A   s   77BGG$$T*1-v67D~NN	ww||BIIK:GGLL8	ww||BIIK6B "GGLLD!77>>!$Qi 1((Aq":N:NPRPgPg)hiiqz!DDY^hlm 	"A$Qi 1((Aq":N:NPRPgPg)hiiqz!	""$ II&-.9r   c                     dj                  t        j                  j                  |       d   dg      } dt        j                  j                  t        j
                  ||       z   S )Nr#   r   r$   zfile://)r+   r,   r-   r.   r/   r0   )r<   r=   s     r   getPynotifyIconrH   c   sI    77BGG$$T*1-v67Drww||DNNFDAAAr   c                     | y	 t         s	 | j                         } | S 	 | S # t        $ r}| cY d }~S d }~ww xY w# t        t        f$ r#}t
        j                  d|z         Y d }~| S d }~ww xY w)Nr#   z&value_str() Failed to convert data: %s)r   toStringAttributeError
ValueError	TypeErrorr:   warn)r%   es     r   	value_strrP   h   sz    |?}} K  K " y
! ?9A=>>K?s1   9 ! 	6169 69 A+A&&A+c                 .   d\  }}| ||fS 	 t         rt        |       }d}n	 | j                         \  }}||fS # t        $ r}t        |       }d}Y d }~d }~ww xY w# t        t
        f$ r)}t        j                  d| d|d       Y d }~||fS d }~ww xY w)N)r   FTz#value_int() Failed to convert data[z]:z  )r   inttoIntrK   rL   rM   r:   rN   )r%   iokrO   s       r   	value_intrV   w   s    EAr|"uITAB

2 b5L " I y! IQGHHb5LIs8   A 9 	AAA AA B+BBc                    d}| |S 	 t         r5t        |       t        k(  r| j                         dv rd}|S | dv rd}|S d}	 |S 	 | j	                         }|S # t
        $ r;}t        |       t        k(  r| j                         dv rd}n	| dv rd}nd}Y d }~|S d }~ww xY w# t        t        f$ r#}t        j                  d|z         Y d }~|S d }~ww xY w)NF)false0)Fr   Tz'value_bool() Failed to convert data :%s)
r   typestrlowertoBoolrK   rL   rM   r:   rN   )r%   brO   s      r   
value_boolr_      s    A|>DzS TZZ\^%C& H% #" H  HKKM H " :$)GAZ'AA
 H y! >:1<==H>sE   ,B B B A 	B0BB BB C,C

Cc                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)UserSettingsc                 ,   t         j                  t        j                  |        nQt        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;                          y )
Nz
hplip.confr#   F   r   r   T.r   )r/   user_dir	QSettings__init__r,   r-   r+   	IniFormatSYSTRAY_VISIBLE_SHOW_ALWAYSsystray_visible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selfs    r   rg   zUserSettings.__init__   s    == t$tRWW\\$--,%OR[ReRef: 9$&!!#!!#!" ! &'%)*(&(%r   c           	         |D ]  }|j                         d   }t        j                  |      }|s.dj                  t        j
                  j                  ||      dj                  |j                         dd        g      c S  y)Nr    r   r#   )splitr   whichr+   r,   r-   )r   cmdscbasenamer-   s        r   __setupzUserSettings.__setup   sr     	YAwwy|H;;x(DxxdH!=sxx	RSRT?V WXX		Y r   c                 b    | j                  g d      | _        | j                  dg      | _        y )N)zsimple-scan %SANE_URI%zxsane -V %SANE_URI%kooka
xscanimagezhp-fab)_UserSettings__setupcmd_scancmd_fabr   s    r   r~   zUserSettings.loadDefaults   s%    %mn||XJ/r   c                    t         j                  d       | j                          | j                  d       t	        | j                  d            d   | _        t	        | j                  d            d   | _        | j                          | j                  d       t        | j                  d            xs | j                  | _
        t        | j                  d            xs | j                  | _        t        | j                  d	            xs | j                  | _        | j                          | j                  d
       t        | j                  d            xs | j                  | _        | j                          | j                  d       t	        | j                  d            d   xs t        | j                        | _        t!        | j                  d            | _        t	        | j                  d            d   xs t        | j$                        | _        | j                          | j                  d       t        | j                  d            | _        t        | j                  d            | _        | j                          | j                  d       t!        | j                  d            | _        t	        | j                  d            d   xs t        | j,                        | _        t/        t        | j                  d                  j1                  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                          y )NzLoading user settings...settingsrj   r   rl   	last_used
device_uriprinter_namerw   commandsscanrefreshrateenablerZ   installationro   rp   ru   intervalrv   ,faxrx   ry   upgradenotify_upgrader}   last_upgraded_timepending_upgrade_time) r:   debugsync
beginGrouprV   valuerj   rl   endGrouprP   rm   rn   rw   r   rR   rr   r_   rq   rs   ro   rp   ru   rt   r   r   polling_device_listrx   ry   rz   r}   r{   r|   r   s    r   loadzUserSettings.load   s   		,-		
#(4E)FGJ )$**5G*H I! L$$-djj.F$G$d4KdKd!!*4::n+E!F!`$J`J`$TZZ%>?S4CSCS
#!$**V"45F	"!*4::f+=!>q!A!`SI_I_E`&tzz(';<!*4::f+=!>q!A!`SI_I_E`' I!67"4::k#:;	"!$**X"67 )$**Z*@ A! D bDLaLaHb#-i

=8Q.R#S#Y#YZdehZi#j $TZZ%>?'	$**_2M(NO	"'

3C(DE&/

;U0V&W%(1$**=Q2R(STU(V%+4TZZ@V5W+XYZ+[(r   c                 f   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  r"t/        t1        j0                               | _        | j                  d| j,                         | j                  d| j2                         | j                          | j5                          y )NzSaving user settings...r   rj   rl   r   r   r   rw   r   r   r   r   r   rZ   ru   r   rv   r   r   rx   ry   r   r   r   r   r   )r:   r   r   setValuerj   rl   r   rm   rn   rw   r   rr   rq   rs   ru   rt   r   r+   r   rx   ry   rz   r{   rR   timer|   r   r   s    r   savezUserSettings.save
  s2   		+,
#')=)=>($*?*?@$lT%>%>?nd&<&<=mT%5%56
#ft}}-	"fd445h 1 12fd445	"h-j$"7"78mjo&:&:4;S;S&TVmT%5%56ot'9'9:	"&(;(;<((!+,/		,<D)*D,I,IJ,d.N.NO 			r   c                    t         j                  d| j                  z         t         j                  d| j                  z         t         j                  d| j                  z         t         j                  d| j
                  z         t         j                  d| j                  z         t         j                  d| j                  z         t         j                  d| j                  z         t         j                  d| j                  z         t         j                  d	| j                  z         t         j                  d
| j                  z         y )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:   r   r   r   rq   rr   rs   rj   rl   rm   rn   rw   r   s    r   r   zUserSettings.debug:  s    		#dll23		$t}}45		$t'8'889		)D,B,BBC		)D,B,BBC		'$*>*>>?		(4+@+@@A		,t/H/HHI		)D,B,BBC		)D,<,<<=r   N)	__name__
__module____qualname__rg   r   r~   r   r   r   r   r   r   ra   ra      s"    80
3l-`
>r   ra   zHP Device Managerc                 *   t         j                  t        j                  dt	        |                   || | j                         }nt        }t        j                  | ||t        j                  t        j                  z  t        j                         y Nr   )r:   r;   pat_html_removesubr   windowTitleDEFAULT_TITLEQMessageBoxcriticalOkNoButton)parent
error_text
title_texts      r   	FailureUIr   J  ss    IIo!!#z*'=>?++-J&J	r   c                 *   t         j                  t        j                  dt	        |                   || | j                         }nt        }t        j                  | ||t        j                  t        j                  z  t        j                         y r   )r:   rN   r   r   r   r   r   r   warningr   r   )r   	warn_textr   s      r   	WarningUIr   ]  su    HH_  j&;<=++-J&J 	r   c                 *   t         j                  t        j                  dt	        |                   || | j                         }nt        }t        j                  | ||t        j                  t        j                  z  t        j                         y r   )r:   infor   r   r   r   r   r   informationr   r   )r   textr   s      r   	SuccessUIr   q  su    HH_  j&678++-J&J F	r   c                 2    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   s      r   CheckDeviceUIr     s"      Q  RDVT:..r   c                       e Zd ZddZd Zy)PrinterNameValidatorNc                 0    t         j                  | |       y r   
QValidatorrg   r   r   s     r   rg   zPrinterNameValidator.__init__      D&)r   c                     t         j                  }t        |      }|st         j                  }n9||dz
     t        j
                  v rt         j                  }nt         j                  }|||fS )Nr   )r   Invalidr   
Acceptabler   INVALID_PRINTER_NAME_CHARSr   
input_datapos
returnCodes       r   validatezPrinterNameValidator.validate  sa    ''

+
#..JA$"A"AA#++J#..J :s**r   r   r   r   r   rg   r   r   r   r   r   r     s    *+r   r   c                       e Zd ZddZd Zy)PhoneNumValidatorNc                 0    t         j                  | |       y r   r   r   s     r   rg   zPhoneNumValidator.__init__  r   r   c                     t         j                  }t        |      }|st         j                  }n4||dz
     t        d      vrt         j                  }nt         j                  }|||fS )Nr   z0123456789-(+).,#* )r   r   r   r   r   s       r   r   zPhoneNumValidator.validate  s_    ''

+
$//JAj1F&GG#++J#..J:s**r   r   r   r   r   r   r   r     s    *+r   r   c                       e Zd ZddZd Zy)AddressBookNameValidatorNc                 >    t         j                  | |       || _        y r   )r   rg   db)r   r   r   s      r   rg   z!AddressBookNameValidator.__init__  s    D&)r   c                 *   t         j                  }t        |      }|st         j                  }na|| j                  j                         v rt         j                  }n4||dz
     t        d      v rt         j                  }nt         j                  }|||fS )Nr   z|\/")r   r   r   r   r   get_all_namesr   s       r   r   z!AddressBookNameValidator.validate  s~    ''

+
#..J4770022#++JA*["99#++J#..J:s**r   r   r   r   r   r   r   r     s    +r   r   zapplication/pdfzPDF Documentz.pdfzapplication/postscriptzPostscript Documentz.pszapplication/vnd.hp-HPGLzHP Graphics Language Filez.hgl, .hpg, .plt, .prnzapplication/x-cshellzC Shell Scriptz	.csh, .shzapplication/x-csourcezC Source Codez.cztext/cppzC/C++ Source Codez.c, .cpp, .cxxzapplication/x-perlzPerl Scriptz.plzapplication/x-pythonzPython Programz.pyzapplication/x-shellzShell Scriptz.shzapplication/x-shz
text/plainz
Plain Textz
.txt, .logz	text/htmlzHTML Dcoumentz.htm, .htmlz	image/gifz	GIF Imagez.gifz	image/pngz	PNG Imager$   z
image/jpegz
JPEG Imagez.jpg, .jpegz
image/tiffz
TIFF Imagez.tif, .tiffzimage/x-bitmapz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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                    t         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 )Nidle16x16busyr;   inkdroptonerrU   r   paperprintr   pcardr   
makecopies)status_iconsERROR_STATE_CLEARrF   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_states    r   getStatusListIconr     sW   
{67;[QX=YZ
k&':KPW<XY
{7G<k'SZ>[\
"k)W&E{SZ\cGd%e
Kg6D'8RS
Y!@+iY`Ba b
+gw"?WV]A^!_
+gw"?WV]A^!_
+fg">FT[@\!]
;w#@+gW^B_"`
E7 ;[PW=XY
+lG"DkR^`gFh!i
 K6G)HIIr   c                    t         Xt        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 )NNNr   r   r;   r   r   rU   r   r   refresh1)overlay_iconsr   r   rF   r   r   r   r   r   r   r   r   r   r   ERROR_STATE_REFRESHINGr   r   s    r   getStatusOverlayIconr    s]   FG <k&RY>Z[Wg!>GU\@] ^$Iw(GU\^eIf'gk$8+dG:TU;y'#BKPY[bDc"d!K$A;wX_C`#a K$@+fV]B^#_ K$@+fV]B^#_![%A;vW^C_$`+fg">FT[@\!];vw#?VU\A]"^"k*g&FT^`gHh%i
  [-8I*JKKr   onetwothreefourfivesixseveneightnineteneleventwelve)r   r	   r
   r   r   r   r      	   
         yearyearsmonthmonthsweekweeksdaydayshourhoursminuteminutessecondseconds)r  r  r  r  r  r   r"  c                     t               }|j                  t        |              t         j                         }|j	                  |      }t        dt        |      z        S )Nz(%s ago))	QDateTime	setTime_trR   currentDateTimesecsTor   	stringify)pastt1t2deltas       r   getTimeDeltaDescr.  5  sI    	BLLT		"	"	$BIIbMEz)E"2233r   c                 |    g d}|D ]0  \  }}| |k\  st        t        t        |       |z              }||fc S  | dfS )N))r  i3)r  i ' )r  i:	 )r  iQ )r  i  )r   <   r"  )rR   roundfloat)r#  unit_limits	unit_namelimitamounts        r   getSecondsInUnitsr7  B  sW    #K ( %	5euW~567F9$$%
 Hr   c                     t        |       \  }}	 t        |   }|dk(  rt        |   d   }nt        |   d   }|d|S # t        $ r t        |      }Y ;w xY w)Nr   r   r   )r7  	NUM_REPRSKeyErrorr   
UNIT_NAMES)r#  r6  r4  i18n_amount	i18n_units        r   r)  r)  R  sm    )'2FI)' {y)!,	y)!,	++  ) ()s   	> AAr   )32x32r   )<rer,   r   base.g
base.codesbaser   prntr   base.sixextr   r   PyQt5.QtCorePyQt5.QtGuiPyQt5.QtWidgetscompileIr   FAB_NAME_ADDFAB_NAME_RENAMEFAB_NAME_REMOVEFAB_NAME_DETAILS_CHANGEDFAB_GROUP_ADDFAB_GROUP_RENAMEFAB_GROUP_REMOVEFAB_GROUP_MEMBERSHIP_CHANGEDr   r   r!   rF   
loadPixmaprH   rP   rV   r_   rf   ra   r   r   showFailureUir   showWarningUir   showSuccessUir   checkDeviceUir   r   r   r   MIME_TYPES_DESCr   r   r  r  r9  r;  r.  r7  r)  r   r   r   <module>rX     sO  . 
 	      '   "**\2440      7;)
> 
B
(<[>9 [>| 01  " " / +: +.+
 +$+z +.^4f=,A BEJ -H!IKc d k*:;[I	
 {?;TB 013CD K6> k*:;UC [8%@ +n5u= K-|< ;/? ;{+V4 ;{+V4 K-}=  K-}=!" $896B#$ !!56?$%56?!,-C!Df M!,-G!H& Q"-.N"OQW!X!,-I!JF S$Y/8$%78&A$%78&A'(;<fE*+;<jI9 B J* L. e

e

g

f

f

e

g

g

f
ux x 	  &!;w#787#[%:;&!;w#78V!45&!;w#78H%{9'=>H%{9'=>
4 ,r   