
    G@dR,                     .   d Z ddlZddlZddlZddl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 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ  ej        e          ZeZ ed
          Z ed          Z  ed          Z! ed          Z" ed          Z# ed          Z$ ed          Z%e ed          e  ed          e! ed          e" ed          e# ed          e$ ed          e% ed          iZ& G d de          Z' G d de	          Z(dS )zUpdate installation widgets.    N)QtQThreadSignal)QDialogQHBoxLayoutQMessageBoxQLabelQProgressBarQPushButtonQVBoxLayoutQWidget)__version__)_)
is_pynsist)ima)WorkerDownloadInstallerzDownloading updatezDownload finishedzInstalling updatezInstallation finishedzUpdate availablezChecking for updateszCancelled updatezDownloading Spyder {version}z%Finished downloading Spyder {version}zInstalling Spyder {version}z$Finished installing Spyder {version}z&Spyder {version} available to downloadzChecking for new Spyder versionzSpyder update cancelledc                   .     e Zd ZdZ fdZd Zd Z xZS )UpdateInstallationz$Update progress installation widget.c                 (   t                                          |           t                      }t                      }t	          |           | _        | j                            d           t          |           | _        | j        	                    d           t                      | _        | j                            t          j        d                     | j                            d           | j        	                    d           |                    | j        t           j                   |                    | j                   |                    t           j                   | j                            |           t+          t-          d                    | _        t+          t-          d                    | _        t                      }t          t-          d                    | _        |                                 |                    | j                   |                                 |                                 |                    | j                   |                    | j                   |                    | j                   |                    d	           |                    |           |                                 t                      }|                    |           |                     |           d S )
N2      DialogCloseButton   )	alignmentDownloadingzDownloading Spyder update <br>OK
   )super__init__r   r   r   _progress_widgetsetFixedHeightr
   _progress_barsetFixedWidthr   cancel_buttonsetIconr   icon	addWidgetr   	AlignLeftsetAlignmentAlignVCenter	setLayoutr	   r   _progress_labelinstall_info	ok_button
addStretch
addSpacing	addLayout)selfparentaction_layoutprogress_layoutbutton_layoutgeneral_layout	__class__s         Jlib/python3.11/site-packages/spyder/plugins/application/widgets/install.pyr   zUpdateInstallation.__init__6   s      #%-- ',,R000)$//((---(]]""38,?#@#@AAA))"---((,,,!!$"4!MMM!!$"4555$$R_555''888%a&6&677".//1 1 $$QtWW--  """///  """  """ 4555 5666 1222  $$$...  """ %  ///~&&&&&    c                 0   | j                             |           | j                            t          |                             |                     |t
          k    r7| j                            dd           | j        	                    d           dS dS )z?Update installation status (downloading, installing, finished).)versionr   FN)
r,   setTextr-   INSTALL_INFO_MESSAGESformat
INSTALLINGr"   setRanger$   
setEnabled)r2   statuslatest_versions      r9   update_installation_statusz-UpdateInstallation.update_installation_status_   s    $$V,,,!!"7"?"F"F" #G #$ #$ 	% 	% 	%Z''1---))%00000  r:   c                 n    | j                             |           | j                             |           dS )z!Update installation progress bar.N)r"   
setMaximumsetValue)r2   current_valuetotals      r9   update_installation_progressz/UpdateInstallation.update_installation_progressh   s6    %%e,,,##M22222r:   )__name__
__module____qualname____doc__r   rE   rK   __classcell__r8   s   @r9   r   r   3   s]        ..'' '' '' '' ''R1 1 13 3 3 3 3 3 3r:   r   c                        e Zd ZdZ eee          Z	  eee          Z	  ee          Z		  fdZ
 fdZd Zd Zd Zd Zd Zd	 Zd
 Zd ZefdZd Z xZS )UpdateInstallerDialogzUpdate installer dialog.c                    d| _         t          | _        d | _        d | _        d | _        t                                          |           |                     t          j
        t          j        z             || _        t          |           | _        d| _        t!                      }|                    | j                   |                     |           | j                            | j        j                   | j                            | j        j                   | j        j        j                            | j                   | j        j        j                            | j                   |                                  d S )NF )	cancelled	NO_STATUSrC   download_threaddownload_workerinstaller_pathr   r   setWindowFlagsr   DialogMSWindowsFixedSizeDialogHint_parentr   _installation_widgetlatest_release_versionr   r'   r+   sig_download_progressconnectrK   sig_installation_statusrE   r.   clickedclose_installerr$   cancel_installationsetup)r2   r3   installer_layoutr8   s      r9   r   zUpdateInstallerDialog.__init__   sg   ##"   BI(GGHHH$6t$<$<!&(# '==""4#<==='((( 	"**%B	D 	D 	D$,,%@	B 	B 	B 	!+3;; 	" 	" 	"!/7??$	& 	& 	& 	

r:   c                     | j                                         }|r|                                  dS t                                                       dS )zReimplemented Qt method.N)r_   	isVisiblere   r   reject)r2   on_installation_widgetr8   s     r9   rk   zUpdateInstallerDialog.reject   sR    !%!:!D!D!F!F! 	  """""GGNNr:   c                 b    | j                             d           |                                  dS )zSetup visibility of widgets.TN)r_   
setVisible
adjustSizer2   s    r9   rg   zUpdateInstallerDialog.setup   s/    !,,T222r:   c                     || _         d S )N)r`   r2   r`   s     r9   save_latest_releasez)UpdateInstallerDialog.save_latest_release   s    &<###r:   c                 b   || _         d| _        |                     t                     t	          d          | _        t          | | j                   | _        | j        j        	                    | j
                   | j        j        	                    | j        j                   | j        j        	                    | j        j                   | j                            | j                   | j        j        	                    | j        j                   | j                                         dS )z8Start downloading the update and set downloading status.FrC   N)r`   rV   "_change_update_installation_statusDOWNLOADING_INSTALLERr   rX   r   rY   	sig_readyrb   confirm_installationquitra   emitmoveToThreadstartedstartrr   s     r9   start_installationz(UpdateInstallerDialog.start_installation   s   &<#//( 	0 	* 	* 	*&t}}6$- /  /&..t/HIII&..t/C/HIII2::&+	- 	- 	-))$*>???$,,T-A-GHHH""$$$$$r:   c                    t          j        | j        dt          d          t           j        t           j                  }|t           j        k    r1d| _        |                                  |                                  dS dS )z$Cancel the installation in progress.Spyderz<Do you really want to cancel the Spyder update installation?TF)	r   criticalr^   r   YesNorV   _cancel_downloadfinish_installationr2   replys     r9   rf   z)UpdateInstallerDialog.cancel_installation   st    $L(LMMO[^- - KO##!DN!!###$$&&&4ur:   c                    t          t           j        t          d          | j                  }|                    d           |                    t          j                   |                    t           j	        t           j
        z             |                                 |                                t           j	        k    r|                     | j                   dS |                     t                      dS )zx
        Continue the installation in progress.

        Download the installer if needed or prompt to install.
        z>Would you like to update Spyder to the latest version?<br><br>r&   textr3   r   ru   N)r   Questionr   r^   setWindowTitlesetAttributer   WA_ShowWithoutActivatingsetStandardButtonsr   r   exec_resultr   r`   rv   PENDINGr   s     r9   continue_installationz+UpdateInstallerDialog.continue_installation   s     !5!" $. "/ "/ $(<	1 1 1
 	X&&&26777  ;>!ABBB<<>>[_,,##D$?@@@@@3373CCCCCr:   c                 n   | j         rdS |                     t                     || _        t	          t          j        t          d          | j                  }|                    t          d                     |	                    t          j                   t                      r |                    t          j                  }nd}|                    t          d          t          j                  }|                    t          j                   |                                 |                                |k    r|                     t&                     t(          j        dk    rdnd	}| j        r0t-          j        d
                    || j        g          d           |                     t2                     dS |                                |k    r<| j                            | j                   |                     t2                     dS |                     t2                     dS )zQ
        Ask users if they want to proceed with the installer execution.
        Nru   z8Would you like to proceed with the installation?<br><br>r   zSpyder updatezAfter closingntr~   open T)shell)rV   rv   DOWNLOAD_FINISHEDrZ   r   r   r   r^   r   r   r   r   r   	addButtonr   YesRoler   r   clickedButtonr@   osname
subprocessPopenjoinr   sig_install_on_close_requestedr{   )r2   rZ   msg_box
yes_buttonafter_closing_buttoncmds         r9   ry   z*UpdateInstallerDialog.confirm_installation   s    > 	F//7H/III,%MNN<
 
 

 	q11222R8999<< 	 !**;?;;JJJ&00o 3 5  5+.)))  ""j0033:3FFF goo776C"  HHc4#6788    3373CCCCC""$$(<<</44T5HIII3373CCCCC3373CCCCCr:   c                 V    |                                   |                                  dS )zHandle finished installation.N)rg   acceptrp   s    r9   r   z)UpdateInstallerDialog.finish_installation  s     

r:   c                     | j         t          k    s| j         t          k    r|                                  dS |                                  dS )zClose the installation dialog.N)rC   FINISHED	CANCELLEDr   hiderp   s    r9   re   z%UpdateInstallerDialog.close_installer#  sG     K8##{i''$$&&&&&IIKKKKKr:   c                 ,   t                               d|            || _        |t          k    r|                                  n*|t
          k    s|t          k    r|                                  | j        	                    | j        | j
                   dS )zSet the installation status.zInstallation status: N)loggerdebugrC   r   re   r   r   r   rc   r{   r`   )r2   rC   s     r9   rv   z8UpdateInstallerDialog._change_update_installation_status-  s    5V55666&&&  """"x6W#4#4$$&&&$))K4	6 	6 	6 	6 	6r:   c                     |                      t                     d| j        _        | j                                         | j                                         |                      t                     d S )Nru   T)rv   r   rY   rV   rX   rz   waitr   rp   s    r9   r   z&UpdateInstallerDialog._cancel_download8  sk    //y/AAA)-&!!###!!###//w/?????r:   )rL   rM   rN   rO   r   intra   strrc   r   r   rk   rg   rs   r   rf   r   ry   r   re   rW   rv   r   rP   rQ   s   @r9   rS   rS   n   sL       """F3,,	 %fS#..	 &,VC[["    @      
= = =% % %"  D D D('D 'D 'DR  
   9B 	6 	6 	6 	6@ @ @ @ @ @ @r:   rS   ))rO   loggingr   r   qtpy.QtCorer   r   r   qtpy.QtWidgetsr   r   r   r	   r
   r   r   r   spyderr   spyder.api.translationsr   spyder.config.baser   spyder.utils.icon_managerr   spyder.workers.updatesr   	getLoggerrL   r   rW   rw   r   r@   r   r   CHECKINGr   r>   r   rS    r:   r9   <module>r      s   # "  				     , + + + + + + + + +% % % % % % % % % % % % % % % % % % % %
       % % % % % % ) ) ) ) ) ) ) ) ) ) ) ) : : : : : : 
	8	$	$ 	.// A)** Q"##
1$%%
!

1#$$A !!	 11;<<qq@AA/00aa677QQ788aa122qq*++ 83 83 83 83 83 83 83 83vO@ O@ O@ O@ O@G O@ O@ O@ O@ O@r:   