def __set_pypi_addons(self, items): self.__pypi_addons = items self._log.debug("Got pypi packages: %r", self.__pypi_addons) items = addons.installable_items( self.__pypi_addons, [ep.dist for ep in oasysconf.addon_entry_points()]) self.__updatable = sum(addons.is_updatable(item) for item in items)
def open_addons(self): """Open the add-on manager dialog. """ if not hasattr(self, "__f_pypi_addons") or self.__f_pypi_addons is None: self.__f_pypi_addons = self.__executor.submit( addons.pypi_search, oasysconf.addon_pypi_search_spec(), timeout=20, ) dlg = addons.AddonManagerDialog( self, windowTitle=self.tr("Add-ons"), modal=True) dlg.setAttribute(Qt.WA_DeleteOnClose) if not hasattr(self, "__addon_items") or self.__addon_items is not None: pypi_distributions = self.__f_pypi_addons.result() installed = [ep.dist for ep in config.default.addon_entry_points()] items = addons.installable_items(pypi_distributions, installed) self.__addon_items = items dlg.setItems(items) else: # Use the dialog's own progress dialog progress = dlg.progressDialog() dlg.show() progress.show() progress.setLabelText( self.tr("Retrieving package list") ) self.__f_pypi_addons.add_done_callback( addons.method_queued(self.__on_pypi_search_done, (object,)) ) close_dialog = addons.method_queued(dlg.close, ()) self.__f_pypi_addons.add_done_callback( lambda f: close_dialog() if f.exception() else None) self.__p_addon_items_available.connect(progress.hide) self.__p_addon_items_available.connect(dlg.setItems) return dlg.exec_()