WebBrowser/WebBrowserWindow.py

changeset 6623
c0882a599e18
parent 6413
fbb7671f4564
child 6625
a67fee7bc09c
diff -r 3dfcbe478fd3 -r c0882a599e18 WebBrowser/WebBrowserWindow.py
--- a/WebBrowser/WebBrowserWindow.py	Sun Dec 09 15:24:39 2018 +0100
+++ b/WebBrowser/WebBrowserWindow.py	Sun Dec 09 16:39:35 2018 +0100
@@ -59,6 +59,8 @@
 
 from .ZoomManager import ZoomManager
 
+from .WebBrowserSingleApplication import WebBrowserSingleApplicationServer
+
 from eric6config import getConfig
 
 
@@ -117,7 +119,7 @@
     def __init__(self, home, path, parent, name, fromEric=False,
                  initShortcutsOnly=False, searchWord=None,
                  private=False, qthelp=False, settingsDir="",
-                 restoreSession=False):
+                 restoreSession=False, single=False):
         """
         Constructor
         
@@ -145,6 +147,8 @@
         @type str
         @keyparam restoreSession flag indicating a restore session action
         @type bool
+        @param single flag indicating to start in single application mode
+        @type bool
         """
         self.__hideNavigationTimer = None
         
@@ -357,7 +361,8 @@
             syncMgr.syncError.connect(self.statusBar().showMessage)
             
             restoreSessionData = {}
-            if WebBrowserWindow._performingStartup and not home:
+            if WebBrowserWindow._performingStartup and not home and \
+                    not WebBrowserWindow.isPrivate():
                 startupBehavior = Preferences.getWebBrowser("StartupBehavior")
                 if not private and startupBehavior in [3, 4]:
                     if startupBehavior == 3:
@@ -383,7 +388,7 @@
                         home = "eric:speeddial"
             
             if not restoreSession:
-                self.__tabWidget.newBrowser(home)
+                self.__tabWidget.newBrowser(QUrl.fromUserInput(home))
                 self.__tabWidget.currentBrowser().setFocus()
             WebBrowserWindow._performingStartup = False
             
@@ -465,6 +470,13 @@
             
             self.__toolbarStates = self.saveState()
             
+            if single:
+                self.SAServer = WebBrowserSingleApplicationServer()
+                self.SAServer.loadUrl.connect(self.__saLoadUrl)
+                self.SAServer.search.connect(self.__saSearchWord)
+            else:
+                self.SAServer = None
+            
             self.__hideNavigationTimer = QTimer(self)
             self.__hideNavigationTimer.setInterval(1000)
             self.__hideNavigationTimer.setSingleShot(True)
@@ -472,11 +484,12 @@
             
             self.__forcedClose = False
             
-            if restoreSessionData:
+            if restoreSessionData and not WebBrowserWindow.isPrivate():
                 self.sessionManager().restoreSessionFromData(
                     self, restoreSessionData)
             
-            self.sessionManager().activateTimer()
+            if not WebBrowserWindow.isPrivate():
+                self.sessionManager().activateTimer()
             
             QTimer.singleShot(0, syncMgr.loadSettings)
             
@@ -2839,7 +2852,8 @@
         
         if not self.__fromEric:
             if not WebBrowserWindow._performingShutdown and \
-                    len(WebBrowserWindow.BrowserWindows) == 1:
+                len(WebBrowserWindow.BrowserWindows) == 1 and \
+                    not WebBrowserWindow.isPrivate():
                 # shut down the session manager in case the last window is
                 # about to be closed
                 self.sessionManager().shutdown()
@@ -2953,7 +2967,8 @@
         
         WebBrowserWindow._performingShutdown = True
         
-        self.sessionManager().shutdown()
+        if not WebBrowserWindow.isPrivate():
+            self.sessionManager().shutdown()
         
         if WebBrowserWindow._downloadManager is not None:
             self.downloadManager().shutdown()
@@ -3305,7 +3320,8 @@
         
         self.__javaScriptIcon.preferencesChanged()
         
-        self.sessionManager().preferencesChanged()
+        if not WebBrowserWindow.isPrivate():
+            self.sessionManager().preferencesChanged()
     
     def masterPasswordChanged(self, oldPassword, newPassword, local=False):
         """
@@ -4992,3 +5008,31 @@
         Private slot to show the safe browsing management dialog.
         """
         self.safeBrowsingManager().showSafeBrowsingDialog()
+    
+    ###############################################################
+    ## Methods below implement single application related functions
+    ###############################################################
+    
+    @pyqtSlot(str)
+    def __saLoadUrl(self, urlStr):
+        """
+        Private slot to load an URL received via the single application
+        protocol.
+        
+        @param urlStr URL to be loaded
+        @type str
+        """
+        url = QUrl.fromUserInput(urlStr)
+        self.__linkActivated(url)
+    
+    @pyqtSlot(str)
+    def __saSearchWord(self, word):
+        """
+        Private slot to search for the given word.
+        
+        @param word word to be searched for
+        @type str
+        """
+        if WebBrowserWindow._useQtHelp:
+            self.__searchWord = word
+            self.__searchForWord()

eric ide

mercurial