
    JeR,                        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j6                  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(y)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
                  j                  d       t        |       | _        | j                  j                  d       t               | _        | j                  j                  t        j                  d             | j                  j                  d       | j                  j                  d       |j                  | j                  t         j"                         |j                  | j                         |j%                  t         j&                         | j
                  j)                  |       t+        t-        d            | _        t+        t-        d            | _        t               }t        t-        d            | _        |j5                          |j                  | j2                         |j5                          |j5                          |j                  | j.                         |j                  | j
                         |j                  | j0                         |j7                  d	       |j9                  |       |j5                          t               }|j9                  |       | j)                  |       y )
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         L/usr/lib/python3/dist-packages/spyder/plugins/application/widgets/install.pyr   zUpdateInstallation.__init__6   s    #%- ',,R0)$/((-(]""388,?#@A))"-((,!!$"4"4!M!!$"4"45$$R__5''8%a&67"./1 $$QtW-  "/  "  " 4 45 5 56 1 12  $.  " %  /~&    c                     | j                   j                  |       | j                  j                  t        |   j	                  |             |t
        k(  r8| j                  j                  dd       | j                  j                  d       yy)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  r:   c                 p    | j                   j                  |       | j                   j                  |       y)z!Update installation progress bar.N)r"   
setMaximumsetValue)r2   current_valuetotals      r9   update_installation_progressz/UpdateInstallation.update_installation_progressh   s*    %%e,##M2r:   )__name__
__module____qualname____doc__r   rE   rK   __classcell__r8   s   @r9   r   r   3   s    .''R1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        |   |       | j                  t        j                  t        j                  z         || _        t        |       | _        d| _        t!               }|j#                  | j                         | j%                  |       | j&                  j)                  | j                  j*                         | j,                  j)                  | j                  j.                         | j                  j0                  j2                  j)                  | j4                         | j                  j6                  j2                  j)                  | j8                         | j;                          y )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__   sC   ##" BII(G(GGH$6t$<!&(# '=""4#<#<='( 	""**%%BB	D$$,,%%@@	B 	!!++33;;  	"!!//77??$$	& 	

r:   c                 |    | j                   j                         }|r| j                          yt        |           y)zReimplemented Qt method.N)r_   	isVisiblere   r   reject)r2   on_installation_widgetr8   s     r9   rk   zUpdateInstallerDialog.reject   s1    !%!:!:!D!D!F!  "GNr:   c                 Z    | j                   j                  d       | j                          y)zSetup visibility of widgets.TN)r_   
setVisible
adjustSizer2   s    r9   rg   zUpdateInstallerDialog.setup   s     !!,,T2r:   c                     || _         y )N)r`   r2   r`   s     r9   save_latest_releasez)UpdateInstallerDialog.save_latest_release   s
    &<#r:   c                    || _         d| _        | j                  t               t	        d      | _        t        | | j                         | _        | j                  j                  j                  | j                         | j                  j                  j                  | j
                  j                         | j                  j                  j                  | j                  j                         | j                  j                  | j
                         | j
                  j                  j                  | j                  j                          | j
                  j!                          y)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/HI&&..t/C/C/H/HI22::&&++	-))$*>*>?$$,,T-A-A-G-GH""$r:   c                 
   t        j                  | j                  dt        d      t         j                  t         j
                        }|t         j                  k(  r(d| _        | j                          | j                          yy)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   sd    $$LL(LMOO[^^- KOO#!DN!!#$$&r:   c                    t        t         j                  t        d      | j                        }|j	                  d       |j                  t        j                         |j                  t         j                  t         j                  z         |j                          |j                         t         j                  k(  r| j                  | j                         y| j                  t                y)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!5!" $. "/ $(<<	1
 	X&2667  ;>>!AB<<>[__,##D$?$?@3373Cr:   c                 $   | j                   ry| j                  t               || _        t	        t        j
                  t        d      | j                        }|j                  t        d             |j                  t        j                         t               r |j                  t        j                        }nd}|j                  t        d      t        j                        }|j                  t        j                          |j#                          |j%                         |k(  r| j                  t&               t(        j*                  dk(  rdnd	}| j                  r2t-        j.                  d
j1                  || j                  g      d       | j                  t2               y|j%                         |k(  r<| j4                  j7                  | j                         | j                  t2               y| j                  t2               y)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    >>//7H/I,%%MN<<

 	q12R889< !**;??;JJ&00o 3 3 5+..)  "j033:3F ggo76C""  HHc4#6#678 3373C""$(<<//44T5H5HI3373C3373Cr:   c                 D    | j                          | j                          y)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| j                          y| j	                          y)zClose the installation dialog.N)rC   FINISHED	CANCELLEDr   hiderp   s    r9   re   z%UpdateInstallerDialog.close_installer#  s1     KK8#{{i'$$&IIKr:   c                    t         j                  d|        || _        |t        k(  r| j	                          n"|t
        k(  s	|t        k(  r| j                          | j                  j                  | j                  | j                         y)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-  sp    ,VH56&&  "x6W#4$$&$$))KK44	6r:   c                     | j                  t               d| j                  _        | j                  j                          | j                  j                          | j                  t               y )Nru   T)rv   r   rY   rV   rX   rz   waitr   rp   s    r9   r   z&UpdateInstallerDialog._cancel_download8  sV    //y/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   s    ""3,	 %S#.	 &,C["@
=%"D('DR
 9B 	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	$ 	./ )* "#
$%

#$ !	 1;<q@A/0a67Q78a12q*+ 83 83vO@G O@r:   