@@ -476,22 +476,34 @@ def __init__(self, parent=None, **kwargs):
476476 method_queued (self ._set_packages , (object ,))
477477 )
478478
479- self .__progress = QProgressDialog (
480- self , Qt .Sheet ,
481- minimum = 0 , maximum = 0 ,
482- labelText = self .tr ("Retrieving package list" ),
483- sizeGripEnabled = False ,
484- windowTitle = "Progress"
485- )
486-
487- self .__progress .rejected .connect (self .reject )
479+ self .__progress = None # type: Optional[QProgressDialog]
488480 self .__thread = None
489481 self .__installer = None
490482
483+ if not self ._f_pypi_addons .done ():
484+ self .__progressDialog ()
485+
486+ def __progressDialog (self ):
487+ if self .__progress is None :
488+ self .__progress = QProgressDialog (
489+ self ,
490+ minimum = 0 , maximum = 0 ,
491+ labelText = self .tr ("Retrieving package list" ),
492+ sizeGripEnabled = False ,
493+ windowTitle = "Progress" ,
494+ )
495+ self .__progress .setWindowModality (Qt .WindowModal )
496+ self .__progress .canceled .connect (self .reject )
497+ self .__progress .hide ()
498+
499+ return self .__progress
500+
491501 @Slot (object )
492502 def _set_packages (self , f ):
493- if self .__progress .isVisible ():
494- self .__progress .close ()
503+ if self .__progress is not None :
504+ self .__progress .hide ()
505+ self .__progress .deleteLater ()
506+ self .__progress = None
495507
496508 try :
497509 packages = f .result ()
@@ -550,7 +562,7 @@ def _set_packages(self, f):
550562 def showEvent (self , event ):
551563 super ().showEvent (event )
552564
553- if not self ._f_pypi_addons .done ():
565+ if not self ._f_pypi_addons .done () and self . __progress is not None :
554566 QTimer .singleShot (0 , self .__progress .show )
555567
556568 def done (self , retcode ):
@@ -563,6 +575,8 @@ def done(self, retcode):
563575
564576 def closeEvent (self , event ):
565577 super ().closeEvent (event )
578+ if self .__progress is not None :
579+ self .__progress .hide ()
566580 self ._f_pypi_addons .cancel ()
567581 self ._executor .shutdown (wait = False )
568582
@@ -613,11 +627,11 @@ def __accepted(self):
613627 self .__installer .moveToThread (self .__thread )
614628 self .__installer .finished .connect (self .__on_installer_finished )
615629 self .__installer .error .connect (self .__on_installer_error )
616- self .__installer .installStatusChanged .connect (
617- self .__progress .setLabelText )
618630
619- self .__progress .show ()
620- self .__progress .setLabelText ("Installing" )
631+ progress = self .__progressDialog ()
632+ self .__installer .installStatusChanged .connect (progress .setLabelText )
633+ progress .show ()
634+ progress .setLabelText ("Installing" )
621635
622636 self .__installer .start ()
623637
0 commit comments