
    f                         d dl Z  e j                  dd        e j                  dd       d dlmZmZ d dlZd dlZd dlZd dl	Zd dl
Z G d de      Z G d	 d
      Zy)    NGtkz3.0XAppz1.0)r   r   c                   x    e Zd ZddZd Zd Zd Zd Zd Zd Z	dd	Z
d
 Zd Zd ZddZd Zd Zd Zd Zd Zy)SimpleAPTClientNc                 J    || _         d | _        d | _        d | _        d | _        y N)parent_windowprogress_callbackfinished_callbackerror_callbackcancelled_callback)selfr	   s     5/usr/lib/python3/dist-packages/aptkit/simpleclient.py__init__zSimpleAPTClient.__init__   s*    *!%!%""&    c                     || _         y r   )r
   )r   r
   s     r   set_progress_callbackz%SimpleAPTClient.set_progress_callback   
    !2r   c                     || _         y r   r   )r   r   s     r   set_finished_callbackz%SimpleAPTClient.set_finished_callback   r   r   c                     || _         y r   )r   )r   r   s     r   set_error_callbackz"SimpleAPTClient.set_error_callback   s
    ,r   c                     || _         y r   )r   )r   r   s     r   set_cancelled_callbackz&SimpleAPTClient.set_cancelled_callback   s
    "4r   c                     t         j                  j                         }|j                         }| j	                  |       y r   )aptkitclient	AptClientupdate_cache_run_transaction)r   r   update_transactions      r   r    zSimpleAPTClient.update_cache!   s2    ((*#00201r   c                     t         j                  j                         }|j                  |dd| j                  | j
                         y )NTF)forcewaitreply_handlererror_handler)r   r   r   install_file_simulate_trans	_on_error)r   pathr   s      r   r(   zSimpleAPTClient.install_file&   s:    ((*D5H\H\lplzlz{r   c                    |rt        j                         }|D ]  }	 ||   }|j                           |j	                         }|D ]9  }|j
                  s|j                  |vs|j                  |j                         ; t        j                  j                         }|j                  || j                  | j                         y #  t        d| d       Y xY w)NzPackage z not found in the cache!r&   r'   )aptCachemark_installprintget_changesmarked_installnameappendr   r   r   install_packagesr)   r*   )r   packagesuse_apt_resolvercacher4   pkgchangesr   s           r   r6   z SimpleAPTClient.install_packages*   s     IIKE  EE+C$$&E '')G .%%#(((*BOOCHH-. ((*8L8L\`\j\jkEHTF*BCDs   C		Cc                     t         j                  j                         }|j                  || j                  | j
                         y )Nr-   )r   r   r   remove_packagesr)   r*   )r   r7   r   s      r   r=   zSimpleAPTClient.remove_packages@   s6    ((*xt7K7K[_[i[ijr   c                 0    | j                  t               y )N)purge)commit_changesversioned_packages)r   r7   s     r   purge_packageszSimpleAPTClient.purge_packagesD   s    "45r   c                 (    | j                  |       y )N)	downgrade)r@   )r   rA   s     r   downgrade_packagesz"SimpleAPTClient.downgrade_packagesG   s    &89r   c           
          t         j                  j                         }|j                  ||||||| j                  | j
                         y )N)install	reinstallremover?   upgraderD   r&   r'   )r   r   r   commit_packagesr)   r*   )r   rG   rH   rI   r?   rJ   rD   r   s           r   r@   zSimpleAPTClient.commit_changesJ   sM    ((*w)FZ_ip  }F-1-A-AQUQ_Q_ 	 	ar   c                 Z   | j                   ht        j                  j                  || j                        }|j                  ddd | j                         |j                  d| j                         y t        || j                   | j                  | j                  | j                         y )NparentTc                       y)NT rP   r   r   <lambda>z2SimpleAPTClient._run_transaction.<locals>.<lambda>R   s    r   )close_on_finished
show_errorr&   r'   finished)r
   r   gtk3widgetsAptProgressDialogr	   runr*   connect
_on_finishSimpleAptKitTransactionr   r   )r   transactiondias      r   r!   z SimpleAPTClient._run_transactionO   s    !!)$$66{4K]K]6^CGGdt<gkguguGv
DOO<#K1G1GI_I_aeatatvz  wI  wI  Jr   c                 J     j                   fd j                         y )Nc                  &     j                        S r   )_confirm_depsr   transs   r   rQ   z1SimpleAPTClient._simulate_trans.<locals>.<lambda>X   s    T-?-?-F r   r-   )simulater*   r`   s   ``r   r)   zSimpleAPTClient._simulate_transW   s    %FVZVdVder   c                    	 |j                   D cg c]  }|s|	 c}rt        j                  j                  || j                        }|j                         }|j                          |t        j                  j                  k7  r| j                  | j                          y | j                  |       y c c}w # t        $ r}t        |       Y d }~y d }~ww xY w)NrM   )dependenciesr   rU   AptConfirmDialogr	   rW   hider   ResponseTypeOKr   r!   	Exceptionr1   )r   ra   pkgsr\   reses         r   r_   zSimpleAPTClient._confirm_depsZ   s    	!&!3!3<t<((99%HZHZ9[ggi
#**---..://1!!%( =  	!HH	s3   B; B6B6BB; $B; 6B; ;	CCCc                    t        |t        j                  j                        r| j                  | j	                          y t        |t        j                  j
                        sAt        j                  j                  t        j                  j                  t        |            }t        j                  j                  |      }|j                          |j                          y r   )
isinstancer   errorsNotAuthorizedErrorr   TransactionFailedenumsERROR_UNKNOWNstrrU   AptErrorDialogrW   rf   )r   errorr\   s      r   r*   zSimpleAPTClient._on_errorh   s    eV]]==>&&2'')E6==#B#BCMM33FLL4N4NPSTYPZ[E  //6	
r   c                 B    | j                   | j                  ||       y y r   r   r   r[   
exit_states      r   rY   zSimpleAPTClient._on_finisht   s#    !!-"";
; .r   r   )T)NNNNNN)__name__
__module____qualname__r   r   r   r   r   r    r(   r6   r=   rB   rE   r@   r!   r)   r_   r*   rY   rP   r   r   r   r      s]    '33-52
|l,k6:a
Jf
<r   r   c                   $    e Zd Zd Zd Zd Zd Zy)rZ   c                 4   || _         || _        || _        || _        || _        |j                  d       |j                  d| j                         |j                  d| j                         |j                  d| j                         |j                          y )Ngnomezprogress-changedrT   rv   )r
   r   r   r[   r	   set_debconf_frontendrX   on_transaction_progresson_transaction_finishon_transaction_errorrW   )r   r[   r
   r   r   r	   s         r   r   z SimpleAptKitTransaction.__init__z   s    !2!2,&*((1.0L0LMJ(B(BCGT%>%>?r   c                     | j                   | j                  |       | j                  !t        j                  | j                  |       y y r   )r
   r	   r   set_window_progress)r   r[   progresss      r   r   z/SimpleAptKitTransaction.on_transaction_progress   sC    !!-""8,)$$T%7%7B *r   c                     | j                   | j                  ||       | j                  !t        j                  | j                  d       y y )Nr   )r   r	   r   r   )r   r[   
error_codeerror_detailss       r   r   z,SimpleAptKitTransaction.on_transaction_error   sE    *
M:)$$T%7%7; *r   c                 ~    |t         j                  j                  k(  r | j                  | j                  ||       y y y r   )r   rr   EXIT_SUCCESSr   rx   s      r   r   z-SimpleAptKitTransaction.on_transaction_finish   s:    &,,333%%1&&{J? 2 4r   N)rz   r{   r|   r   r   r   r   rP   r   r   rZ   rZ   x   s    C<@r   rZ   )girequire_versiongi.repositoryr   r   r.   aptkit.clientr   aptkit.enumsaptkit.errorsaptkit.gtk3widgetsobjectr   rZ   rP   r   r   <module>r      sY    	   5%     65 ! # 
    j<f j<X@ @r   