U
    9¡_àX  ã                   @   s´  d dl Z d dlZd dlmZ d dlmZ e  dd¡ d dlmZ e  dd¡ d dlmZ d dl	Z	d d	l
T d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZe d
¡ dZdZdZed Zed Zed ZdadZe d¡ G dd„ dejƒZ G dd„ dƒZ!G dd„ dƒZ"G dd„ dej#j$ƒZ%G dd„ dej#j$ƒZ&G dd„ dej#j$ƒZ'G dd„ dej#j$ƒZ(dd „ Z)e*d!kr°d dl+Z+d dlZd dl,Z,e,j-ej.ej/d" d dl0Z0ze0 1e0j2d#¡ W n   Y nX e+ 3¡  e 4¡  d d$l5m6Z6 e6d%d& d'Z7e8e	j9ƒd(kr^e	j9d(d… D ]2Z:e:d)krLe;d%ƒ e <e=¡ ne:d*kr*d%Z7q*e7rte)ƒ  e	 >d ¡ e=d+ƒ ej?ej@d,Ze(ƒ ZAe B¡  e C¡  e D¡  eA E¡  dS )-é    N)ÚGObject)ÚGLibÚGdkz3.0)r   ÚGtk©r   )Ú*z1.9.52z!org.fedoraproject.Config.Printingz"/org/fedoraproject/Config/Printingz.NewPrinterDialogz.PrinterPropertiesDialogz
.JobViewerzsystem-config-printerc                   @   s^   e Zd ZejjddfejjdejffdœZdd„ Zdd„ Z	dd	„ Z
d
d„ Zdd„ Zdd„ ZdS )ÚFetchedPPDsN© )ÚreadyÚerrorc                 C   s"   t j  | ¡ || _|| _d | _d S ©N)r   Ú__init__Ú	_cupsconnÚ	_languageÚ_ppds)ÚselfÚcupsconnÚlanguager	   r	   ú4/usr/share/system-config-printer/scp-dbus-service.pyr   D   s    zFetchedPPDs.__init__c                 C   s
   | j d k	S r   ©r   ©r   r	   r	   r   Úis_readyJ   s    zFetchedPPDs.is_readyc                 C   s   | j S r   r   r   r	   r	   r   Úget_ppdsM   s    zFetchedPPDs.get_ppdsc                 C   s&   t dƒ d | _| jj| j| jd d S )NzFetchPPDs: running©Úreply_handlerÚerror_handler)Ú
debugprintr   r   ZgetPPDs2Ú_cups_getppds_replyÚ_cups_errorr   r	   r	   r   ÚrunP   s
    
ÿzFetchedPPDs.runc                 C   s    t dt|ƒ ƒ |  d|¡ d S )NzFetchPPDs: error: %sr   )r   ÚreprÚemit©r   ÚconnÚexcr	   r	   r   r   V   s    zFetchedPPDs._cups_errorc                 C   s*   t dƒ tjj|| jd| _|  d¡ d S )NzFetchPPDs: success)r   r
   )r   ÚcupshelpersÚppdsZPPDsr   r   r!   ©r   r#   Úresultr	   r	   r   r   Z   s    zFetchedPPDs._cups_getppds_reply)Ú__name__Ú
__module__Ú__qualname__r   ZSignalFlagsZRUN_LASTZTYPE_PYOBJECTZ__gsignals__r   r   r   r   r   r   r	   r	   r	   r   r   =   s   ÿþr   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚGetBestDriversRequestc                 C   sø   || _ || _|| _|| _|| _|| _|| _g | _g | _d| _	t
d|  ƒ t ¡  td kr¤t
dƒ t| j| jƒa| j t d| j¡¡ | j t d| j¡¡ t ¡  nPt ¡ rÀt
dƒ |  t¡ n4t
dƒ | j t d| j¡¡ | j t d| j¡¡ d S )NFú+%sz*GetBestDrivers request: need to fetch PPDsr
   r   z,GetBestDrivers request: PPDs already fetchedz(GetBestDrivers request: waiting for PPDs)Ú	device_idÚdevice_make_and_modelÚ
device_urir   r   r   r   Ú_signalsÚinstalled_filesÚdownload_triedr   Úg_killtimerÚadd_holdÚg_ppdsr   ÚappendÚconnectÚ_ppds_readyÚ_ppds_errorr   r   )r   r.   r/   r0   r   r   r   r   r	   r	   r   r   `   s8    
ÿÿzGetBestDriversRequest.__init__c                 C   s   t d|  ƒ d S ©Nz-%s©r   r   r	   r	   r   Ú__del__   s    zGetBestDriversRequest.__del__c                 C   s   | j D ]}t |¡ qd S r   )r1   r6   Ú
disconnect)r   Úsr	   r	   r   Ú_disconnect_signals„   s    
z)GetBestDriversRequest._disconnect_signalsc                 C   s   |   ¡  |  |¡ d S r   )r@   r   )r   Úfetchedppdsr$   r	   r	   r   r:   ˆ   s    z!GetBestDriversRequest._ppds_errorc           
   
      sî  |  ¡ sd S |  ¡  | ¡ }z‚| jr4t | j¡}nDi }tj | j¡\}}||d< ||d< d|d< g |d< d||f | _| 	|d |d |d |d | j
| j¡‰ |jˆ  ¡ | j|ˆ d}|d }ˆ | }z¨|d	krn| jsnd
| _t ¡ | _| jj d¡ | j d| j¡| j d| j¡g| _‡ fdd„|D ƒ| _| jjd| jdsfzt ¡  W 5 tdƒ}	|  |	¡ X W W d S W n   Y nX t ¡  |  ‡ fdd„|D ƒ¡ W nH tk
rè }	 z(zt ¡  W n   Y nX |  |	¡ W 5 d }	~	X Y nX d S )NZMFGZMDLÚ ZDESZCMDzMFG:%s;MDL:%s;)ÚdevidÚfitr   ÚexactTFúdialog-canceledúdriver-download-checkedc                    s   g | ]}|ˆ | f‘qS r	   r	   ©Ú.0Úx©rD   r	   r   Ú
<listcomp>º   s     z5GetBestDriversRequest._ppds_ready.<locals>.<listcomp>Údownload_driver)rC   zFailed to launch dialogc                    s   g | ]}|ˆ | f‘qS r	   r	   rH   rK   r	   r   rL   Ê   s     ) r   r@   r   r.   r%   ZparseDeviceIDr&   ZppdMakeModelSplitr/   ZgetPPDNamesFromDeviceIDr0   ZorderPPDNamesByPreferenceÚkeysr2   r3   Ú
newprinterÚNewPrinterGUIÚdialogÚNewPrinterWindowÚ	set_modalr8   Úon_dialog_canceledÚon_driver_download_checkedÚhandlesÚreply_if_failÚinitÚRuntimeErrorr   r4   Úremove_holdr   Ú	Exception)
r   rA   r&   Zid_dictZmfgZmdlZppdnamelistZppdnameZstatusÚer	   rK   r   r9   Œ   s|    ÿ
û
ý
ÿÿþÿÿz!GetBestDriversRequest._ppds_readyc                 C   s*   | j D ]}| j |¡ q| j ¡  | `d S r   )rV   rQ   r>   Údestroy©r   Úhandler	   r	   r   Ú_destroy_dialogÓ   s    

z%GetBestDriversRequest._destroy_dialogc                 C   sl   t |ƒdkrLtdƒ | j t d| j¡¡ | j t d| j¡¡ t ¡  d S t	 
¡  |  ¡  |  | j¡ d S )Nr   z;GetBestDrivers request: Re-fetch PPDs after driver downloadr
   r   )Úlenr   r1   r7   r6   r8   r9   r:   r   r4   rZ   r`   r   rW   ©r   Úobjr2   r	   r	   r   rU   Ú   s    z0GetBestDriversRequest.on_driver_download_checkedc                 C   s    t  ¡  |  ¡  |  | j¡ d S r   )r4   rZ   r`   r   rW   ©r   rc   r	   r	   r   rT   æ   s    z(GetBestDriversRequest.on_dialog_canceledN)r)   r*   r+   r   r=   r@   r:   r9   r`   rU   rT   r	   r	   r	   r   r,   _   s   !Gr,   c                   @   s&   e Zd Zdd„ Zdd„ Zddd„ZdS )	ÚGroupPhysicalDevicesRequestc           
   
   C   sÚ   || _ || _|| _td|  ƒ z‚t ¡  i }i | _| j  ¡ D ]2\}}tj	|f|Ž}|| j|< | 
d¡r<|||< q<t|ƒdkr–t |¡}|j| jd n|  ¡  W n4 tk
rÔ }	 zt ¡  |  |	¡ W 5 d }	~	X Y nX d S )Nr-   zdnssd://r   )r   )Údevicesr   r   r   r4   r5   Ú
deviceobjsÚitemsr%   ZDeviceÚ
startswithra   ÚdnssdresolveZDNSSDHostNamesResolverZresolveÚ_groupr[   rZ   )
r   rf   r   r   Zneed_resolvingr0   Zdevice_dictÚ	deviceobjZresolverr\   r	   r	   r   r   ì   s(    



z$GroupPhysicalDevicesRequest.__init__c                 C   s   t d|  ƒ d S r;   r<   r   r	   r	   r   r=     s    z#GroupPhysicalDevicesRequest.__del__Nc           
   
   C   sâ   z¨g | _ | j ¡ D ]X\}}t |¡}d}z | j  |¡}| j |  |¡ W q tk
rh   | j  |¡ Y qX qg }| j D ]}| dd„ | ¡ D ƒ¡ qvt	 
¡  |  |¡ W n4 tk
rÜ }	 zt	 
¡  |  |	¡ W 5 d }	~	X Y nX d S )NFc                 S   s   g | ]
}|j ‘qS r	   )ZurirH   r	   r	   r   rL     s     z6GroupPhysicalDevicesRequest._group.<locals>.<listcomp>)Zphysdevsrg   rh   ÚPhysicalDeviceÚindexZ
add_deviceÚ
ValueErrorr7   Zget_devicesr4   rZ   r   r[   r   )
r   Zresolved_devicesr0   rl   ZnewphysicaldeviceZmatchedÚiZuris_by_physZphysdevr\   r	   r	   r   rk     s$    

z"GroupPhysicalDevicesRequest._group)N)r)   r*   r+   r   r=   rk   r	   r	   r	   r   re   ë   s   re   c                   @   s  e Zd Zdd„ Zdd„ Zejjeddddd	„ ƒZ	ejjed
dddd„ ƒZ
ejjeddddd„ ƒZdd„ Zdd„ Zd,dd„Zejjedddd„ ƒZejjedddd„ ƒZejjedddd„ ƒZejjeddd d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ ZdS )-ÚConfigPrintingNewPrinterDialogc                 C   s˜   t jjt|d}t jj | ||¡ t ¡ | _| jj	 
d¡ | j d| j¡| j d| j¡| j d| j¡| j d| j¡g| _t ¡ | _|| _td|  ƒ d S )N©ÚbusFrF   zprinter-addedzprinter-modifiedrG   r-   )ÚdbusÚserviceÚBusNameÚ
CONFIG_BUSÚObjectr   rO   rP   rQ   rR   rS   r8   rT   Úon_printer_addedÚon_printer_modifiedrU   rV   ÚppdcacheZPPDCacheÚ	_ppdcacher   r   )r   rs   Úpathr   Úbus_namer	   r	   r   r   !  s(    
ÿÿÿÿú
z'ConfigPrintingNewPrinterDialog.__init__c                 C   s   | j  ¡  td|  ƒ d S r;   )rQ   r]   r   r   r	   r	   r   r=   2  s    
z&ConfigPrintingNewPrinterDialog.__del__ZussrB   ©Údbus_interfaceÚin_signatureÚout_signaturec                 C   s    t  ¡  | jjd|||d d S )NZprinter_with_uri)r0   rC   Úxid©r4   r5   rQ   rX   )r   rƒ   r0   r.   r	   r	   r   ÚNewPrinterFromDevice6  s
    
 ÿz3ConfigPrintingNewPrinterDialog.NewPrinterFromDeviceÚusc                 C   s   t  ¡  | jjd||d d S )NrM   )rC   rƒ   r„   )r   rƒ   r.   r	   r	   r   ÚDownloadDriverForDeviceID=  s    z8ConfigPrintingNewPrinterDialog.DownloadDriverForDeviceIDc                 C   s.   t  ¡  || _|| _|| _| j || j¡ d S r   )r4   r5   rƒ   Únamer.   r|   Z	fetch_ppdÚ_change_ppd_got_ppd)r   rƒ   rˆ   r.   r	   r	   r   Ú	ChangePPDC  s
    z(ConfigPrintingNewPrinterDialog.ChangePPDc                 C   s   || _ | jj| j| jd d S )Nr   )Úppdr   ZgetPrintersÚ_change_ppd_with_devÚ_do_change_ppd)r   rˆ   r‹   r$   r	   r	   r   r‰   L  s    
ÿz2ConfigPrintingNewPrinterDialog._change_ppd_got_ppdc                 C   s&   |  | ji ¡  dd ¡| _|  |¡ d S )Nz
device-uri)Úgetrˆ   r0   r   r'   r	   r	   r   rŒ   R  s    z3ConfigPrintingNewPrinterDialog._change_ppd_with_devNc                 C   s&   | j jd| j| j| j| j| jd d S )Nr‹   )r0   rˆ   r‹   rC   rƒ   )rQ   rX   r0   rˆ   r‹   r.   rƒ   r"   r	   r	   r   r   V  s
      ÿz-ConfigPrintingNewPrinterDialog._do_change_ppd©r€   Z	signaturec                 C   s   d S r   r	   r   r	   r	   r   ÚDialogCanceledZ  s    z-ConfigPrintingNewPrinterDialog.DialogCanceledr?   c                 C   s   d S r   r	   )r   rˆ   r	   r	   r   ÚPrinterAdded_  s    z+ConfigPrintingNewPrinterDialog.PrinterAddedZsbc                 C   s   d S r   r	   )r   rˆ   Úppd_has_changedr	   r	   r   ÚPrinterModifiedd  s    z.ConfigPrintingNewPrinterDialog.PrinterModifiedza(s)c                 C   s   d S r   r	   )r   r2   r	   r	   r   ÚDriverDownloadCheckedi  s    z4ConfigPrintingNewPrinterDialog.DriverDownloadCheckedc                 C   s0   t d|  ƒ t ¡  |  ¡  |  ¡  |  ¡  d S )Nz%s: dialog canceled)r   r4   rZ   r   Úremove_handlesÚremove_from_connectionrd   r	   r	   r   rT   n  s
    z1ConfigPrintingNewPrinterDialog.on_dialog_canceledc                 C   s2   t d|  ƒ t ¡  |  |¡ |  ¡  |  ¡  d S )Nz%s: printer added)r   r4   rZ   r‘   r•   r–   )r   rc   rˆ   r	   r	   r   ry   u  s
    
z/ConfigPrintingNewPrinterDialog.on_printer_addedc                 C   s4   t d|  ƒ t ¡  |  ||¡ |  ¡  |  ¡  d S )Nz%s: printer modified)r   r4   rZ   ZPrinterModifedr•   r–   )r   rc   rˆ   r’   r	   r	   r   rz   |  s
    z2ConfigPrintingNewPrinterDialog.on_printer_modifiedc                 C   s2   t d|  ƒ t ¡  |  |¡ |  ¡  |  ¡  d S )Nz%s: driver download checked)r   r4   rZ   r”   r•   r–   rb   r	   r	   r   rU   ƒ  s
    
z9ConfigPrintingNewPrinterDialog.on_driver_download_checkedc                 C   s   | j D ]}| j |¡ qd S r   )rV   rQ   r>   r^   r	   r	   r   r•   Š  s    
z-ConfigPrintingNewPrinterDialog.remove_handles)N)r)   r*   r+   r   r=   rt   ru   ÚmethodÚCONFIG_NEWPRINTERDIALOG_IFACEr…   r‡   rŠ   r‰   rŒ   r   Úsignalr   r‘   r“   r”   rT   ry   rz   rU   r•   r	   r	   r	   r   rq      sR    ÿ
 ÿ
 ÿ

ÿ
ÿ
ÿ
ÿ
rq   c                   @   sN   e Zd Zdd„ Zejjeddddd„ ƒZejj	edddd	„ ƒZ
d
d„ ZdS )Ú%ConfigPrintingPrinterPropertiesDialogc                 C   sx   t jjt|d}t jjj| ||d t ¡ | _| jj 	d¡ | j 
d| j¡}|| _| j |¡ | jj 	d¡ t ¡  d S )Nrr   ©r~   Zobject_pathFzdialog-closed)rt   ru   rv   rw   rx   r   ÚprinterpropertiesÚPrinterPropertiesDialogrQ   rS   r8   Úon_dialog_closedÚclosed_handleZshowr4   r5   )r   rs   r}   rƒ   rˆ   r~   r_   r	   r	   r   r     s    
z.ConfigPrintingPrinterPropertiesDialog.__init__rB   r   c                 C   s   t dƒ | j ¡ S )NzPrinting test page)r   rQ   ZprintTestPager   r	   r	   r   ÚPrintTestPageš  s    z3ConfigPrintingPrinterPropertiesDialog.PrintTestPager   c                 C   s   d S r   r	   r   r	   r	   r   ÚFinished   s    z.ConfigPrintingPrinterPropertiesDialog.Finishedc                 C   s2   |  ¡  t ¡  |  ¡  | j | j¡ |  ¡  d S r   )r]   r4   rZ   r¡   rQ   r>   rŸ   r–   )r   rQ   r	   r	   r   rž   ¥  s
    z6ConfigPrintingPrinterPropertiesDialog.on_dialog_closedN)r)   r*   r+   r   rt   ru   r—   Ú$CONFIG_PRINTERPROPERTIESDIALOG_IFACEr    r™   r¡   rž   r	   r	   r	   r   rš   Ž  s    ÿ
ÿ
rš   c                   @   sV   e Zd Zdd„ Zdd„ Zejjeddddd„ ƒZ	ejj
edd	d
d„ ƒZdd„ ZdS )ÚConfigPrintingJobAppletc                 C   sŠ   t jjt|d}t jjj| ||d t ¡  tj	t  
¡ ddd| _| j d¡ t ¡  | j d| j¡}|| _d| _t ¡  td|  ƒ d S )Nrr   r›   T)rs   ZappletZmy_jobsFZfinishedr-   )rt   ru   rv   rw   rx   r   r   Úthreads_enterÚ	jobviewerZ	JobViewerZ	SystemBusÚ	jobappletZset_process_pendingÚthreads_leaver8   Úon_jobapplet_finishedÚfinished_handleÚhas_finishedr4   r5   r   )r   rs   r}   r~   r_   r	   r	   r   r   ­  s    
 ÿz ConfigPrintingJobApplet.__init__c                 C   s   t d|  ƒ d S r;   r<   r   r	   r	   r   r=   »  s    zConfigPrintingJobApplet.__del__rB   r   c                 C   s   | j s| j ¡  d S r   )rª   r¦   Zcleanupr   r	   r	   r   ÚQuit¾  s    zConfigPrintingJobApplet.Quitr   c                 C   s   d S r   r	   r   r	   r	   r   r¡   Ä  s    z ConfigPrintingJobApplet.Finishedc                 C   s0   |   ¡  t ¡  d| _| j | j¡ |  ¡  d S )NT)r¡   r4   rZ   rª   r¦   r>   r©   r–   )r   r¦   r	   r	   r   r¨   È  s
    z-ConfigPrintingJobApplet.on_jobapplet_finishedN)r)   r*   r+   r   r=   rt   ru   r—   ÚCONFIG_JOBVIEWER_IFACEr«   r™   r¡   r¨   r	   r	   r	   r   r£   ¬  s    ÿ

r£   c                   @   s¼   e Zd Zdd„ Zdd„ Zejjeddddd	„ ƒZ	ejjed
dddd„ ƒZ
ejjeddddd„ ƒZejjedddddd„ ƒZejjeddddd„ ƒZejjedddddd„ ƒZdS )ÚConfigPrintingc                 C   s~   t  ¡ | _t jjt| jd}t jj | |t¡ t	 
¡ | _d| _d | _d | _d | _t tj¡d | _| jszt tj¡d | _d S )Nrr   r   )rt   Ú
SessionBusrs   ru   rv   rw   rx   r   ÚCONFIG_PATHÚ	asyncconnZ
Connectionr   Ú_pathnÚ
_jobappletÚ_jobappletpathr   ÚlocaleZ	getlocaleÚLC_MESSAGESr   ÚLC_CTYPE)r   r~   r	   r	   r   r   Ð  s    

zConfigPrinting.__init__c                 C   s   | j  ¡  d S r   )r   r]   r   r	   r	   r   r]   Ý  s    zConfigPrinting.destroyrB   r?   r   c                 C   s8   |  j d7  _ dt| j f }t| j|| jƒ t ¡  |S )Né   z%s/NewPrinterDialog/%s)r±   r¯   rq   rs   r   r4   Úalive©r   r}   r	   r	   r   ÚNewPrinterDialogà  s    ÿzConfigPrinting.NewPrinterDialogr†   c                 C   s8   |  j d7  _ dt| j f }t| j|||ƒ t ¡  |S )Nr·   z%s/PrinterPropertiesDialog/%s)r±   r¯   rš   rs   r4   r¸   )r   rƒ   rˆ   r}   r	   r	   r   r   ê  s
    z&ConfigPrinting.PrinterPropertiesDialogc                 C   sH   | j d ks| j jrB|  jd7  _dt| jf }t| j|ƒ| _ || _| jS )Nr·   z%s/JobApplet/%s)r²   rª   r±   r¯   r£   rs   r³   r¹   r	   r	   r   Ú	JobAppletó  s    zConfigPrinting.JobAppletZsssza(ss)r   )r€   r   r‚   Zasync_callbacksc                 C   s   t |||| j| j||ƒ d S r   )r,   r   r   )r   r.   r/   r0   r   r   r	   r	   r   ÚGetBestDriversþ  s      þzConfigPrinting.GetBestDriversÚasc                 C   s   t  |¡}t |¡S r   )ÚcupsZPPDr%   ZmissingExecutables)r   Zppd_filenamer‹   r	   r	   r   ÚMissingExecutables  s    
z!ConfigPrinting.MissingExecutablesz	a{sa{ss}}Zaasc                 C   s   t |||ƒ d S r   )re   )r   rf   r   r   r	   r	   r   ÚGroupPhysicalDevices  s    z#ConfigPrinting.GroupPhysicalDevicesN)r)   r*   r+   r   r]   rt   ru   r—   ÚCONFIG_IFACErº   r   r»   r¼   r¿   rÀ   r	   r	   r	   r   r­   Ï  sD    ÿ
 ÿ
 ÿ
	 þ
 ÿ
 þr­   c            	         s  t tjƒdkrDtjd } d}t tjƒdkrPtjd dkrPtjd }ntdƒ d S ddlm} t ¡ }| t	t
¡}t |t¡}| ¡ }t|ƒ | t	|¡}t |t¡}t ¡ ‰ d‡ fd	d
„	}d‡ fdd„	}|jd|dd |jd|dd | d| |¡ ˆ  ¡  d S )Né   rB   é   é   z--devidzDevice URI requiredr   r   c                    s   t d|  ƒ ˆ  ¡  d S )Nz%s: Dialog canceled©ÚprintÚquit)r}   ©Zloopr	   r   Úon_canceled)  s    z!_client_demo.<locals>.on_canceledc                    s   t d|| f ƒ ˆ  ¡  d S )Nz%s: Printer '%s' addedrÅ   )rˆ   r}   rÈ   r	   r   Úon_added-  s    z_client_demo.<locals>.on_addedr   r}   )Zpath_keywordr‘   )N)N)ra   ÚsysÚargvrÆ   Úgi.repositoryr   rt   r®   Z
get_objectrw   r¯   Z	InterfacerÁ   rº   r   r˜   r   ZMainLoopZconnect_to_signalr…   r   )	r0   r.   r   rs   rc   Zifacer}   rÉ   rÊ   r	   rÈ   r   Ú_client_demo  s8    
ÿÿÿrÎ   Ú__main__)ZdomainÚ	localedirrB   )ÚDBusGMainLoopT)Zset_as_defaultFr·   z--debugz--clientzService running...)Zkillfunc)FZgiZdbus.servicert   rÍ   r   r   Zrequire_versionr   r   rË   Údebugr°   Zconfigr¾   r%   rj   r¥   Z	killtimerrO   rm   r{   rœ   Zrequirerw   r¯   rÁ   r˜   r¢   r¬   r6   r4   Zset_prgnamer   r,   re   ru   rx   rq   rš   r£   r­   rÎ   r)   Z	ppdippstrÚgettextÚinstallZPACKAGErÐ   r´   Ú	setlocaleÚLC_ALLrX   Zthreads_initZ	dbus.glibrÑ   Zclient_demora   rÌ   ZoptZset_debuggingZset_debugprint_fnr   ÚexitZ	KillTimerZ	main_quitÚcpr¤   Úmainr§   r]   r	   r	   r	   r   Ú<module>   sŽ   

" 5n#D&




