def _installGPG(self, phase=0, dt=None): if getPlatform() == PLATFORM_MAC: # TODO handle errors if phase == 0: self._ui.setInteractive(False) self._setStatus("Searching for latest version...") dt = DownloadThread(getValidQtParent(), self.logger, "https://gpgtools.org/releases/macgpg2/appcast.xml") dt.success.connect(partial(self._install_gpg_finished, 0)) dt.error.connect(partial(self._install_gpg_failed, 0)) dt.start() elif phase == 1: xmlContent = dt.getResult() dt.close() e = ElementTree.fromstring(xmlContent) dmgURL = e.iter("channel").next().iter("item").next().iter("enclosure").next().attrib["url"] tmpFile = tempfile.NamedTemporaryFile(suffix=".dmg", prefix="macgpg", delete=False) self.logger.debug("Downloading %s to %s", dmgURL, tmpFile.name) self._setStatus("Downloading MacGPG...", progress=True) self._ui.setProgress(0) dt = DownloadThread(getValidQtParent(), self.logger, dmgURL, target=tmpFile, progress=True) dt.success.connect(partial(self._install_gpg_finished, 1)) dt.error.connect(partial(self._install_gpg_failed, 1)) dt.progressChanged.connect(self._downloadProgressChanged) dt.start() elif phase == 2: # indeterminate self._ui.setProgressIndeterminate(True) self._setStatus("Installing MacGPG...", progress=True) dmgFile = dt.target.name dt.close() st = ShellThread(getValidQtParent(), self.logger, [get_settings().get_resource('bin', 'mac_gpg_installer.sh'), dmgFile], context=dmgFile, quiet=False) st.finished.connect(partial(self._install_gpg_finished, 2)) st.start() elif phase == 3: dmgFile = dt.context if os.path.exists(dmgFile): os.remove(dmgFile) self._ui.setProgressIndeterminate(False) if dt.exitCode == 0: self._setStatus("MacGPG installed successfully.") else: self._setStatus("Error installing MacGPG.", err=True) if dt.pErr: self.logger.error("Error installing MacGPG.\nConsole output: %s", dt.pErr.strip()) self._updateCheckButtonText() self._ui.setInteractive(True)