
    Kc                         d dl Zd dlmZ d dlm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
 e
j        e	j        e	j                   d dlT  ej                     ej        j                                          G d d	e          Z G d
 d          Z G d de          Z G d dej                  Z G d de          ZdS )    N)GObject)GLib)Gdk)Gtk)domain	localedir)*c                       e Zd ZdS )OperationCanceledN)__name__
__module____qualname__     ,/usr/share/system-config-printer/timedops.pyr   r   '   s        Dr   r   c                       e Zd Zd Zd ZdS )Timedc                     d S Nr   selfs    r   runz	Timed.run+   s    r   c                     dS NFr   r   s    r   cancelzTimed.cancel.   s    ur   N)r   r   r   r   r   r   r   r   r   r   *   s2              r   r   c                   :    e Zd ZddZd Zd Zd Zd Zd	 Zd
 Z	dS )TimedSubprocess`  NTc                    t          j        di || _        t                      | _        g | _        d| _        || _        || _        || _	        | j        j
        | j        j        fD ]h}|dt          j        |t          j        t          j        t          j        z  t          j        z  | j                  }| j                            |           id | _        d S )N   r   )
subprocessPopensubpdictoutput	io_sourcewatcherstimeoutparentshow_dialogstdoutstderrr   io_add_watchPRIORITY_DEFAULTIO_INIO_HUPIO_ERRwatcherappendwait_window)r   r(   r)   r*   argsfsources          r   __init__zTimedSubprocess.__init__2   s    $----	ff&)"DI$45 	/ 	/A}*A,0,A,0J,0K-8,0K-8 -1L: : %%v...r   c                    | j         rt          j        d| j                  | _        t          j        | j        | j                  | _        t          j
                     | j        rt          j        | j                   | j         rt          j        | j                   | j        D ]}t          j        |           | j        | j                                         | j                            | j        j        d                              d          | j                            | j        j        d                              d          | j                                        fS )N    
)r*   r   timeout_add_secondsshow_wait_windowwait_sourcetimeout_addr(   
do_timeouttimeout_sourcer   mainsource_remover&   r4   destroyr%   getr#   r+   splitr,   poll)r   r7   s     r   r   zTimedSubprocess.runG   s>    	'#7% '  'D #.04A A 	5 3444 	2 0111n 	( 	(F'''''$$'''!1266<<dCC!1266<<dCC	!!# 	#r   c                 :    d | _         t          j                     dS r   )rB   r   	main_quitr   s    r   rA   zTimedSubprocess.do_timeout\   s    "ur   c                 <   |t           j        z  rO| j                            |d          }||                                                    d          z  }|| j        |<   |t           j        z  r.| xj        dz  c_        | j        dk    rt          j	                     dS )Nr;   zutf-8r:   r   T)
r   r/   r%   rF   readdecoder0   r'   r   rJ   )r   r7   	conditionbuffers       r   r2   zTimedSubprocess.watchera   s    tz! 	)[__fb11Fv{{~~--g666F"(DKt{" 	!MMQMM}!!   tr   c           
      N   t          j                     t          j        | j        ddt          j        j        t          j        j        t          d                    }|
                    dd            |
                    d| j                   | j        r|                    | j                   |                    t          j        j                   |                    t          d                     |                                 || _        t          j                     dS )	NTPlease waitr)   modaldestroy_with_parentmessage_typebuttonstextdelete_eventc                      dS r   r   r5   s    r   <lambda>z2TimedSubprocess.show_wait_window.<locals>.<lambda>u   s    E r   responseGathering informationF)r   threads_enterr   MessageDialogr)   MessageTypeINFOButtonsTypeCANCEL_connectwait_window_responseset_transient_forset_positionWindowPositionCENTER_ON_PARENTformat_secondary_textshow_allr4   threads_leaver   waits     r   r>   z TimedSubprocess.show_wait_windown   s     (,$/2/C*-/*@'('7'7	9 9 9
 	n&9&9:::j$";<<<; 	1""DK0003->???""A&=$>$>???ur   c                 \    |t           j        j        k    r|                                  d S d S r   r   ResponseTyperc   r   r   dialogr\   s      r   rf   z$TimedSubprocess.wait_window_response   ,    s'...KKNNNNN /.r   c                 n    | j         dk    r)t          d           t          j                     d| _         dS )Nr   Command canceledF)r'   
debugprintr   rJ   r   s    r   r   zTimedSubprocess.cancel   s8    =1*+++MDMur   )r   NT)
r   r   r   r8   r   rA   r2   r>   rf   r   r   r   r   r   r   1   s               *# # #*  
    $      r   r   c                   (    e Zd Zddi fdZd Zd ZdS )OperationThreadNr   c                     t           j                            |            |                     d           || _        || _        || _        d | _        d | _        d S )NT)		threadingThreadr8   	setDaemontargetr5   kwargs	exceptionresult)r   r   r5   r   s       r   r8   zOperationThread.__init__   sR    !!4(((	r   c                     	 t          d| j        z              | j        | j        i | j        | _        t          d           d S # t
          $ r$}t          d|z             || _        Y d }~d S d }~ww xY w)Nz
Calling %sDonezCaught exception %s)rx   r   r5   r   r   	Exceptionr   )r   es     r   r   zOperationThread.run   s    	t{2333%$+	AT[AADK 	 	 	-1222DNNNNNNN	s   AA 
A4A//A4c                 p    |                                  rt                      | j        r| j        | j        S r   )is_aliver   r   r   r   s    r   collect_resultzOperationThread.collect_result   s:    == 	&#%%%> 	!. {r   )r   r   r   r8   r   r   r   r   r   rz   rz      sM        #"R          r   rz   c                   :    e Zd Zdi ddddfdZd Zd Zd Zd ZdS )	TimedOperationr   NFc                    d | _         || _        || _        || _        || _        t          |||          | _        | j                                         |d u| _        | j        r!t          j
        d| j                  | _        d S d S )N)r   r5   r   2   )r4   r)   r*   callbackcontextrz   threadstartuse_callbackr   r@   _check_threadrB   )r   r   r5   r   r)   r*   r   r   s           r   r8   zTimedOperation.__init__   s    & %f,0.46 6 6 	$D0 	L"&"2B8J"K"KD	L 	Lr   c           
      &   | j         rt          | j        rt          j        | j        ddt          j        j        t          j        j	        t          d                    }|                    dd            |                    d| j                   | j        r|                    | j                   |                    t          j        j                   |                    t          d                     |                                 t'          j        d| j                  | _        t          j                     | j        rt'          j        | j                   | j        r|                                 | j                                        S )	NTrQ   rR   rX   c                      dS r   r   rZ   s    r   r[   z$TimedOperation.run.<locals>.<lambda>   s     r   r\   r]   r   )r   RuntimeErrorr*   r   r_   r)   r`   ra   rb   rc   rd   re   _wait_window_responserg   rh   ri   rj   rk   rl   r   r@   r   rB   rC   rD   rE   r   r   rn   s     r   r   zTimedOperation.run   s_    	 	$T[,0d36?3G.1o.D+,]+;+;	= = =D
 LL.*=*=>>>LL*d&@AAA{ 5&&444s1BCCC&&*A(B(BCCCMM".D4FGG 	5 3444 	LLOOO{)),,,r   c                 R   | j                                         rdS d| _        | j        rj| j        b| j        1|                     | j         j        | j         j        | j                   n>|                     | j         j        | j         j                   nt          j	                     dS )NTF)
r   r   rB   r   r   r   r   r   r   rJ   r   s    r   r   zTimedOperation._check_thread   s    ;"" 	4 $ 	}(<+MM4;#5t{7L#'<1 1 1 1 MM4;#5t{7LMMMMur   c                 \    |t           j        j        k    r|                                  d S d S r   rq   rs   s      r   r   z$TimedOperation._wait_window_response   ru   r   c                 h    t          d           | j        rd | _        nt          j                     dS )Nrw   F)rx   r   r   r   rJ   r   s    r   r   zTimedOperation.cancel   s8    &''' 	 DMMMur   )r   r   r   r8   r   r   r   r   r   r   r   r   r      sv        %'4#dDL L L L - - -8  &      r   r   )dbus.mainloop.glibdbusgi.repositoryr   r   r   r   r!   r|   configgettextinstallPACKAGEr   debugthreads_initmainloopglibr   r   r   r   r}   rz   r   r   r   r   <module>r      s  *     ! ! ! ! ! !                             v~1A B B B B    
          " " "	 	 	 	 	 	 	 	       Y Y Y Y Ye Y Y Yv    i&   :K K K K KU K K K K Kr   