
    KcPC                        d dl Z d dlmZ  e j        d           d dlZd dlZd dlZd dlT d dlZd dl	m
Z
  e
d           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
Zd dlZ ej        e           	  ej        ej        d           n;# ej        $ r.Zd dlZdej        d<    ej        ej        d           Y dZ[ndZ[ww xY w ej        dd           d dlmZ dZdZ  ej!        d           dZ"dZ#dZ$e$dz   Z%e$dz   Z&dZ'dZ(dZ) G d dej*        j+                  Z,dZ-d Z.d Z/d  Z0d! Z1 G d" d#          Z2e3d$k    rd dlZd dl4Z4	  e4j5        ej6        d%d         dg d&          \  Z7Z8n*# e4j9        $ r  e.              ej:        d%           Y nw xY we7D ]W\  Z;Z<e;d'k    r e.              ej:        d            e;d(k    r e/              ej:        d            Fe;d)k    r e=d           X ej!        e-          s	  e>d*e-z  ej?        +           n#  Y nxY wdxZ@ZA	  ejB                    Z@nC#  	  e>d,e-z  ej?        +            ej:        d%           n#  ej:        d%           w xY wY nxY w	  ejC                    ZAeAD                    e0           nC#  	  e>d-e-z  ej?        +            ej:        d%           n#  ej:        d%           w xY wY nxY w	  e,e@eA           n%#  	  e>d.e-z  ej?        +           n#  Y nxY wY nxY w	 ejE        F                    eG           ejE        H                    e@           n2# eI$ r*Z	  e>e-d/eej?        +           n#  Y nxY wY dZ[ndZ[ww xY w	  ej        ejJ        ejK                  ZLeLM                    d0 ejN                    z              n`# ejO        $ rSZPePj8        d          ZQePj8        d%         ZR e>d1S                    eQeR                      ej:        d            Y dZP[PndZP[Pww xY w ejT                    ZU e2eAe@eU          ZV	 eVW                                 dS # eX$ r Y dS w xY wdS )2    N)reducez1.9.42)*)DBusGMainLoopT)set_as_default)GObject)GLibzsystem-config-printer)domain CLC_ALLNotifyz0.7)r   z /usr/share/system-config-printerprinterz"System Config Printer Notificationz!org.fedoraproject.Config.Printingz"/org/fedoraproject/Config/Printingz.NewPrinterDialogz.PrinterPropertiesDialogz"/com/redhat/NewPrinterNotificationz!com.redhat.NewPrinterNotificationc                       e Zd ZdZdZdZdZd Zej	        
                    edd          d             Zd	 Zd
 Zej	        
                    edd          d             Zd Zd Zd Zd ZddZddZd Zd ZdS )NewPrinterNotificationr            c                     || _         || _        d| _        t          j                            t          |          }t          j        j                            | |t                     d | _
        d S )Nr   )bus)
system_bussession_busgetting_readydbusserviceBusNamePDS_OBJObject__init__PDS_PATHnotification)selfr   r   bus_names       */usr/share/system-config-printer/applet.pyr   zNewPrinterNotification.__init__P   s^    $&<''j'AA$$dHh???     r
   )in_signatureout_signaturec                    d}| j         dk    rt          j                            t	          d          t	          d          d          }|                    |dz              d|_        |                    d| j                   |	                                 || _
        | xj         d	z  c_         t          j        || j                   d S )
NiO r   zConfiguring new printerzPlease wait...r   i  Fclosedr   )r   r   Notificationnew_set_timeoutr(   connecton_notification_closedshowr    r   timeout_add_secondstimeout_ready)r!   TIMEOUTns      r#   GetReadyzNewPrinterNotification.GetReadyX   s    ""#''+D)E)E)*+;)<)<(13 3A MM7T>***AHIIx!<===FFIII !Da '4+=>>>>>r$   c                     d|_         d S )NT)r(   )r!   r    s     r#   r.   z-NewPrinterNotification.on_notification_closedh   s    "r$   c                     | j         dk    r| xj         dz  c_         | j         dk    r6| j        r/t          | j        dd           s| j                                         dS )Nr   r   r(   F)r   r    getattrcloser!   s    r#   r1   z$NewPrinterNotification.timeout_readyk   sp    !!!#!## $*Hd;; $ ##&&&ur$   isssssc           	      Z                         d          dk    rt          d          }d|d|d|d|d	|r|s|r!|r
|r|d	|}n|}t          d
          |z  }	nt          d          }	t          j                            ||	d          }
dt          j                    v rn|
                    t          j        j                   |
	                    t          j
                   |
                    dt          d           fd           ne                     d d            nKt          j                    }	 |                                         }n# t           $ r Y d S w xY w	 |                              }n# t          j        $ r Y d S w xY w~t          j        t          j                   t          j        |          }dd l} |j        |           dd l}|j                            t6                     dd l} |j        |          \  }ddlm}  ||d                   \  }}|d	z   |z   }| j         k     rt          d          }nt          d          }tC                    dk    rtE          d           }t          d          }t          d          |fz  }	t          j                            ||	d          }
dd l#}dt          j                    v rk	 |$                                 _%        |
	                    t          j
                   |
                    dt          d           fd           n,#  Y n'xY w	 |$                                 _%         j%        &                    ddd                    n#  Y nxY w| j'        k    rd|d|d|d|d	t          d          z  }	t          j                            ||	d          }
dt          j                    v rt|
                    t          j        j(                   |
                    dt          d           fd           |
                    dt          d           fd            nd|d|d|d|d	t          d!          |fz  }	t          j                            ||	d          }
dt          j                    v r|
                    t          j        j                   |
                    dt          d           fd"           |
                    d#t          d$           fd%           |
	                    t          j
                   n )                    d d             *                                 |
+                                 |
 _,        d S )&N/r   zMissing printer driverzMFG:z;MDL:z;DES:z;CMD:; zNo printer driver for %s.zNo driver for this printer.r   actionszsetup-printerSearchc                 4                         | |          S N)setup_printerxydevidnamer!   s     r#   <lambda>z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    "&"4"4aD%"H"H r$   )ppdMakeModelSplitzprinter-make-and-modelzPrinter addedc                     | dz   |z   S )Nz,  )rE   rF   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    1t8a< r$   zInstall printer driverz&`%s' requires driver installation: %s.zinstall-driverInstallc                 2                         | |          S rB   )install_driver)rE   rF   missing_pkgsr!   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s$    *.*=*=q!?K+M +M r$   z`%s' is ready for printing.z	test-pagezPrint test pagec                 2                         | |          S rB   print_test_pagerE   rF   rH   r!   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    &*&:&:Aq$&G&G r$   	configure	Configurec                 2                         | |          S rB   )rU   rT   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    t~~q!T/J/J r$   z+`%s' has been added, using the `%s' driver.c                 4                         | |          S rB   rR   rD   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    &*&:&:Aq$&N&N r$   zfind-driverzFind driverc                 4                         | |          S rB   )find_driverrD   s     r#   rI   z3NewPrinterNotification.NewPrinter.<locals>.<lambda>   s    "&"2"2Aq$"F"F r$   )-findr+   r   r)   r*   get_server_capsset_urgencyUrgencyCRITICALr,   EXPIRES_NEVER
add_actionrC   cups
ConnectiongetPrintersKeyErrorgetPPDIPPErrorppdSetConformancePPD_CONFORM_RELAXEDPPDosunlinksyspathappendAPPDIRcupshelpersmissingPackagesAndExecutablescupshelpers.ppdsrJ   STATUS_GENERIC_DRIVERlenr   installpackage
PackageKit
packagekitInstallPackageNameSTATUS_SUCCESSNORMALrU   r1   r/   r    )r!   statusrH   mfgmdldescmdtitledevicetextr3   cr   filenameppdrk   rm   rq   missing_exesrJ   makemodeldriverpkgsrv   rG   rP   s   ` `                      @@r#   
NewPrinterz!NewPrinterNotification.NewPrinteru   s   99S>>Q .//EE69cc333SSSIE 8 8 8 !C !(+SS1FF F455>677#''i@@AF24444v~6777v3444oq{{I I I I I IJ J J J ""D$e<<<<
 ""A--**40   88T??=     "D$<===(H%%CIIIBIx   JJJHOOV$$$F[FLL\::::::--w7O/PQQMT5CZ%'F222/**233L!!A%%77FF233BCCt%'++UD)DD%%%% 6 8 888*8*C*C*F*Fv';<<<&6)'M 'M 'M 'M 'MN N N N*8*C*C*F*F::Aq<HOM M M M4....:=##sssCCCM677$>'++UD)DD 6 8 888MM6>#8999LL+q1B/C/C#H #H #H #H #HI I I LL+q~~"J"J"J"J"JL L L / ;>##sssCCCMGHHv''++UD)DD 6 8 888MM6>#:;;;LL+q1B/C/C#O #O #O #O #O #OP P P LL-=1A1A#G #G #G #G #G #GH H H MM6#78888NND$555				s=   E   
E.-E.2F FF.A M M;N Nc                     |                      d d |          }| j                            t          |          }t	          j        |t                    }|                                 d S rB   )rU   r   
get_objectPRINTING_BUSr   	InterfacePRINTERPROPERTIESDIALOG_IFACEPrintTestPage)r!   r    actionrH   rn   objifaces          r#   rS   z&NewPrinterNotification.print_test_page   sY    ~~tT400))<>>%BCCr$   c                     | j                             t          t                    }t	          j        |t                    }|                    t	          j        d          |          S Nr   )	r   r   r   PRINTING_PATHr   r   PRINTING_IFACEPrinterPropertiesDialogUInt32)r!   r    r   rH   r   r   s         r#   rU   z NewPrinterNotification.configure   sI    ))<GG^44,,dk!nndCCCr$   c                     | j                             t          t                    }t	          j        |t                    }|                                }| j                             t          |          }t	          j        |t                    }|S rB   )	r   r   r   r   r   r   r   NewPrinterDialogNEWPRINTERDIALOG_IFACE)r!   r   r   rn   s       r#   get_newprinterdialog_interfacez5NewPrinterNotification.get_newprinterdialog_interface   sk    ))<GG^44%%(())<>>%;<<r$   c                     d S rB   rL   r!   argss     r#   ignore_dbus_repliesz*NewPrinterNotification.ignore_dbus_replies   s    r$   c                     	 |                                  }|                    t          j        d          ||| j        | j                   d S # t          j        $ r Y d S w xY wNr   )reply_handlererror_handler)r   	ChangePPDr   r   r   DBusException)r!   r    r   rH   rG   r   s         r#   rZ   z"NewPrinterNotification.find_driver   s    	77::EOOT[^^T5+/+C+/+C  E E E E E ! 	 	 	DD	   A
A A! A!c                     	 |                                  }|                    t          j        d          ||| j        | j                   d S # t          j        $ r Y d S w xY wr   )r   NewPrinterFromDevicer   r   r   r   )r!   r    r   urirG   r   s         r#   rC   z$NewPrinterNotification.setup_printer	  s    	77::E&&AU6:6N6:6N ' P P P P P ! 	 	 	DD	r   c                 \    	 | j                             dd|d                    d S #  Y d S xY wr   )rx   ry   )r!   r    r   rP   s       r#   rO   z%NewPrinterNotification.install_driver  s;    	O..1l1oFFFFF	DDs   "& +c                     dd l }	 t          d|z              |j        ||j                  \  }}|dk    rdS n# t          $ r Y nw xY wdS )Nr   zWaiting for child %dTF)rk   printwaitpidWNOHANGOSError)r!   pidrk   r|   s       r#   collect_exit_codez(NewPrinterNotification.collect_exit_code  s{     					(3.///&BJRZ88MS&axxt   	 	 	D	 us   1: 
AAN)r
   )__name__
__module____qualname__rz   STATUS_MODEL_MISMATCHrt   STATUS_NO_DRIVERr   r   r   method	PDS_IFACEr4   r.   r1   r   rS   rU   r   r   rZ   rC   rO   r   rL   r$   r#   r   r   J   sI       N! ! ! 
\2FF? ? GF?# # #   
\LLr r MLrh  D D D
                r$   r   zsystem-config-printer-appletc                  4    t          dt          z             d S )Nz$usage: %s [--help|--version|--debug])r   PROGRAM_NAMErL   r$   r#   	show_helpr   )  s    	
0<
?@@@@@r$   c                  J    dd l } t          t          d| j                   d S )Nr   r>   )configr   r   VERSION)r   s    r#   show_versionr   ,  s,    MMM	\\\6>>
233333r$   c                      d S rB   rL   )r   s    r#   monitor_sessionr   4  s    Dr$   c                      	 t          j                    } |                     dd          }t          |          rdS n#  Y nxY wdS )NTr   )my_jobslimitF)rb   rc   getJobsru   )r   jobss     r#   any_jobsr   7  sT    Oyy$ay00:: 	4	5s	   9> Ac                   :    e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	S )
RunLoopz/com/redhat/PrinterSpoolerzcom.redhat.PrinterSpoolerc                    || _         || _        || _        d | _        	 |                    | j        | j        | j                   np# t          j	        $ r^}	 t          t          d|t          j                   t          j        d           n# t          j        d           w xY wY d }~nd }~ww xY w|                                  d S )Nrn   dbus_interfacez': failed to add D-Bus signal receiver: filer   )r   r   looptimeradd_signal_receiverhandle_dbus_signal	DBUS_PATH
DBUS_IFACEr   r   r   r   rm   stderrexitcheck_for_jobs)r!   r   r   r   es        r#   r   zRunLoop.__init__F  s    $&	
		**D,C15;?? + L L L L ! 	 	 	'<<,25*> > > > !!	 	s)   'A B3%B;B.B&&B..B3c                    	 | j                             | j        | j        | j                   d S # t
          j        $ r?}	 t          t          d|t          j
                   n#  Y n	xY wY d }~d S Y d }~d S d }~ww xY w)Nr   z*: failed to remove D-Bus signal receiver: r   )r   remove_signal_receiverr   r   r   r   r   r   r   rm   r   )r!   r   s     r#   r   zRunLoop.remove_signal_receiverX  s    		O22D4K9=CG? 3 T T T T T ! 	 	 	'<<,25*> > > > >> > > > > > 	s'   ,0 A> %A&%A9&A*(A99A>c                 8    | j                                          d S rB   )r   runr9   s    r#   r   zRunLoop.rund  s    	r$   c                 r    |                                   | j        rt          j        | j                   d S d S rB   )r   r   r   source_remover9   s    r#   __del__zRunLoop.__del__g  sA    ##&&&: 	,
+++++	, 	,r$   c                     | j         rt          j        | j                    t          j        d| j                  | _         d S )N   )r   r   r   timeout_addr   r   s     r#   r   zRunLoop.handle_dbus_signall  s:    : 	,
+++%sD,?@@


r$   c                    t          d           t                      r| j        t          j        | j                   |                                  t          d           	 | j                            t          t                    }t          j        |t                    }|                                }t          d|z             n4# t          j        $ r"}	 t          |           n#  Y nxY wY d }~nd }~ww xY wdS )Nzchecking for jobszStarting job appletzJob applet is %sF)
debugprintr   r   r   r   r   r   r   r   r   r   r   r   	JobAppletr   r   )r!   r   r   r   rn   r   s         r#   r   zRunLoop.check_for_jobsq  s    '(((;; 	z%"DJ///''*** -...	&11<OO^<<)).56666%   !HHHHD	 us+   "A%C C9C('C4(C,*C44C9N)r   r   r   r   r   r   r   r   r   r   r   rL   r$   r#   r   r   B  s{        *I*J  $
 
 
  , , ,
A A A
    r$   r   __main__r   )debughelpversionz--helpz	--versionz--debugz!%s: unable to initialize pynotifyr   z%%s: failed to connect to system D-Busz&%s: failed to connect to session D-Busz2%s: failed to start NewPrinterNotification servicez3: failed to start PrinterDriversInstaller service: z printer-applet-lock-user-z+Process already running ({0}:{1}). Exiting.)Yrb   	functoolsr   requirerm   socketgetpassr   r   dbus.mainloop.glibr   dbus.servicegigi.repositoryr   r   timelocalecupshelpers.installdriverrq   DOMAINgettextinstall	setlocaler   Errorr   rk   environrequire_versionr   rp   ICONinitr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   getopt
gnu_getoptargvoptsr   GetoptErrorr   optoptargset_debuggingr   r   r   r   	SystemBus
SessionBusr   installdriverset_debugprint_fnr   PrinterDriversInstaller	ExceptionAF_UNIXSOCK_STREAMsockbindgetusererrorerr
error_codeerror_stringformatMainLoopr   runloopr   KeyboardInterruptrL   r$   r#   <module>r     sm  (        h    



        - , , , , , T " " " "     				 ! ! ! ! ! !                  v    )FfmR((((| ) ) )IIIBJxFfmR(((((((()
  8U # # #            ) 0 1 1 1 122%(;; ,/II 
 
.
-	+\ \ \ \ \T\0 \ \ \| ,A A A4 4 4	 	 		 	 	E E E E E E E EN z&V&b)4 )4 )45 5
dd    	!  ! !V(??ILLLCHaLLL+LOOOCHaLLLLIM4    6;%% 	E6"./69jB B B B B	D##J#T^%%

	E:"./69jB B B B CHaLLLLHCHaLLLLLL	%do''''9999	E 24@AHK
T T T T CHaLLLLHCHaLLLLLLz;7777	E C"./69jB B B B B	D	!33Z@@@!99*EEEE   	E*6,,;BE*N N N N N	Dv}V^V-?@@		//'/2C2CCDDDD<   Xa[
x{;BB:|\\]]]	 4=Dg{J55G   k s   9B 
C$CC$E4 4$FF	H H#+H; ;I;>I$I;$I66I;?$J$ $K$'K<K$KK$(K5 5L8LLLL4M M?M.-M:.M20M::M?A O 
P!A	PP!Q Q Q 