--- a/UI/UserInterface.py Sun May 13 12:55:08 2018 +0200 +++ b/UI/UserInterface.py Sun May 13 12:57:00 2018 +0200 @@ -280,7 +280,7 @@ self.stdout = Redirector(False) self.stderr = Redirector(True) - # set a few dialog members for dialogs created on demand + # set a few dialog members for non-modal dialogs created on demand self.programsDialog = None self.shortcutsDialog = None self.unittestDialog = None @@ -291,6 +291,7 @@ self.replaceFilesDialog = None self.__notification = None self.__readingSession = False + self.__versionsDialog = None # now setup the connections splash.showMessage(self.tr("Setting up connections...")) @@ -540,6 +541,11 @@ else: self.dummyHelpViewer = None + # redirect handling of http and https URLs to ourselves + if WEBENGINE_AVAILABLE or WEBKIT_AVAILABLE: + QDesktopServices.setUrlHandler("http", self.handleUrl) + QDesktopServices.setUrlHandler("https", self.handleUrl) + # register all relevant objects splash.showMessage(self.tr("Registering Objects...")) e5App().registerObject("UserInterface", self) @@ -5422,15 +5428,30 @@ else: self.__customViewer(home) + @pyqtSlot(QUrl) + def handleUrl(self, url): + """ + Public slot to handle opening a URL. + + @param url URL to be shown + @type QUrl + """ + self.launchHelpViewer(url) + def launchHelpViewer(self, home, searchWord=None, useSingle=False): """ - Public slot to start the help viewer. - - @param home filename of file to be shown (string) - @keyparam searchWord word to search for (string) + Public slot to start the help viewer/web browser. + + @param home filename of file to be shown or URL to be opened + @type str or QUrl + @keyparam searchWord word to search for + @type str @keyparam useSingle flag indicating to use a single browser window - (boolean) - """ + @type bool + """ + if isinstance(home, QUrl): + home = home.toString(QUrl.None_) + if len(home) > 0: homeUrl = QUrl(home) if not homeUrl.scheme(): @@ -6692,7 +6713,17 @@ line += 2 versionText += self.tr("""</table>""") - E5MessageBox.about(self, Program, versionText) + self.__versionsDialog = E5MessageBox.E5MessageBox( + E5MessageBox.NoIcon, + Program, + versionText, + modal=False, + buttons=E5MessageBox.Ok, + parent=self + ) + self.__versionsDialog.setIconPixmap( + UI.PixmapCache.getPixmap("eric.png").scaled(64, 64)) + self.__versionsDialog.show() def __sslErrors(self, reply, errors): """