
    =	f8                     &   d dl Z 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Zd dl	Z	d dl
Z
ddl ddlmZ ddlmZ ddlmZ er ed	      Zd
 Z ej&                  d	ej&                  j(                  ej&                  j*                        Zej/                  d       dZdZdZd ZdcdZ G d de      Z e       Z G d de       Z! G d de!      Z" G d de!      Z# G d de!      Z$ ejJ                  d        e"       Z& e#       Z' e$       Z(	  ejR                         \  e_        e_*        e&jY                  ddd      e_-         e
j\                  de
j^                        g cZ0Z1ejZ                  je                  d       dd D ]6  Z3e0ji                  e3      Z5e5e1jm                  e5jo                  d             8 d jq                  e1      e_9        	  e:d	jq                  e1D  cg c]  } d! e:|       z   c}       d"      e_;        e&jY                  d#d$ejx                  j{                  ejx                  j}                   ej~                                           e_@         ej                   ej                               d    e_C         ej                  ej                        ZEeEd%   e_F        d&e_G        ejx                  jq                  ej                  d'      e_H        ejx                  jq                  ej                  d'd(      e_I        ejx                  jq                  ej                  d'd)      e_J        ejx                  jq                  ej                  d'd*      e_K        ejx                  jq                  ej                  d'd+      e_L        d,e_M        d-e_N        d.e_O        d/e_P        d0e_Q        d1e_R        d2e_S         ee&jY                  d3d4d5            e_T         ee&jY                  d3d6d5            e_U         ee&jY                  d3d7d5            e_V        d8e_W         ee&jY                  d3d9d5            e_X         ee&jY                  d3d:d5            e_Y         ee&jY                  d3d;d5            e_Z         ee&jY                  d3d<d5            e_[         ee&jY                  d3d=d5            e_\         ee&jY                  d3d>d5            e_]         ee&jY                  d3d?d5            e_^        d@a_d a`d8aadddAZbdB ZcdC ZddD ZedE Zfi egdFehdGeidHejdIekdJeldKemdLendMeodNepdOeqdPerdQesdRetdSeudTevdUewdVexdWeydXezdYe{dZe|d[e}d\e~d]ed^ed_i	Z G d` dae      ZddbiZy# e+$ r de_        de_*        Y Mw xY wc c} w # e+$ r d e_;        Y w xY w)e    N   )PY3)configparser)*)logger)os_utils)
to_unicode c                     | |kD  | |k  z
  S N )abs     /usr/share/hplip/base/g.pycmpr   +   s    A!a%      info      c                     t        | t              r0| r.| d   j                         dv ry| d   j                         dv ry|S t        | t              r| S |S )Nr   )1tyT)0fnF)
isinstancestrlowerbool)sdefaults     r   to_boolr#   9   sU    !SaQ4::<?*qTZZ\_, N 
At	Nr   c                       e Zd Zd Zd Zy)
Propertiesc                 \    |t        | j                               v r| j                  |      S y)Nr
   )listkeys__getitem__)selfattrs     r   __getattr__zProperties.__getattr__H   s)    4		$$##D))r   c                 (    | j                  ||       y r   )__setitem__)r*   r+   vals      r   __setattr__zProperties.__setattr__N   s    s#r   N)__name__
__module____qualname__r,   r0   r   r   r   r%   r%   F   s    $r   r%   c                   V    e Zd Zd Z ed      fdZd Zd Zd Zd Z	e	Z
d Zd	 Zd
 Zy)
ConfigBasec                 d    || _         t        j                         | _        | j	                          y r   )filenamer   ConfigParserconfread)r*   r7   s     r   __init__zConfigBase.__init__V   s"      --/			r   r
   c                     	 | j                   j                  ||      S # t        j                  t        j                  f$ r |cY S w xY wr   )r9   getr   NoOptionErrorNoSectionError)r*   sectionkeyr"   s       r   r=   zConfigBase.get\   sA    	99==#..**L,G,GH 	N	s    %AAc                     | j                   j                  |      s| j                   j                  |       | j                   j                  |||       | j	                          y r   )r9   has_sectionadd_sectionsetwrite)r*   r@   rA   values       r   rE   zConfigBase.setc   sC    yy$$W-II!!'*		gsE*

r   c                 6    | j                   j                         S r   )r9   sectionsr*   s    r   rI   zConfigBase.sectionsk   s    yy!!##r   c                 8    | j                   j                  |      S r   )r9   rC   r*   r@   s     r   rC   zConfigBase.has_sectiono   s    yy$$W--r   c                 8    | j                   j                  |      S r   )r9   optionsrL   s     r   rN   zConfigBase.optionss   s    yy  ))r   c                    | j                   | j                   }|j                  d      r#t        j                  d| j                   z         y 	 t	        | j                   d      }	 | j
                  j                  |       |j                          y y # t        j                  $ r0 t        d       t        j                  d| j                   z         Y Tt        j                  $ r5 t        j                  d| j                   z         | j                          Y w xY w# |j                          w xY w# t        t        t        j                  f$ r% t        j!                  d| j                   z         Y y w xY w)N/root/zattempted to read from '%s'rr
   zIFound No Section in %s. Please set the http proxy for root and try again.zFound Duplicate Entery in %sz#Unable to open file %s for reading.)r7   
startswithlogerroropenr9   	read_filer   MissingSectionHeaderErrorprintDuplicateOptionErrorwarnCheckDuplicateEntriescloseOSErrorIOErrordebugr*   r7   fps      r   r:   zConfigBase.readx   s    ==$}}H""8,		7$--GHQ$---	II''+ HHJ# % $== {"IIIilplylyyz$99 1HH;dmmKL..01 HHJWl&L&LM Q		?$--OPQsQ   D3 %B  D3 A DD ADD DD D00D3 3A E65E6c                    | j                   | j                   }|j                  d      s|j                  d      r#t        j                  d| j                   z         y 	 t	        | j                   d      }| j
                  j                  |       |j                          y y # t        t        f$ r% t        j                  d| j                   z         Y y w xY w)NrP   z/etc/zattempted to write to '%s'wz#Unable to open file %s for writing.)r7   rR   rS   rT   rU   r9   rF   r\   r]   r^   r_   r`   s      r   rF   zConfigBase.write   s    ==$}}H""8,0C0CG0L 		6FGQ$---		#
 % W% Q		?$--OPQs   AB" "1CCc                    	 t        | j                  d      }|j                         }|j                          d}|j                         D ]  }|r||vs
|dz   |z   } dd l}|j                         \  }| _        t        | j                  d      }|j                  |       |j                          | j                          t        j                  | j                         y # t        $ r d}Y w xY w)NrQ   r
   
r   rc   )rU   r7   r:   r\   r^   
splitlinestempfilemkstemprF   osunlink)r*   r   data
final_datar   rg   fds          r   r[   z ConfigBase.CheckDuplicateEntries   s    	T]]3'A668DGGI 
" 	1Aq
*'-q0
	1 	$,,.DMs#	
				
		$--   	D	s   6C! !C/.C/N)r1   r2   r3   r;   r	   r=   rE   rI   rC   rN   r(   r:   rF   r[   r   r   r   r5   r5   U   sA     )32 $.* DQ,Q"!r   r5   c                       e Zd Zd Zy)	SysConfigc                 0    t         j                  | d       y )Nz/etc/hp/hplip.conf)r5   r;   rJ   s    r   r;   zSysConfig.__init__   s    D"67r   Nr1   r2   r3   r;   r   r   r   ro   ro      s    8r   ro   c                       e Zd Zd Zy)Statec                     t         j                  j                  d      sCt        j                         dk(  r,t        j                  d       d}t        j                  |       t        j                  | d       y )Nz/var/lib/hp/r   zchmod 755 /var/lib/hp/z/var/lib/hp/hplip.state)	ri   pathexistsgeteuidmakedirsr   executer5   r;   )r*   cmds     r   r;   zState.__init__   sO    ww~~n-"**,!2CKK'*CS!D";<r   Nrq   r   r   r   rs   rs      s    =r   rs   c                       e Zd Zd Zd Zd Zy)
UserConfigc                 F   t        j                         \  }t        _        t	        j
                         dk(  s9t        j                  j                  t        j                  d      t        _        t        j                  j                  t        j                        s	 t        t        j                  d      j                          t	        j                  t        j                  j                  t        j                              }t	        j                  t        j                  |t        j                     |t        j                             t$        j'                  | t        j                         y d t        _        t$        j'                  | d        y # t"        $ r Y Rw xY w)Nr   z
hplip.confrc   )r   getHPLIPDirpropuser_dirri   rw   ru   joinuser_config_filerv   rU   r\   statdirnamechownST_UIDST_GIDr^   r5   r;   )r*   stsr!   s      r   r;   zUserConfig.__init__   s   %113T]zz|q $&GGLL$MD!77>>$"7"78..4::<0E0E FGAHHT22AdkkNAdkkNS d&;&;< %)D!d+  s   B/F 	F F c                    | j                  ddt        j                  j                  d            }	 |j	                  d      }t        j                  d|z         |S # t
        $ r t        j                  d|z         Y =w xY w)N	last_usedworking_dir~utf-8zInvalid unicode: %sworking directory: %s)	r=   ri   ru   
expanduserdecodeUnicodeErrorrS   rT   r_   r*   r   s     r   workingDirectoryzUserConfig.workingDirectory   sr    HH[-1C1CC1HI	2!A 			)A-.  	2II+q01	2s   A !B Bc                     | j                  dd|j                  d             t        j                  d|j                  d      z         y )Nr   r   r   r   )rE   encoderS   r_   r   s     r   setWorkingDirectoryzUserConfig.setWorkingDirectory   s6    mQXXg->?		)AHHW,==>r   N)r1   r2   r3   r;   r   r   r   r   r   r|   r|      s    ,.?r   r|      en_USUTF8hplipversionz0.0.0z(\d\w*).z%02x   dirshome   2   rk   imagesxmlmodelslocalizationi    i   Z   zP/usr/share;/usr/local/share;/usr/lib;/usr/local/lib;/usr/libexec;/opt;/usr/lib64z
HP-*.ppd.*z,http://www.linuxprinting.org/ppd-o-matic.cgiz
-hpijs.ppd	configurez	gui-buildr   znetwork-buildzpp-buildTzscanner-buildz	fax-buildz	doc-buildzfoomatic-xml-installzfoomatic-ppd-installzhpcups-installzhpijs-installz\|/-\|/-c                     | a y r   )enable_spinner)enables    r   change_spinner_stater   4  s    Nr   c                  (   t         rt        j                         swt        j                  j                         rXt        j                  j                  dt        t           z          t        dz   dz  at        j                  j                          y y y y )Nr      )
r   rS   is_debugsysstdoutisattyrF   spinnerspinposflushr   r   r   update_spinnerr   8  s`    clln1B1B1D

 0011!

 2En~r   c                      t         rrt        j                         s]t        j                  j                         r>t        j                  j                  d       t        j                  j                          y y y y )Nz )r   rS   r   r   r   r   rF   r   r   r   r   cleanup_spinnerr   ?  sH    clln1B1B1D

!

 2En~r   c           	          	 | j                  d      D cg c]  }t        |j                  d d             }}|S c c}w # t        $ r g }Y |S w xY w)Nr   z+~)splitint	translate
ValueError)verxls      r   xintr   F  sX    3699S>BaST4()BB H C Hs   A  ";A  A   AAc                 >   d}| dz   }t        t        j                  j                  d      d         }|d   dk(  rd}nd}t	        j
                  d      D ]  \  }}}||v s|}d} |dk(  r-t        j                  d| z         t        j                  d       t        j                  d	      }t        |j                  d            }	|	d   dk(  rd}
nd}
||
k7  rCt        j                  d
| z         t        j                  d       t        j                  d       y y )Nr   z.so r      z	/usr/lib/r   z6%s not present in the system. Please re-install HPLIP.zpython(\d(\.\d){0,2})z2%s Extension module is missing from Python's path.zMTo fix this issue, please refer to this 'http://hplipopensource.com/node/372')r   r   r   r   ri   walkrS   rT   exitresearchgroupr   )ext_modflag
ext_mod_so
python_verdirpathr   	filenamesext_pathmext_verr   s              r   check_extension_module_envr   N  s
   D5Js{{))#.q12J!}

')ww{'; #)"HD
 qy		JGST
		*H5A1771:GqzQS		FOP`a r   zNo errorzUnknown errorzDevice not foundzUnknown/invalid device-id fieldz Unknown/invalid device-uri fieldzData length exceeds maximumzDevice I/O errorzNo probed devices foundzDevice busyzDeviceStatus not availablezInvalid service namez!Invalid channel-id (service name)zChannel busyz!Device does not support operationzDevice open failedzInvalid device nodezInvalid hostname ip addresszInvalid JetDirect port numberzNo CUPS queue found for device.zDAT file errorzInvalid timeoutzI/O timeoutzIncompatible fax optionszInvalid fax filezFax file not foundzUnknown internal errorc                       e Zd ZefdZy)Errorc                     || _         t        j                  |t        t                 | _        t
        j                  d|| j                  fz         t        j                  | | j                  |       y )NzException: %d (%s))	optERROR_STRINGSr=   ERROR_INTERNALmsgrS   r_   	Exceptionr;   )r*   r   s     r   r;   zError.__init__  sR     $$S-*GH		&#txx8943/r   N)r1   r2   r3   r   r;   r   r   r   r   r     s
    ) 0r   r   )usenen_usamericanamericausaenglish)F)T)r   ri   os.pathsixextr   sixext.movesr   localepwdr   r   codesr
   r   r   r	   typeQStringr   LoggerLOG_LEVEL_INFOLOG_TO_CONSOLErS   	set_levelMINIMUM_PYQT_MAJOR_VERMINIMUM_PYQT_MINOR_VERMINIMUM_QT_MAJOR_VERMINIMUM_QT_MINOR_VERr#   dictr%   r   objectr5   ro   rs   r|   umasksys_conf	sys_state	user_confgetdefaultlocaleencodingr   r=   r   compileI_p_xr   _ymatch_zappendr   r   installed_versionr   installed_version_intru   realpathnormpathgetcwdhome_dirgetpwuidgetuidusernamegetpwnampdbuserhomehistory_sizedata_dir	image_dirxml_dir
models_dirlocalization_dirmax_message_lenmax_message_readread_timeoutppd_search_pathppd_search_patternppd_download_urlppd_file_suffix	gui_build	net_build	par_build	usb_build
scan_build	fax_build	doc_buildfoomatic_xml_installfoomatic_ppd_installhpcups_buildhpijs_buildr   r   r   r   r   r   r   r   ERROR_SUCCESSERROR_UNKNOWN_ERRORERROR_DEVICE_NOT_FOUNDERROR_INVALID_DEVICE_IDERROR_INVALID_DEVICE_URIERROR_DATA_LENGTH_EXCEEDS_MAXERROR_DEVICE_IO_ERRORERROR_NO_PROBED_DEVICES_FOUNDERROR_DEVICE_BUSY!ERROR_DEVICE_STATUS_NOT_AVAILABLEERROR_INVALID_SERVICE_NAMEERROR_ERROR_INVALID_CHANNEL_IDERROR_CHANNEL_BUSY'ERROR_DEVICE_DOES_NOT_SUPPORT_OPERATIONERROR_DEVICEOPEN_FAILEDERROR_INVALID_DEVNODEERROR_INVALID_HOSTNAMEERROR_INVALID_PORT_NUMBER$ERROR_NO_CUPS_QUEUE_FOUND_FOR_DEVICEERROR_DATFILE_ERRORERROR_INVALID_TIMEOUTERROR_IO_TIMEOUTERROR_FAX_INCOMPATIBLE_OPTIONSERROR_FAX_INVALID_FAX_FILEERROR_FAX_FILE_NOT_FOUNDr   r   r   r   supported_locales)r   s   0r   <module>rA     s  2  	   &  
  	    2hG! fmmB44fmm6R6RS f      		$ 	$ |^! ^!B8
 8
=J =$? $?P 	 ; G	 L	!8!8!8!:DK
 ||GY8	J	%rB
,,

S
!"1
% B	"B	~
		"((1+
 " #!$RWW-L2fs2w.>-L%Mr!RD VVRWW-=-=bgg>N>Nyryy{>[-\]YRYY[)!,cll4==!A T]]F3dmmVX>ww||DMM659'',,t}}fh?T]]FNK    i & F #  k;DEk?CHIk:sCD(,,{OSIJk;DEk;DE#HLL>TVY$Z[ #HLL>TVY$Z[ HLL6FLM 8<<_cJK  
F
#o '); (*K	
 )+M .0M &(: .0I "M 24P +-C /1T #^ 8:] (*>  &(=!" ')F#$ *,K47X#%5%'8 -.0J*,>(*>!95<0I 0   ^` I  DKDM .M #!"D#s6   U! V  !U;3V  !U87U8;V   VV