Ë
    QKfmM  ã                   óÀ  — d dl mZ d dlmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZm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  G d„ de
«      Z! G d„ dejD                  «      Z# G d„ dee«      Z$e%dk(  rUd d
l&Z& e&jN                  «       Z(dZ)d dl*m+Z+  e+e)e(«      Z, e$e,d
«      Z-e-j]                  dgg g «        ej^                  «        y
y
)é    )ÚGtk)ÚclientÚerrors)Úinline_callbacks)ÚAptCancelButtonÚAptConfigFileConflictDialogÚAptDetailsExpanderÚAptMediumRequiredDialogÚAptProgressBar)	ÚEXIT_SUCCESSÚEXIT_FAILEDÚSTATUS_COMMITTINGÚSTATUS_DOWNLOADINGÚSTATUS_DOWNLOADING_REPOÚSTATUS_FINISHEDÚget_error_description_from_enumÚget_error_string_from_enumÚget_status_string_from_enum)ÚInstallBackend)ÚUnitySupport)ÚBuilderDialog)ÚgettextNc                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )ÚUpdateManagerExpandera:  An AptDetailsExpander which can be used with multiple terminals.

    The default AptDetailsExpander will shrink/hide when its transaction
    finishes. But here we want to support "chaining" transactions. So we
    override the status-changed handler to only do that when we are
    running the final transaction.c                 ó4   •— t         ‰| �  ||«       || _        y ©N)ÚsuperÚ__init__Úfinal)ÚselfÚtransactionÚterminalr   Ú	__class__s       €úO/usr/lib/python3/dist-packages/UpdateManager/backend/InstallBackendAptdaemon.pyr   zUpdateManagerExpander.__init__/   s   ø€ Ü‰Ñ˜ hÔ/Øˆ�
ó    c                 óÎ  — |t         t        fv rS| j                  d«       | j                  j	                  «        | j
                  r| j
                  j                  «        y y |t        k(  r‚| j                  j                  «        | j
                  r,| j
                  j	                  «        | j                  d«       y | j                  r#| j                  d«       | j                  d«       y y | j                  rm|t        k(  rc| j                  j                  «        | j
                  r| j
                  j                  «        | j                  d«       | j                  d«       y y y ©NTF)r   r   Úset_sensitiveÚdownload_scrolledÚshowr"   Úhider   r   Úset_expandedr   )r    ÚtransÚstatuss      r$   Ú_on_status_changedz(UpdateManagerExpander._on_status_changed3   s  € ØÔ(Ô*AÐBÑBØ×Ñ˜tÔ$Ø×"Ñ"×'Ñ'Ô)Ø�}Š}Ø—‘×"Ñ"Õ$ð àÔ(Ò(Ø×"Ñ"×'Ñ'Ô)Ø�}Š}Ø—‘×"Ñ"Ô$Ø×"Ñ" 4Õ(Ø—’Ø×!Ñ! %Ô(Ø×"Ñ" 5Õ)ð ð �ZŠZ˜F¤oÒ5Ø×"Ñ"×'Ñ'Ô)Ø�}Š}Ø—‘×"Ñ"Ô$Ø×Ñ˜uÔ%Ø×Ñ˜eÕ$ð 6ˆZr%   )TF)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r/   Ú__classcell__©r#   s   @r$   r   r   '   s   ø„ ñ&õö%r%   r   c                   ó4   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zd„ Zˆ xZS )ÚAptStackedProgressBarap  A GtkProgressBar which represents the state of many aptdaemon
    transactions.

    aptdaemon provides AptProgressBar for the state of *one* transaction to
    be represented in a progress bar. This widget creates one of those per
    containing transaction, and scales its progress to the given ratio, so
    one progress bar can show the state of many transactions.c                 óL   •— d| _         g | _        || _        t        ‰| �  «        y )Nr   )Úcurrent_max_progressÚprogress_barsÚunityr   r   )r    r;   r#   s     €r$   r   zAptStackedProgressBar.__init__R   s%   ø€ Ø$%ˆÔ!ØˆÔØˆŒ
ä‰ÑÕr%   c                 óz  — d|cxk  rdk  sJ ‚ J ‚t        |«      }| j                  j                  |«       | j                  |_        | xj                  |z  c_        | j                  dkD  rd| _        | j                  |_        |j                  d| j                  «       |j                  d| j                  «       y )Nr   é   znotify::fractionznotify::text)	r   r:   Úappendr9   ÚminÚmaxÚconnectÚ_update_progressÚ_update_text)r    r-   Úmax_progressÚprogresss       r$   Úadd_transactionz%AptStackedProgressBar.add_transactionY   s§   € Ø�LÔ% AÒ%Ð%Ñ%Ð%Ð%ä! %Ó(ˆØ×Ñ×!Ñ! (Ô+Ø×0Ñ0ˆŒØ×!Ò! \Ñ1Õ!à×$Ñ$ qÒ(Ø()ˆDÔ%à×0Ñ0ˆŒØ×ÑÐ+¨T×-BÑ-BÔCØ×Ñ˜¨×):Ñ):Õ;r%   c                 óØ   — |j                   |j                  z
  }||j                  «       z  }|j                  |z   }| j                  |«       | j                  j                  |dz  «       y )Néd   )r@   r?   Úget_fractionÚset_fractionr;   Úset_progress)r    Úinner_progressÚdataÚdeltaÚposition_in_deltaÚnew_progresss         r$   rB   z&AptStackedProgressBar._update_progressh   sb   € Ø×"Ñ" ^×%7Ñ%7Ñ7ˆØ! N×$?Ñ$?Ó$AÑAÐØ%×)Ñ)Ð,=Ñ=ˆØ×Ñ˜,Ô'Ø�
‰
×Ñ ¨sÑ 2Õ3r%   c                 óB   — | j                  |j                  «       «       y r   )Úset_textÚget_text)r    rL   rM   s      r$   rC   z"AptStackedProgressBar._update_texto   s   € Ø�‰�n×-Ñ-Ó/Õ0r%   )	r0   r1   r2   r3   r   rF   rB   rC   r4   r5   s   @r$   r7   r7   I   s   ø„ ñAôò<ò4ö1r%   r7   c                   ó®   — e Zd ZdZd„ Zd„ Zed„ «       Zd„ Zd„ Z	ed„ «       Z
d„ Zed	„ «       Zed
„ «       Zd„ Zd„ Ze	 	 dd„«       Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚInstallBackendAptdaemonzCMakes use of aptdaemon to refresh the cache and to install updates.c                 óZ  — t        j                  | ||«       t        j                  j	                  |j
                  d«      }t        j                  | ||d«       t        j                  «       | _        t        «       | _
        d | _        d | _        d | _        d | _        d | _        d | _        y )Nzgtkbuilder/UpdateProgress.uiÚpane_update_progress)r   r   ÚosÚpathÚjoinÚdatadirr   r   Ú	AptClientr   r;   Ú_expanded_sizeÚbutton_cancelÚtrans_failed_msgÚprogressbarÚ_active_transactionÚ	_expander)r    Úwindow_mainÚactionÚui_paths       r$   r   z InstallBackendAptdaemon.__init__v   s–   € Ü×Ñ  k°6Ô:Ü—'‘'—,‘,Ø×ÑÐ!?ó
ˆô 	×ÑØ�+˜wÐ(>ô	
ô ×&Ñ&Ó(ˆŒÜ!“^ˆŒ
Ø"ˆÔØ!ˆÔØ $ˆÔØˆÔØ#'ˆÔ Øˆ�r%   c                 ó¦   — | j                   r6| j                   j                  «       r	 | j                   j                  «        yy# t        $ r Y yw xY wr'   )r^   Úget_sensitiveÚclickedÚ	Exception)r    s    r$   ÚclosezInstallBackendAptdaemon.closeˆ   sT   € Ø×Ò $×"4Ñ"4×"BÑ"BÔ"DðØ×"Ñ"×*Ñ*Ô,ð
 àøô ò ð Øð	ús   ¨A Á	AÁAc              #   ó`  K  — 	 | j                   j                  d¬«      –—}| j                  || j                  t	        d«      d«      –— y# t
        j                  $ r# | j                  | j                  dddd¬«       Y yt        $ r" | j                  | j                  dddd¬«       ‚ w xY w­w)zRefresh the package listT©Údeferu   Checking for updatesâ€¦FN©Ú
authorizedÚsuccessÚerror_stringÚ
error_desc)	r   Úupdate_cacheÚ_show_transactionÚACTION_UPDATEÚ_r   ÚNotAuthorizedErrorÚ_action_doneri   )r    r-   s     r$   ÚupdatezInstallBackendAptdaemon.update”   sÂ   è ø€ ð	ØŸ+™+×2Ñ2¸Ð2Ó>Ñ>ˆEØ×(Ñ(Ø�t×)Ñ)¬1Ð-FÓ+GÈóó øô ×(Ñ(ò 	Ø×ÑØ×"Ñ"Ø ØØ!Øð ö ô ò 	Ø×ÑØ×"Ñ"ØØØ!Øð ô ð ð	üs)   ‚B.„AA ÁB.Á3B+Á?B.Â*B+Â+B.c                 óô   — t        |j                  j                  «      }t        |j                  j                  «      }| j                  rd}|dz   | j                  z   }nd }| j                  |dd|||¬«       y )NTú
F©ro   rp   rq   rr   Útrans_failed)r   ÚerrorÚcoder   r_   rx   )r    r-   rd   rq   rr   r}   s         r$   Ú_show_transaction_errorz/InstallBackendAptdaemon._show_transaction_error®   sw   € Ü1°%·+±+×2BÑ2BÓCˆÜ4°U·[±[×5EÑ5EÓFˆ
Ø× Ò ØˆLØ# dÑ*¨T×-BÑ-BÑB‰JàˆLØ×ÑØØØØ%Ø!Ø%ð 	õ 	
r%   c                 ó\   — |t         k(  r| j                  ||«       y | j                  «        y r   )r   r€   Ú_apt_update_oem)r    r-   r.   rd   s       r$   Ú_update_next_packagez,InstallBackendAptdaemon._update_next_package¿   s)   € Ø”[Ò Ø×(Ñ(¨°Ô7ØØ×ÑÕr%   c           	   #   óZ  K  — | j                   sJ ‚| j                   j                  «       }d|› d�}	 t        j                  j	                  |«      r}| j
                  j                  |¬«      –—}| j                   r| j                  }n| j                  }| j                  || j                  t        d«      d|d| j                  z  ¬«      –— y y # t        j                  $ r# | j                  | j                  ddd d ¬	«       Y y t        j                   $ r}t#        |«      | _        Y d }~y d }~wt&        j(                  $ r>}|j+                  «       d
k7  r‚ | j                  | j                  ddd d ¬	«       Y d }~y d }~wt,        $ r" | j                  | j                  ddd d ¬	«       ‚ w xY w­w)Nz/etc/apt/sources.list.d/z.list)Úsources_listõ   Installing updatesâ€¦Tçš™™™™™¹?©Úon_finished_handlerÚprogress_bar_maxFrn   ú"org.freedesktop.DBus.Error.NoReply)Ú_oem_packages_to_updateÚpoprX   rY   Úexistsr   rs   rƒ   Ú_on_finishedrt   ÚACTION_PRE_INSTALLrv   Ú_len_oem_updatesr   rw   rx   ÚTransactionFailedÚstrr_   ÚdbusÚDBusExceptionÚget_dbus_nameri   )r    ÚelemÚsources_list_filer-   Úfinished_handlerÚes         r$   r‚   z'InstallBackendAptdaemon._apt_update_oemÅ   s¼  è ø€ à×+Ò+Ð+Ð+Ø×+Ñ+×/Ñ/Ó1ˆØ6°t°f¸EÐBÐð.	Ü�w‰w�~‰~Ð/Ô0Ø"Ÿk™k×6Ñ6Ø!2ð 7ó ñ �ð ×/Ò/Ø'+×'@Ñ'@Ñ$à'+×'8Ñ'8Ð$à×,Ñ,ØØ×+Ñ+ÜÐ-Ó.ØØ(8Ø%(¨4×+@Ñ+@Ñ%@ð -ó ó ð 1øô" ×(Ñ(ò 	Ø×ÑØ×'Ñ'Ø ØØ!Øð ö ô ×'Ñ'ò 	+Ü$'¨£FˆD×!Ñ!ûÜ×!Ñ!ò 		Ø�‰Ó Ð$HÒHØØ×ÑØ×'Ñ'Ø ØØ!Øð ÷ ñ ûô ò 	Ø×ÑØ×'Ñ'ØØØ!Øð ô ð ð	üsM   ‚/F+²BC ÃF+Ã3F(ÄF+ÄF(ÄD+Ä&F+Ä+F(Å4E:Å5F+Å:.F(Æ(F+c                 óÂ   — |t         k(  r| j                  ||«       y |j                  \  }}}}}}t        |«      | _        t        |«      | _        | j                  «        y r   )r   r€   ÚpackagesÚsetrŒ   Úlenr‘   r‚   )r    r-   r.   rd   Úinstallrv   s         r$   Ú_update_oemz#InstallBackendAptdaemon._update_oemû   sY   € ð
 ”[Ò Ø×(Ñ(¨°Ô7Øà#(§>¡>Ñ ˆ�!�Q˜˜1˜aä'*¨7£|ˆÔ$Ü # G£ˆÔà×ÑÕr%   c              #   óú  K  — t        |«      t        |«      z  | _        	 |s$|s"| j                  | j                  ddd d d ¬«       y |rV| j                  j                  |d¬«      –—}| j                  || j                  t        d«      d| j                  d¬«      –— y y # t        j                  $ r# | j                  | j                  ddd d ¬«       Y y t        j                  $ r}t        |«      | _        Y d }~y d }~wt        j                  $ r>}|j!                  «       d	k7  r‚ | j                  | j                  ddd d ¬«       Y d }~y d }~wt"        $ r" | j                  | j                  ddd d ¬«       ‚ w xY w­w)
NTr|   rl   r†   r‡   rˆ   Frn   r‹   )r�   Úall_oem_packagesrx   r�   r   Úinstall_packagesrt   rv   r    r   rw   r’   r“   r_   r”   r•   r–   ri   )r    Úpkgs_install_oemÚpkgs_upgrade_oemr-   rš   s        r$   Ú
commit_oemz"InstallBackendAptdaemon.commit_oem  s§  è ø€ ä #Ð$4Ó 5¼Ð<LÓ8MÑ MˆÔð4	Ù#Ñ,<Ø×!Ñ!Ø×+Ñ+Ø#Ø Ø!%Ø#Ø!%ð "ô ð áØ"Ÿk™k×:Ñ:Ø$¨Dð ;ó ñ �ð ×,Ñ,ØØ×+Ñ+ÜÐ-Ó.ØØ(,×(8Ñ(8Ø%(ð -ó ó ð	  øô ×(Ñ(ò 	Ø×ÑØ×'Ñ'Ø ØØ!Øð ö ô ×'Ñ'ò 	+Ü$'¨£FˆD×!Ñ!ûÜ×!Ñ!ò 		Ø�‰Ó Ð$HÒHØØ×ÑØ×'Ñ'Ø ØØ!Øð ÷ ñ ûô ò 	Ø×ÑØ×'Ñ'ØØØ!Øð ô ð ð	üsY   ‚E; %B ÁE;ÁAB ÂE;Â3E8ÃE;ÃE8Ã&C;Ã6E;Ã;E8Ä4E
ÅE;Å
.E8Å8E;c           	   #   ól  K  — 	 g x}x}}| j                   j                  ||||||d¬«      –—}| j                  || j                  t	        d«      d«      –— y# t
        j                  $ r# | j                  | j                  dddd¬«       Y yt
        j                  $ r}t        |«      | _
        Y d}~yd}~wt        j                  $ r>}|j                  «       dk7  r‚ | j                  | j                  dddd¬«       Y d}~yd}~wt        $ r" | j                  | j                  dddd¬«       ‚ w xY w­w)z)Commit a list of package adds and removesTrl   r†   FNrn   r‹   )r   Úcommit_packagesrt   ÚACTION_INSTALLrv   r   rw   rx   r’   r“   r_   r”   r•   r–   ri   )	r    Úpkgs_installÚpkgs_upgradeÚpkgs_removeÚ	reinstallÚpurgeÚ	downgrader-   rš   s	            r$   ÚcommitzInstallBackendAptdaemon.commitE  s[  è ø€ ð+	Ø,.Ð.ˆIÐ.˜ 	ØŸ+™+×5Ñ5ØØØØØØØð 6ó ñ ˆEð ×(Ñ(Ø�t×*Ñ*¬AÐ.EÓ,FÈóó øô ×(Ñ(ò 	Ø×ÑØ×#Ñ#Ø ØØ!Øð ö ô ×'Ñ'ò 	+Ü$'¨£FˆD×!Ñ!ûÜ×!Ñ!ò 
	à�‰Ó Ð$HÒHØØ×ÑØ×#Ñ#Ø ØØ!Øð ÷ ñ ûô ò 	Ø×ÑØ×#Ñ#ØØØ!Øð ô ð ð	üsM   ‚D4„AA ÁD4Á3D1ÂD4ÂD1ÂB4Â/D4Â4D1Ã
4DÃ>D4Ä.D1Ä1D4c                 ó&   — |j                  |«       y r   )Ú	set_label)r    r-   ÚdetailsÚlabel_detailss       r$   Ú_on_details_changedz+InstallBackendAptdaemon._on_details_changedu  s   € Ø×Ñ Õ(r%   c                 óæ   — |j                  t        |«      «       |t        k(  rN| j                  rA| j                  j                  j                  «       r| j                  | j                  «       y y y y r   )r²   r   r   rb   r"   Úget_visibleÚ_resize_to_show_details)r    r-   r.   r´   s       r$   r/   z*InstallBackendAptdaemon._on_status_changedx  s_   € Ø×ÑÔ ;¸FÓ CÔDð Ô'Ò'Ø—’Ø—‘×'Ñ'×3Ñ3Ô5à×(Ñ(¨¯©Õ8ð 6ð ð (r%   Nc              #   ó¤  K  — |€| j                   }| j                  j                  |«       | j                  sYt	        | j
                  «      | _        | j                  j                  «        | j                  j                  | j                  «       | j                  j                  ||«       | j                  r| j                  j                  |«       nOt        |«      | _
        | j                  j                  «        | j                  j                  | j                  «       || j                  k(  r)| j                  j                  t        j                   «       |�r| j"                  sÆt%        |«      | _        | j"                  j'                  d«       | j"                  j)                  d«       | j"                  j+                  «        | j"                  j-                  d| j.                  «       | j0                  j                  | j"                  «       | j0                  j                  «        n| j"                  j                  |«       || j2                  k7  | j"                  _        n&| j"                  r| j6                  j9                  «        |j-                  d| j:                  | j<                  «       |j-                  d| j>                  | j<                  «       |j-                  d||«       |j-                  d| j@                  «       |j-                  d| jB                  «       |jE                  d«      –— |jG                  «       –— y ­w)	NTznotify::expandedzstatus-details-changedzstatus-changedÚfinishedzmedium-requiredzconfig-file-conflictÚgnome)$r�   Úlabel_headerr²   r`   r7   r;   r*   Úprogressbar_slotÚaddrF   r^   Úset_transactionr   Úbutton_cancel_slotru   r   Ú
STOCK_STOPrb   r   Úset_vexpandÚset_hexpandÚshow_allrA   Ú_on_expandedÚexpander_slotr�   r   Ú_expander_slotr+   rµ   r´   r/   Ú_on_medium_requiredÚ_on_config_file_conflictÚset_debconf_frontendÚrun)r    r-   rd   ÚheaderÚshow_detailsrŠ   r‰   s          r$   rt   z)InstallBackendAptdaemon._show_transactionƒ  st  è ø€ ð Ð&Ø"&×"3Ñ"3Ðà×Ñ×#Ñ# FÔ+à×ÒÜ4°T·Z±ZÓ@ˆDÔØ×Ñ×!Ñ!Ô#Ø×!Ñ!×%Ñ% d×&6Ñ&6Ô7à×Ñ×(Ñ(¨Ð0@ÔAà×ÒØ×Ñ×.Ñ.¨uÕ5ä!0°Ó!7ˆDÔØ×Ñ×#Ñ#Ô%Ø×#Ñ#×'Ñ'¨×(:Ñ(:Ô;à�T×'Ñ'Ò'Ø×Ñ×(Ñ(¬¯©Ô8âØ—>’>Ü!6°uÓ!=�”Ø—‘×*Ñ*¨4Ô0Ø—‘×*Ñ*¨4Ô0Ø—‘×'Ñ'Ô)Ø—‘×&Ñ&Ð'9¸4×;LÑ;LÔMØ×"Ñ"×&Ñ& t§~¡~Ô6Ø×"Ñ"×'Ñ'Õ)à—‘×.Ñ.¨uÔ5Ø#)¨T×-DÑ-DÑ#DˆD�N‰NÕ Ø�^Š^Ø×Ñ×$Ñ$Ô&à�‰Ø$Ø×$Ñ$Ø×Ñô	
ð
 	�‰Ø˜d×5Ñ5°t×7IÑ7Iô	
ð 	�‰�jÐ"5°vÔ>Ø�‰Ð'¨×)AÑ)AÔBØ�‰Ð,¨d×.KÑ.KÔLà×(Ñ(¨Ó1Ò1Ø�i‰i‹kÓùs   ‚MMc                 óÂ  — |j                  «       sT|j                  j                  «       | j                  j	                  «       f| _        | j                  j                  «        y | j
                  r^| j
                  \  }\  }}||j                  j                  «       k7  r| j                  |«       y | j                  j                  ||«       y | j                  |«       y r   )	Úget_expandedr"   r·   rc   Úget_sizer]   Úend_user_resizabler¸   Úbegin_user_resizable)r    ÚexpanderÚparamÚterm_visibleÚstored_widthÚstored_heights         r$   rÅ   z$InstallBackendAptdaemon._on_expandedÂ  sÂ   € ð ×$Ñ$Ô&à×!Ñ!×-Ñ-Ó/Ø× Ñ ×)Ñ)Ó+ð#ˆDÔð ×Ñ×/Ñ/Õ1Ø× Ò Ø:>×:MÑ:MÑ7ˆLÑ7˜<¨ð ˜x×0Ñ0×<Ñ<Ó>Ò>ð ×,Ñ,¨XÕ6à× Ñ ×5Ñ5Ø  -õð ×(Ñ(¨Õ2r%   c                 óÞ  — |j                  «       rÝ| j                  j                  «       \  }}|j                  «       j                  }|j                  «       j
                  }|j                  j                  «       rK|j                  j                  «       dz  }|j                  j                  «       dz  }||z
  |z   }||z
  |z   }	n
|dz   }|dz   }	| j                  j                  ||	«       yy)a¯  Resize the window to show the expanded details.

        Unfortunately the expander only expands to the preferred size of the
        child widget (e.g showing all 80x24 chars of the Vte terminal) if
        the window is rendered the first time and the terminal is also visible.
        If the expander is expanded afterwards the window won't change its
        size anymore. So we have to do this manually. See LP#840942
        éP   é   rH   éÈ   N)rÏ   rc   rÐ   Úget_allocationÚwidthÚheightr"   r·   Úget_char_widthÚget_char_heightrÒ   )
r    rÓ   Ú	win_widthÚ
win_heightÚ	exp_widthÚ
exp_heightÚterminal_widthÚterminal_heightÚ	new_widthÚ
new_heights
             r$   r¸   z/InstallBackendAptdaemon._resize_to_show_detailsÚ  sá   € ð × Ñ Ô"Ø$(×$4Ñ$4×$=Ñ$=Ó$?Ñ!ˆI�zØ ×/Ñ/Ó1×7Ñ7ˆIØ!×0Ñ0Ó2×9Ñ9ˆJØ× Ñ ×,Ñ,Ô.Ø!)×!2Ñ!2×!AÑ!AÓ!CÀbÑ!H�Ø"*×"3Ñ"3×"CÑ"CÓ"EÈÑ"J�Ø*¨YÑ6¸ÑB�	Ø,¨zÑ9¸JÑF‘
à%¨™O�	Ø'¨#Ñ-�
Ø×Ñ×1Ñ1°)¸ZÕHð #r%   c                 óð   — t        ||| j                  «      }|j                  «       }|j                  «        |t        j
                  j                  k(  r|j                  |«       y |j                  «        y r   )	r
   rc   rË   r+   r   ÚResponseTypeÚOKÚprovide_mediumÚcancel)r    r!   ÚmediumÚdriveÚdialogÚress         r$   rÈ   z+InstallBackendAptdaemon._on_medium_requiredñ  sX   € Ü(¨°¸×8HÑ8HÓIˆØ�j‰j‹lˆØ�‰ŒØ”#×"Ñ"×%Ñ%Ò%Ø×&Ñ& vÕ.à×ÑÕ r%   c                 óö   — t        ||| j                  «      }|j                  «       }|j                  «        |t        j
                  j                  k(  r|j                  |d«       y |j                  |d«       y )NÚreplaceÚkeep)r   rc   rË   r+   r   rê   ÚYESÚresolve_config_file_conflict)r    r!   ÚoldÚnewrð   rñ   s         r$   rÉ   z0InstallBackendAptdaemon._on_config_file_conflictú  s^   € Ü,¨S°#°t×7GÑ7GÓHˆØ�j‰j‹lˆØ�‰ŒØ”#×"Ñ"×&Ñ&Ò&Ø×4Ñ4°S¸)ÕDà×4Ñ4°S¸&ÕAr%   c                 ó   — d }d }d}|t         k(  r^t        |j                  j                  «      }t	        |j                  j                  «      }| j
                  rd}|dz   | j
                  z   }| j                  j                  d«       |t        k(  }	 | j                  |d||||¬«       y # t        $ r | j                  |d|||¬«       Y y w xY w)NFTr{   éÿÿÿÿr|   rn   )r   r   r~   r   r   r_   r;   rK   r   rx   Ú	TypeError)r    r-   r.   rd   rq   rr   r}   Ú
is_successs           r$   r�   z$InstallBackendAptdaemon._on_finished  sß   € ØˆØˆ
ØˆØ”[Ò Ü5°e·k±k×6FÑ6FÓGˆLÜ8¸¿¹×9IÑ9IÓJˆJØ×$Ò$Ø#�Ø'¨$Ñ.°×1FÑ1FÑF�
à�
‰
×Ñ Ô#Øœ|Ñ+ˆ
ð	Ø×ÑØØØ"Ø)Ø%Ø)ð õ øô ò 
	ð ×ÑØØØ"Ø)Ø%ð ö ð	
	ús   ÂB+ Â+CÃC)r=   N)r0   r1   r2   r3   r   rj   r   ry   r€   rƒ   r‚   r    r¦   r°   rµ   r/   rt   rÅ   r¸   rÈ   rÉ   r�   © r%   r$   rU   rU   s   s³   „ ÙMòò$
ð ñó ðò2
ò"ð ñ3ó ð3òjð  ñ7ó ð7ðr ñ-ó ð-ò^)ò	9ð ð Ø ò<ó ð<ò|3ò0Iò.!òBó r%   rU   Ú__main__z/usr/share/update-manager)ÚUpdateManagerÚ2vcard)0Úgi.repositoryr   Ú	aptdaemonr   r   rm   r   Úaptdaemon.gtk3widgetsr   r   r	   r
   r   Úaptdaemon.enumsr   r   r   r   r   r   r   r   r   ÚUpdateManager.backendr   ÚUpdateManager.UnitySupportr   ÚUpdateManager.Dialogsr   r   rv   r”   rX   r   ÚProgressBarr7   rU   r0   ÚmockÚMockÚoptionsÚdata_dirÚUpdateManager.UpdateManagerrÿ   ÚappÚbr°   Úmainrý   r%   r$   ú<module>r     sÉ   ðõ ç $Ý "÷õ ÷
÷ 
õ 
õ 1Ý 3Ý /å  ã Û 	ô%Ð.ô %ôD'1˜CŸO™Oô '1ôTp˜n¨mô pðf ˆzÒÛàˆd�i‰i‹k€GØ*€Hå9á
˜ 'Ó
*€Cá  TÓ*€AØ‡H�HˆhˆZ˜˜RÔ Ø€C‡H�H…Jð r%   