Skip to content

Commit 62ce683

Browse files
authored
Merge pull request #2833 from ales-erjavec/fixes/addons-progress-dialog
[FIX] canvas/addons: Fix progress dialog showing up when not necessary
2 parents 551153a + d9f60a1 commit 62ce683

File tree

1 file changed

+30
-16
lines changed

1 file changed

+30
-16
lines changed

Orange/canvas/application/addons.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)