HEX
Server: Apache/2.4.65 (Unix) OpenSSL/3.5.5
System: Linux cpanel.ns-taberra.com 5.14.0-681.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Feb 11 20:19:22 UTC 2026 x86_64
User: asif201 (1002)
PHP: 8.3.0
Disabled: NONE
Upload Files
File: //usr/share/system-config-printer/__pycache__/ppdsloader.cpython-39.pyc
a

$x]�+�@s�ddlZddlmZddlmZddlZddlZe�d�ddlZddlm	Z	ddl
Z
ddlZeje
j
e
jd�Gdd�dej�Zed	kr�Gd
d�d�ZddlmZed
�e�e��dS)�N)�GObject)�Gtkz1.9.52��
debugprint)�domain�	localedirc@s�eZdZdZdejjddfiZd+dd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�ZdS),�
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.
    �finishedN�c	Cstj�|�td|�||_||_||_||_||_||_||_	g|_
d|_d|_d|_
d|_d|_d|_|jdup�|jdkp�|jddk|_zt��|_Wntd�d|_Yn0td�}tj|ddtjjtjj|d	�|_|j�td
��|j�d|j�dS)Nz+%sFZ	localhostr�/zFailed to get session busZ	SearchingT)�parentZmodalZdestroy_with_parentZmessage_typeZbuttons�textzSearching 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�_rZ
MessageDialogZMessageType�INFOZButtonsTypeZCANCEL�_dialogZformat_secondary_text�connect�_dialog_response)	�self�	device_idrZ
device_uri�host�
encryption�languageZdevice_make_and_modelZfmtr
r
�./usr/share/system-config-printer/ppdsloader.pyr8sF
���zPPDsLoader.__init__cCst|j��|jrt�|j�|_|jrh|jrh|jdrh|jdrh|jrhd|jd|jdf|_|�	�n|�
�dS)N�MFG�MDLzMFG:%s;MDL:%s;)r#�show_allr�cupshelpersZ
parseDeviceID�_devid_dictrr �_gpk_device_id�_query_packagekit�_query_cups�r&r
r
r+�runas"
����
�
zPPDsLoader.runcCstd|�dS)Nz-%srr4r
r
r+�__del__rszPPDsLoader.__del__cCsBtd|�|jr"|j��d|_d|_|jr>|j��d|_dS)NzDESTROY: %s)rr#�destroyrrr4r
r
r+r7us

zPPDsLoader.destroycCs|jS�N)rr4r
r
r+�get_installed_files�szPPDsLoader.get_installed_filescCs|jSr8)rr4r
r
r+�get_ppds�szPPDsLoader.get_ppdscCs|jSr8)rr4r
r
r+�get_ppdsmatch_result�szPPDsLoader.get_ppdsmatch_resultcCstd|t|j�f�|jS)Nz%s: stored error is %s)r�reprrr4r
r
r+�	get_error�szPPDsLoader.get_errorcCs|��d|_|�d�dS�Nr	)r7r#�emit)r&Zdialogrr
r
r+r%�szPPDsLoader._dialog_responsecCsBtd�|js0tj|j|j|j|jd�}||_n|�|jd�dS)NzAsking CUPS for PPDs)r(r)�
reply_handler�
error_handler)rr�	asyncconnZ
Connectionrr�_cups_connect_reply�_cups_error)r&�cr
r
r+r3�s�zPPDsLoader._query_cupscCs$|�td��|j|j|jd�dS)Nz
fetching PPDs)r@rA)Z_begin_operationr!ZgetPPDs2�_cups_replyrD)r&�connZUNUSEDr
r
r+rC�s�zPPDsLoader._cups_connect_replycCstjj||jd�}||_d|_|jr�|�|jd|jd|jd|jd|j	|j
�}|jt|�
��|j|j|d�}||f|_|d}|jr�||�d	�s�|js�|jdr�|jdr�|jr�d
|_|��dS|��d|_|jdur�|j��d|_|�d�dS)N)r*Fr,r-ZDESZCMD)Zdevid�fitr�exactTr	)r/�ppdsZPPDsrr�_need_requery_cupsrZgetPPDNamesFromDeviceIDr0rrZorderPPDNamesByPreference�list�keysrrr �
startswithrr�
_query_jockeyr7rr#r?)r&rG�resultrJrHZppdnamelistZppdnamer
r
r+rF�sP�
�
�����	

zPPDsLoader._cups_replycCsB|��d|_d|_||_|jdur4|j��d|_|�d�dSr>)r7rrrr#r?)r&rG�excr
r
r+rD�s

zPPDsLoader._cups_errorc
Cs�td�zh|j�dd�}t�|d�}|jg}d}tdtd�t|�t|�f�|jt�d�|||j	|j
dd	�WnLty�}z4td
t|��|jr�|j�
�|��WYd}~n
d}~00dS)Nz$Asking PackageKit to install driverszorg.freedesktop.PackageKitz/org/freedesktop/PackageKitz!org.freedesktop.PackageKit.Modifyz
hide-finishedz*Calling InstallPrinterDrivers (%s, %s, %s)r��r@rA�timeoutz Failed to talk to PackageKit: %s)rr �
get_objectr�	Interfacer1r<ZInstallPrinterDriversZUInt32�_packagekit_reply�_packagekit_error�	Exceptionr#r.r3)r&�obj�proxyZ	resourcesZinteraction�er
r
r+r2�s,���

zPPDsLoader._query_packagekitcCs*td�d|_|jr&|j��|��dS)NzGot PackageKit replyT)rrKr#r.r3r4r
r
r+rW�s

zPPDsLoader._packagekit_replycCs,tdt|��|jr(|j��|��dS)NzGot PackageKit error: %s)rr<r#r.r3�r&rQr
r
r+rX�s
zPPDsLoader._packagekit_errorc
Csvtd�z:|j�dd�}t�|d�}|jd|j|j|jdd�}Wn.t	yp}z|�|�WYd}~n
d}~00dS)Nz Asking Jockey to install driverszcom.ubuntu.DeviceDriverz/GUIzprinter_deviceid:%srRrS)
rr rUrrVZ
search_driverr�
_jockey_reply�
_jockey_errorrY)r&rZZjockey�rr\r
r
r+rO�s�
zPPDsLoader._query_jockeycCsDtdt|��d|_z|d|_Wng|_Yn0|��dS)NzGot Jockey result: %sT�)rr<rrr3)r&rGrPr
r
r+r^szPPDsLoader._jockey_replycCsbtdt|��|jr |��n>|jdur:|j��d|_|jdurT|j��d|_|�d�dS)NzGot Jockey error: %sr	)rr<rKr3rr7r#r?r]r
r
r+r_s




zPPDsLoader._jockey_error)NNNNNNN)�__name__�
__module__�__qualname__�__doc__rZSignalFlagsZRUN_LASTZ__gsignals__rr5r6r7r9r:r;r=r%r3rCrFrDr2rWrXrOr^r_r
r
r
r+r$s2��
)*	r�__main__c@s$eZdZdd�Zdd�Zdd�ZdS)�FoocCsLt��}tj�d�}|�|�|�d|j�|�dtj�|��||_	dS)NZGoZclickedzdelete-event)
rZWindowZButtonZnew_with_label�addr$�go�	main_quitr.�_window)r&�w�br
r
r+r s
zFoo.__init__cCs(td|jd�}|�d|j�|��dS)NzMFG:MFG;MDL:MDL;)r'rr	)rrkr$�ppds_loadedr5)r&Zbutton�loaderr
r
r+ri)s
�zFoo.gocCsJ|j��t��|��}t|�|��}|dur>tt|��|��dSr8)rkr7rrjr=�printr:�len)r&Z
ppdsloaderrQrJr
r
r+rn/s
zFoo.ppds_loadedN)rbrcrdrrirnr
r
r
r+rgs	rg)�
set_debuggingT)rZ
gi.repositoryrrr/ZcupsZrequirerB�debugrZconfig�gettext�installZPACKAGErrrbrgrr�mainr
r
r
r+�<module>s$
{