+
    QDb+  c                   sj   ^ RI t ^ RIHt ^ RIHt ^ RIt^ RIt]P                  ! R4       ^ RIt^ RIH	t	 ^ RI
t
^ RIt]P                  ! ]
P                  ]
P                  R7        ! R R]P                  4      t]R	8X  d3    ! R
 R4      t^ RIHt ]! R4       ]! 4        ]P&                  ! 4        R# R# )i    N)GObject)Gtkz1.9.52
debugprint)Zdomain	localedirc                   s   a  ] tR t^$t o RtR]P                  P                  RR3/tRR lt	R t
R tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR tR tR tR tRtV tR# )
PPDsLoadera  
1. If PackageKit support is available, and this is a local server,
try to use PackageKit to install relevant drivers.  We do this
because we can only make the right choice about the "best" driver
when the full complement of drivers is there to choose from.

2. Fetch the list of available drivers from CUPS.

3. If Jockey is available, and there is no appropriate driver
available, try to use Jockey to install one.

4. If Jockey was able to install one, fetch the list of available
drivers again.
finishedNc           	     sb   \         P                   P                  V 4       \        R V ,          4       Wn        W0n        Wpn        W n        W@n        WPn        W`n	        . V n
        RV n        RV n        RV n        RV n        RV n        RV n        V P                  RJ ;'       g.    V P                  R8H  ;'       g    V P                  ^ ,          R8H  V n         \$        P&                  ! 4       V n        \+        R4      p\,        P.                  ! TRR\,        P0                  P2                  \,        P4                  P6                  TR7      T n        T P8                  P;                  \+        R	4      4       T P8                  P=                  R
T P>                  4       R#    \        R4       RT n         L; i)z+%sNFZ	localhostZ/zFailed to get session busZ	SearchingT)parentZmodalZdestroy_with_parentZmessage_typeZbuttonsZtextzSearching for driversresponse) r    __init__r   
_device_id_device_uri_device_make_and_model_parent_host_encryption	_language_installed_files_conn_ppds_exc_ppdsmatch_result_jockey_queried_jockey_has_answered_local_cupsdbusZ
SessionBus_bus_r   ZMessageDialogZMessageTypeZINFOZButtonsTypeZCANCEL_dialogZformat_secondary_textconnect_dialog_response)	self	device_idr   Z
device_urihost
encryptionlanguageZdevice_make_and_modelZfmts	   &&&&&&&& ./usr/share/system-config-printer/ppdsloader.pyr	   ZPPDsLoader.__init__8   s`    	  $'EDL!#%&;#
%! "

	!%$$)! JJ$. 1 1 JJ+51 1 JJqMS0 		*DI
 n((04$7:7K7K25//2H2H/2	4 	**A.E,FGj$*?*?@	34DIs   F F.c                s    V P                   P                  4        V P                  '       d&   \        P                  ! V P                  4      V n        V P                  '       d   V P                  '       d   V P
                  R ,          '       dp   V P
                  R,          '       dW   V P                  '       dE   RV P
                  R ,          : RV P
                  R,          : R2V n        V P                  4        R# V P                  4        R# )MFGMDLzMFG:z;MDL:Z;N)r   show_allr
   cupshelpersZparseDeviceID_devid_dictr   r   _gpk_device_id_query_packagekit_query_cupsr      &r$   runZPPDsLoader.runa   s     ???*88$//JDOOOU##U##III6:6F6Fu6M6M6:6F6Fu6M6M#OD""%    c                s*    \        R V ,          4       R# )z-%sNr   r-   r.   r$   __del__ZPPDsLoader.__del__r   s    EDL!r0   c                s   \        R V ,          4       V P                  '       d"   V P                  P                  4        RV n        RV n        V P                  '       d$   V P                  P                  4        RV n        R# R# )zDESTROY: %sN)r   r   destroyr   r   r-   r.   r$   r2   ZPPDsLoader.destroyu   s[    MD()<<<LL  #DL:::JJ!DJ r0   c                    V P                   # N)r   r-   r.   r$   get_installed_filesZPPDsLoader.get_installed_files   s    $$$r0   c                r3   r4   )r   r-   r.   r$   get_ppdsZPPDsLoader.get_ppds   s    zzr0   c                r3   r4   )r   r-   r.   r$   get_ppdsmatch_resultZPPDsLoader.get_ppdsmatch_result   s    %%%r0   c                sd    \        V : R \        V P                  4      : 24       V P                  # )z: stored error is )r   reprr   r-   r.   r$   	get_errorZPPDsLoader.get_error   s"    dDII6FGHyyr0   c                sV    VP                  4        R V n        V P                  R4       R # Nr   )r2   r   emit)r   Zdialogr      &&&r$   r   ZPPDsLoader._dialog_response   s    		:r0   c                s   \        R 4       V P                  '       gK   \        P                  ! V P                  V P
                  V P                  V P                  R7      pWn        R# V P                  V P                  R4       R# )zAsking CUPS for PPDs)r!   r"   reply_handlererror_handlerN)r   r   	asyncconnZ
Connectionr   r   _cups_connect_reply_cups_error)r   Zcs   & r$   r,   ZPPDsLoader._query_cups   sa    *+


$$4::151A1A484L4L484D4DFA J$$TZZ6r0   c                s    VP                  \        R 4      4       VP                  V P                  V P                  R7       R# )zfetching PPDs)r=   r>   N)Z_begin_operationr   ZgetPPDs2_cups_replyrA   )r   connZUNUSEDr<   r$   r@   ZPPDsLoader._cups_connect_reply   s7    q12T%5%5%)%5%5 	 	7r0   c                s   \         P                  P                  W P                  R 7      pW0n        RV n        V P                  '       Ed^   VP                  V P                  R,          V P                  R,          V P                  R,          V P                  R,          V P                  V P                  4      pVP                  \        VP                  4       4      V P                  V P                  VR7      pWE3V n        V^ ,          pV P                   '       d   WF,          P#                  R4      '       gp   V P$                  '       g^   V P                  R,          '       dE   V P                  R,          '       d,   V P&                  '       d   RV n        V P)                  4        R	# VP+                  4        R	V n        V P.                  e"   V P.                  P+                  4        R	V n        V P1                  R
4       R	# ))r#   Fr%   r&   ZDESZCMD)ZdevidfitZexactTNr   )r(   ppdsZPPDsr   r   _need_requery_cupsr
   ZgetPPDNamesFromDeviceIDr)   r   r   ZorderPPDNamesByPreferenceZlistZkeysr   r   r   Z
startswithr   r   _query_jockeyr2   r   r   r;   )r   rC   resultrE   rD   ZppdnamelistZppdnames   &&&    r$   rB   ZPPDsLoader._cups_reply   s   $$f~~$F
"'???'')9)9%)@)-)9)9%)@)-)9)9%)@)-)9)9%)@)-)9)9)-)D)DF  ))4+<+/+@+@151A1A/2 * 4 
 '*%7D"!!nG			L++W55(((  ''  ''    (,$""%
<<#LL  #DL		:r0   c                s    VP                  4        R V n        R V n        W n        V P                  e"   V P                  P                  4        R V n        V P                  R4       R # r:   )r2   r   r   r   r   r;   )r   rC   excr<   r$   rA   ZPPDsLoader._cups_error   sK    

	<<#LL  #DL		:r0   c           
     sp   \        R 4        V P                  P                  RR4      p\        P                  ! VR4      pV P
                  .pRp\        R\        ^ 4      : R\        V4      : R\        V4      : R24       VP                  \        P                  ! ^ 4      W4V P                  V P                  RR	7       R#   \         di   p\        R
\        T4      ,          4       T P                  '       d1   T P                  P                  4        T P                  4         Rp?R#  Rp?R# Rp?ii ; i)z$Asking PackageKit to install driverszorg.freedesktop.PackageKitz/org/freedesktop/PackageKitz!org.freedesktop.PackageKit.Modifyzhide-finishedzCalling InstallPrinterDrivers (z, Z)  r=   r>   Ztimeoutz Failed to talk to PackageKit: %sN)r   r   
get_objectr   	Interfacer*   r8   ZInstallPrinterDriversZUInt32_packagekit_reply_packagekit_error	Exceptionr   r'   r,   )r   objZproxyZ	resourcesZinteractiones   &     r$   r+   ZPPDsLoader._query_packagekit   s    :;	$))&&(D(EGCNNC)LME,,-I)Kq4#3T;5GI J''a)27;7M7M7;7M7M15	 ( 7
  	$:T1XEF|||%%(  ## 	$s   B3C D5AD00D5c                s    \        R 4       RV n        V P                  '       d-   V P                  P                  4        V P	                  4        R# R# )zGot PackageKit replyTN)r   rF   r   r'   r,   r-   r.   r$   rN   ZPPDsLoader._packagekit_reply   s=    *+"&<<<LL!!$ r0   c                s    \        R \        V4      ,          4       V P                  '       d-   V P                  P                  4        V P	                  4        R# R# )zGot PackageKit error: %sN)r   r8   r   r'   r,   r   rI      &&r$   rO   ZPPDsLoader._packagekit_error   s>    .s;<<<<LL!!$ r0   c                sL   \        R 4        V P                  P                  RR4      p\        P                  ! VR4      pVP                  RV P                  ,          V P                  V P                  RR7      pR#   \         d   pT P                  T4        Rp?R# Rp?ii ; i)z Asking Jockey to install driverszcom.ubuntu.DeviceDriverz/GUIzprinter_deviceid:%srJ   rK   N)
r   r   rL   r   rM   Zsearch_driverr
   _jockey_reply_jockey_errorrP   )r   rQ   ZjockeyZrrR   s   &    r$   rG   ZPPDsLoader._query_jockey   s    67	#))&&(A6JC^^S*CDF$$&;doo&M484F4F484F4F.2 % 4A  	#""	#s   A-A< <B#BB#c                s    \        R \        V4      ,          4       RV n         V^,          V n        T P	                  4        R#    . T n         L; i)zGot Jockey result: %sTN)r   r8   r   r   r,   )r   rC   rH   r<   r$   rU   ZPPDsLoader._jockey_reply  sJ    +dFm;<$(!	'$*1ID! 		'$&D!s   A 	Ac                sb   \        R \        V4      ,          4       V P                  '       d   V P                  4        R# V P                  e"   V P                  P                  4        RV n        V P                  e"   V P                  P                  4        RV n        V P                  R4       R# )zGot Jockey error: %sNr   )r   r8   rF   r,   r   r2   r   r;   rS   rT   r$   rV   ZPPDsLoader._jockey_error  sz    *T3Z78"""zz%

""%!
||'$$'#IIz"r0   )r   r   r
   r   r   r)   r   r   r   r*   r   r   r   r   r   r   rF   r   r   r    )NNNNNNN)__name__
__module____qualname____firstlineno__Z__doc__r    ZSignalFlagsZRUN_LASTZ__gsignals__r	   r/   r1   r2   r5   r6   r7   r9   r   r,   r@   rB   rA   r+   rN   rO   rG   rU   rV   __static_attributes____classdictcell__Z__classdict__   @r$   r   r   $   s       	W((114<
L'AR ""
%&
	77
(T	$*  
## #r0   r   Z__main__c                   s2   a  ] tR tRt o R tR tR tRtV tR# )Fooi  c                s4   \         P                  ! 4       p\         P                  P                  R 4      pVP	                  V4       VP                  RV P                  4       VP                  R\         P                  4       VP                  4        Wn	        R# )ZGoZclickedzdelete-eventN)
r   ZWindowZButtonZnew_with_labelZaddr   go	main_quitr'   _window)r   ZwZbs   &  r$   r	   ZFoo.__init__   s^    

A

))40AEE1IIIy$''*II~s}}5JJMLr0   c                s    \        R V P                  R7      pVP                  RV P                  4       VP	                  4        R# )zMFG:MFG;MDL:MDL;)r    r   r   N)r   rc   r   ppds_loadedr/   )r   ZbuttonZloaders   && r$   ra   ZFoo.go)  s3    +=(,6FNNJ(8(89JJMr0   c                s
   V P                   P                  4        \        P                  ! 4        VP	                  4       p\        V4       VP                  4       pVe   \        \        V4      4       VP                  4        R # r4   )rc   r2   r   rb   r9   Zprintr6   Zlen)r   Z
ppdsloaderrI   rE   s   &&  r$   rd   ZFoo.ppds_loaded/  s]    LL  #MM&&)C#J&&)Dc4j!!r0   )rc   N)	rX   rY   rZ   r[   r	   ra   rd   r\   r]   r^   r_   r$   r`   r`     s     				" 		"r0   r`   )set_debuggingT)r   Zgi.repositoryr    r   r(   ZcupsZrequirer?   Zdebugr   ZconfigZgettextZinstallZPACKAGEr   r   rX   r`   re   ZmainrW   r0   r$   <module>rf      s   ,  !    h      v~~1A1A Bx# x#t z" "6 $4FHHK? r0   