--- a/eric6_browser.py Sat Dec 01 11:45:24 2018 +0100 +++ b/eric6_browser.py Thu Jan 10 14:22:59 2019 +0100 @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- -# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de> # """ @@ -37,16 +37,17 @@ if qVersionTuple() < (5, 6, 0): - from PyQt5.QtCore import QTimer - from PyQt5.QtWidgets import QApplication - from E5Gui import E5MessageBox - app = QApplication([]) - QTimer.singleShot(0, lambda: E5MessageBox.critical( - None, - "eric6 Web Browser", - "You need at least Qt Version 5.6.0 to execute the web browser.") - ) - app.exec_() + if "--quiet" not in sys.argv: + from PyQt5.QtCore import QTimer + from PyQt5.QtWidgets import QApplication + from E5Gui import E5MessageBox + app = QApplication([]) + QTimer.singleShot(0, lambda: E5MessageBox.critical( + None, + "eric6 Web Browser", + "You need at least Qt Version 5.6.0 to execute the web browser.") + ) + app.exec_() sys.exit(100) SettingsDir = None @@ -75,47 +76,69 @@ try: from PyQt5 import QtWebEngineWidgets # __IGNORE_WARNING__ except ImportError: - from PyQt5.QtCore import QTimer - from PyQt5.QtWidgets import QApplication - from E5Gui import E5MessageBox # __IGNORE_WARNING__ - app = QApplication([]) - QTimer.singleShot(0, lambda: E5MessageBox.critical( - None, - "eric6 Web Browser", - "QtWebEngineWidgets is not installed but needed to execute the" - " web browser.")) - app.exec_() + if "--quiet" not in sys.argv: + from PyQt5.QtCore import QTimer + from PyQt5.QtWidgets import QApplication + from E5Gui import E5MessageBox # __IGNORE_WARNING__ + app = QApplication([]) + QTimer.singleShot(0, lambda: E5MessageBox.critical( + None, + "eric6 Web Browser", + "QtWebEngineWidgets is not installed but needed to execute the" + " web browser.")) + app.exec_() sys.exit(100) import Globals from Globals import AppInfo +from E5Gui.E5Application import E5Application + from Toolbox import Startup +from WebBrowser.WebBrowserSingleApplication import \ + WebBrowserSingleApplicationClient + def createMainWidget(argv): """ Function to create the main widget. - @param argv list of commandline parameters (list of strings) - @return reference to the main widget (QWidget) + @param argv list of command line parameters + @type list of str + @return reference to the main widget + @rtype QWidget """ from WebBrowser.WebBrowserWindow import WebBrowserWindow searchWord = None private = False qthelp = False + single = False + name = "" for arg in reversed(argv): if arg.startswith("--search="): searchWord = argv[1].split("=", 1)[1] argv.remove(arg) + elif arg.startswith("--name="): + name = arg.replace("--name=", "") + argv.remove(arg) + elif arg.startswith("--newtab="): + # only used for single application client + argv.remove(arg) elif arg == "--private": private = True argv.remove(arg) elif arg == "--qthelp": qthelp = True argv.remove(arg) + elif arg == "--quiet": + # only needed until we reach this point + argv.remove(arg) + elif arg == "--single": + single = True + argv.remove(arg) elif arg.startswith("--"): argv.remove(arg) @@ -126,7 +149,8 @@ browser = WebBrowserWindow(home, '.', None, 'web_browser', searchWord=searchWord, private=private, - settingsDir=SettingsDir, qthelp=qthelp) + settingsDir=SettingsDir, qthelp=qthelp, + single=single, saname=name) return browser @@ -139,9 +163,11 @@ "use the given directory as the one containing the config files"), ("--private", "start the browser in private browsing mode"), ("--qthelp", "start the browser with support for QtHelp"), + ("--quiet", "don't show any startup error messages"), ("--search=word", "search for the given word"), ("--settings=settingsDir", "use the given directory to store the settings files"), + ("--single", "start the browser as a single application"), ] appinfo = AppInfo.makeAppInfo(sys.argv, "eric6 Web Browser", @@ -152,10 +178,27 @@ if not Globals.checkBlacklistedVersions(): sys.exit(100) + # set the library paths for plugins + Startup.setLibraryPaths() + + app = E5Application(sys.argv) + if "--private" not in sys.argv: + client = WebBrowserSingleApplicationClient() + res = client.connect() + if res > 0: + if len(sys.argv) > 1: + client.processArgs(sys.argv[1:]) + sys.exit(0) + elif res < 0: + print("eric6_browser: {0}".format(client.errstr())) + # __IGNORE_WARNING_M801__ + sys.exit(res) + res = Startup.simpleAppStartup(sys.argv, appinfo, createMainWidget, - installErrorHandler=True) + installErrorHandler=True, + app=app) sys.exit(res) if __name__ == '__main__':