UI/UserInterface.py

changeset 6287
9a193ff6d24a
parent 6267
350655a6c85f
child 6291
94e0e688dcad
--- 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):
         """

eric ide

mercurial