Merged with default branch to prepare release 19.01. maintenance release-19.01

Thu, 10 Jan 2019 14:22:59 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 10 Jan 2019 14:22:59 +0100
branch
maintenance
changeset 6646
51eefa621de4
parent 6603
77189681b787 (current diff)
parent 6645
ad476851d7e0 (diff)
child 6647
2a11e1b2dcbe

Merged with default branch to prepare release 19.01.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
DebugClients/Python/ThreadExtension.py file | annotate | diff | comparison | revisions
Debugger/DebugServer.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
E5Gui/E5TextEditSearchWidget.py file | annotate | diff | comparison | revisions
E5Gui/E5ZoomWidget.py file | annotate | diff | comparison | revisions
Graphics/UMLGraphicsView.py file | annotate | diff | comparison | revisions
Helpviewer/HelpBrowserWV.py file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py file | annotate | diff | comparison | revisions
Plugins/VcsPlugins/vcsMercurial/HgRevisionSelectionDialog.py file | annotate | diff | comparison | revisions
Plugins/ViewManagerPlugins/Listspace/Listspace.py file | annotate | diff | comparison | revisions
Plugins/ViewManagerPlugins/Tabview/Tabview.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationDialog.py file | annotate | diff | comparison | revisions
Preferences/ConfigurationPages/EditorAutocompletionPage.py file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
QScintilla/Shell.py file | annotate | diff | comparison | revisions
UI/Previewers/PreviewerHTML.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
WebBrowser/Download/DownloadItem.py file | annotate | diff | comparison | revisions
WebBrowser/Network/NetworkManager.py file | annotate | diff | comparison | revisions
WebBrowser/Network/QtHelpSchemeHandler.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
eric6.e4p file | annotate | diff | comparison | revisions
i18n/eric6_cs.ts file | annotate | diff | comparison | revisions
i18n/eric6_de.qm file | annotate | diff | comparison | revisions
i18n/eric6_de.ts file | annotate | diff | comparison | revisions
i18n/eric6_empty.ts file | annotate | diff | comparison | revisions
i18n/eric6_en.ts file | annotate | diff | comparison | revisions
i18n/eric6_es.qm file | annotate | diff | comparison | revisions
i18n/eric6_es.ts file | annotate | diff | comparison | revisions
i18n/eric6_fr.ts file | annotate | diff | comparison | revisions
i18n/eric6_it.ts file | annotate | diff | comparison | revisions
i18n/eric6_pt.ts file | annotate | diff | comparison | revisions
i18n/eric6_ru.qm file | annotate | diff | comparison | revisions
i18n/eric6_ru.ts file | annotate | diff | comparison | revisions
i18n/eric6_tr.ts file | annotate | diff | comparison | revisions
i18n/eric6_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Sat Dec 01 11:45:24 2018 +0100
+++ b/APIs/Python3/eric6.api	Thu Jan 10 14:22:59 2019 +0100
@@ -485,7 +485,7 @@
 eric6.Debugger.DebugServer.DebugServer.signalClientVariable?4(scope, variables)
 eric6.Debugger.DebugServer.DebugServer.signalClientVariables?4(scope, variables)
 eric6.Debugger.DebugServer.DebugServer.signalClientWatchConditionError?4(condition)
-eric6.Debugger.DebugServer.DebugServer.startClient?4(unplanned=True, clType=None, forProject=False, runInConsole=False, venvName="")
+eric6.Debugger.DebugServer.DebugServer.startClient?4(unplanned=True, clType=None, forProject=False, runInConsole=False, venvName="", workingDir=None)
 eric6.Debugger.DebugServer.DebugServer.unregisterDebuggerInterface?4(interfaceName)
 eric6.Debugger.DebugServer.DebugServer.utFinished?7
 eric6.Debugger.DebugServer.DebugServer.utPrepared?7
@@ -583,8 +583,8 @@
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.remoteWatchpointIgnore?4(cond, count)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.setCallTraceEnabled?4(on)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.shutdown?4()
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemote?4(port, runInConsole, venvName, originalPathString)
-eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemoteForProject?4(port, runInConsole, venvName, originalPathString)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemote?4(port, runInConsole, venvName, originalPathString, workingDir=None)
+eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone.startRemoteForProject?4(port, runInConsole, venvName, originalPathString, workingDir=None)
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone?1(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.createDebuggerInterfaceNone?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.getRegistryData?4()
@@ -625,8 +625,8 @@
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointIgnore?4(cond, count)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.setCallTraceEnabled?4(on)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.shutdown?4()
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole, venvName, originalPathString)
-eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole, venvName, originalPathString)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemote?4(port, runInConsole, venvName, originalPathString, workingDir=None)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole, venvName, originalPathString, workingDir=None)
 eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive, pythonVariant)
 eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython2?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython3?4(debugServer, passive)
@@ -1227,7 +1227,7 @@
 eric6.E5Gui.E5SimpleHelpDialog.E5SimpleHelpDialog?1(title="", label="", helpStr="", parent=None)
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationClient.processArgs?4(args)
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationClient?1()
-eric6.E5Gui.E5SingleApplication.E5SingleApplicationServer.handleCommand?4(cmd, params)
+eric6.E5Gui.E5SingleApplication.E5SingleApplicationServer.handleCommand?4(command, arguments)
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationServer?1()
 eric6.E5Gui.E5SingleApplication.SAArguments?7
 eric6.E5Gui.E5SingleApplication.SAFile?7
@@ -1593,6 +1593,7 @@
 eric6.E5XML.Config.projectFileFormatVersionIdl?7
 eric6.E5XML.Config.projectFileFormatVersionMake?7
 eric6.E5XML.Config.projectFileFormatVersionProto?7
+eric6.E5XML.Config.projectFileFormatVersionUic?7
 eric6.E5XML.Config.sessionFileFormatVersion?7
 eric6.E5XML.Config.shortcutsFileFormatVersion?7
 eric6.E5XML.Config.tasksFileFormatVersion?7
@@ -1630,7 +1631,7 @@
 eric6.E5XML.ShortcutsReader.ShortcutsReader.readXML?4()
 eric6.E5XML.ShortcutsReader.ShortcutsReader.supportedVersions?7
 eric6.E5XML.ShortcutsReader.ShortcutsReader?1(device)
-eric6.E5XML.ShortcutsWriter.ShortcutsWriter.writeXML?4()
+eric6.E5XML.ShortcutsWriter.ShortcutsWriter.writeXML?4(helpViewer=None)
 eric6.E5XML.ShortcutsWriter.ShortcutsWriter?1(device)
 eric6.E5XML.SpellCheckDictionariesReader.SpellCheckDictionariesReader.readXML?4()
 eric6.E5XML.SpellCheckDictionariesReader.SpellCheckDictionariesReader.supportedVersions?7
@@ -1704,6 +1705,7 @@
 eric6.Globals.getPyQtToolsPath?4(version=5)
 eric6.Globals.getPythonModulesDirectory?4()
 eric6.Globals.getQtBinariesPath?4()
+eric6.Globals.getWebBrowserSupport?4()
 eric6.Globals.isLinuxPlatform?4()
 eric6.Globals.isMacPlatform?4()
 eric6.Globals.isWindowsPlatform?4()
@@ -2563,6 +2565,19 @@
 eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.keyPressEvent?4(evt)
 eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget.linkActivated?7
 eric6.Helpviewer.HelpSearchWidget.HelpSearchWidget?1(engine, mainWindow, parent=None)
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationClient.processArgs?4(args, disconnect=True)
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationClient?1(name="")
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer.handleCommand?4(command, arguments)
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer.loadUrl?7
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer.newTab?7
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer.search?7
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer.shutdown?7
+eric6.Helpviewer.HelpSingleApplication.HelpSingleApplicationServer?1(name="")
+eric6.Helpviewer.HelpSingleApplication.SAFile?7
+eric6.Helpviewer.HelpSingleApplication.SALoadUrl?7
+eric6.Helpviewer.HelpSingleApplication.SANewTab?7
+eric6.Helpviewer.HelpSingleApplication.SASearch?7
+eric6.Helpviewer.HelpSingleApplication.SAShutdown?7
 eric6.Helpviewer.HelpSnap.renderTabPreview?4(page, w, h)
 eric6.Helpviewer.HelpTabBar.HelpTabBar.event?4(evt)
 eric6.Helpviewer.HelpTabBar.HelpTabBar.leaveEvent?4(evt)
@@ -2626,7 +2641,6 @@
 eric6.Helpviewer.HelpWindow.HelpWindow._featurePermissionManager?8
 eric6.Helpviewer.HelpWindow.HelpWindow._feedsManager?8
 eric6.Helpviewer.HelpWindow.HelpWindow._flashCookieManager?8
-eric6.Helpviewer.HelpWindow.HelpWindow._fromEric?8
 eric6.Helpviewer.HelpWindow.HelpWindow._greaseMonkeyManager?8
 eric6.Helpviewer.HelpWindow.HelpWindow._helpEngine?8
 eric6.Helpviewer.HelpWindow.HelpWindow._historyManager?8
@@ -2655,6 +2669,7 @@
 eric6.Helpviewer.HelpWindow.HelpWindow.feedsManager?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.flashCookieManager?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.getActions?4()
+eric6.Helpviewer.HelpWindow.HelpWindow.getActionsCategory?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.getQtHelpCollectionFileName?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.getSourceFileList?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.getWindow?4()
@@ -2699,7 +2714,7 @@
 eric6.Helpviewer.HelpWindow.HelpWindow.userAgentsManager?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.zoomManager?4()
 eric6.Helpviewer.HelpWindow.HelpWindow.zoomTextOnlyChanged?7
-eric6.Helpviewer.HelpWindow.HelpWindow?1(home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None)
+eric6.Helpviewer.HelpWindow.HelpWindow?1(home, path, parent, name, searchWord=None, qthelp=False, single=False, saname="")
 eric6.Helpviewer.History.HistoryCompleter.HistoryCompleter.pathFromIndex?4(idx)
 eric6.Helpviewer.History.HistoryCompleter.HistoryCompleter.splitPath?4(path)
 eric6.Helpviewer.History.HistoryCompleter.HistoryCompleter?1(model, parent=None)
@@ -3937,6 +3952,7 @@
 eric6.PluginManager.PluginManager.PluginManager.isPluginActive?4(pluginName)
 eric6.PluginManager.PluginManager.PluginManager.isPluginLoaded?4(pluginName)
 eric6.PluginManager.PluginManager.PluginManager.isValidPluginName?4(pluginName)
+eric6.PluginManager.PluginManager.PluginManager.loadDocumentationSetPlugins?4()
 eric6.PluginManager.PluginManager.PluginManager.loadPlugin?4(name, directory, reload_=False)
 eric6.PluginManager.PluginManager.PluginManager.pluginAboutToBeActivated?7
 eric6.PluginManager.PluginManager.PluginManager.pluginAboutToBeDeactivated?7
@@ -3968,6 +3984,7 @@
 eric6.PluginManager.PluginRepositoryDialog.PluginRepositoryWidget.on_repositoryUrlEditButton_toggled?4(checked)
 eric6.PluginManager.PluginRepositoryDialog.PluginRepositoryWidget?1(pluginManager, parent=None)
 eric6.PluginManager.PluginRepositoryDialog.PluginRepositoryWindow?1(parent=None)
+eric6.PluginManager.PluginRepositoryDialog.registerPlugin?4(name, short, description, url, author, version, filename, status)
 eric6.PluginManager.PluginUninstallDialog.PluginUninstallDialog?1(pluginManager, parent=None)
 eric6.PluginManager.PluginUninstallDialog.PluginUninstallWidget.accepted?7
 eric6.PluginManager.PluginUninstallDialog.PluginUninstallWidget.on_buttonBox_accepted?4()
@@ -4894,6 +4911,7 @@
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getDefaultEnvironmentString?4()
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getMenu?4(name)
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getMenuNames?4()
+eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getProjectEnvironmentString?4()
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getVirtualenvInterpreter?4(venvName)
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.getVirtualenvNames?4()
 eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.Pip.initActions?4()
@@ -7176,7 +7194,7 @@
 eric6.Preferences.ConfigurationDialog.ConfigurationDialog.preferencesChanged?7
 eric6.Preferences.ConfigurationDialog.ConfigurationDialog.setPreferences?4()
 eric6.Preferences.ConfigurationDialog.ConfigurationDialog.showConfigurationPageByName?4(pageName)
-eric6.Preferences.ConfigurationDialog.ConfigurationDialog?1(parent=None, name=None, modal=False, fromEric=True, displayMode=ConfigurationWidget.DefaultMode, expandedEntries=None, webEngine=False)
+eric6.Preferences.ConfigurationDialog.ConfigurationDialog?1(parent=None, name=None, modal=False, fromEric=True, displayMode=ConfigurationWidget.DefaultMode, expandedEntries=None)
 eric6.Preferences.ConfigurationDialog.ConfigurationPageItem.getPageName?4()
 eric6.Preferences.ConfigurationDialog.ConfigurationPageItem?1(parent, text, pageName, iconFile)
 eric6.Preferences.ConfigurationDialog.ConfigurationWidget.DefaultMode?7
@@ -7202,10 +7220,10 @@
 eric6.Preferences.ConfigurationDialog.ConfigurationWidget.rejected?7
 eric6.Preferences.ConfigurationDialog.ConfigurationWidget.setPreferences?4()
 eric6.Preferences.ConfigurationDialog.ConfigurationWidget.showConfigurationPageByName?4(pageName, setCurrent=True)
-eric6.Preferences.ConfigurationDialog.ConfigurationWidget?1(parent=None, fromEric=True, displayMode=DefaultMode, expandedEntries=None, webEngine=False)
+eric6.Preferences.ConfigurationDialog.ConfigurationWidget?1(parent=None, fromEric=True, displayMode=DefaultMode, expandedEntries=None)
 eric6.Preferences.ConfigurationDialog.ConfigurationWindow.accept?4()
 eric6.Preferences.ConfigurationDialog.ConfigurationWindow.showConfigurationPageByName?4(pageName)
-eric6.Preferences.ConfigurationDialog.ConfigurationWindow?1(parent=None, webEngine=False)
+eric6.Preferences.ConfigurationDialog.ConfigurationWindow?1(parent=None)
 eric6.Preferences.ConfigurationPages.ApplicationPage.ApplicationPage.save?4()
 eric6.Preferences.ConfigurationPages.ApplicationPage.ApplicationPage?1()
 eric6.Preferences.ConfigurationPages.ApplicationPage.create?4(dlg)
@@ -7613,11 +7631,11 @@
 eric6.Preferences.ShortcutDialog.ShortcutDialog.setKeys?4(key, alternateKey, noCheck, objectType)
 eric6.Preferences.ShortcutDialog.ShortcutDialog.shortcutChanged?7
 eric6.Preferences.ShortcutDialog.ShortcutDialog?1(parent=None, name=None, modal=False)
-eric6.Preferences.Shortcuts.exportShortcuts?4(fn)
-eric6.Preferences.Shortcuts.importShortcuts?4(fn)
-eric6.Preferences.Shortcuts.readShortcuts?4(prefClass=Prefs, helpViewer=None, pluginName=None, helpViewerCategory="")
-eric6.Preferences.Shortcuts.saveShortcuts?4(prefClass=Prefs)
-eric6.Preferences.Shortcuts.setActions?4(shortcuts)
+eric6.Preferences.Shortcuts.exportShortcuts?4(fn, helpViewer=None)
+eric6.Preferences.Shortcuts.importShortcuts?4(fn, helpViewer=None)
+eric6.Preferences.Shortcuts.readShortcuts?4(prefClass=Prefs, helpViewer=None, pluginName=None)
+eric6.Preferences.Shortcuts.saveShortcuts?4(prefClass=Prefs, helpViewer=None)
+eric6.Preferences.Shortcuts.setActions?4(shortcuts, helpViewer=None)
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.noCheckRole?7
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.objectNameRole?7
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.objectTypeRole?7
@@ -7628,9 +7646,9 @@
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.on_shortcutsList_itemChanged?4(itm, column)
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.on_shortcutsList_itemClicked?4(itm, column)
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.on_shortcutsList_itemDoubleClicked?4(itm, column)
-eric6.Preferences.ShortcutsDialog.ShortcutsDialog.populate?4()
+eric6.Preferences.ShortcutsDialog.ShortcutsDialog.populate?4(helpViewer=None)
 eric6.Preferences.ShortcutsDialog.ShortcutsDialog.updateShortcuts?7
-eric6.Preferences.ShortcutsDialog.ShortcutsDialog?1(parent=None, name=None, modal=False)
+eric6.Preferences.ShortcutsDialog.ShortcutsDialog?1(parent=None)
 eric6.Preferences.ToolConfigurationDialog.ToolConfigurationDialog.getToollist?4()
 eric6.Preferences.ToolConfigurationDialog.ToolConfigurationDialog.on_addButton_clicked?4()
 eric6.Preferences.ToolConfigurationDialog.ToolConfigurationDialog.on_argumentsEdit_textChanged?4(text)
@@ -7886,6 +7904,7 @@
 eric6.Project.Project.Project.getData?4(category, key)
 eric6.Project.Project.Project.getDebugProperty?4(key)
 eric6.Project.Project.Project.getDebuggerFilters?4(language)
+eric6.Project.Project.Project.getDefaultRccCompilerParameters?4()
 eric6.Project.Project.Project.getDefaultSourceExtension?4()
 eric6.Project.Project.Project.getEditorLexerAssoc?4(filename)
 eric6.Project.Project.Project.getEolString?4()
@@ -7921,6 +7940,7 @@
 eric6.Project.Project.Project.handlePreferencesChanged?4()
 eric6.Project.Project.Project.hasDefaultIdlCompilerParameters?4()
 eric6.Project.Project.Project.hasDefaultMakeParameters?4()
+eric6.Project.Project.Project.hasDefaultRccCompilerParameters?4()
 eric6.Project.Project.Project.hasDefaultUicCompilerParameters?4()
 eric6.Project.Project.Project.hasEntry?4(fn)
 eric6.Project.Project.Project.hasProjectType?4(type_, progLanguage="")
@@ -8202,6 +8222,8 @@
 eric6.Project.QuickFindFileDialog.QuickFindFileDialog.show?4()
 eric6.Project.QuickFindFileDialog.QuickFindFileDialog.sourceFile?7
 eric6.Project.QuickFindFileDialog.QuickFindFileDialog?1(project, parent=None)
+eric6.Project.RccCompilerOptionsDialog.RccCompilerOptionsDialog.getData?4()
+eric6.Project.RccCompilerOptionsDialog.RccCompilerOptionsDialog?1(compilerOptions, parent=None)
 eric6.Project.SpellingPropertiesDialog.SpellingPropertiesDialog.initDialog?4()
 eric6.Project.SpellingPropertiesDialog.SpellingPropertiesDialog.storeData?4()
 eric6.Project.SpellingPropertiesDialog.SpellingPropertiesDialog?1(project, new, parent)
@@ -9488,13 +9510,13 @@
 eric6.Toolbox.PyQt4ImportHook.PyQt4Importer.find_module?4(fullname, path=None)
 eric6.Toolbox.PyQt4ImportHook.PyQt4Importer.load_module?4(fullname)
 eric6.Toolbox.PyQt4ImportHook.PyQt4Importer?1()
-eric6.Toolbox.SingleApplication.SingleApplicationClient.connect?4()
+eric6.Toolbox.SingleApplication.SingleApplicationClient.connect?4(timeout=10000)
 eric6.Toolbox.SingleApplication.SingleApplicationClient.disconnect?4()
 eric6.Toolbox.SingleApplication.SingleApplicationClient.errstr?4()
 eric6.Toolbox.SingleApplication.SingleApplicationClient.processArgs?4(args)
-eric6.Toolbox.SingleApplication.SingleApplicationClient.sendCommand?4(cmd)
+eric6.Toolbox.SingleApplication.SingleApplicationClient.sendCommand?4(command, arguments)
 eric6.Toolbox.SingleApplication.SingleApplicationClient?1(name)
-eric6.Toolbox.SingleApplication.SingleApplicationServer.handleCommand?4(cmd, params)
+eric6.Toolbox.SingleApplication.SingleApplicationServer.handleCommand?4(command, arguments)
 eric6.Toolbox.SingleApplication.SingleApplicationServer.shutdown?4()
 eric6.Toolbox.SingleApplication.SingleApplicationServer?1(name)
 eric6.Toolbox.Startup.handleArgs?4(argv, appinfo)
@@ -9539,15 +9561,16 @@
 eric6.Tools.TRSingleApplication.SALoadTranslation?7
 eric6.Tools.TRSingleApplication.TRSingleApplicationClient.processArgs?4(args)
 eric6.Tools.TRSingleApplication.TRSingleApplicationClient?1()
-eric6.Tools.TRSingleApplication.TRSingleApplicationServer.handleCommand?4(cmd, params)
+eric6.Tools.TRSingleApplication.TRSingleApplicationServer.handleCommand?4(command, arguments)
 eric6.Tools.TRSingleApplication.TRSingleApplicationServer.loadForm?7
 eric6.Tools.TRSingleApplication.TRSingleApplicationServer.loadTranslation?7
 eric6.Tools.TRSingleApplication.TRSingleApplicationServer?1(parent)
 eric6.Tools.TrayStarter.TrayStarter.preferencesChanged?4()
-eric6.Tools.TrayStarter.TrayStarter?1(usePyQt4, settingsDir, webEngine=False)
+eric6.Tools.TrayStarter.TrayStarter?1(usePyQt4, settingsDir)
 eric6.Tools.UIPreviewer.UIPreviewer.eventFilter?4(obj, ev)
 eric6.Tools.UIPreviewer.UIPreviewer.show?4()
 eric6.Tools.UIPreviewer.UIPreviewer?1(filename=None, parent=None, name=None)
+eric6.Tools.webBrowserSupport.variant?7
 eric6.UI.AuthenticationDialog.AuthenticationDialog.getData?4()
 eric6.UI.AuthenticationDialog.AuthenticationDialog.setData?4(username, password)
 eric6.UI.AuthenticationDialog.AuthenticationDialog.shallSave?4()
@@ -9966,7 +9989,6 @@
 eric6.UI.UserInterface.UserInterface.dragMoveEvent?4(event)
 eric6.UI.UserInterface.UserInterface.dropEvent?4(event)
 eric6.UI.UserInterface.UserInterface.getActions?4(actionType)
-eric6.UI.UserInterface.UserInterface.getHelpViewer?4(preview=False)
 eric6.UI.UserInterface.UserInterface.getLayoutType?4()
 eric6.UI.UserInterface.UserInterface.getLocale?4()
 eric6.UI.UserInterface.UserInterface.getMenu?4(name)
@@ -12325,6 +12347,19 @@
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.userAgent?4(resolveEmpty=False)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.userAgentForUrl?4(url)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage?1(parent=None)
+eric6.WebBrowser.WebBrowserSingleApplication.SAFile?7
+eric6.WebBrowser.WebBrowserSingleApplication.SALoadUrl?7
+eric6.WebBrowser.WebBrowserSingleApplication.SANewTab?7
+eric6.WebBrowser.WebBrowserSingleApplication.SASearch?7
+eric6.WebBrowser.WebBrowserSingleApplication.SAShutdown?7
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationClient.processArgs?4(args, disconnect=True)
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationClient?1(name="")
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer.handleCommand?4(command, arguments)
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer.loadUrl?7
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer.newTab?7
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer.search?7
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer.shutdown?7
+eric6.WebBrowser.WebBrowserSingleApplication.WebBrowserSingleApplicationServer?1(name="")
 eric6.WebBrowser.WebBrowserSnap.renderTabPreview?4(view, w, h)
 eric6.WebBrowser.WebBrowserTabBar.WebBrowserTabBar.event?4(evt)
 eric6.WebBrowser.WebBrowserTabBar.WebBrowserTabBar.leaveEvent?4(evt)
@@ -12460,7 +12495,6 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._featurePermissionManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._feedsManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._flashCookieManager?8
-eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._fromEric?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._greaseMonkeyManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._helpEngine?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._historyManager?8
@@ -12504,8 +12538,8 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.feedsManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.flashCookieManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.forceClose?4()
-eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.fromEric?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getActions?4()
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getActionsCategory?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getQtHelpCollectionFileName?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getSourceFileList?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getWindow?4()
@@ -12567,7 +12601,7 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webBrowserWindowOpened?7
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webProfile?4(private=False)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webSettings?4()
-eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow?1(home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None, private=False, qthelp=False, settingsDir="", restoreSession=False)
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow?1(home, path, parent, name, searchWord=None, private=False, qthelp=False, settingsDir="", restoreSession=False, single=False, saname="")
 eric6.WebBrowser.WebInspector.WebInspector.closeEvent?4(evt)
 eric6.WebBrowser.WebInspector.WebInspector.inspectElement?4()
 eric6.WebBrowser.WebInspector.WebInspector.inspectorClosed?7
--- a/APIs/Python3/eric6.bas	Sat Dec 01 11:45:24 2018 +0100
+++ b/APIs/Python3/eric6.bas	Thu Jan 10 14:22:59 2019 +0100
@@ -390,6 +390,8 @@
 HelpInterfacePage ConfigurationPageBase Ui_HelpInterfacePage
 HelpLanguagesDialog QDialog Ui_HelpLanguagesDialog
 HelpSearchWidget QWidget
+HelpSingleApplicationClient SingleApplicationClient
+HelpSingleApplicationServer SingleApplicationServer
 HelpTabBar E5WheelTabBar
 HelpTabWidget E5TabWidget
 HelpTocWidget QWidget
@@ -770,6 +772,7 @@
 QuickSearchLineEdit QLineEdit
 QuotedString str
 RbModule Class
+RccCompilerOptionsDialog QDialog Ui_RccCompilerOptionsDialog
 Rebase HgExtension
 RebaseProjectHelper HgExtensionProjectHelper
 RecursionError OverflowError ValueError
@@ -1000,6 +1003,8 @@
 WebBrowserJavaScriptConsole QTextEdit
 WebBrowserLanguagesDialog QDialog Ui_WebBrowserLanguagesDialog
 WebBrowserPage QWebEnginePage
+WebBrowserSingleApplicationClient SingleApplicationClient
+WebBrowserSingleApplicationServer SingleApplicationServer
 WebBrowserSpellCheckingPage ConfigurationPageBase Ui_WebBrowserSpellCheckingPage
 WebBrowserTabBar E5WheelTabBar
 WebBrowserTabWidget E5TabWidget
--- a/Cooperation/ChatWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Cooperation/ChatWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Cooperation/Connection.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Cooperation/Connection.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Cooperation/CooperationClient.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Cooperation/CooperationClient.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Cooperation/CooperationServer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Cooperation/CooperationServer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Cooperation/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Cooperation/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DTDs/Project-6.4.dtd	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,188 @@
+<!-- This is the DTD for eric's project file version 6.3 -->
+
+<!-- This is a copy of the Basic DTD -->
+<!ELEMENT   int         (#PCDATA)>
+<!ELEMENT   long        (#PCDATA)>
+<!ELEMENT   float       (#PCDATA)>
+<!ELEMENT   complex     (#PCDATA)>
+<!ELEMENT   bool        (#PCDATA)>
+<!ELEMENT   string      (#PCDATA)>
+<!ELEMENT   bytes       (#PCDATA)>
+<!ELEMENT   bytearray   (#PCDATA)>
+<!ELEMENT   none        EMPTY>
+
+<!ELEMENT   pickle      (#PCDATA)>
+<!ATTLIST   pickle
+    method      CDATA   #REQUIRED
+    encoding    CDATA   #REQUIRED>
+
+<!ELEMENT   key         (int | long | float | complex | string | bytes)>
+<!ELEMENT   value       (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)>
+
+<!ELEMENT   dict        (key, value)*>
+
+<!ELEMENT   tuple       (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   list        (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   set         (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+
+<!ELEMENT   frozenset   (int | long | float | complex | bool | string | bytes | 
+    bytearray | none | dict | tuple | list | set | frozenset | pickle)*>
+<!-- End of the Basic DTD -->
+
+<!ELEMENT   ProgLanguage        (#PCDATA)>
+<!ATTLIST   ProgLanguage
+    mixed       CDATA   #REQUIRED>
+
+<!ELEMENT   ProjectType         (#PCDATA)>
+
+<!ELEMENT   Description         (#PCDATA)>
+
+<!ELEMENT   Version             (#PCDATA)>
+
+<!ELEMENT   Author              (#PCDATA)>
+
+<!ELEMENT   Email               (#PCDATA)>
+
+<!ELEMENT   TranslationPattern  (#PCDATA)>
+
+<!ELEMENT   TranslationsBinPath (#PCDATA)>
+
+<!ELEMENT   Source              (#PCDATA)>
+
+<!ELEMENT   Sources             (Source*)>
+
+<!ELEMENT   Form                (#PCDATA)>
+
+<!ELEMENT   Forms               (Form*)>
+
+<!ELEMENT   Translation         (#PCDATA)>
+
+<!ELEMENT   Translations        (Translation*)>
+
+<!ELEMENT   TranslationException  (#PCDATA)>
+
+<!ELEMENT   TranslationExceptions (TranslationException*)>
+
+<!ELEMENT   Resource            (#PCDATA)>
+
+<!ELEMENT   Resources           (Resource*)>
+
+<!ELEMENT   Interface           (#PCDATA)>
+
+<!ELEMENT   Interfaces          (Interface*)>
+
+<!ELEMENT   Protocol            (#PCDATA)>
+
+<!ELEMENT   Protocols           (Protocol*)>
+
+<!ELEMENT   Other               (#PCDATA)>
+
+<!ELEMENT   Others              (Other*)>
+
+<!ELEMENT   MainScript          (#PCDATA)>
+
+<!ELEMENT   VcsType             (#PCDATA)>
+<!ELEMENT   VcsOptions          (dict)>
+<!ELEMENT   VcsOtherData        (dict)>
+
+<!ELEMENT   Vcs                 (VcsType?,
+                                 VcsOptions?,
+                                 VcsOtherData?)>
+
+<!ELEMENT   FiletypeAssociation EMPTY>
+<!ATTLIST   FiletypeAssociation
+    pattern     CDATA   #REQUIRED
+    type        CDATA   #REQUIRED>
+
+<!ELEMENT   FiletypeAssociations (FiletypeAssociation*)>
+
+<!ELEMENT   LexerAssociation EMPTY>
+<!ATTLIST   LexerAssociation
+    pattern     CDATA   #REQUIRED
+    lexer       CDATA   #REQUIRED>
+
+<!ELEMENT   LexerAssociations (LexerAssociation*)>
+
+<!ELEMENT   MakeParameters (dict)>
+
+<!ELEMENT   Make (MakeParameters?)>
+
+<!ELEMENT   IdlCompiler (IdlCompilerParameters?)>
+
+<!ELEMENT   UicCompiler (UicCompilerParameters?)>
+
+<!ELEMENT   RccCompiler (RccCompilerParameters?)>
+
+<!ELEMENT   ProjectTypeSpecificData (dict)>
+
+<!ELEMENT   ProjectTypeSpecific (ProjectTypeSpecific?)>
+
+<!ELEMENT   DocumentationParams (dict)>
+
+<!ELEMENT   Documentation       (DocumentationParams?)>
+
+<!ELEMENT   PackagersParams     (dict)>
+
+<!ELEMENT   Packagers           (PackagersParams?)>
+
+<!ELEMENT   CheckersParams      (dict)>
+
+<!ELEMENT   Checkers            (CheckersParams?)>
+
+<!ELEMENT   OtherToolsParams    (dict)>
+
+<!ELEMENT   OtherTools          (OtherToolsParams?)>
+
+<!ELEMENT   Language            (#PCDATA)>
+
+<!ELEMENT   ProjectWordList     (#PCDATA)>
+
+<!ELEMENT   ProjectExcludeList  (#PCDATA)>
+
+<!ELEMENT   Hash                (#PCDATA)>
+
+<!ELEMENT   Eol EMPTY>
+<!ATTLIST   Eol
+    index       CDATA   #REQUIRED>
+
+<!ELEMENT   Project             (Language,
+                                 ProjectWordList?,
+                                 ProjectExcludeList?,
+                                 Hash,
+                                 ProgLanguage,
+                                 ProjectType,
+                                 Description?,
+                                 Version?,
+                                 Author?,
+                                 Email?,
+                                 TranslationPattern?,
+                                 TranslationsBinPath?,
+                                 Eol?,
+                                 Sources,
+                                 Forms,
+                                 Translations,
+                                 TranslationExceptions?,
+                                 Resources,
+                                 Interfaces,
+                                 Others,
+                                 MainScript?,
+                                 Vcs,
+                                 FiletypeAssociations,
+                                 LexerAssociations?,
+                                 Make?,
+                                 IdlCompiler?,
+                                 UicCompiler?,
+                                 RccCompiler?,
+                                 ProjectTypeSpecific?,
+                                 Documentation?,
+                                 Packagers?,
+                                 Checkers?,
+                                 OtherTools?)>
+<!ATTLIST   Project
+    version     CDATA   #REQUIRED>
--- a/DataViews/CodeMetrics.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DataViews/CodeMetrics.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 #
--- a/DataViews/CodeMetricsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DataViews/CodeMetricsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DataViews/PyCoverageDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DataViews/PyCoverageDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DataViews/PyProfileDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DataViews/PyProfileDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DataViews/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DataViews/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/AsyncFile.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/AsyncFile.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/BreakpointWatch.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/BreakpointWatch.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DCTestResult.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DCTestResult.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugBase.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugBase.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugClient.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugClient.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugClientBase.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugClientBase.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugClientCapabilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugClientCapabilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugConfig.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugConfig.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/DebugVariables.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/DebugVariables.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/PyProfile.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/PyProfile.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 
 """
 Module defining additions to the standard Python profile.py.
--- a/DebugClients/Python/ThreadExtension.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/ThreadExtension.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2014 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2014 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/eric6dbgstub.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/eric6dbgstub.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/Python/getpass.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/Python/getpass.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DebugClients/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DebugClients/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/BreakPointModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/BreakPointModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/BreakPointViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/BreakPointViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/CallStackViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/CallStackViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/CallTraceViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/CallTraceViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/Config.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/Config.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/DebugClientCapabilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebugClientCapabilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/DebugServer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebugServer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -232,6 +232,7 @@
         
         self.lastClientType = ''
         self.__autoClearShell = False
+        self.__forProject = False
         
         self.clientClearBreak.connect(self.__clientClearBreakPoint)
         self.clientClearWatch.connect(self.__clientClearWatchPoint)
@@ -459,7 +460,7 @@
                 'DebugClient/Type', self.clientType)
         
     def startClient(self, unplanned=True, clType=None, forProject=False,
-                    runInConsole=False, venvName=""):
+                    runInConsole=False, venvName="", workingDir=None):
         """
         Public method to start a debug client.
         
@@ -474,6 +475,8 @@
         @type bool
         @keyparam venvName name of the virtual environment to be used
         @type str
+        @keyparam workingDir directory to start the debugger client in
+        @type str
         """
         self.running = False
         
@@ -498,6 +501,7 @@
                 self.clientProcess.deleteLater()
                 self.clientProcess = None
             
+            self.__forProject = forProject
             self.__createDebuggerInterface()
             if forProject:
                 project = e5App().getObject("Project")
@@ -505,17 +509,17 @@
                     self.clientProcess, isNetworked, clientInterpreter = \
                         self.debuggerInterface.startRemote(
                             self.serverPort(), runInConsole, venvName,
-                            self.__originalPathString)
+                            self.__originalPathString, workingDir=workingDir)
                 else:
                     self.clientProcess, isNetworked, clientInterpreter = \
                         self.debuggerInterface.startRemoteForProject(
                             self.serverPort(), runInConsole, venvName,
-                            self.__originalPathString)
+                            self.__originalPathString, workingDir=workingDir)
             else:
                 self.clientProcess, isNetworked, clientInterpreter = \
                     self.debuggerInterface.startRemote(
                         self.serverPort(), runInConsole, venvName,
-                        self.__originalPathString)
+                        self.__originalPathString, workingDir=workingDir)
             
             if self.clientProcess:
                 self.clientProcess.readyReadStandardError.connect(
@@ -1500,7 +1504,7 @@
         if Preferences.getDebugger("AutomaticReset") or (self.running and
                                                          not self.debugging):
             self.debugging = False
-            self.startClient(False)
+            self.startClient(False, forProject=self.__forProject)
         if self.passive:
             self.__createDebuggerInterface("None")
             self.signalClientOutput(self.tr('\nNot connected\n'))
--- a/Debugger/DebugUI.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebugUI.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/DebugViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebugViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/DebuggerInterfaceNone.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebuggerInterfaceNone.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -38,7 +38,8 @@
         # set default values for capabilities of clients
         self.clientCapabilities = ClientDefaultCapabilities
         
-    def startRemote(self, port, runInConsole, venvName, originalPathString):
+    def startRemote(self, port, runInConsole, venvName, originalPathString,
+                    workingDir=None):
         """
         Public method to start a remote Python interpreter.
         
@@ -51,6 +52,8 @@
         @type str
         @param originalPathString original PATH environment variable
         @type str
+        @param workingDir directory to start the debugger client in
+        @type str
         @return client process object, a flag to indicate a network connection
             and the name of the interpreter in case of a local execution
         @rtype tuple of (QProcess, bool, str)
@@ -58,7 +61,7 @@
         return None, True, ""
 
     def startRemoteForProject(self, port, runInConsole, venvName,
-                              originalPathString):
+                              originalPathString, workingDir=None):
         """
         Public method to start a remote Python interpreter for a project.
         
@@ -71,6 +74,8 @@
         @type str
         @param originalPathString original PATH environment variable
         @type str
+        @param workingDir directory to start the debugger client in
+        @type str
         @return client process object, a flag to indicate a network connection
             and the name of the interpreter in case of a local execution
         @rtype tuple of (QProcess, bool, str)
--- a/Debugger/DebuggerInterfacePython.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/DebuggerInterfacePython.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -109,15 +109,21 @@
         else:
             return fn.replace(self.translateLocal, self.translateRemote)
         
-    def __startProcess(self, program, arguments, environment=None):
+    def __startProcess(self, program, arguments, environment=None,
+                       workingDir=None):
         """
         Private method to start the debugger client process.
         
-        @param program name of the executable to start (string)
-        @param arguments arguments to be passed to the program (list of string)
+        @param program name of the executable to start
+        @type str
+        @param arguments arguments to be passed to the program
+        @type list of str
         @param environment dictionary of environment settings to pass
-            (dict of string)
-        @return the process object (QProcess) or None
+        @type dict of str
+        @param workingDir directory to start the debugger client in
+        @type str
+        @return the process object
+        @rtype QProcess or None
         """
         proc = QProcess()
         if environment is not None:
@@ -126,13 +132,16 @@
                 env.insert(key, value)
             proc.setProcessEnvironment(env)
         args = arguments[:]
+        if workingDir:
+            proc.setWorkingDirectory(workingDir)
         proc.start(program, args)
         if not proc.waitForStarted(10000):
             proc = None
         
         return proc
         
-    def startRemote(self, port, runInConsole, venvName, originalPathString):
+    def startRemote(self, port, runInConsole, venvName, originalPathString,
+                    workingDir=None):
         """
         Public method to start a remote Python interpreter.
         
@@ -145,6 +154,8 @@
         @type str
         @param originalPathString original PATH environment variable
         @type str
+        @param workingDir directory to start the debugger client in
+        @type str
         @return client process object, a flag to indicate a network connection
             and the name of the interpreter in case of a local execution
         @rtype tuple of (QProcess, bool, str)
@@ -210,7 +221,8 @@
                     [rhost, interpreter, debugClient,
                         noencoding, str(port), redirect, ipaddr]
                 args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
+                process = self.__startProcess(args[0], args[1:],
+                                              workingDir=workingDir)
                 if process is None:
                     E5MessageBox.critical(
                         None,
@@ -265,7 +277,8 @@
                     [interpreter, os.path.abspath(debugClient),
                         noencoding, str(port), '0', ipaddr]
                 args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
+                process = self.__startProcess(args[0], args[1:], clientEnv,
+                                              workingDir=workingDir)
                 if process is None:
                     E5MessageBox.critical(
                         None,
@@ -278,7 +291,8 @@
         process = self.__startProcess(
             interpreter,
             [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
+            clientEnv,
+            workingDir=workingDir)
         if process is None:
             self.__startedVenv = ""
             E5MessageBox.critical(
@@ -292,7 +306,7 @@
         return process, self.__isNetworked, interpreter
 
     def startRemoteForProject(self, port, runInConsole, venvName,
-                              originalPathString):
+                              originalPathString, workingDir=None):
         """
         Public method to start a remote Python interpreter for a project.
         
@@ -305,6 +319,8 @@
         @type str
         @param originalPathString original PATH environment variable
         @type str
+        @param workingDir directory to start the debugger client in
+        @type str
         @return client process object, a flag to indicate a network connection
             and the name of the interpreter in case of a local execution
         @rtype tuple of (QProcess, bool, str)
@@ -356,7 +372,8 @@
                     [rhost, interpreter, os.path.abspath(debugClient),
                         noencoding, str(port), redirect, ipaddr]
                 args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
+                process = self.__startProcess(args[0], args[1:],
+                                              workingDir=workingDir)
                 if process is None:
                     E5MessageBox.critical(
                         None,
@@ -411,7 +428,8 @@
                     [interpreter, os.path.abspath(debugClient),
                         noencoding, str(port), '0', ipaddr]
                 args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
+                process = self.__startProcess(args[0], args[1:], clientEnv,
+                                              workingDir=workingDir)
                 if process is None:
                     E5MessageBox.critical(
                         None,
@@ -424,7 +442,8 @@
         process = self.__startProcess(
             interpreter,
             [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
+            clientEnv,
+            workingDir=workingDir)
         if process is None:
             self.__startedVenv = ""
             E5MessageBox.critical(
@@ -978,7 +997,7 @@
                         """ this issue with the received data to the"""
                         """ eric bugs email address.</p>"""
                         """<p>Error: {0}</p>"""
-                        """<p>Data:<br/>{0}</p>""").format(
+                        """<p>Data:<br/>{1}</p>""").format(
                     str(err), Utilities.html_encode(jsonStr.strip())),
                 E5MessageBox.StandardButtons(
                     E5MessageBox.Ok))
--- a/Debugger/EditBreakpointDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/EditBreakpointDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/EditWatchpointDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/EditWatchpointDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/ExceptionLogger.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/ExceptionLogger.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/ExceptionsFilterDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/ExceptionsFilterDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/StartDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/StartDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/StartHistoryEditDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/StartHistoryEditDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/VariableDetailDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/VariableDetailDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/VariablesFilterDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/VariablesFilterDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/VariablesViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/VariablesViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/WatchPointModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/WatchPointModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/WatchPointViewer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/WatchPointViewer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Debugger/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Debugger/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Help/source.qhp	Thu Jan 10 14:22:59 2019 +0100
@@ -413,6 +413,7 @@
             <section title="eric6.Helpviewer.HelpInspector" ref="eric6.Helpviewer.HelpInspector.html" />
             <section title="eric6.Helpviewer.HelpLanguagesDialog" ref="eric6.Helpviewer.HelpLanguagesDialog.html" />
             <section title="eric6.Helpviewer.HelpSearchWidget" ref="eric6.Helpviewer.HelpSearchWidget.html" />
+            <section title="eric6.Helpviewer.HelpSingleApplication" ref="eric6.Helpviewer.HelpSingleApplication.html" />
             <section title="eric6.Helpviewer.HelpSnap" ref="eric6.Helpviewer.HelpSnap.html" />
             <section title="eric6.Helpviewer.HelpTabBar" ref="eric6.Helpviewer.HelpTabBar.html" />
             <section title="eric6.Helpviewer.HelpTabWidget" ref="eric6.Helpviewer.HelpTabWidget.html" />
@@ -995,6 +996,7 @@
             <section title="eric6.Project.ProjectTranslationsBrowser" ref="eric6.Project.ProjectTranslationsBrowser.html" />
             <section title="eric6.Project.PropertiesDialog" ref="eric6.Project.PropertiesDialog.html" />
             <section title="eric6.Project.QuickFindFileDialog" ref="eric6.Project.QuickFindFileDialog.html" />
+            <section title="eric6.Project.RccCompilerOptionsDialog" ref="eric6.Project.RccCompilerOptionsDialog.html" />
             <section title="eric6.Project.SpellingPropertiesDialog" ref="eric6.Project.SpellingPropertiesDialog.html" />
             <section title="eric6.Project.TranslationPropertiesDialog" ref="eric6.Project.TranslationPropertiesDialog.html" />
             <section title="eric6.Project.UicCompilerOptionsDialog" ref="eric6.Project.UicCompilerOptionsDialog.html" />
@@ -1127,6 +1129,7 @@
             <section title="eric6.Tools.TRSingleApplication" ref="eric6.Tools.TRSingleApplication.html" />
             <section title="eric6.Tools.TrayStarter" ref="eric6.Tools.TrayStarter.html" />
             <section title="eric6.Tools.UIPreviewer" ref="eric6.Tools.UIPreviewer.html" />
+            <section title="eric6.Tools.webBrowserSupport" ref="eric6.Tools.webBrowserSupport.html" />
           </section>
           <section title="eric6.UI" ref="index-eric6.UI.html">
             <section title="eric6.UI.Previewers" ref="index-eric6.UI.Previewers.html">
@@ -1468,6 +1471,7 @@
             <section title="eric6.WebBrowser.WebBrowserJavaScriptConsole" ref="eric6.WebBrowser.WebBrowserJavaScriptConsole.html" />
             <section title="eric6.WebBrowser.WebBrowserLanguagesDialog" ref="eric6.WebBrowser.WebBrowserLanguagesDialog.html" />
             <section title="eric6.WebBrowser.WebBrowserPage" ref="eric6.WebBrowser.WebBrowserPage.html" />
+            <section title="eric6.WebBrowser.WebBrowserSingleApplication" ref="eric6.WebBrowser.WebBrowserSingleApplication.html" />
             <section title="eric6.WebBrowser.WebBrowserSnap" ref="eric6.WebBrowser.WebBrowserSnap.html" />
             <section title="eric6.WebBrowser.WebBrowserTabBar" ref="eric6.WebBrowser.WebBrowserTabBar.html" />
             <section title="eric6.WebBrowser.WebBrowserTabWidget" ref="eric6.WebBrowser.WebBrowserTabWidget.html" />
@@ -7795,6 +7799,21 @@
       <keyword name="HelpSearchWidget.contextMenuEvent" id="HelpSearchWidget.contextMenuEvent" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.contextMenuEvent" />
       <keyword name="HelpSearchWidget.keyPressEvent" id="HelpSearchWidget.keyPressEvent" ref="eric6.Helpviewer.HelpSearchWidget.html#HelpSearchWidget.keyPressEvent" />
       <keyword name="HelpSearchWidget.keyPressEvent" id="HelpSearchWidget.keyPressEvent" ref="eric6.WebBrowser.QtHelp.HelpSearchWidget.html#HelpSearchWidget.keyPressEvent" />
+      <keyword name="HelpSingleApplication (Module)" id="HelpSingleApplication (Module)" ref="eric6.Helpviewer.HelpSingleApplication.html" />
+      <keyword name="HelpSingleApplicationClient" id="HelpSingleApplicationClient" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient" />
+      <keyword name="HelpSingleApplicationClient (Constructor)" id="HelpSingleApplicationClient (Constructor)" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.__init__" />
+      <keyword name="HelpSingleApplicationClient.__loadUrl" id="HelpSingleApplicationClient.__loadUrl" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.__loadUrl" />
+      <keyword name="HelpSingleApplicationClient.__newTab" id="HelpSingleApplicationClient.__newTab" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.__newTab" />
+      <keyword name="HelpSingleApplicationClient.__search" id="HelpSingleApplicationClient.__search" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.__search" />
+      <keyword name="HelpSingleApplicationClient.__shutdown" id="HelpSingleApplicationClient.__shutdown" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.__shutdown" />
+      <keyword name="HelpSingleApplicationClient.processArgs" id="HelpSingleApplicationClient.processArgs" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationClient.processArgs" />
+      <keyword name="HelpSingleApplicationServer" id="HelpSingleApplicationServer" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer" />
+      <keyword name="HelpSingleApplicationServer (Constructor)" id="HelpSingleApplicationServer (Constructor)" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.__init__" />
+      <keyword name="HelpSingleApplicationServer.__saLoadUrl" id="HelpSingleApplicationServer.__saLoadUrl" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.__saLoadUrl" />
+      <keyword name="HelpSingleApplicationServer.__saNewTab" id="HelpSingleApplicationServer.__saNewTab" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.__saNewTab" />
+      <keyword name="HelpSingleApplicationServer.__saSearch" id="HelpSingleApplicationServer.__saSearch" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.__saSearch" />
+      <keyword name="HelpSingleApplicationServer.__saShutdown" id="HelpSingleApplicationServer.__saShutdown" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.__saShutdown" />
+      <keyword name="HelpSingleApplicationServer.handleCommand" id="HelpSingleApplicationServer.handleCommand" ref="eric6.Helpviewer.HelpSingleApplication.html#HelpSingleApplicationServer.handleCommand" />
       <keyword name="HelpSnap (Module)" id="HelpSnap (Module)" ref="eric6.Helpviewer.HelpSnap.html" />
       <keyword name="HelpTabBar" id="HelpTabBar" ref="eric6.Helpviewer.HelpTabBar.html#HelpTabBar" />
       <keyword name="HelpTabBar (Constructor)" id="HelpTabBar (Constructor)" ref="eric6.Helpviewer.HelpTabBar.html#HelpTabBar.__init__" />
@@ -7973,12 +7992,14 @@
       <keyword name="HelpWindow.__clearPrivateData" id="HelpWindow.__clearPrivateData" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__clearPrivateData" />
       <keyword name="HelpWindow.__closeAllWindows" id="HelpWindow.__closeAllWindows" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__closeAllWindows" />
       <keyword name="HelpWindow.__closeNetworkMonitor" id="HelpWindow.__closeNetworkMonitor" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__closeNetworkMonitor" />
+      <keyword name="HelpWindow.__configShortcuts" id="HelpWindow.__configShortcuts" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__configShortcuts" />
       <keyword name="HelpWindow.__copy" id="HelpWindow.__copy" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__copy" />
       <keyword name="HelpWindow.__createTextEncodingAction" id="HelpWindow.__createTextEncodingAction" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__createTextEncodingAction" />
       <keyword name="HelpWindow.__createTextEncodingSubmenu" id="HelpWindow.__createTextEncodingSubmenu" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__createTextEncodingSubmenu" />
       <keyword name="HelpWindow.__currentChanged" id="HelpWindow.__currentChanged" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__currentChanged" />
       <keyword name="HelpWindow.__del__" id="HelpWindow.__del__" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__del__" />
       <keyword name="HelpWindow.__docsInstalled" id="HelpWindow.__docsInstalled" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__docsInstalled" />
+      <keyword name="HelpWindow.__exportShortcuts" id="HelpWindow.__exportShortcuts" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__exportShortcuts" />
       <keyword name="HelpWindow.__feedsManagerClosed" id="HelpWindow.__feedsManagerClosed" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__feedsManagerClosed" />
       <keyword name="HelpWindow.__filterQtHelpDocumentation" id="HelpWindow.__filterQtHelpDocumentation" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__filterQtHelpDocumentation" />
       <keyword name="HelpWindow.__find" id="HelpWindow.__find" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__find" />
@@ -7988,6 +8009,7 @@
       <keyword name="HelpWindow.__hideSearchWindow" id="HelpWindow.__hideSearchWindow" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__hideSearchWindow" />
       <keyword name="HelpWindow.__hideTocWindow" id="HelpWindow.__hideTocWindow" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__hideTocWindow" />
       <keyword name="HelpWindow.__home" id="HelpWindow.__home" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__home" />
+      <keyword name="HelpWindow.__importShortcuts" id="HelpWindow.__importShortcuts" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__importShortcuts" />
       <keyword name="HelpWindow.__indexingFinished" id="HelpWindow.__indexingFinished" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__indexingFinished" />
       <keyword name="HelpWindow.__indexingStarted" id="HelpWindow.__indexingStarted" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__indexingStarted" />
       <keyword name="HelpWindow.__initActions" id="HelpWindow.__initActions" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__initActions" />
@@ -8009,6 +8031,9 @@
       <keyword name="HelpWindow.__privateBrowsing" id="HelpWindow.__privateBrowsing" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__privateBrowsing" />
       <keyword name="HelpWindow.__reload" id="HelpWindow.__reload" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__reload" />
       <keyword name="HelpWindow.__removeOldDocumentation" id="HelpWindow.__removeOldDocumentation" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__removeOldDocumentation" />
+      <keyword name="HelpWindow.__saLoadUrl" id="HelpWindow.__saLoadUrl" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__saLoadUrl" />
+      <keyword name="HelpWindow.__saNewTab" id="HelpWindow.__saNewTab" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__saNewTab" />
+      <keyword name="HelpWindow.__saSearchWord" id="HelpWindow.__saSearchWord" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__saSearchWord" />
       <keyword name="HelpWindow.__savePageAs" id="HelpWindow.__savePageAs" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__savePageAs" />
       <keyword name="HelpWindow.__savePageScreen" id="HelpWindow.__savePageScreen" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__savePageScreen" />
       <keyword name="HelpWindow.__saveVisiblePageScreen" id="HelpWindow.__saveVisiblePageScreen" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.__saveVisiblePageScreen" />
@@ -8079,6 +8104,7 @@
       <keyword name="HelpWindow.feedsManager" id="HelpWindow.feedsManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.feedsManager" />
       <keyword name="HelpWindow.flashCookieManager" id="HelpWindow.flashCookieManager" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.flashCookieManager" />
       <keyword name="HelpWindow.getActions" id="HelpWindow.getActions" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getActions" />
+      <keyword name="HelpWindow.getActionsCategory" id="HelpWindow.getActionsCategory" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getActionsCategory" />
       <keyword name="HelpWindow.getQtHelpCollectionFileName" id="HelpWindow.getQtHelpCollectionFileName" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getQtHelpCollectionFileName" />
       <keyword name="HelpWindow.getSourceFileList" id="HelpWindow.getSourceFileList" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getSourceFileList" />
       <keyword name="HelpWindow.getWindow" id="HelpWindow.getWindow" ref="eric6.Helpviewer.HelpWindow.html#HelpWindow.getWindow" />
@@ -12101,6 +12127,7 @@
       <keyword name="Pip.getDefaultEnvironmentString" id="Pip.getDefaultEnvironmentString" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getDefaultEnvironmentString" />
       <keyword name="Pip.getMenu" id="Pip.getMenu" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getMenu" />
       <keyword name="Pip.getMenuNames" id="Pip.getMenuNames" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getMenuNames" />
+      <keyword name="Pip.getProjectEnvironmentString" id="Pip.getProjectEnvironmentString" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getProjectEnvironmentString" />
       <keyword name="Pip.getVirtualenvInterpreter" id="Pip.getVirtualenvInterpreter" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getVirtualenvInterpreter" />
       <keyword name="Pip.getVirtualenvNames" id="Pip.getVirtualenvNames" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.getVirtualenvNames" />
       <keyword name="Pip.initActions" id="Pip.initActions" ref="eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html#Pip.initActions" />
@@ -12385,6 +12412,7 @@
       <keyword name="PluginManager.isPluginActive" id="PluginManager.isPluginActive" ref="eric6.PluginManager.PluginManager.html#PluginManager.isPluginActive" />
       <keyword name="PluginManager.isPluginLoaded" id="PluginManager.isPluginLoaded" ref="eric6.PluginManager.PluginManager.html#PluginManager.isPluginLoaded" />
       <keyword name="PluginManager.isValidPluginName" id="PluginManager.isValidPluginName" ref="eric6.PluginManager.PluginManager.html#PluginManager.isValidPluginName" />
+      <keyword name="PluginManager.loadDocumentationSetPlugins" id="PluginManager.loadDocumentationSetPlugins" ref="eric6.PluginManager.PluginManager.html#PluginManager.loadDocumentationSetPlugins" />
       <keyword name="PluginManager.loadPlugin" id="PluginManager.loadPlugin" ref="eric6.PluginManager.PluginManager.html#PluginManager.loadPlugin" />
       <keyword name="PluginManager.preferencesChanged" id="PluginManager.preferencesChanged" ref="eric6.PluginManager.PluginManager.html#PluginManager.preferencesChanged" />
       <keyword name="PluginManager.removePluginFromSysModules" id="PluginManager.removePluginFromSysModules" ref="eric6.PluginManager.PluginManager.html#PluginManager.removePluginFromSysModules" />
@@ -12696,6 +12724,7 @@
       <keyword name="Project.getData" id="Project.getData" ref="eric6.Project.Project.html#Project.getData" />
       <keyword name="Project.getDebugProperty" id="Project.getDebugProperty" ref="eric6.Project.Project.html#Project.getDebugProperty" />
       <keyword name="Project.getDebuggerFilters" id="Project.getDebuggerFilters" ref="eric6.Project.Project.html#Project.getDebuggerFilters" />
+      <keyword name="Project.getDefaultRccCompilerParameters" id="Project.getDefaultRccCompilerParameters" ref="eric6.Project.Project.html#Project.getDefaultRccCompilerParameters" />
       <keyword name="Project.getDefaultSourceExtension" id="Project.getDefaultSourceExtension" ref="eric6.Project.Project.html#Project.getDefaultSourceExtension" />
       <keyword name="Project.getEditorLexerAssoc" id="Project.getEditorLexerAssoc" ref="eric6.Project.Project.html#Project.getEditorLexerAssoc" />
       <keyword name="Project.getEolString" id="Project.getEolString" ref="eric6.Project.Project.html#Project.getEolString" />
@@ -12731,6 +12760,7 @@
       <keyword name="Project.handlePreferencesChanged" id="Project.handlePreferencesChanged" ref="eric6.Project.Project.html#Project.handlePreferencesChanged" />
       <keyword name="Project.hasDefaultIdlCompilerParameters" id="Project.hasDefaultIdlCompilerParameters" ref="eric6.Project.Project.html#Project.hasDefaultIdlCompilerParameters" />
       <keyword name="Project.hasDefaultMakeParameters" id="Project.hasDefaultMakeParameters" ref="eric6.Project.Project.html#Project.hasDefaultMakeParameters" />
+      <keyword name="Project.hasDefaultRccCompilerParameters" id="Project.hasDefaultRccCompilerParameters" ref="eric6.Project.Project.html#Project.hasDefaultRccCompilerParameters" />
       <keyword name="Project.hasDefaultUicCompilerParameters" id="Project.hasDefaultUicCompilerParameters" ref="eric6.Project.Project.html#Project.hasDefaultUicCompilerParameters" />
       <keyword name="Project.hasEntry" id="Project.hasEntry" ref="eric6.Project.Project.html#Project.hasEntry" />
       <keyword name="Project.hasProjectType" id="Project.hasProjectType" ref="eric6.Project.Project.html#Project.hasProjectType" />
@@ -13051,6 +13081,7 @@
       <keyword name="ProjectResourcesBrowser.__compileQRCDone" id="ProjectResourcesBrowser.__compileQRCDone" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__compileQRCDone" />
       <keyword name="ProjectResourcesBrowser.__compileResource" id="ProjectResourcesBrowser.__compileResource" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__compileResource" />
       <keyword name="ProjectResourcesBrowser.__compileSelectedResources" id="ProjectResourcesBrowser.__compileSelectedResources" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__compileSelectedResources" />
+      <keyword name="ProjectResourcesBrowser.__configureRccCompiler" id="ProjectResourcesBrowser.__configureRccCompiler" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__configureRccCompiler" />
       <keyword name="ProjectResourcesBrowser.__deleteFile" id="ProjectResourcesBrowser.__deleteFile" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__deleteFile" />
       <keyword name="ProjectResourcesBrowser.__newResource" id="ProjectResourcesBrowser.__newResource" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__newResource" />
       <keyword name="ProjectResourcesBrowser.__openFile" id="ProjectResourcesBrowser.__openFile" ref="eric6.Project.ProjectResourcesBrowser.html#ProjectResourcesBrowser.__openFile" />
@@ -13800,6 +13831,10 @@
       <keyword name="RbModule" id="RbModule" ref="eric6.Utilities.ModuleParser.html#RbModule" />
       <keyword name="RbModule (Constructor)" id="RbModule (Constructor)" ref="eric6.Utilities.ModuleParser.html#RbModule.__init__" />
       <keyword name="RbModule.addClass" id="RbModule.addClass" ref="eric6.Utilities.ModuleParser.html#RbModule.addClass" />
+      <keyword name="RccCompilerOptionsDialog" id="RccCompilerOptionsDialog" ref="eric6.Project.RccCompilerOptionsDialog.html#RccCompilerOptionsDialog" />
+      <keyword name="RccCompilerOptionsDialog (Constructor)" id="RccCompilerOptionsDialog (Constructor)" ref="eric6.Project.RccCompilerOptionsDialog.html#RccCompilerOptionsDialog.__init__" />
+      <keyword name="RccCompilerOptionsDialog (Module)" id="RccCompilerOptionsDialog (Module)" ref="eric6.Project.RccCompilerOptionsDialog.html" />
+      <keyword name="RccCompilerOptionsDialog.getData" id="RccCompilerOptionsDialog.getData" ref="eric6.Project.RccCompilerOptionsDialog.html#RccCompilerOptionsDialog.getData" />
       <keyword name="Rebase" id="Rebase" ref="eric6.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html#Rebase" />
       <keyword name="Rebase (Constructor)" id="Rebase (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html#Rebase.__init__" />
       <keyword name="Rebase.hgRebase" id="Rebase.hgRebase" ref="eric6.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html#Rebase.hgRebase" />
@@ -14492,7 +14527,7 @@
       <keyword name="SingleApplicationServer (Constructor)" id="SingleApplicationServer (Constructor)" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.__init__" />
       <keyword name="SingleApplicationServer.__disconnected" id="SingleApplicationServer.__disconnected" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.__disconnected" />
       <keyword name="SingleApplicationServer.__newConnection" id="SingleApplicationServer.__newConnection" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.__newConnection" />
-      <keyword name="SingleApplicationServer.__parseLine" id="SingleApplicationServer.__parseLine" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.__parseLine" />
+      <keyword name="SingleApplicationServer.__receiveJson" id="SingleApplicationServer.__receiveJson" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.__receiveJson" />
       <keyword name="SingleApplicationServer.handleCommand" id="SingleApplicationServer.handleCommand" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.handleCommand" />
       <keyword name="SingleApplicationServer.shutdown" id="SingleApplicationServer.shutdown" ref="eric6.Toolbox.SingleApplication.html#SingleApplicationServer.shutdown" />
       <keyword name="SiteInfo (Package)" id="SiteInfo (Package)" ref="index-eric6.Helpviewer.SiteInfo.html" />
@@ -16828,6 +16863,7 @@
       <keyword name="UserInterface.__configToolBars" id="UserInterface.__configToolBars" ref="eric6.UI.UserInterface.html#UserInterface.__configToolBars" />
       <keyword name="UserInterface.__configViewProfiles" id="UserInterface.__configViewProfiles" ref="eric6.UI.UserInterface.html#UserInterface.__configViewProfiles" />
       <keyword name="UserInterface.__configureDockareaCornerUsage" id="UserInterface.__configureDockareaCornerUsage" ref="eric6.UI.UserInterface.html#UserInterface.__configureDockareaCornerUsage" />
+      <keyword name="UserInterface.__connectToWebBrowser" id="UserInterface.__connectToWebBrowser" ref="eric6.UI.UserInterface.html#UserInterface.__connectToWebBrowser" />
       <keyword name="UserInterface.__createDockWindow" id="UserInterface.__createDockWindow" ref="eric6.UI.UserInterface.html#UserInterface.__createDockWindow" />
       <keyword name="UserInterface.__createLayout" id="UserInterface.__createLayout" ref="eric6.UI.UserInterface.html#UserInterface.__createLayout" />
       <keyword name="UserInterface.__createSidebarsLayout" id="UserInterface.__createSidebarsLayout" ref="eric6.UI.UserInterface.html#UserInterface.__createSidebarsLayout" />
@@ -16846,7 +16882,6 @@
       <keyword name="UserInterface.__exportShortcuts" id="UserInterface.__exportShortcuts" ref="eric6.UI.UserInterface.html#UserInterface.__exportShortcuts" />
       <keyword name="UserInterface.__getFloatingGeometry" id="UserInterface.__getFloatingGeometry" ref="eric6.UI.UserInterface.html#UserInterface.__getFloatingGeometry" />
       <keyword name="UserInterface.__hasErrorLog" id="UserInterface.__hasErrorLog" ref="eric6.UI.UserInterface.html#UserInterface.__hasErrorLog" />
-      <keyword name="UserInterface.__helpClosed" id="UserInterface.__helpClosed" ref="eric6.UI.UserInterface.html#UserInterface.__helpClosed" />
       <keyword name="UserInterface.__helpViewer" id="UserInterface.__helpViewer" ref="eric6.UI.UserInterface.html#UserInterface.__helpViewer" />
       <keyword name="UserInterface.__importPreferences" id="UserInterface.__importPreferences" ref="eric6.UI.UserInterface.html#UserInterface.__importPreferences" />
       <keyword name="UserInterface.__importShortcuts" id="UserInterface.__importShortcuts" ref="eric6.UI.UserInterface.html#UserInterface.__importShortcuts" />
@@ -16864,6 +16899,7 @@
       <keyword name="UserInterface.__installPlugins" id="UserInterface.__installPlugins" ref="eric6.UI.UserInterface.html#UserInterface.__installPlugins" />
       <keyword name="UserInterface.__ircAutoConnected" id="UserInterface.__ircAutoConnected" ref="eric6.UI.UserInterface.html#UserInterface.__ircAutoConnected" />
       <keyword name="UserInterface.__lastEditorClosed" id="UserInterface.__lastEditorClosed" ref="eric6.UI.UserInterface.html#UserInterface.__lastEditorClosed" />
+      <keyword name="UserInterface.__launchExternalWebBrowser" id="UserInterface.__launchExternalWebBrowser" ref="eric6.UI.UserInterface.html#UserInterface.__launchExternalWebBrowser" />
       <keyword name="UserInterface.__linguist" id="UserInterface.__linguist" ref="eric6.UI.UserInterface.html#UserInterface.__linguist" />
       <keyword name="UserInterface.__linguist4" id="UserInterface.__linguist4" ref="eric6.UI.UserInterface.html#UserInterface.__linguist4" />
       <keyword name="UserInterface.__loadSessionFromFile" id="UserInterface.__loadSessionFromFile" ref="eric6.UI.UserInterface.html#UserInterface.__loadSessionFromFile" />
@@ -16959,6 +16995,8 @@
       <keyword name="UserInterface.__versionsDownloadCanceled" id="UserInterface.__versionsDownloadCanceled" ref="eric6.UI.UserInterface.html#UserInterface.__versionsDownloadCanceled" />
       <keyword name="UserInterface.__versionsDownloadDone" id="UserInterface.__versionsDownloadDone" ref="eric6.UI.UserInterface.html#UserInterface.__versionsDownloadDone" />
       <keyword name="UserInterface.__webBrowser" id="UserInterface.__webBrowser" ref="eric6.UI.UserInterface.html#UserInterface.__webBrowser" />
+      <keyword name="UserInterface.__webBrowserFinished" id="UserInterface.__webBrowserFinished" ref="eric6.UI.UserInterface.html#UserInterface.__webBrowserFinished" />
+      <keyword name="UserInterface.__webBrowserShutdown" id="UserInterface.__webBrowserShutdown" ref="eric6.UI.UserInterface.html#UserInterface.__webBrowserShutdown" />
       <keyword name="UserInterface.__whatsThis" id="UserInterface.__whatsThis" ref="eric6.UI.UserInterface.html#UserInterface.__whatsThis" />
       <keyword name="UserInterface.__writeCrashSession" id="UserInterface.__writeCrashSession" ref="eric6.UI.UserInterface.html#UserInterface.__writeCrashSession" />
       <keyword name="UserInterface.__writeSession" id="UserInterface.__writeSession" ref="eric6.UI.UserInterface.html#UserInterface.__writeSession" />
@@ -16983,7 +17021,6 @@
       <keyword name="UserInterface.dragMoveEvent" id="UserInterface.dragMoveEvent" ref="eric6.UI.UserInterface.html#UserInterface.dragMoveEvent" />
       <keyword name="UserInterface.dropEvent" id="UserInterface.dropEvent" ref="eric6.UI.UserInterface.html#UserInterface.dropEvent" />
       <keyword name="UserInterface.getActions" id="UserInterface.getActions" ref="eric6.UI.UserInterface.html#UserInterface.getActions" />
-      <keyword name="UserInterface.getHelpViewer" id="UserInterface.getHelpViewer" ref="eric6.UI.UserInterface.html#UserInterface.getHelpViewer" />
       <keyword name="UserInterface.getLayoutType" id="UserInterface.getLayoutType" ref="eric6.UI.UserInterface.html#UserInterface.getLayoutType" />
       <keyword name="UserInterface.getLocale" id="UserInterface.getLocale" ref="eric6.UI.UserInterface.html#UserInterface.getLocale" />
       <keyword name="UserInterface.getMenu" id="UserInterface.getMenu" ref="eric6.UI.UserInterface.html#UserInterface.getMenu" />
@@ -17827,6 +17864,21 @@
       <keyword name="WebBrowserPage.setUserAgent" id="WebBrowserPage.setUserAgent" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.setUserAgent" />
       <keyword name="WebBrowserPage.userAgent" id="WebBrowserPage.userAgent" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.userAgent" />
       <keyword name="WebBrowserPage.userAgentForUrl" id="WebBrowserPage.userAgentForUrl" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.userAgentForUrl" />
+      <keyword name="WebBrowserSingleApplication (Module)" id="WebBrowserSingleApplication (Module)" ref="eric6.WebBrowser.WebBrowserSingleApplication.html" />
+      <keyword name="WebBrowserSingleApplicationClient" id="WebBrowserSingleApplicationClient" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient" />
+      <keyword name="WebBrowserSingleApplicationClient (Constructor)" id="WebBrowserSingleApplicationClient (Constructor)" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.__init__" />
+      <keyword name="WebBrowserSingleApplicationClient.__loadUrl" id="WebBrowserSingleApplicationClient.__loadUrl" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.__loadUrl" />
+      <keyword name="WebBrowserSingleApplicationClient.__newTab" id="WebBrowserSingleApplicationClient.__newTab" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.__newTab" />
+      <keyword name="WebBrowserSingleApplicationClient.__search" id="WebBrowserSingleApplicationClient.__search" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.__search" />
+      <keyword name="WebBrowserSingleApplicationClient.__shutdown" id="WebBrowserSingleApplicationClient.__shutdown" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.__shutdown" />
+      <keyword name="WebBrowserSingleApplicationClient.processArgs" id="WebBrowserSingleApplicationClient.processArgs" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationClient.processArgs" />
+      <keyword name="WebBrowserSingleApplicationServer" id="WebBrowserSingleApplicationServer" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer" />
+      <keyword name="WebBrowserSingleApplicationServer (Constructor)" id="WebBrowserSingleApplicationServer (Constructor)" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.__init__" />
+      <keyword name="WebBrowserSingleApplicationServer.__saLoadUrl" id="WebBrowserSingleApplicationServer.__saLoadUrl" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.__saLoadUrl" />
+      <keyword name="WebBrowserSingleApplicationServer.__saNewTab" id="WebBrowserSingleApplicationServer.__saNewTab" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.__saNewTab" />
+      <keyword name="WebBrowserSingleApplicationServer.__saSearch" id="WebBrowserSingleApplicationServer.__saSearch" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.__saSearch" />
+      <keyword name="WebBrowserSingleApplicationServer.__saShutdown" id="WebBrowserSingleApplicationServer.__saShutdown" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.__saShutdown" />
+      <keyword name="WebBrowserSingleApplicationServer.handleCommand" id="WebBrowserSingleApplicationServer.handleCommand" ref="eric6.WebBrowser.WebBrowserSingleApplication.html#WebBrowserSingleApplicationServer.handleCommand" />
       <keyword name="WebBrowserSnap (Module)" id="WebBrowserSnap (Module)" ref="eric6.WebBrowser.WebBrowserSnap.html" />
       <keyword name="WebBrowserSpellCheckingPage" id="WebBrowserSpellCheckingPage" ref="eric6.Preferences.ConfigurationPages.WebBrowserSpellCheckingPage.html#WebBrowserSpellCheckingPage" />
       <keyword name="WebBrowserSpellCheckingPage (Constructor)" id="WebBrowserSpellCheckingPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.WebBrowserSpellCheckingPage.html#WebBrowserSpellCheckingPage.__init__" />
@@ -18077,6 +18129,7 @@
       <keyword name="WebBrowserWindow.__bookmarkAllCallback" id="WebBrowserWindow.__bookmarkAllCallback" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__bookmarkAllCallback" />
       <keyword name="WebBrowserWindow.__clearIconsDatabase" id="WebBrowserWindow.__clearIconsDatabase" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__clearIconsDatabase" />
       <keyword name="WebBrowserWindow.__clearPrivateData" id="WebBrowserWindow.__clearPrivateData" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__clearPrivateData" />
+      <keyword name="WebBrowserWindow.__configShortcuts" id="WebBrowserWindow.__configShortcuts" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__configShortcuts" />
       <keyword name="WebBrowserWindow.__copy" id="WebBrowserWindow.__copy" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__copy" />
       <keyword name="WebBrowserWindow.__createTextEncodingAction" id="WebBrowserWindow.__createTextEncodingAction" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__createTextEncodingAction" />
       <keyword name="WebBrowserWindow.__createTextEncodingSubmenu" id="WebBrowserWindow.__createTextEncodingSubmenu" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__createTextEncodingSubmenu" />
@@ -18084,12 +18137,14 @@
       <keyword name="WebBrowserWindow.__cut" id="WebBrowserWindow.__cut" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__cut" />
       <keyword name="WebBrowserWindow.__del__" id="WebBrowserWindow.__del__" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__del__" />
       <keyword name="WebBrowserWindow.__docsInstalled" id="WebBrowserWindow.__docsInstalled" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__docsInstalled" />
+      <keyword name="WebBrowserWindow.__exportShortcuts" id="WebBrowserWindow.__exportShortcuts" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__exportShortcuts" />
       <keyword name="WebBrowserWindow.__feedsManagerClosed" id="WebBrowserWindow.__feedsManagerClosed" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__feedsManagerClosed" />
       <keyword name="WebBrowserWindow.__filterQtHelpDocumentation" id="WebBrowserWindow.__filterQtHelpDocumentation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__filterQtHelpDocumentation" />
       <keyword name="WebBrowserWindow.__find" id="WebBrowserWindow.__find" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__find" />
       <keyword name="WebBrowserWindow.__forward" id="WebBrowserWindow.__forward" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__forward" />
       <keyword name="WebBrowserWindow.__hideNavigation" id="WebBrowserWindow.__hideNavigation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__hideNavigation" />
       <keyword name="WebBrowserWindow.__home" id="WebBrowserWindow.__home" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__home" />
+      <keyword name="WebBrowserWindow.__importShortcuts" id="WebBrowserWindow.__importShortcuts" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__importShortcuts" />
       <keyword name="WebBrowserWindow.__indexingFinished" id="WebBrowserWindow.__indexingFinished" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__indexingFinished" />
       <keyword name="WebBrowserWindow.__indexingStarted" id="WebBrowserWindow.__indexingStarted" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__indexingStarted" />
       <keyword name="WebBrowserWindow.__initActions" id="WebBrowserWindow.__initActions" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__initActions" />
@@ -18111,6 +18166,9 @@
       <keyword name="WebBrowserWindow.__redo" id="WebBrowserWindow.__redo" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__redo" />
       <keyword name="WebBrowserWindow.__reload" id="WebBrowserWindow.__reload" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__reload" />
       <keyword name="WebBrowserWindow.__removeOldDocumentation" id="WebBrowserWindow.__removeOldDocumentation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__removeOldDocumentation" />
+      <keyword name="WebBrowserWindow.__saLoadUrl" id="WebBrowserWindow.__saLoadUrl" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__saLoadUrl" />
+      <keyword name="WebBrowserWindow.__saNewTab" id="WebBrowserWindow.__saNewTab" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__saNewTab" />
+      <keyword name="WebBrowserWindow.__saSearchWord" id="WebBrowserWindow.__saSearchWord" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__saSearchWord" />
       <keyword name="WebBrowserWindow.__savePageAs" id="WebBrowserWindow.__savePageAs" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__savePageAs" />
       <keyword name="WebBrowserWindow.__saveVisiblePageScreen" id="WebBrowserWindow.__saveVisiblePageScreen" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__saveVisiblePageScreen" />
       <keyword name="WebBrowserWindow.__searchForWord" id="WebBrowserWindow.__searchForWord" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__searchForWord" />
@@ -18196,8 +18254,8 @@
       <keyword name="WebBrowserWindow.feedsManager" id="WebBrowserWindow.feedsManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.feedsManager" />
       <keyword name="WebBrowserWindow.flashCookieManager" id="WebBrowserWindow.flashCookieManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.flashCookieManager" />
       <keyword name="WebBrowserWindow.forceClose" id="WebBrowserWindow.forceClose" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.forceClose" />
-      <keyword name="WebBrowserWindow.fromEric" id="WebBrowserWindow.fromEric" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.fromEric" />
       <keyword name="WebBrowserWindow.getActions" id="WebBrowserWindow.getActions" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getActions" />
+      <keyword name="WebBrowserWindow.getActionsCategory" id="WebBrowserWindow.getActionsCategory" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getActionsCategory" />
       <keyword name="WebBrowserWindow.getQtHelpCollectionFileName" id="WebBrowserWindow.getQtHelpCollectionFileName" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getQtHelpCollectionFileName" />
       <keyword name="WebBrowserWindow.getSourceFileList" id="WebBrowserWindow.getSourceFileList" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getSourceFileList" />
       <keyword name="WebBrowserWindow.getWindow" id="WebBrowserWindow.getWindow" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getWindow" />
@@ -19008,6 +19066,7 @@
       <keyword name="getVcsSystemIndicator" id="getVcsSystemIndicator" ref="eric6.Plugins.PluginVcsSubversion.html#getVcsSystemIndicator" />
       <keyword name="getViewManager" id="getViewManager" ref="eric6.Preferences.__init__.html#getViewManager" />
       <keyword name="getWebBrowser" id="getWebBrowser" ref="eric6.Preferences.__init__.html#getWebBrowser" />
+      <keyword name="getWebBrowserSupport" id="getWebBrowserSupport" ref="eric6.Globals.__init__.html#getWebBrowserSupport" />
       <keyword name="getWebEngineVersions" id="getWebEngineVersions" ref="eric6.WebBrowser.Tools.WebBrowserTools.html#getWebEngineVersions" />
       <keyword name="getWindowsExecutablePath" id="getWindowsExecutablePath" ref="eric6.Utilities.__init__.html#getWindowsExecutablePath" />
       <keyword name="getWinregEntry" id="getWinregEntry" ref="eric6.create_windows_links.html#getWinregEntry" />
@@ -19255,6 +19314,7 @@
       <keyword name="readmodule_ex" id="readmodule_ex" ref="eric6.Utilities.ClassBrowsers.rbclbr.html#readmodule_ex" />
       <keyword name="rebase (Module)" id="rebase (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html" />
       <keyword name="registerLexer" id="registerLexer" ref="eric6.QScintilla.Lexers.__init__.html#registerLexer" />
+      <keyword name="registerPlugin" id="registerPlugin" ref="eric6.PluginManager.PluginRepositoryDialog.html#registerPlugin" />
       <keyword name="registerView" id="registerView" ref="eric6.WebBrowser.WebInspector.html#registerView" />
       <keyword name="register_check" id="register_check" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#register_check" />
       <keyword name="rehashPassword" id="rehashPassword" ref="eric6.Utilities.crypto.py3PBKDF2.html#rehashPassword" />
@@ -19420,6 +19480,7 @@
       <keyword name="version" id="version" ref="eric6.eric6_doc.html#version" />
       <keyword name="versionToTuple" id="versionToTuple" ref="eric6.Globals.__init__.html#versionToTuple" />
       <keyword name="warning" id="warning" ref="eric6.E5Gui.E5MessageBox.html#warning" />
+      <keyword name="webBrowserSupport (Module)" id="webBrowserSupport (Module)" ref="eric6.Tools.webBrowserSupport.html" />
       <keyword name="whitespace_around_comma" id="whitespace_around_comma" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#whitespace_around_comma" />
       <keyword name="whitespace_around_keywords" id="whitespace_around_keywords" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#whitespace_around_keywords" />
       <keyword name="whitespace_around_named_parameter_equals" id="whitespace_around_named_parameter_equals" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#whitespace_around_named_parameter_equals" />
@@ -19683,6 +19744,7 @@
       <file>eric6.Helpviewer.HelpInspector.html</file>
       <file>eric6.Helpviewer.HelpLanguagesDialog.html</file>
       <file>eric6.Helpviewer.HelpSearchWidget.html</file>
+      <file>eric6.Helpviewer.HelpSingleApplication.html</file>
       <file>eric6.Helpviewer.HelpSnap.html</file>
       <file>eric6.Helpviewer.HelpTabBar.html</file>
       <file>eric6.Helpviewer.HelpTabWidget.html</file>
@@ -20233,6 +20295,7 @@
       <file>eric6.Project.ProjectTranslationsBrowser.html</file>
       <file>eric6.Project.PropertiesDialog.html</file>
       <file>eric6.Project.QuickFindFileDialog.html</file>
+      <file>eric6.Project.RccCompilerOptionsDialog.html</file>
       <file>eric6.Project.SpellingPropertiesDialog.html</file>
       <file>eric6.Project.TranslationPropertiesDialog.html</file>
       <file>eric6.Project.UicCompilerOptionsDialog.html</file>
@@ -20341,6 +20404,7 @@
       <file>eric6.Tools.TRSingleApplication.html</file>
       <file>eric6.Tools.TrayStarter.html</file>
       <file>eric6.Tools.UIPreviewer.html</file>
+      <file>eric6.Tools.webBrowserSupport.html</file>
       <file>eric6.UI.AuthenticationDialog.html</file>
       <file>eric6.UI.Browser.html</file>
       <file>eric6.UI.BrowserModel.html</file>
@@ -20589,6 +20653,7 @@
       <file>eric6.WebBrowser.WebBrowserJavaScriptConsole.html</file>
       <file>eric6.WebBrowser.WebBrowserLanguagesDialog.html</file>
       <file>eric6.WebBrowser.WebBrowserPage.html</file>
+      <file>eric6.WebBrowser.WebBrowserSingleApplication.html</file>
       <file>eric6.WebBrowser.WebBrowserSnap.html</file>
       <file>eric6.WebBrowser.WebBrowserTabBar.html</file>
       <file>eric6.WebBrowser.WebBrowserTabWidget.html</file>
--- a/Documentation/Source/eric6.Debugger.DebugServer.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Debugger.DebugServer.html	Thu Jan 10 14:22:59 2019 +0100
@@ -1918,7 +1918,7 @@
 </dd>
 </dl><a NAME="DebugServer.startClient" ID="DebugServer.startClient"></a>
 <h4>DebugServer.startClient</h4>
-<b>startClient</b>(<i>unplanned=True, clType=None, forProject=False, runInConsole=False, venvName=""</i>)
+<b>startClient</b>(<i>unplanned=True, clType=None, forProject=False, runInConsole=False, venvName="", workingDir=None</i>)
 <p>
         Public method to start a debug client.
 </p><dl>
@@ -1938,6 +1938,9 @@
 </dd><dt><i>venvName=</i> (str)</dt>
 <dd>
 name of the virtual environment to be used
+</dd><dt><i>workingDir=</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><a NAME="DebugServer.unregisterDebuggerInterface" ID="DebugServer.unregisterDebuggerInterface"></a>
 <h4>DebugServer.unregisterDebuggerInterface</h4>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Thu Jan 10 14:22:59 2019 +0100
@@ -675,7 +675,7 @@
         the debug client. (Needed on Win OS)
 </p><a NAME="DebuggerInterfaceNone.startRemote" ID="DebuggerInterfaceNone.startRemote"></a>
 <h4>DebuggerInterfaceNone.startRemote</h4>
-<b>startRemote</b>(<i>port, runInConsole, venvName, originalPathString</i>)
+<b>startRemote</b>(<i>port, runInConsole, venvName, originalPathString, workingDir=None</i>)
 <p>
         Public method to start a remote Python interpreter.
 </p><dl>
@@ -692,6 +692,9 @@
 </dd><dt><i>originalPathString</i> (str)</dt>
 <dd>
 original PATH environment variable
+</dd><dt><i>workingDir</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -706,7 +709,7 @@
 </dd>
 </dl><a NAME="DebuggerInterfaceNone.startRemoteForProject" ID="DebuggerInterfaceNone.startRemoteForProject"></a>
 <h4>DebuggerInterfaceNone.startRemoteForProject</h4>
-<b>startRemoteForProject</b>(<i>port, runInConsole, venvName, originalPathString</i>)
+<b>startRemoteForProject</b>(<i>port, runInConsole, venvName, originalPathString, workingDir=None</i>)
 <p>
         Public method to start a remote Python interpreter for a project.
 </p><dl>
@@ -723,6 +726,9 @@
 </dd><dt><i>originalPathString</i> (str)</dt>
 <dd>
 original PATH environment variable
+</dd><dt><i>workingDir</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Thu Jan 10 14:22:59 2019 +0100
@@ -304,25 +304,32 @@
 </dd>
 </dl><a NAME="DebuggerInterfacePython.__startProcess" ID="DebuggerInterfacePython.__startProcess"></a>
 <h4>DebuggerInterfacePython.__startProcess</h4>
-<b>__startProcess</b>(<i>program, arguments, environment=None</i>)
+<b>__startProcess</b>(<i>program, arguments, environment=None, workingDir=None</i>)
 <p>
         Private method to start the debugger client process.
 </p><dl>
-<dt><i>program</i></dt>
+<dt><i>program</i> (str)</dt>
 <dd>
-name of the executable to start (string)
-</dd><dt><i>arguments</i></dt>
+name of the executable to start
+</dd><dt><i>arguments</i> (list of str)</dt>
 <dd>
-arguments to be passed to the program (list of string)
-</dd><dt><i>environment</i></dt>
+arguments to be passed to the program
+</dd><dt><i>environment</i> (dict of str)</dt>
 <dd>
 dictionary of environment settings to pass
-            (dict of string)
+</dd><dt><i>workingDir</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
 <dd>
-the process object (QProcess) or None
+the process object
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QProcess or None
 </dd>
 </dl><a NAME="DebuggerInterfacePython.__writeJsonCommandToSocket" ID="DebuggerInterfacePython.__writeJsonCommandToSocket"></a>
 <h4>DebuggerInterfacePython.__writeJsonCommandToSocket</h4>
@@ -797,7 +804,7 @@
         the debug client. (Needed on Win OS)
 </p><a NAME="DebuggerInterfacePython.startRemote" ID="DebuggerInterfacePython.startRemote"></a>
 <h4>DebuggerInterfacePython.startRemote</h4>
-<b>startRemote</b>(<i>port, runInConsole, venvName, originalPathString</i>)
+<b>startRemote</b>(<i>port, runInConsole, venvName, originalPathString, workingDir=None</i>)
 <p>
         Public method to start a remote Python interpreter.
 </p><dl>
@@ -814,6 +821,9 @@
 </dd><dt><i>originalPathString</i> (str)</dt>
 <dd>
 original PATH environment variable
+</dd><dt><i>workingDir</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -828,7 +838,7 @@
 </dd>
 </dl><a NAME="DebuggerInterfacePython.startRemoteForProject" ID="DebuggerInterfacePython.startRemoteForProject"></a>
 <h4>DebuggerInterfacePython.startRemoteForProject</h4>
-<b>startRemoteForProject</b>(<i>port, runInConsole, venvName, originalPathString</i>)
+<b>startRemoteForProject</b>(<i>port, runInConsole, venvName, originalPathString, workingDir=None</i>)
 <p>
         Public method to start a remote Python interpreter for a project.
 </p><dl>
@@ -845,6 +855,9 @@
 </dd><dt><i>originalPathString</i> (str)</dt>
 <dd>
 original PATH environment variable
+</dd><dt><i>workingDir</i> (str)</dt>
+<dd>
+directory to start the debugger client in
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
--- a/Documentation/Source/eric6.E5Gui.E5SingleApplication.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.E5Gui.E5SingleApplication.html	Thu Jan 10 14:22:59 2019 +0100
@@ -229,16 +229,16 @@
 </dd>
 </dl><a NAME="E5SingleApplicationServer.handleCommand" ID="E5SingleApplicationServer.handleCommand"></a>
 <h4>E5SingleApplicationServer.handleCommand</h4>
-<b>handleCommand</b>(<i>cmd, params</i>)
+<b>handleCommand</b>(<i>command, arguments</i>)
 <p>
         Public slot to handle the command sent by the client.
 </p><dl>
-<dt><i>cmd</i></dt>
+<dt><i>command</i> (str)</dt>
 <dd>
-commandstring (string)
-</dd><dt><i>params</i></dt>
+command sent by the client
+</dd><dt><i>arguments</i> (list of str)</dt>
 <dd>
-parameterstring (string)
+list of command arguments
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.E5XML.Config.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.E5XML.Config.html	Thu Jan 10 14:22:59 2019 +0100
@@ -25,7 +25,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>debuggerPropertiesFileFormatVersion</td></tr><tr><td>dictionariesListFileFormatVersion</td></tr><tr><td>highlightingStylesFileFormatVersion</td></tr><tr><td>multiProjectFileFormatVersion</td></tr><tr><td>pluginRepositoryFileFormatVersion</td></tr><tr><td>projectFileFormatVersion</td></tr><tr><td>projectFileFormatVersionAlt</td></tr><tr><td>projectFileFormatVersionIdl</td></tr><tr><td>projectFileFormatVersionMake</td></tr><tr><td>projectFileFormatVersionProto</td></tr><tr><td>sessionFileFormatVersion</td></tr><tr><td>shortcutsFileFormatVersion</td></tr><tr><td>tasksFileFormatVersion</td></tr><tr><td>templatesFileFormatVersion</td></tr><tr><td>userProjectFileFormatVersion</td></tr>
+<tr><td>debuggerPropertiesFileFormatVersion</td></tr><tr><td>dictionariesListFileFormatVersion</td></tr><tr><td>highlightingStylesFileFormatVersion</td></tr><tr><td>multiProjectFileFormatVersion</td></tr><tr><td>pluginRepositoryFileFormatVersion</td></tr><tr><td>projectFileFormatVersion</td></tr><tr><td>projectFileFormatVersionAlt</td></tr><tr><td>projectFileFormatVersionIdl</td></tr><tr><td>projectFileFormatVersionMake</td></tr><tr><td>projectFileFormatVersionProto</td></tr><tr><td>projectFileFormatVersionUic</td></tr><tr><td>sessionFileFormatVersion</td></tr><tr><td>shortcutsFileFormatVersion</td></tr><tr><td>tasksFileFormatVersion</td></tr><tr><td>templatesFileFormatVersion</td></tr><tr><td>userProjectFileFormatVersion</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
--- a/Documentation/Source/eric6.E5XML.ShortcutsWriter.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.E5XML.ShortcutsWriter.html	Thu Jan 10 14:22:59 2019 +0100
@@ -96,10 +96,15 @@
 </dd>
 </dl><a NAME="ShortcutsWriter.writeXML" ID="ShortcutsWriter.writeXML"></a>
 <h4>ShortcutsWriter.writeXML</h4>
-<b>writeXML</b>(<i></i>)
+<b>writeXML</b>(<i>helpViewer=None</i>)
 <p>
         Public method to write the XML to the file.
-</p>
+</p><dl>
+<dt><i>helpViewer</i></dt>
+<dd>
+reference to the help window object
+</dd>
+</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Globals.__init__.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Globals.__init__.html	Thu Jan 10 14:22:59 2019 +0100
@@ -55,6 +55,9 @@
 <td><a href="#getQtBinariesPath">getQtBinariesPath</a></td>
 <td>Module function to get the path of the Qt binaries.</td>
 </tr><tr>
+<td><a href="#getWebBrowserSupport">getWebBrowserSupport</a></td>
+<td>Module function to determine the supported web browser variant.</td>
+</tr><tr>
 <td><a href="#isLinuxPlatform">isLinuxPlatform</a></td>
 <td>Function to check, if this is a Linux platform.</td>
 </tr><tr>
@@ -203,6 +206,25 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="getWebBrowserSupport" ID="getWebBrowserSupport"></a>
+<h2>getWebBrowserSupport</h2>
+<b>getWebBrowserSupport</b>(<i></i>)
+<p>
+    Module function to determine the supported web browser variant.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+string indicating the supported web browser variant ("QtWebEngine",
+        "QtWebKit" or "None")
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="isLinuxPlatform" ID="isLinuxPlatform"></a>
 <h2>isLinuxPlatform</h2>
 <b>isLinuxPlatform</b>(<i></i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Helpviewer.HelpSingleApplication.html	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,266 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Helpviewer.HelpSingleApplication</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Helpviewer.HelpSingleApplication</h1>
+<p>
+Module implementing the single application server and client for the web
+browser.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>SAFile</td></tr><tr><td>SALoadUrl</td></tr><tr><td>SANewTab</td></tr><tr><td>SASearch</td></tr><tr><td>SAShutdown</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HelpSingleApplicationClient">HelpSingleApplicationClient</a></td>
+<td>Class implementing the single application client of the help viewer.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer">HelpSingleApplicationServer</a></td>
+<td>Class implementing the single application server embedded within the Help viewer.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HelpSingleApplicationClient" ID="HelpSingleApplicationClient"></a>
+<h2>HelpSingleApplicationClient</h2>
+<p>
+    Class implementing the single application client of the help viewer.
+</p>
+<h3>Derived from</h3>
+SingleApplicationClient
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HelpSingleApplicationClient.__init__">HelpSingleApplicationClient</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationClient.__loadUrl">__loadUrl</a></td>
+<td>Private method to send an URL to be loaded.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationClient.__newTab">__newTab</a></td>
+<td>Private method to send an URL to be loaded in a new tab.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationClient.__search">__search</a></td>
+<td>Private method to send a word to search for.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationClient.__shutdown">__shutdown</a></td>
+<td>Private method to signal a shutdown request to the browser.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationClient.processArgs">processArgs</a></td>
+<td>Public method to process the command line args passed to the UI.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HelpSingleApplicationClient.__init__" ID="HelpSingleApplicationClient.__init__"></a>
+<h4>HelpSingleApplicationClient (Constructor)</h4>
+<b>HelpSingleApplicationClient</b>(<i>name=""</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name to be used by the single application server
+</dd>
+</dl><a NAME="HelpSingleApplicationClient.__loadUrl" ID="HelpSingleApplicationClient.__loadUrl"></a>
+<h4>HelpSingleApplicationClient.__loadUrl</h4>
+<b>__loadUrl</b>(<i>url</i>)
+<p>
+        Private method to send an URL to be loaded.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpSingleApplicationClient.__newTab" ID="HelpSingleApplicationClient.__newTab"></a>
+<h4>HelpSingleApplicationClient.__newTab</h4>
+<b>__newTab</b>(<i>url</i>)
+<p>
+        Private method to send an URL to be loaded in a new tab.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpSingleApplicationClient.__search" ID="HelpSingleApplicationClient.__search"></a>
+<h4>HelpSingleApplicationClient.__search</h4>
+<b>__search</b>(<i>word</i>)
+<p>
+        Private method to send a word to search for.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+to to be searched for
+</dd>
+</dl><a NAME="HelpSingleApplicationClient.__shutdown" ID="HelpSingleApplicationClient.__shutdown"></a>
+<h4>HelpSingleApplicationClient.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to signal a shutdown request to the browser.
+</p><a NAME="HelpSingleApplicationClient.processArgs" ID="HelpSingleApplicationClient.processArgs"></a>
+<h4>HelpSingleApplicationClient.processArgs</h4>
+<b>processArgs</b>(<i>args, disconnect=True</i>)
+<p>
+        Public method to process the command line args passed to the UI.
+</p><dl>
+<dt><i>args</i> (list of str)</dt>
+<dd>
+list of command line arguments
+</dd><dt><i>disconnect</i> (bool)</dt>
+<dd>
+flag indicating to disconnect when done
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="HelpSingleApplicationServer" ID="HelpSingleApplicationServer"></a>
+<h2>HelpSingleApplicationServer</h2>
+<p>
+    Class implementing the single application server embedded within the
+    Help viewer.
+</p><h3>Signals</h3>
+<dl>
+<dt>loadUrl(str)</dt>
+<dd>
+emitted to load an URL
+</dd><dt>newTab(str)</dt>
+<dd>
+emitted to load an URL in a new tab
+</dd><dt>search(str)</dt>
+<dd>
+emitted to search for a given word
+</dd><dt>shutdown()</dt>
+<dd>
+emitted to shut down the browser
+</dd>
+</dl>
+<h3>Derived from</h3>
+SingleApplicationServer
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#HelpSingleApplicationServer.__init__">HelpSingleApplicationServer</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer.__saLoadUrl">__saLoadUrl</a></td>
+<td>Private method to load an URL in a new tab.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer.__saNewTab">__saNewTab</a></td>
+<td>Private method to load an URL .</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer.__saSearch">__saSearch</a></td>
+<td>Private method to search for a given word.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer.__saShutdown">__saShutdown</a></td>
+<td>Private method to shut down the web browser.</td>
+</tr><tr>
+<td><a href="#HelpSingleApplicationServer.handleCommand">handleCommand</a></td>
+<td>Public slot to handle the command sent by the client.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HelpSingleApplicationServer.__init__" ID="HelpSingleApplicationServer.__init__"></a>
+<h4>HelpSingleApplicationServer (Constructor)</h4>
+<b>HelpSingleApplicationServer</b>(<i>name=""</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name to be used by the single application server
+</dd>
+</dl><a NAME="HelpSingleApplicationServer.__saLoadUrl" ID="HelpSingleApplicationServer.__saLoadUrl"></a>
+<h4>HelpSingleApplicationServer.__saLoadUrl</h4>
+<b>__saLoadUrl</b>(<i>url</i>)
+<p>
+        Private method to load an URL in a new tab.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpSingleApplicationServer.__saNewTab" ID="HelpSingleApplicationServer.__saNewTab"></a>
+<h4>HelpSingleApplicationServer.__saNewTab</h4>
+<b>__saNewTab</b>(<i>url</i>)
+<p>
+        Private method to load an URL .
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpSingleApplicationServer.__saSearch" ID="HelpSingleApplicationServer.__saSearch"></a>
+<h4>HelpSingleApplicationServer.__saSearch</h4>
+<b>__saSearch</b>(<i>word</i>)
+<p>
+        Private method to search for a given word.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+word to be searched for
+</dd>
+</dl><a NAME="HelpSingleApplicationServer.__saShutdown" ID="HelpSingleApplicationServer.__saShutdown"></a>
+<h4>HelpSingleApplicationServer.__saShutdown</h4>
+<b>__saShutdown</b>(<i></i>)
+<p>
+        Private method to shut down the web browser.
+</p><a NAME="HelpSingleApplicationServer.handleCommand" ID="HelpSingleApplicationServer.handleCommand"></a>
+<h4>HelpSingleApplicationServer.handleCommand</h4>
+<b>handleCommand</b>(<i>command, arguments</i>)
+<p>
+        Public slot to handle the command sent by the client.
+</p><dl>
+<dt><i>command</i> (str)</dt>
+<dd>
+command sent by the client
+</dd><dt><i>arguments</i> (list of str)</dt>
+<dd>
+list of command arguments
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Helpviewer.HelpWindow.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Helpviewer.HelpWindow.html	Thu Jan 10 14:22:59 2019 +0100
@@ -61,7 +61,7 @@
 E5MainWindow
 <h3>Class Attributes</h3>
 <table>
-<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_zoomManager</td></tr><tr><td>helpwindows</td></tr>
+<tr><td>_adblockManager</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_networkAccessManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_zoomManager</td></tr><tr><td>helpwindows</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -187,6 +187,9 @@
 <td><a href="#HelpWindow.__closeNetworkMonitor">__closeNetworkMonitor</a></td>
 <td>Private slot to close the network monitor dialog.</td>
 </tr><tr>
+<td><a href="#HelpWindow.__configShortcuts">__configShortcuts</a></td>
+<td>Private slot to configure the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#HelpWindow.__copy">__copy</a></td>
 <td>Private slot called to handle the copy action.</td>
 </tr><tr>
@@ -205,6 +208,9 @@
 <td><a href="#HelpWindow.__docsInstalled">__docsInstalled</a></td>
 <td>Private slot handling the end of documentation installation.</td>
 </tr><tr>
+<td><a href="#HelpWindow.__exportShortcuts">__exportShortcuts</a></td>
+<td>Private slot to export the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#HelpWindow.__feedsManagerClosed">__feedsManagerClosed</a></td>
 <td>Private slot to handle closing the feeds manager dialog.</td>
 </tr><tr>
@@ -229,6 +235,9 @@
 <td><a href="#HelpWindow.__home">__home</a></td>
 <td>Private slot called to handle the home action.</td>
 </tr><tr>
+<td><a href="#HelpWindow.__importShortcuts">__importShortcuts</a></td>
+<td>Private slot to import the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#HelpWindow.__indexingFinished">__indexingFinished</a></td>
 <td>Private slot to handle the start of the indexing process.</td>
 </tr><tr>
@@ -292,6 +301,15 @@
 <td><a href="#HelpWindow.__removeOldDocumentation">__removeOldDocumentation</a></td>
 <td>Private slot to remove non-existing documentation from the help engine.</td>
 </tr><tr>
+<td><a href="#HelpWindow.__saLoadUrl">__saLoadUrl</a></td>
+<td>Private slot to load an URL received via the single application protocol.</td>
+</tr><tr>
+<td><a href="#HelpWindow.__saNewTab">__saNewTab</a></td>
+<td>Private slot to load an URL received via the single application protocol in a new tab.</td>
+</tr><tr>
+<td><a href="#HelpWindow.__saSearchWord">__saSearchWord</a></td>
+<td>Private slot to search for the given word.</td>
+</tr><tr>
 <td><a href="#HelpWindow.__savePageAs">__savePageAs</a></td>
 <td>Private slot to save the current page.</td>
 </tr><tr>
@@ -481,6 +499,9 @@
 <td><a href="#HelpWindow.getActions">getActions</a></td>
 <td>Public method to get a list of all actions.</td>
 </tr><tr>
+<td><a href="#HelpWindow.getActionsCategory">getActionsCategory</a></td>
+<td>Public method to get the category of the defined actions.</td>
+</tr><tr>
 <td><a href="#HelpWindow.getSourceFileList">getSourceFileList</a></td>
 <td>Public method to get a list of all opened source files.</td>
 </tr><tr>
@@ -832,33 +853,34 @@
 </dd>
 </dl><a NAME="HelpWindow.__init__" ID="HelpWindow.__init__"></a>
 <h4>HelpWindow (Constructor)</h4>
-<b>HelpWindow</b>(<i>home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None</i>)
+<b>HelpWindow</b>(<i>home, path, parent, name, searchWord=None, qthelp=False, single=False, saname=""</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>home</i></dt>
+<dt><i>home</i> (str)</dt>
 <dd>
-the URL to be shown (string)
-</dd><dt><i>path</i></dt>
+the URL to be shown
+</dd><dt><i>path</i> (str)</dt>
 <dd>
-the path of the working dir (usually '.') (string)
-</dd><dt><i>parent</i></dt>
+the path of the working dir (usually '.')
+</dd><dt><i>parent</i> (QWidget)</dt>
 <dd>
-parent widget of this window (QWidget)
-</dd><dt><i>name</i></dt>
+parent widget of this window
+</dd><dt><i>name</i> (str)</dt>
 <dd>
-name of this window (string)
-</dd><dt><i>fromEric</i></dt>
+name of this window
+</dd><dt><i>searchWord</i> (str)</dt>
+<dd>
+word to search for
+</dd><dt><i>qthelp</i> (bool)</dt>
 <dd>
-flag indicating whether it was called from within
-            eric6 (boolean)
-</dd><dt><i>initShortcutsOnly=</i></dt>
+flag indicating to enable the QtHelp support
+</dd><dt><i>single</i> (bool)</dt>
 <dd>
-flag indicating to just initialize the
-            keyboard shortcuts (boolean)
-</dd><dt><i>searchWord=</i></dt>
+flag indicating to start in single application mode
+</dd><dt><i>saname</i> (str)</dt>
 <dd>
-word to search for (string)
+name to be used for the single application server
 </dd>
 </dl><a NAME="HelpWindow.__about" ID="HelpWindow.__about"></a>
 <h4>HelpWindow.__about</h4>
@@ -943,6 +965,11 @@
 <b>__closeNetworkMonitor</b>(<i></i>)
 <p>
         Private slot to close the network monitor dialog.
+</p><a NAME="HelpWindow.__configShortcuts" ID="HelpWindow.__configShortcuts"></a>
+<h4>HelpWindow.__configShortcuts</h4>
+<b>__configShortcuts</b>(<i></i>)
+<p>
+        Private slot to configure the keyboard shortcuts.
 </p><a NAME="HelpWindow.__copy" ID="HelpWindow.__copy"></a>
 <h4>HelpWindow.__copy</h4>
 <b>__copy</b>(<i></i>)
@@ -1010,7 +1037,12 @@
 flag indicating that documents were installed
             (boolean)
 </dd>
-</dl><a NAME="HelpWindow.__feedsManagerClosed" ID="HelpWindow.__feedsManagerClosed"></a>
+</dl><a NAME="HelpWindow.__exportShortcuts" ID="HelpWindow.__exportShortcuts"></a>
+<h4>HelpWindow.__exportShortcuts</h4>
+<b>__exportShortcuts</b>(<i></i>)
+<p>
+        Private slot to export the keyboard shortcuts.
+</p><a NAME="HelpWindow.__feedsManagerClosed" ID="HelpWindow.__feedsManagerClosed"></a>
 <h4>HelpWindow.__feedsManagerClosed</h4>
 <b>__feedsManagerClosed</b>(<i>feedsManager</i>)
 <p>
@@ -1063,6 +1095,11 @@
 <b>__home</b>(<i></i>)
 <p>
         Private slot called to handle the home action.
+</p><a NAME="HelpWindow.__importShortcuts" ID="HelpWindow.__importShortcuts"></a>
+<h4>HelpWindow.__importShortcuts</h4>
+<b>__importShortcuts</b>(<i></i>)
+<p>
+        Private slot to import the keyboard shortcuts.
 </p><a NAME="HelpWindow.__indexingFinished" ID="HelpWindow.__indexingFinished"></a>
 <h4>HelpWindow.__indexingFinished</h4>
 <b>__indexingFinished</b>(<i></i>)
@@ -1194,7 +1231,39 @@
 <b>__removeOldDocumentation</b>(<i></i>)
 <p>
         Private slot to remove non-existing documentation from the help engine.
-</p><a NAME="HelpWindow.__savePageAs" ID="HelpWindow.__savePageAs"></a>
+</p><a NAME="HelpWindow.__saLoadUrl" ID="HelpWindow.__saLoadUrl"></a>
+<h4>HelpWindow.__saLoadUrl</h4>
+<b>__saLoadUrl</b>(<i>urlStr</i>)
+<p>
+        Private slot to load an URL received via the single application
+        protocol.
+</p><dl>
+<dt><i>urlStr</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpWindow.__saNewTab" ID="HelpWindow.__saNewTab"></a>
+<h4>HelpWindow.__saNewTab</h4>
+<b>__saNewTab</b>(<i>urlStr</i>)
+<p>
+        Private slot to load an URL received via the single application
+        protocol in a new tab.
+</p><dl>
+<dt><i>urlStr</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="HelpWindow.__saSearchWord" ID="HelpWindow.__saSearchWord"></a>
+<h4>HelpWindow.__saSearchWord</h4>
+<b>__saSearchWord</b>(<i>word</i>)
+<p>
+        Private slot to search for the given word.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+word to be searched for
+</dd>
+</dl><a NAME="HelpWindow.__savePageAs" ID="HelpWindow.__savePageAs"></a>
 <h4>HelpWindow.__savePageAs</h4>
 <b>__savePageAs</b>(<i></i>)
 <p>
@@ -1630,6 +1699,21 @@
 <dd>
 list of all actions (list of E5Action)
 </dd>
+</dl><a NAME="HelpWindow.getActionsCategory" ID="HelpWindow.getActionsCategory"></a>
+<h4>HelpWindow.getActionsCategory</h4>
+<b>getActionsCategory</b>(<i></i>)
+<p>
+        Public method to get the category of the defined actions.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+category of the actions
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="HelpWindow.getSourceFileList" ID="HelpWindow.getSourceFileList"></a>
 <h4>HelpWindow.getSourceFileList</h4>
 <b>getSourceFileList</b>(<i></i>)
--- a/Documentation/Source/eric6.PluginManager.PluginManager.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.PluginManager.PluginManager.html	Thu Jan 10 14:22:59 2019 +0100
@@ -200,6 +200,9 @@
 <td><a href="#PluginManager.isValidPluginName">isValidPluginName</a></td>
 <td>Public methode to check, if a file name is a valid plugin name.</td>
 </tr><tr>
+<td><a href="#PluginManager.loadDocumentationSetPlugins">loadDocumentationSetPlugins</a></td>
+<td>Public method to load just the documentation sets plugins.</td>
+</tr><tr>
 <td><a href="#PluginManager.loadPlugin">loadPlugin</a></td>
 <td>Public method to load a plugin module.</td>
 </tr><tr>
@@ -826,6 +829,17 @@
 <dd>
 flag indicating a valid plugin name (boolean)
 </dd>
+</dl><a NAME="PluginManager.loadDocumentationSetPlugins" ID="PluginManager.loadDocumentationSetPlugins"></a>
+<h4>PluginManager.loadDocumentationSetPlugins</h4>
+<b>loadDocumentationSetPlugins</b>(<i></i>)
+<p>
+        Public method to load just the documentation sets plugins.
+</p><dl>
+<dt>Raises <b>PluginModulesError</b>:</dt>
+<dd>
+raised to indicate the absence of
+            plug-in modules
+</dd>
 </dl><a NAME="PluginManager.loadPlugin" ID="PluginManager.loadPlugin"></a>
 <h4>PluginManager.loadPlugin</h4>
 <b>loadPlugin</b>(<i>name, directory, reload_=False</i>)
--- a/Documentation/Source/eric6.PluginManager.PluginRepositoryDialog.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.PluginManager.PluginRepositoryDialog.html	Thu Jan 10 14:22:59 2019 +0100
@@ -45,6 +45,9 @@
 <tr>
 <td><a href="#PluginRepositoryDownloadCleanup">PluginRepositoryDownloadCleanup</a></td>
 <td>Module function to clean up the plug-in downloads area.</td>
+</tr><tr>
+<td><a href="#registerPlugin">registerPlugin</a></td>
+<td>Method to register a plug-in's data.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -646,5 +649,39 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="registerPlugin" ID="registerPlugin"></a>
+<h2>registerPlugin</h2>
+<b>registerPlugin</b>(<i>name, short, description, url, author, version, filename, status</i>)
+<p>
+        Method to register a plug-in's data.
+</p><dl>
+<dt><i>name</i></dt>
+<dd>
+data for the name field (string)
+</dd><dt><i>short</i></dt>
+<dd>
+data for the short field (string)
+</dd><dt><i>description</i></dt>
+<dd>
+data for the description field (list of strings)
+</dd><dt><i>url</i></dt>
+<dd>
+data for the url field (string)
+</dd><dt><i>author</i></dt>
+<dd>
+data for the author field (string)
+</dd><dt><i>version</i></dt>
+<dd>
+data for the version field (string)
+</dd><dt><i>filename</i></dt>
+<dd>
+data for the filename field (string)
+</dd><dt><i>status</i></dt>
+<dd>
+status of the plugin (string [stable, unstable, unknown])
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Plugins.UiExtensionPlugins.PipInterface.Pip.html	Thu Jan 10 14:22:59 2019 +0100
@@ -138,6 +138,9 @@
 <td><a href="#Pip.getMenuNames">getMenuNames</a></td>
 <td>Public method to get the names of all menus.</td>
 </tr><tr>
+<td><a href="#Pip.getProjectEnvironmentString">getProjectEnvironmentString</a></td>
+<td>Public method to get the string for the project environment.</td>
+</tr><tr>
 <td><a href="#Pip.getVirtualenvInterpreter">getVirtualenvInterpreter</a></td>
 <td>Public method to get the interpreter for a virtual environment.</td>
 </tr><tr>
@@ -411,6 +414,21 @@
 <dd>
 list of str
 </dd>
+</dl><a NAME="Pip.getProjectEnvironmentString" ID="Pip.getProjectEnvironmentString"></a>
+<h4>Pip.getProjectEnvironmentString</h4>
+<b>getProjectEnvironmentString</b>(<i></i>)
+<p>
+        Public method to get the string for the project environment.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+string for the project environment
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="Pip.getVirtualenvInterpreter" ID="Pip.getVirtualenvInterpreter"></a>
 <h4>Pip.getVirtualenvInterpreter</h4>
 <b>getVirtualenvInterpreter</b>(<i>venvName</i>)
--- a/Documentation/Source/eric6.Preferences.ConfigurationDialog.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Preferences.ConfigurationDialog.html	Thu Jan 10 14:22:59 2019 +0100
@@ -107,7 +107,7 @@
 </table>
 <a NAME="ConfigurationDialog.__init__" ID="ConfigurationDialog.__init__"></a>
 <h4>ConfigurationDialog (Constructor)</h4>
-<b>ConfigurationDialog</b>(<i>parent=None, name=None, modal=False, fromEric=True, displayMode=ConfigurationWidget.DefaultMode, expandedEntries=None, webEngine=False</i>)
+<b>ConfigurationDialog</b>(<i>parent=None, name=None, modal=False, fromEric=True, displayMode=ConfigurationWidget.DefaultMode, expandedEntries=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -133,9 +133,6 @@
 <dd>
 list of entries to be shown expanded
             (list of strings)
-</dd><dt><i>webEngine=</i></dt>
-<dd>
-flag indicating QtWebEngine is used (bool)
 </dd>
 </dl><a NAME="ConfigurationDialog.__masterPasswordChanged" ID="ConfigurationDialog.__masterPasswordChanged"></a>
 <h4>ConfigurationDialog.__masterPasswordChanged</h4>
@@ -368,7 +365,7 @@
 </table>
 <a NAME="ConfigurationWidget.__init__" ID="ConfigurationWidget.__init__"></a>
 <h4>ConfigurationWidget (Constructor)</h4>
-<b>ConfigurationWidget</b>(<i>parent=None, fromEric=True, displayMode=DefaultMode, expandedEntries=None, webEngine=False</i>)
+<b>ConfigurationWidget</b>(<i>parent=None, fromEric=True, displayMode=DefaultMode, expandedEntries=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -388,9 +385,6 @@
 <dd>
 list of entries to be shown expanded
             (list of strings)
-</dd><dt><i>webEngine=</i></dt>
-<dd>
-flag indicating QtWebEngine is used (bool)
 </dd>
 </dl><dl>
 <dt>Raises <b>RuntimeError</b>:</dt>
@@ -651,16 +645,13 @@
 </table>
 <a NAME="ConfigurationWindow.__init__" ID="ConfigurationWindow.__init__"></a>
 <h4>ConfigurationWindow (Constructor)</h4>
-<b>ConfigurationWindow</b>(<i>parent=None, webEngine=False</i>)
+<b>ConfigurationWindow</b>(<i>parent=None</i>)
 <p>
         Constructor
 </p><dl>
 <dt><i>parent</i></dt>
 <dd>
 reference to the parent widget (QWidget)
-</dd><dt><i>webEngine=</i></dt>
-<dd>
-flag indicating QtWebEngine is used (bool)
 </dd>
 </dl><a NAME="ConfigurationWindow.accept" ID="ConfigurationWindow.accept"></a>
 <h4>ConfigurationWindow.accept</h4>
--- a/Documentation/Source/eric6.Preferences.Shortcuts.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Preferences.Shortcuts.html	Thu Jan 10 14:22:59 2019 +0100
@@ -116,33 +116,39 @@
 <hr /><hr />
 <a NAME="exportShortcuts" ID="exportShortcuts"></a>
 <h2>exportShortcuts</h2>
-<b>exportShortcuts</b>(<i>fn</i>)
+<b>exportShortcuts</b>(<i>fn, helpViewer=None</i>)
 <p>
     Module function to export the keyboard shortcuts for the defined QActions.
 </p><dl>
 <dt><i>fn</i></dt>
 <dd>
 filename of the export file (string)
+</dd><dt><i>helpViewer</i></dt>
+<dd>
+reference to the help window object
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="importShortcuts" ID="importShortcuts"></a>
 <h2>importShortcuts</h2>
-<b>importShortcuts</b>(<i>fn</i>)
+<b>importShortcuts</b>(<i>fn, helpViewer=None</i>)
 <p>
     Module function to import the keyboard shortcuts for the defined E5Actions.
 </p><dl>
 <dt><i>fn</i></dt>
 <dd>
 filename of the import file (string)
+</dd><dt><i>helpViewer</i></dt>
+<dd>
+reference to the help window object
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="readShortcuts" ID="readShortcuts"></a>
 <h2>readShortcuts</h2>
-<b>readShortcuts</b>(<i>prefClass=Prefs, helpViewer=None, pluginName=None, helpViewerCategory=""</i>)
+<b>readShortcuts</b>(<i>prefClass=Prefs, helpViewer=None, pluginName=None</i>)
 <p>
     Module function to read the keyboard shortcuts for the defined QActions.
 </p><dl>
@@ -156,29 +162,29 @@
 <dd>
 name of the plugin for which to load shortcuts
         (string)
-</dd><dt><i>helpViewerCategory=</i></dt>
-<dd>
-name of the help viewer category (string)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="saveShortcuts" ID="saveShortcuts"></a>
 <h2>saveShortcuts</h2>
-<b>saveShortcuts</b>(<i>prefClass=Prefs</i>)
+<b>saveShortcuts</b>(<i>prefClass=Prefs, helpViewer=None</i>)
 <p>
     Module function to write the keyboard shortcuts for the defined QActions.
 </p><dl>
 <dt><i>prefClass</i></dt>
 <dd>
 preferences class used as the storage area
+</dd><dt><i>helpViewer=</i></dt>
+<dd>
+reference to the help window object
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="setActions" ID="setActions"></a>
 <h2>setActions</h2>
-<b>setActions</b>(<i>shortcuts</i>)
+<b>setActions</b>(<i>shortcuts, helpViewer=None</i>)
 <p>
     Module function to set actions based on new format shortcuts file.
 </p><dl>
@@ -186,6 +192,9 @@
 <dd>
 dictionary containing the accelerator information
         read from a XML file
+</dd><dt><i>helpViewer</i></dt>
+<dd>
+reference to the help window object
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Preferences.ShortcutsDialog.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Preferences.ShortcutsDialog.html	Thu Jan 10 14:22:59 2019 +0100
@@ -121,19 +121,13 @@
 </table>
 <a NAME="ShortcutsDialog.__init__" ID="ShortcutsDialog.__init__"></a>
 <h4>ShortcutsDialog (Constructor)</h4>
-<b>ShortcutsDialog</b>(<i>parent=None, name=None, modal=False</i>)
+<b>ShortcutsDialog</b>(<i>parent=None</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>parent</i></dt>
-<dd>
-The parent widget of this dialog. (QWidget)
-</dd><dt><i>name</i></dt>
+<dt><i>parent</i> (QWidget)</dt>
 <dd>
-The name of this dialog. (string)
-</dd><dt><i>modal</i></dt>
-<dd>
-Flag indicating a modal dialog. (boolean)
+parent widget of this dialog
 </dd>
 </dl><a NAME="ShortcutsDialog.__checkShortcut" ID="ShortcutsDialog.__checkShortcut"></a>
 <h4>ShortcutsDialog.__checkShortcut</h4>
@@ -315,10 +309,15 @@
 </dd>
 </dl><a NAME="ShortcutsDialog.populate" ID="ShortcutsDialog.populate"></a>
 <h4>ShortcutsDialog.populate</h4>
-<b>populate</b>(<i></i>)
+<b>populate</b>(<i>helpViewer=None</i>)
 <p>
         Public method to populate the dialog.
-</p>
+</p><dl>
+<dt><i>helpViewer</i></dt>
+<dd>
+reference to the help window object
+</dd>
+</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Project.Project.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Project.Project.html	Thu Jan 10 14:22:59 2019 +0100
@@ -509,6 +509,9 @@
 <td><a href="#Project.getDebuggerFilters">getDebuggerFilters</a></td>
 <td>Public method to get the debugger filters for a programming language.</td>
 </tr><tr>
+<td><a href="#Project.getDefaultRccCompilerParameters">getDefaultRccCompilerParameters</a></td>
+<td>Public method to get the default rcc compiler parameters.</td>
+</tr><tr>
 <td><a href="#Project.getDefaultSourceExtension">getDefaultSourceExtension</a></td>
 <td>Public method to get the default extension for the project's programming language.</td>
 </tr><tr>
@@ -614,6 +617,9 @@
 <td><a href="#Project.hasDefaultMakeParameters">hasDefaultMakeParameters</a></td>
 <td>Public method to test, if the project contains the default make parameters.</td>
 </tr><tr>
+<td><a href="#Project.hasDefaultRccCompilerParameters">hasDefaultRccCompilerParameters</a></td>
+<td>Public method to test, if the project contains the default rcc compiler parameters.</td>
+</tr><tr>
 <td><a href="#Project.hasDefaultUicCompilerParameters">hasDefaultUicCompilerParameters</a></td>
 <td>Public method to test, if the project contains the default uic compiler parameters.</td>
 </tr><tr>
@@ -1731,6 +1737,21 @@
 <dd>
 str
 </dd>
+</dl><a NAME="Project.getDefaultRccCompilerParameters" ID="Project.getDefaultRccCompilerParameters"></a>
+<h4>Project.getDefaultRccCompilerParameters</h4>
+<b>getDefaultRccCompilerParameters</b>(<i></i>)
+<p>
+        Public method to get the default rcc compiler parameters.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+dictionary containing the default rcc compiler parameters
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+dict
+</dd>
 </dl><a NAME="Project.getDefaultSourceExtension" ID="Project.getDefaultSourceExtension"></a>
 <h4>Project.getDefaultSourceExtension</h4>
 <b>getDefaultSourceExtension</b>(<i></i>)
@@ -2174,6 +2195,22 @@
 <dd>
 bool
 </dd>
+</dl><a NAME="Project.hasDefaultRccCompilerParameters" ID="Project.hasDefaultRccCompilerParameters"></a>
+<h4>Project.hasDefaultRccCompilerParameters</h4>
+<b>hasDefaultRccCompilerParameters</b>(<i></i>)
+<p>
+        Public method to test, if the project contains the default rcc compiler
+        parameters.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating default parameter set
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="Project.hasDefaultUicCompilerParameters" ID="Project.hasDefaultUicCompilerParameters"></a>
 <h4>Project.hasDefaultUicCompilerParameters</h4>
 <b>hasDefaultUicCompilerParameters</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html	Thu Jan 10 14:22:59 2019 +0100
@@ -95,6 +95,9 @@
 <td><a href="#ProjectResourcesBrowser.__compileSelectedResources">__compileSelectedResources</a></td>
 <td>Private method to compile selected resources to source files.</td>
 </tr><tr>
+<td><a href="#ProjectResourcesBrowser.__configureRccCompiler">__configureRccCompiler</a></td>
+<td>Private slot to configure some non-common rcc compiler options.</td>
+</tr><tr>
 <td><a href="#ProjectResourcesBrowser.__deleteFile">__deleteFile</a></td>
 <td>Private method to delete a resource file from the project.</td>
 </tr><tr>
@@ -239,6 +242,11 @@
 <b>__compileSelectedResources</b>(<i></i>)
 <p>
         Private method to compile selected resources to source files.
+</p><a NAME="ProjectResourcesBrowser.__configureRccCompiler" ID="ProjectResourcesBrowser.__configureRccCompiler"></a>
+<h4>ProjectResourcesBrowser.__configureRccCompiler</h4>
+<b>__configureRccCompiler</b>(<i></i>)
+<p>
+        Private slot to configure some non-common rcc compiler options.
 </p><a NAME="ProjectResourcesBrowser.__deleteFile" ID="ProjectResourcesBrowser.__deleteFile"></a>
 <h4>ProjectResourcesBrowser.__deleteFile</h4>
 <b>__deleteFile</b>(<i></i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Project.RccCompilerOptionsDialog.html	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Project.RccCompilerOptionsDialog</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Project.RccCompilerOptionsDialog</h1>
+<p>
+Module implementing a dialog to enter some non-common rcc compiler options.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#RccCompilerOptionsDialog">RccCompilerOptionsDialog</a></td>
+<td>Class implementing a dialog to enter some non-common rcc compiler options.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="RccCompilerOptionsDialog" ID="RccCompilerOptionsDialog"></a>
+<h2>RccCompilerOptionsDialog</h2>
+<p>
+    Class implementing a dialog to enter some non-common rcc compiler options.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_RccCompilerOptionsDialog
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#RccCompilerOptionsDialog.__init__">RccCompilerOptionsDialog</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#RccCompilerOptionsDialog.getData">getData</a></td>
+<td>Public method to get the entered data.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="RccCompilerOptionsDialog.__init__" ID="RccCompilerOptionsDialog.__init__"></a>
+<h4>RccCompilerOptionsDialog (Constructor)</h4>
+<b>RccCompilerOptionsDialog</b>(<i>compilerOptions, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>compilerOptions</i> (dict)</dt>
+<dd>
+dictionary containing the rcc compiler options
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="RccCompilerOptionsDialog.getData" ID="RccCompilerOptionsDialog.getData"></a>
+<h4>RccCompilerOptionsDialog.getData</h4>
+<b>getData</b>(<i></i>)
+<p>
+        Public method to get the entered data.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing the compression threshold, compression level,
+            flag indicating to disable compression and the resource access path
+            prefix
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (int, int, bool, str)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Toolbox.SingleApplication.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Toolbox.SingleApplication.html	Thu Jan 10 14:22:59 2019 +0100
@@ -95,10 +95,15 @@
 </dd>
 </dl><a NAME="SingleApplicationClient.connect" ID="SingleApplicationClient.connect"></a>
 <h4>SingleApplicationClient.connect</h4>
-<b>connect</b>(<i></i>)
+<b>connect</b>(<i>timeout=10000</i>)
 <p>
         Public method to connect the single application client to its server.
 </p><dl>
+<dt><i>timeout</i> (int)</dt>
+<dd>
+connection timeout value in milliseconds
+</dd>
+</dl><dl>
 <dt>Returns:</dt>
 <dd>
 value indicating success or an error number. Value is one of:
@@ -142,13 +147,16 @@
 </dd>
 </dl><a NAME="SingleApplicationClient.sendCommand" ID="SingleApplicationClient.sendCommand"></a>
 <h4>SingleApplicationClient.sendCommand</h4>
-<b>sendCommand</b>(<i>cmd</i>)
+<b>sendCommand</b>(<i>command, arguments</i>)
 <p>
         Public method to send the command to the application server.
 </p><dl>
-<dt><i>cmd</i></dt>
+<dt><i>command</i> (str)</dt>
 <dd>
-command to be sent (string)
+command to be sent to the server
+</dd><dt><i>arguments</i> (list of str)</dt>
+<dd>
+list of command arguments
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -180,8 +188,8 @@
 <td><a href="#SingleApplicationServer.__newConnection">__newConnection</a></td>
 <td>Private slot to handle a new connection.</td>
 </tr><tr>
-<td><a href="#SingleApplicationServer.__parseLine">__parseLine</a></td>
-<td>Private method to handle data from the client.</td>
+<td><a href="#SingleApplicationServer.__receiveJson">__receiveJson</a></td>
+<td>Private method to receive the data from the client.</td>
 </tr><tr>
 <td><a href="#SingleApplicationServer.handleCommand">handleCommand</a></td>
 <td>Public slot to handle the command sent by the client.</td>
@@ -214,25 +222,25 @@
 <b>__newConnection</b>(<i></i>)
 <p>
         Private slot to handle a new connection.
-</p><a NAME="SingleApplicationServer.__parseLine" ID="SingleApplicationServer.__parseLine"></a>
-<h4>SingleApplicationServer.__parseLine</h4>
-<b>__parseLine</b>(<i></i>)
+</p><a NAME="SingleApplicationServer.__receiveJson" ID="SingleApplicationServer.__receiveJson"></a>
+<h4>SingleApplicationServer.__receiveJson</h4>
+<b>__receiveJson</b>(<i></i>)
 <p>
-        Private method to handle data from the client.
+        Private method to receive the data from the client.
 </p><a NAME="SingleApplicationServer.handleCommand" ID="SingleApplicationServer.handleCommand"></a>
 <h4>SingleApplicationServer.handleCommand</h4>
-<b>handleCommand</b>(<i>cmd, params</i>)
+<b>handleCommand</b>(<i>command, arguments</i>)
 <p>
         Public slot to handle the command sent by the client.
 </p><p>
         <b>Note</b>: This method must be overridden by subclasses.
 </p><dl>
-<dt><i>cmd</i></dt>
+<dt><i>command</i> (str)</dt>
 <dd>
-commandstring (string)
-</dd><dt><i>params</i></dt>
+command sent by the client
+</dd><dt><i>arguments</i> (list of str)</dt>
 <dd>
-parameterstring (string)
+list of command arguments
 </dd>
 </dl><dl>
 <dt>Raises <b>RuntimeError</b>:</dt>
--- a/Documentation/Source/eric6.Tools.TRSingleApplication.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Tools.TRSingleApplication.html	Thu Jan 10 14:22:59 2019 +0100
@@ -168,16 +168,16 @@
 </dd>
 </dl><a NAME="TRSingleApplicationServer.handleCommand" ID="TRSingleApplicationServer.handleCommand"></a>
 <h4>TRSingleApplicationServer.handleCommand</h4>
-<b>handleCommand</b>(<i>cmd, params</i>)
+<b>handleCommand</b>(<i>command, arguments</i>)
 <p>
         Public slot to handle the command sent by the client.
 </p><dl>
-<dt><i>cmd</i></dt>
+<dt><i>command</i> (str)</dt>
 <dd>
-commandstring (string)
-</dd><dt><i>params</i></dt>
+command sent by the client
+</dd><dt><i>arguments</i> (list of str)</dt>
 <dd>
-parameterstring (string)
+list of command arguments
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Tools.TrayStarter.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.Tools.TrayStarter.html	Thu Jan 10 14:22:59 2019 +0100
@@ -166,7 +166,7 @@
 </table>
 <a NAME="TrayStarter.__init__" ID="TrayStarter.__init__"></a>
 <h4>TrayStarter (Constructor)</h4>
-<b>TrayStarter</b>(<i>usePyQt4, settingsDir, webEngine=False</i>)
+<b>TrayStarter</b>(<i>usePyQt4, settingsDir</i>)
 <p>
         Constructor
 </p><dl>
@@ -176,9 +176,6 @@
 </dd><dt><i>settingsDir</i> (str)</dt>
 <dd>
 directory to be used for the settings files
-</dd><dt><i>webEngine=</i> (bool)</dt>
-<dd>
-flag indicating QtWebEngine is used
 </dd>
 </dl><a NAME="TrayStarter.__about" ID="TrayStarter.__about"></a>
 <h4>TrayStarter.__about</h4>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Tools.webBrowserSupport.html	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Tools.webBrowserSupport</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.Tools.webBrowserSupport</h1>
+<p>
+Script to determine the supported web browser variant.
+</p><p>
+It looks for QtWebEngine first and the old QtWebKit thereafter. It reports the
+variant found or the string 'None' if both are absent.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>variant</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.UI.UserInterface.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.UI.UserInterface.html	Thu Jan 10 14:22:59 2019 +0100
@@ -267,6 +267,9 @@
 <td><a href="#UserInterface.__configureDockareaCornerUsage">__configureDockareaCornerUsage</a></td>
 <td>Private method to configure the usage of the dockarea corners.</td>
 </tr><tr>
+<td><a href="#UserInterface.__connectToWebBrowser">__connectToWebBrowser</a></td>
+<td>Private method to connect to a started web browser.</td>
+</tr><tr>
 <td><a href="#UserInterface.__createDockWindow">__createDockWindow</a></td>
 <td>Private method to create a dock window with common properties.</td>
 </tr><tr>
@@ -321,9 +324,6 @@
 <td><a href="#UserInterface.__hasErrorLog">__hasErrorLog</a></td>
 <td>Private method to check, if an error log file exists.</td>
 </tr><tr>
-<td><a href="#UserInterface.__helpClosed">__helpClosed</a></td>
-<td>Private slot to handle the helpClosed signal of the help window.</td>
-</tr><tr>
 <td><a href="#UserInterface.__helpViewer">__helpViewer</a></td>
 <td>Private slot to start an empty help viewer/web browser.</td>
 </tr><tr>
@@ -375,6 +375,9 @@
 <td><a href="#UserInterface.__lastEditorClosed">__lastEditorClosed</a></td>
 <td>Private slot to handle the lastEditorClosed signal.</td>
 </tr><tr>
+<td><a href="#UserInterface.__launchExternalWebBrowser">__launchExternalWebBrowser</a></td>
+<td>Private method to start an external web browser and communicate with it.</td>
+</tr><tr>
 <td><a href="#UserInterface.__linguist">__linguist</a></td>
 <td>Private slot to start the Qt-Linguist executable.</td>
 </tr><tr>
@@ -660,6 +663,12 @@
 <td><a href="#UserInterface.__webBrowser">__webBrowser</a></td>
 <td>Private slot to start the eric6 web browser.</td>
 </tr><tr>
+<td><a href="#UserInterface.__webBrowserFinished">__webBrowserFinished</a></td>
+<td>Private slot handling the end of the external web browser process.</td>
+</tr><tr>
+<td><a href="#UserInterface.__webBrowserShutdown">__webBrowserShutdown</a></td>
+<td>Private method to shut down the web browser.</td>
+</tr><tr>
 <td><a href="#UserInterface.__whatsThis">__whatsThis</a></td>
 <td>Private slot called in to enter Whats This mode.</td>
 </tr><tr>
@@ -732,9 +741,6 @@
 <td><a href="#UserInterface.getActions">getActions</a></td>
 <td>Public method to get a list of all actions.</td>
 </tr><tr>
-<td><a href="#UserInterface.getHelpViewer">getHelpViewer</a></td>
-<td>Public method to get a reference to the help window instance.</td>
-</tr><tr>
 <td><a href="#UserInterface.getLayoutType">getLayoutType</a></td>
 <td>Public method to get the current layout type.</td>
 </tr><tr>
@@ -1068,7 +1074,28 @@
 <b>__configureDockareaCornerUsage</b>(<i></i>)
 <p>
         Private method to configure the usage of the dockarea corners.
-</p><a NAME="UserInterface.__createDockWindow" ID="UserInterface.__createDockWindow"></a>
+</p><a NAME="UserInterface.__connectToWebBrowser" ID="UserInterface.__connectToWebBrowser"></a>
+<h4>UserInterface.__connectToWebBrowser</h4>
+<b>__connectToWebBrowser</b>(<i>process</i>)
+<p>
+        Private method to connect to a started web browser.
+</p><dl>
+<dt><i>process</i> (QProcess)</dt>
+<dd>
+reference to the started web browser process
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+error indication (1 = connection not possible, 0 = ok,
+            -1 = server exited with an error code)
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
+</dl><a NAME="UserInterface.__createDockWindow" ID="UserInterface.__createDockWindow"></a>
 <h4>UserInterface.__createDockWindow</h4>
 <b>__createDockWindow</b>(<i>name</i>)
 <p>
@@ -1226,12 +1253,7 @@
 <dd>
 flag indicating the existence of an error log file (boolean)
 </dd>
-</dl><a NAME="UserInterface.__helpClosed" ID="UserInterface.__helpClosed"></a>
-<h4>UserInterface.__helpClosed</h4>
-<b>__helpClosed</b>(<i></i>)
-<p>
-        Private slot to handle the helpClosed signal of the help window.
-</p><a NAME="UserInterface.__helpViewer" ID="UserInterface.__helpViewer"></a>
+</dl><a NAME="UserInterface.__helpViewer" ID="UserInterface.__helpViewer"></a>
 <h4>UserInterface.__helpViewer</h4>
 <b>__helpViewer</b>(<i></i>)
 <p>
@@ -1329,7 +1351,31 @@
 <b>__lastEditorClosed</b>(<i></i>)
 <p>
         Private slot to handle the lastEditorClosed signal.
-</p><a NAME="UserInterface.__linguist" ID="UserInterface.__linguist"></a>
+</p><a NAME="UserInterface.__launchExternalWebBrowser" ID="UserInterface.__launchExternalWebBrowser"></a>
+<h4>UserInterface.__launchExternalWebBrowser</h4>
+<b>__launchExternalWebBrowser</b>(<i>home, searchWord=None</i>)
+<p>
+        Private method to start an external web browser and communicate with
+        it.
+</p><dl>
+<dt><i>home</i> (str)</dt>
+<dd>
+filename of file to be shown or URL to be opened
+</dd><dt><i>searchWord=</i> (str)</dt>
+<dd>
+word to search for
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a successful launch
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="UserInterface.__linguist" ID="UserInterface.__linguist"></a>
 <h4>UserInterface.__linguist</h4>
 <b>__linguist</b>(<i>fn=None, version=0</i>)
 <p>
@@ -2059,7 +2105,17 @@
 <dd>
 full pathname of a file to display (string)
 </dd>
-</dl><a NAME="UserInterface.__whatsThis" ID="UserInterface.__whatsThis"></a>
+</dl><a NAME="UserInterface.__webBrowserFinished" ID="UserInterface.__webBrowserFinished"></a>
+<h4>UserInterface.__webBrowserFinished</h4>
+<b>__webBrowserFinished</b>(<i></i>)
+<p>
+        Private slot handling the end of the external web browser process.
+</p><a NAME="UserInterface.__webBrowserShutdown" ID="UserInterface.__webBrowserShutdown"></a>
+<h4>UserInterface.__webBrowserShutdown</h4>
+<b>__webBrowserShutdown</b>(<i></i>)
+<p>
+        Private method to shut down the web browser.
+</p><a NAME="UserInterface.__whatsThis" ID="UserInterface.__whatsThis"></a>
 <h4>UserInterface.__whatsThis</h4>
 <b>__whatsThis</b>(<i></i>)
 <p>
@@ -2292,22 +2348,6 @@
 <dd>
 list of all actions (list of E5Action)
 </dd>
-</dl><a NAME="UserInterface.getHelpViewer" ID="UserInterface.getHelpViewer"></a>
-<h4>UserInterface.getHelpViewer</h4>
-<b>getHelpViewer</b>(<i>preview=False</i>)
-<p>
-        Public method to get a reference to the help window instance.
-</p><dl>
-<dt><i>preview=</i></dt>
-<dd>
-flag indicating to get a help window for preview
-            (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-reference to the help window instance (HelpWindow)
-</dd>
 </dl><a NAME="UserInterface.getLayoutType" ID="UserInterface.getLayoutType"></a>
 <h4>UserInterface.getLayoutType</h4>
 <b>getLayoutType</b>(<i></i>)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserSingleApplication.html	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,266 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.WebBrowserSingleApplication</title>
+<meta charset="UTF-8">
+<style>
+body {
+    background: #EDECE6;
+    margin: 0em 1em 10em 1em;
+    color: black;
+}
+
+h1 { color: white; background: #85774A; }
+h2 { color: white; background: #85774A; }
+h3 { color: white; background: #9D936E; }
+h4 { color: white; background: #9D936E; }
+    
+a { color: #BA6D36; }
+
+</style>
+</head>
+<body><a NAME="top" ID="top"></a>
+<h1>eric6.WebBrowser.WebBrowserSingleApplication</h1>
+<p>
+Module implementing the single application server and client for the web
+browser.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>SAFile</td></tr><tr><td>SALoadUrl</td></tr><tr><td>SANewTab</td></tr><tr><td>SASearch</td></tr><tr><td>SAShutdown</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#WebBrowserSingleApplicationClient">WebBrowserSingleApplicationClient</a></td>
+<td>Class implementing the single application client of the web browser.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer">WebBrowserSingleApplicationServer</a></td>
+<td>Class implementing the single application server embedded within the Web Browser.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="WebBrowserSingleApplicationClient" ID="WebBrowserSingleApplicationClient"></a>
+<h2>WebBrowserSingleApplicationClient</h2>
+<p>
+    Class implementing the single application client of the web browser.
+</p>
+<h3>Derived from</h3>
+SingleApplicationClient
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#WebBrowserSingleApplicationClient.__init__">WebBrowserSingleApplicationClient</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationClient.__loadUrl">__loadUrl</a></td>
+<td>Private method to send an URL to be loaded.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationClient.__newTab">__newTab</a></td>
+<td>Private method to send an URL to be loaded in a new tab.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationClient.__search">__search</a></td>
+<td>Private method to send a word to search for.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationClient.__shutdown">__shutdown</a></td>
+<td>Private method to signal a shutdown request to the browser.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationClient.processArgs">processArgs</a></td>
+<td>Public method to process the command line args passed to the UI.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="WebBrowserSingleApplicationClient.__init__" ID="WebBrowserSingleApplicationClient.__init__"></a>
+<h4>WebBrowserSingleApplicationClient (Constructor)</h4>
+<b>WebBrowserSingleApplicationClient</b>(<i>name=""</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name to be used by the single application server
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationClient.__loadUrl" ID="WebBrowserSingleApplicationClient.__loadUrl"></a>
+<h4>WebBrowserSingleApplicationClient.__loadUrl</h4>
+<b>__loadUrl</b>(<i>url</i>)
+<p>
+        Private method to send an URL to be loaded.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationClient.__newTab" ID="WebBrowserSingleApplicationClient.__newTab"></a>
+<h4>WebBrowserSingleApplicationClient.__newTab</h4>
+<b>__newTab</b>(<i>url</i>)
+<p>
+        Private method to send an URL to be loaded in a new tab.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationClient.__search" ID="WebBrowserSingleApplicationClient.__search"></a>
+<h4>WebBrowserSingleApplicationClient.__search</h4>
+<b>__search</b>(<i>word</i>)
+<p>
+        Private method to send a word to search for.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+to to be searched for
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationClient.__shutdown" ID="WebBrowserSingleApplicationClient.__shutdown"></a>
+<h4>WebBrowserSingleApplicationClient.__shutdown</h4>
+<b>__shutdown</b>(<i></i>)
+<p>
+        Private method to signal a shutdown request to the browser.
+</p><a NAME="WebBrowserSingleApplicationClient.processArgs" ID="WebBrowserSingleApplicationClient.processArgs"></a>
+<h4>WebBrowserSingleApplicationClient.processArgs</h4>
+<b>processArgs</b>(<i>args, disconnect=True</i>)
+<p>
+        Public method to process the command line args passed to the UI.
+</p><dl>
+<dt><i>args</i> (list of str)</dt>
+<dd>
+list of command line arguments
+</dd><dt><i>disconnect</i> (bool)</dt>
+<dd>
+flag indicating to disconnect when done
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="WebBrowserSingleApplicationServer" ID="WebBrowserSingleApplicationServer"></a>
+<h2>WebBrowserSingleApplicationServer</h2>
+<p>
+    Class implementing the single application server embedded within the
+    Web Browser.
+</p><h3>Signals</h3>
+<dl>
+<dt>loadUrl(str)</dt>
+<dd>
+emitted to load an URL
+</dd><dt>newTab(str)</dt>
+<dd>
+emitted to load an URL in a new tab
+</dd><dt>search(str)</dt>
+<dd>
+emitted to search for a given word
+</dd><dt>shutdown()</dt>
+<dd>
+emitted to shut down the browser
+</dd>
+</dl>
+<h3>Derived from</h3>
+SingleApplicationServer
+<h3>Class Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#WebBrowserSingleApplicationServer.__init__">WebBrowserSingleApplicationServer</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer.__saLoadUrl">__saLoadUrl</a></td>
+<td>Private method to load an URL in a new tab.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer.__saNewTab">__saNewTab</a></td>
+<td>Private method to load an URL .</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer.__saSearch">__saSearch</a></td>
+<td>Private method to search for a given word.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer.__saShutdown">__saShutdown</a></td>
+<td>Private method to shut down the web browser.</td>
+</tr><tr>
+<td><a href="#WebBrowserSingleApplicationServer.handleCommand">handleCommand</a></td>
+<td>Public slot to handle the command sent by the client.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="WebBrowserSingleApplicationServer.__init__" ID="WebBrowserSingleApplicationServer.__init__"></a>
+<h4>WebBrowserSingleApplicationServer (Constructor)</h4>
+<b>WebBrowserSingleApplicationServer</b>(<i>name=""</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>name</i> (str)</dt>
+<dd>
+name to be used by the single application server
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationServer.__saLoadUrl" ID="WebBrowserSingleApplicationServer.__saLoadUrl"></a>
+<h4>WebBrowserSingleApplicationServer.__saLoadUrl</h4>
+<b>__saLoadUrl</b>(<i>url</i>)
+<p>
+        Private method to load an URL in a new tab.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationServer.__saNewTab" ID="WebBrowserSingleApplicationServer.__saNewTab"></a>
+<h4>WebBrowserSingleApplicationServer.__saNewTab</h4>
+<b>__saNewTab</b>(<i>url</i>)
+<p>
+        Private method to load an URL .
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationServer.__saSearch" ID="WebBrowserSingleApplicationServer.__saSearch"></a>
+<h4>WebBrowserSingleApplicationServer.__saSearch</h4>
+<b>__saSearch</b>(<i>word</i>)
+<p>
+        Private method to search for a given word.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+word to be searched for
+</dd>
+</dl><a NAME="WebBrowserSingleApplicationServer.__saShutdown" ID="WebBrowserSingleApplicationServer.__saShutdown"></a>
+<h4>WebBrowserSingleApplicationServer.__saShutdown</h4>
+<b>__saShutdown</b>(<i></i>)
+<p>
+        Private method to shut down the web browser.
+</p><a NAME="WebBrowserSingleApplicationServer.handleCommand" ID="WebBrowserSingleApplicationServer.handleCommand"></a>
+<h4>WebBrowserSingleApplicationServer.handleCommand</h4>
+<b>handleCommand</b>(<i>command, arguments</i>)
+<p>
+        Public slot to handle the command sent by the client.
+</p><dl>
+<dt><i>command</i> (str)</dt>
+<dd>
+command sent by the client
+</dd><dt><i>arguments</i> (list of str)</dt>
+<dd>
+list of command arguments
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html	Thu Jan 10 14:22:59 2019 +0100
@@ -67,7 +67,7 @@
 E5MainWindow
 <h3>Class Attributes</h3>
 <table>
-<tr><td>BrowserWindows</td></tr><tr><td>_adblockManager</td></tr><tr><td>_autoScroller</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_fromEric</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_imageSearchEngine</td></tr><tr><td>_isPrivate</td></tr><tr><td>_lastActiveWindow</td></tr><tr><td>_networkManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_performingShutdown</td></tr><tr><td>_performingStartup</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_safeBrowsingManager</td></tr><tr><td>_sessionManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_tabManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_webProfile</td></tr>
+<tr><td>BrowserWindows</td></tr><tr><td>_adblockManager</td></tr><tr><td>_autoScroller</td></tr><tr><td>_bookmarksManager</td></tr><tr><td>_cookieJar</td></tr><tr><td>_downloadManager</td></tr><tr><td>_featurePermissionManager</td></tr><tr><td>_feedsManager</td></tr><tr><td>_flashCookieManager</td></tr><tr><td>_greaseMonkeyManager</td></tr><tr><td>_helpEngine</td></tr><tr><td>_historyManager</td></tr><tr><td>_imageSearchEngine</td></tr><tr><td>_isPrivate</td></tr><tr><td>_lastActiveWindow</td></tr><tr><td>_networkManager</td></tr><tr><td>_notification</td></tr><tr><td>_passwordManager</td></tr><tr><td>_performingShutdown</td></tr><tr><td>_performingStartup</td></tr><tr><td>_personalInformationManager</td></tr><tr><td>_safeBrowsingManager</td></tr><tr><td>_sessionManager</td></tr><tr><td>_speedDial</td></tr><tr><td>_syncManager</td></tr><tr><td>_tabManager</td></tr><tr><td>_useQtHelp</td></tr><tr><td>_userAgentsManager</td></tr><tr><td>_webProfile</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -226,6 +226,9 @@
 <td><a href="#WebBrowserWindow.__clearPrivateData">__clearPrivateData</a></td>
 <td>Private slot to clear the private data.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.__configShortcuts">__configShortcuts</a></td>
+<td>Private slot to configure the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.__copy">__copy</a></td>
 <td>Private slot called to handle the copy action.</td>
 </tr><tr>
@@ -247,6 +250,9 @@
 <td><a href="#WebBrowserWindow.__docsInstalled">__docsInstalled</a></td>
 <td>Private slot handling the end of documentation installation.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.__exportShortcuts">__exportShortcuts</a></td>
+<td>Private slot to export the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.__feedsManagerClosed">__feedsManagerClosed</a></td>
 <td>Private slot to handle closing the feeds manager dialog.</td>
 </tr><tr>
@@ -265,6 +271,9 @@
 <td><a href="#WebBrowserWindow.__home">__home</a></td>
 <td>Private slot called to handle the home action.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.__importShortcuts">__importShortcuts</a></td>
+<td>Private slot to import the keyboard shortcuts.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.__indexingFinished">__indexingFinished</a></td>
 <td>Private slot to handle the start of the indexing process.</td>
 </tr><tr>
@@ -328,6 +337,15 @@
 <td><a href="#WebBrowserWindow.__removeOldDocumentation">__removeOldDocumentation</a></td>
 <td>Private slot to remove non-existing documentation from the help engine.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.__saLoadUrl">__saLoadUrl</a></td>
+<td>Private slot to load an URL received via the single application protocol.</td>
+</tr><tr>
+<td><a href="#WebBrowserWindow.__saNewTab">__saNewTab</a></td>
+<td>Private slot to load an URL received via the single application protocol in a new tab.</td>
+</tr><tr>
+<td><a href="#WebBrowserWindow.__saSearchWord">__saSearchWord</a></td>
+<td>Private slot to search for the given word.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.__savePageAs">__savePageAs</a></td>
 <td>Private slot to save the current page.</td>
 </tr><tr>
@@ -556,12 +574,12 @@
 <td><a href="#WebBrowserWindow.forceClose">forceClose</a></td>
 <td>Public method to force closing the window.</td>
 </tr><tr>
-<td><a href="#WebBrowserWindow.fromEric">fromEric</a></td>
-<td>Public method to check, if the web browser was called from within the eric IDE.</td>
-</tr><tr>
 <td><a href="#WebBrowserWindow.getActions">getActions</a></td>
 <td>Public method to get a list of all actions.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.getActionsCategory">getActionsCategory</a></td>
+<td>Public method to get the category of the defined actions.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.getSourceFileList">getSourceFileList</a></td>
 <td>Public method to get a list of all opened source files.</td>
 </tr><tr>
@@ -1096,7 +1114,7 @@
 </dd>
 </dl><a NAME="WebBrowserWindow.__init__" ID="WebBrowserWindow.__init__"></a>
 <h4>WebBrowserWindow (Constructor)</h4>
-<b>WebBrowserWindow</b>(<i>home, path, parent, name, fromEric=False, initShortcutsOnly=False, searchWord=None, private=False, qthelp=False, settingsDir="", restoreSession=False</i>)
+<b>WebBrowserWindow</b>(<i>home, path, parent, name, searchWord=None, private=False, qthelp=False, settingsDir="", restoreSession=False, single=False, saname=""</i>)
 <p>
         Constructor
 </p><dl>
@@ -1112,29 +1130,27 @@
 </dd><dt><i>name</i> (str)</dt>
 <dd>
 name of this window
-</dd><dt><i>fromEric</i> (bool)</dt>
-<dd>
-flag indicating whether it was called from within
-            eric6
-</dd><dt><i>initShortcutsOnly=</i> (bool)</dt>
-<dd>
-flag indicating to just initialize the
-            keyboard shortcuts
-</dd><dt><i>searchWord=</i> (str)</dt>
+</dd><dt><i>searchWord</i> (str)</dt>
 <dd>
 word to search for
-</dd><dt><i>private=</i> (bool)</dt>
+</dd><dt><i>private</i> (bool)</dt>
 <dd>
 flag indicating a private browsing window
-</dd><dt><i>qthelp=</i> (bool)</dt>
+</dd><dt><i>qthelp</i> (bool)</dt>
 <dd>
 flag indicating to enable the QtHelp support
-</dd><dt><i>settingsDir=</i> (str)</dt>
+</dd><dt><i>settingsDir</i> (str)</dt>
 <dd>
 directory to be used for the settings files
-</dd><dt><i>restoreSession=</i> (bool)</dt>
+</dd><dt><i>restoreSession</i> (bool)</dt>
 <dd>
 flag indicating a restore session action
+</dd><dt><i>single</i> (bool)</dt>
+<dd>
+flag indicating to start in single application mode
+</dd><dt><i>saname</i> (str)</dt>
+<dd>
+name to be used for the single application server
 </dd>
 </dl><a NAME="WebBrowserWindow.__TBMenuTriggered" ID="WebBrowserWindow.__TBMenuTriggered"></a>
 <h4>WebBrowserWindow.__TBMenuTriggered</h4>
@@ -1247,6 +1263,11 @@
 <b>__clearPrivateData</b>(<i></i>)
 <p>
         Private slot to clear the private data.
+</p><a NAME="WebBrowserWindow.__configShortcuts" ID="WebBrowserWindow.__configShortcuts"></a>
+<h4>WebBrowserWindow.__configShortcuts</h4>
+<b>__configShortcuts</b>(<i></i>)
+<p>
+        Private slot to configure the keyboard shortcuts.
 </p><a NAME="WebBrowserWindow.__copy" ID="WebBrowserWindow.__copy"></a>
 <h4>WebBrowserWindow.__copy</h4>
 <b>__copy</b>(<i></i>)
@@ -1319,7 +1340,12 @@
 flag indicating that documents were installed
             (boolean)
 </dd>
-</dl><a NAME="WebBrowserWindow.__feedsManagerClosed" ID="WebBrowserWindow.__feedsManagerClosed"></a>
+</dl><a NAME="WebBrowserWindow.__exportShortcuts" ID="WebBrowserWindow.__exportShortcuts"></a>
+<h4>WebBrowserWindow.__exportShortcuts</h4>
+<b>__exportShortcuts</b>(<i></i>)
+<p>
+        Private slot to export the keyboard shortcuts.
+</p><a NAME="WebBrowserWindow.__feedsManagerClosed" ID="WebBrowserWindow.__feedsManagerClosed"></a>
 <h4>WebBrowserWindow.__feedsManagerClosed</h4>
 <b>__feedsManagerClosed</b>(<i>feedsManager</i>)
 <p>
@@ -1362,6 +1388,11 @@
 <b>__home</b>(<i></i>)
 <p>
         Private slot called to handle the home action.
+</p><a NAME="WebBrowserWindow.__importShortcuts" ID="WebBrowserWindow.__importShortcuts"></a>
+<h4>WebBrowserWindow.__importShortcuts</h4>
+<b>__importShortcuts</b>(<i></i>)
+<p>
+        Private slot to import the keyboard shortcuts.
 </p><a NAME="WebBrowserWindow.__indexingFinished" ID="WebBrowserWindow.__indexingFinished"></a>
 <h4>WebBrowserWindow.__indexingFinished</h4>
 <b>__indexingFinished</b>(<i></i>)
@@ -1479,7 +1510,39 @@
 <b>__removeOldDocumentation</b>(<i></i>)
 <p>
         Private slot to remove non-existing documentation from the help engine.
-</p><a NAME="WebBrowserWindow.__savePageAs" ID="WebBrowserWindow.__savePageAs"></a>
+</p><a NAME="WebBrowserWindow.__saLoadUrl" ID="WebBrowserWindow.__saLoadUrl"></a>
+<h4>WebBrowserWindow.__saLoadUrl</h4>
+<b>__saLoadUrl</b>(<i>urlStr</i>)
+<p>
+        Private slot to load an URL received via the single application
+        protocol.
+</p><dl>
+<dt><i>urlStr</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserWindow.__saNewTab" ID="WebBrowserWindow.__saNewTab"></a>
+<h4>WebBrowserWindow.__saNewTab</h4>
+<b>__saNewTab</b>(<i>urlStr</i>)
+<p>
+        Private slot to load an URL received via the single application
+        protocol in a new tab.
+</p><dl>
+<dt><i>urlStr</i> (str)</dt>
+<dd>
+URL to be loaded
+</dd>
+</dl><a NAME="WebBrowserWindow.__saSearchWord" ID="WebBrowserWindow.__saSearchWord"></a>
+<h4>WebBrowserWindow.__saSearchWord</h4>
+<b>__saSearchWord</b>(<i>word</i>)
+<p>
+        Private slot to search for the given word.
+</p><dl>
+<dt><i>word</i> (str)</dt>
+<dd>
+word to be searched for
+</dd>
+</dl><a NAME="WebBrowserWindow.__savePageAs" ID="WebBrowserWindow.__savePageAs"></a>
 <h4>WebBrowserWindow.__savePageAs</h4>
 <b>__savePageAs</b>(<i></i>)
 <p>
@@ -2030,23 +2093,7 @@
 <b>forceClose</b>(<i></i>)
 <p>
         Public method to force closing the window.
-</p><a NAME="WebBrowserWindow.fromEric" ID="WebBrowserWindow.fromEric"></a>
-<h4>WebBrowserWindow.fromEric</h4>
-<b>fromEric</b>(<i></i>)
-<p>
-        Public method to check, if the web browser was called from within the
-        eric IDE.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating that the browserw as opened from within eric
-</dd>
-</dl><dl>
-<dt>Return Type:</dt>
-<dd>
-bool
-</dd>
-</dl><a NAME="WebBrowserWindow.getActions" ID="WebBrowserWindow.getActions"></a>
+</p><a NAME="WebBrowserWindow.getActions" ID="WebBrowserWindow.getActions"></a>
 <h4>WebBrowserWindow.getActions</h4>
 <b>getActions</b>(<i></i>)
 <p>
@@ -2056,6 +2103,21 @@
 <dd>
 list of all actions (list of E5Action)
 </dd>
+</dl><a NAME="WebBrowserWindow.getActionsCategory" ID="WebBrowserWindow.getActionsCategory"></a>
+<h4>WebBrowserWindow.getActionsCategory</h4>
+<b>getActionsCategory</b>(<i></i>)
+<p>
+        Public method to get the category of the defined actions.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+category of the actions
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="WebBrowserWindow.getSourceFileList" ID="WebBrowserWindow.getSourceFileList"></a>
 <h4>WebBrowserWindow.getSourceFileList</h4>
 <b>getSourceFileList</b>(<i></i>)
--- a/Documentation/Source/eric6.eric6_browser.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.eric6_browser.html	Thu Jan 10 14:22:59 2019 +0100
@@ -52,14 +52,19 @@
 <p>
     Function to create the main widget.
 </p><dl>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (list of str)</dt>
 <dd>
-list of commandline parameters (list of strings)
+list of command line parameters
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
 <dd>
-reference to the main widget (QWidget)
+reference to the main widget
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QWidget
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.eric6_webbrowser.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/eric6.eric6_webbrowser.html	Thu Jan 10 14:22:59 2019 +0100
@@ -52,14 +52,19 @@
 <p>
     Function to create the main widget.
 </p><dl>
-<dt><i>argv</i></dt>
+<dt><i>argv</i> (list of str)</dt>
 <dd>
-list of commandline parameters (list of strings)
+list of command line parameters
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
 <dd>
-reference to the main widget (QWidget)
+reference to the main widget
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QWidget
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/index-eric6.Helpviewer.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/index-eric6.Helpviewer.html	Thu Jan 10 14:22:59 2019 +0100
@@ -130,6 +130,9 @@
 <td><a href="eric6.Helpviewer.HelpSearchWidget.html">HelpSearchWidget</a></td>
 <td>Module implementing a window for showing the QtHelp index.</td>
 </tr><tr>
+<td><a href="eric6.Helpviewer.HelpSingleApplication.html">HelpSingleApplication</a></td>
+<td>Module implementing the single application server and client for the web browser.</td>
+</tr><tr>
 <td><a href="eric6.Helpviewer.HelpSnap.html">HelpSnap</a></td>
 <td>Module implementing functions to generate page previews.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Project.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/index-eric6.Project.html	Thu Jan 10 14:22:59 2019 +0100
@@ -119,6 +119,9 @@
 <td><a href="eric6.Project.QuickFindFileDialog.html">QuickFindFileDialog</a></td>
 <td>Module implementing a quick search for files.</td>
 </tr><tr>
+<td><a href="eric6.Project.RccCompilerOptionsDialog.html">RccCompilerOptionsDialog</a></td>
+<td>Module implementing a dialog to enter some non-common rcc compiler options.</td>
+</tr><tr>
 <td><a href="eric6.Project.SpellingPropertiesDialog.html">SpellingPropertiesDialog</a></td>
 <td>Module implementing the Spelling Properties dialog.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Tools.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/index-eric6.Tools.html	Thu Jan 10 14:22:59 2019 +0100
@@ -39,6 +39,9 @@
 </tr><tr>
 <td><a href="eric6.Tools.UIPreviewer.html">UIPreviewer</a></td>
 <td>Module implementing the UI Previewer main window.</td>
+</tr><tr>
+<td><a href="eric6.Tools.webBrowserSupport.html">webBrowserSupport</a></td>
+<td>Script to determine the supported web browser variant.</td>
 </tr>
 </table>
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric6.WebBrowser.html	Sat Dec 01 11:45:24 2018 +0100
+++ b/Documentation/Source/index-eric6.WebBrowser.html	Thu Jan 10 14:22:59 2019 +0100
@@ -156,6 +156,9 @@
 <td><a href="eric6.WebBrowser.WebBrowserPage.html">WebBrowserPage</a></td>
 <td>Module implementing the helpbrowser using QWebView.</td>
 </tr><tr>
+<td><a href="eric6.WebBrowser.WebBrowserSingleApplication.html">WebBrowserSingleApplication</a></td>
+<td>Module implementing the single application server and client for the web browser.</td>
+</tr><tr>
 <td><a href="eric6.WebBrowser.WebBrowserSnap.html">WebBrowserSnap</a></td>
 <td>Module implementing functions to generate page previews.</td>
 </tr><tr>
--- a/DocumentationTools/APIGenerator.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/APIGenerator.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/Config.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/Config.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/IndexGenerator.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/IndexGenerator.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/ModuleDocumentor.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/ModuleDocumentor.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/QtHelpGenerator.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/QtHelpGenerator.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/TemplatesListsStyle.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/TemplatesListsStyle.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/TemplatesListsStyleCSS.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/TemplatesListsStyleCSS.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/DocumentationTools/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/DocumentationTools/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2003 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2003 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Graphics/E5ArrowItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Graphics/E5ArrowItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Graphics/E5GraphicsView.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Graphics/E5GraphicsView.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Graphics/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Graphics/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5Action.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5Action.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5AnimatedWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5AnimatedWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5Application.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5Application.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ClickableLabel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ClickableLabel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ComboBox.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ComboBox.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5Completers.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5Completers.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ErrorMessage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ErrorMessage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ErrorMessageFilterDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ErrorMessageFilterDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5FileDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5FileDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5GenericDiffHighlighter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5GenericDiffHighlighter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5Led.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5Led.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5LineEdit.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5LineEdit.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5LineEditButton.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5LineEditButton.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ListSelectionDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ListSelectionDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ListView.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ListView.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5MainWindow.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5MainWindow.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5MapWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5MapWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2014 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2014 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5MessageBox.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5MessageBox.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ModelMenu.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ModelMenu.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ModelToolBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ModelToolBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5PassivePopup.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5PassivePopup.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5PasswordMeter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5PasswordMeter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5PathPicker.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5PathPicker.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5PathPickerDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5PathPickerDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2018 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ProgressDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ProgressDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5SideBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5SideBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5SimpleHelpDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5SimpleHelpDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5SingleApplication.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5SingleApplication.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -19,16 +19,16 @@
 import Utilities
 
 ###########################################################################
-# define some module global stuff
+## define some module global stuff
 ###########################################################################
 
 SAFile = "eric6"
 
 # define the protocol tokens
-SAOpenFile = '>OpenFile<'
-SAOpenProject = '>OpenProject<'
-SAOpenMultiProject = '>OpenMultiProject<'
-SAArguments = '>Arguments<'
+SAOpenFile = 'OpenFile'
+SAOpenProject = 'OpenProject'
+SAOpenMultiProject = 'OpenMultiProject'
+SAArguments = 'Arguments'
 
 
 class E5SingleApplicationServer(SingleApplicationServer):
@@ -41,27 +41,29 @@
         """
         SingleApplicationServer.__init__(self, SAFile)
 
-    def handleCommand(self, cmd, params):
+    def handleCommand(self, command, arguments):
         """
         Public slot to handle the command sent by the client.
         
-        @param cmd commandstring (string)
-        @param params parameterstring (string)
+        @param command command sent by the client
+        @type str
+        @param arguments list of command arguments
+        @type list of str
         """
-        if cmd == SAOpenFile:
-            self.__saOpenFile(params)
+        if command == SAOpenFile:
+            self.__saOpenFile(arguments[0])
             return
 
-        if cmd == SAOpenProject:
-            self.__saOpenProject(params)
+        if command == SAOpenProject:
+            self.__saOpenProject(arguments[0])
             return
 
-        if cmd == SAOpenMultiProject:
-            self.__saOpenMultiProject(params)
+        if command == SAOpenMultiProject:
+            self.__saOpenMultiProject(arguments[0])
             return
 
-        if cmd == SAArguments:
-            self.__saArguments(params)
+        if command == SAArguments:
+            self.__saArguments(arguments[0])
             return
 
     def __saOpenFile(self, fname):
@@ -161,8 +163,7 @@
         
         @param fname name of file to be opened (string)
         """
-        cmd = "{0}{1}\n".format(SAOpenFile, Utilities.normabspath(fname))
-        self.sendCommand(cmd)
+        self.sendCommand(SAOpenFile, [Utilities.normabspath(fname)])
         
     def __openProject(self, pfname):
         """
@@ -170,8 +171,7 @@
         
         @param pfname name of the projectfile to be opened (string)
         """
-        cmd = "{0}{1}\n".format(SAOpenProject, Utilities.normabspath(pfname))
-        self.sendCommand(cmd)
+        self.sendCommand(SAOpenProject, [Utilities.normabspath(pfname)])
         
     def __openMultiProject(self, pfname):
         """
@@ -179,9 +179,7 @@
         
         @param pfname name of the projectfile to be opened (string)
         """
-        cmd = "{0}{1}\n".format(SAOpenMultiProject,
-                                Utilities.normabspath(pfname))
-        self.sendCommand(cmd)
+        self.sendCommand(SAOpenMultiProject, [Utilities.normabspath(pfname)])
         
     def __sendArguments(self, argsStr):
         """
@@ -189,5 +187,4 @@
         
         @param argsStr space delimited list of command args (string)
         """
-        cmd = "{0}{1}\n".format(SAArguments, argsStr)
-        self.sendCommand(cmd)
+        self.sendCommand(SAArguments, [argsStr])
--- a/E5Gui/E5SqueezeLabels.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5SqueezeLabels.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5StringListEditWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5StringListEditWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TabWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TabWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TableView.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TableView.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TextEditSearchWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TextEditSearchWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -86,7 +86,7 @@
         sizePolicy.setHeightForWidth(
             self.findtextCombo.sizePolicy().hasHeightForWidth())
         self.findtextCombo.setSizePolicy(sizePolicy)
-        self.findtextCombo.setMinimumSize(QSize(200, 0))
+        self.findtextCombo.setMinimumSize(QSize(100, 0))
         self.findtextCombo.setEditable(True)
         self.findtextCombo.setInsertPolicy(QComboBox.InsertAtTop)
         self.findtextCombo.setDuplicatesEnabled(False)
--- a/E5Gui/E5TextInputDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TextInputDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2018 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TextSpinBox.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TextSpinBox.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ToolBarDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ToolBarDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ToolBarManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ToolBarManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ToolBox.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ToolBox.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ToolButton.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ToolButton.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2017 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TreeSortFilterProxyModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TreeSortFilterProxyModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TreeView.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TreeView.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5TreeWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5TreeWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/E5ZoomWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/E5ZoomWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Gui/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Gui/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5Ftp.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5Ftp.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5GoogleMail.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5GoogleMail.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2017 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5NetworkHeaderDetailsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5NetworkHeaderDetailsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5NetworkIcon.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5NetworkIcon.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5NetworkMonitor.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5NetworkMonitor.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5NetworkProxyFactory.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5NetworkProxyFactory.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5RFC6266.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5RFC6266.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5SslCertificatesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslCertificatesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -179,13 +179,14 @@
             certificateDict = Globals.toDict(
                 Preferences.Prefs.settings.value("Ssl/CaCertificatesDict"))
             if server in certificateDict:
-                certs = QSslCertificate.fromData(certificateDict[server])
+                certs = [c.toPem() for c in
+                         QSslCertificate.fromData(certificateDict[server])]
                 if cert in certs:
                     certs.remove(cert)
                 if certs:
                     pems = QByteArray()
                     for cert in certs:
-                        pems.append(cert.toPem() + '\n')
+                        pems.append(cert + b'\n')
                     certificateDict[server] = pems
                 else:
                     del certificateDict[server]
--- a/E5Network/E5SslCertificatesInfoDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslCertificatesInfoDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5SslCertificatesInfoWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslCertificatesInfoWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5SslErrorHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslErrorHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -9,6 +9,8 @@
 
 from __future__ import unicode_literals
 
+import platform
+
 from PyQt5.QtCore import QObject, QByteArray
 from PyQt5.QtNetwork import QSslCertificate, QSslConfiguration, QSslSocket, \
     QSslError, QSsl
@@ -57,7 +59,13 @@
                     caList.append(cert)
         sslCfg = QSslConfiguration.defaultConfiguration()
         sslCfg.setCaCertificates(caList)
-        sslCfg.setProtocol(QSsl.AnyProtocol)
+        try:
+            sslProtocol = QSsl.TlsV1_1OrLater
+            if Globals.isWindowsPlatform() and platform.win32_ver()[0] == '7':
+                sslProtocol = QSsl.SecureProtocols
+        except AttributeError:
+            sslProtocol = QSsl.SecureProtocols
+        sslCfg.setProtocol(sslProtocol)
         try:
             sslCfg.setSslOption(QSsl.SslOptionDisableCompression, True)
         except AttributeError:
@@ -166,7 +174,15 @@
                     for cert in caNew:
                         caList.append(cert)
                     sslCfg.setCaCertificates(caList)
-                    sslCfg.setProtocol(QSsl.AnyProtocol)
+                    try:
+                        sslCfg.setProtocol(QSsl.TlsV1_1OrLater)
+                    except AttributeError:
+                        sslCfg.setProtocol(QSsl.SecureProtocols)
+                    try:
+                        sslCfg.setSslOption(QSsl.SslOptionDisableCompression,
+                                            True)
+                    except AttributeError:
+                        pass
                     QSslConfiguration.setDefaultConfiguration(sslCfg)
                     
                     certificateDict = {}
--- a/E5Network/E5SslInfoWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslInfoWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5SslUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5SslUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5TldExtractor.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5TldExtractor.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5UrlInfo.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5UrlInfo.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/E5XmlRpcClient.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/E5XmlRpcClient.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Network/data/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Network/data/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Utilities/E5Cache.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Utilities/E5Cache.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2017 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5Utilities/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5Utilities/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2017 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/Config.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/Config.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -11,7 +11,8 @@
 multiProjectFileFormatVersion = "5.1"
 
 # version numbers of the project file
-projectFileFormatVersion = "6.3"
+projectFileFormatVersion = "6.4"
+projectFileFormatVersionUic = "6.3"
 projectFileFormatVersionIdl = "6.2"
 projectFileFormatVersionMake = "6.1"
 projectFileFormatVersionProto = "6.0"
--- a/E5XML/DebuggerPropertiesReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/DebuggerPropertiesReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/DebuggerPropertiesWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/DebuggerPropertiesWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/HighlightingStylesReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/HighlightingStylesReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 
--- a/E5XML/HighlightingStylesWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/HighlightingStylesWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/MultiProjectReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/MultiProjectReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/MultiProjectWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/MultiProjectWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/PluginRepositoryReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/PluginRepositoryReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/ProjectReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/ProjectReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -19,7 +19,9 @@
     """
     Class for reading an XML project file.
     """
-    supportedVersions = ["4.6", "5.0", "5.1", "6.0", "6.1", "6.2", "6.3"]
+    supportedVersions = ["4.6",
+                         "5.0", "5.1",
+                         "6.0", "6.1", "6.2", "6.3", "6.4"]
     
     def __init__(self, device, project):
         """
@@ -121,6 +123,9 @@
                 elif self.name() == "UicCompiler":
                     self.__readBasicDataField(
                         "UicCompiler", "UicCompilerParameters", "UICPARAMS")
+                elif self.name() == "RccCompiler":
+                    self.__readBasicDataField(
+                        "RccCompiler", "RccCompilerParameters", "RCCPARAMS")
                 elif self.name() == "ProjectTypeSpecific":
                     self.__readBasicDataField(
                         "ProjectTypeSpecific", "ProjectTypeSpecificData",
--- a/E5XML/ProjectWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/ProjectWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -14,9 +14,9 @@
 from E5Gui.E5Application import e5App
 
 from .XMLStreamWriterBase import XMLStreamWriterBase
-from .Config import projectFileFormatVersion, projectFileFormatVersionIdl, \
-    projectFileFormatVersionMake, projectFileFormatVersionProto, \
-    projectFileFormatVersionAlt
+from .Config import projectFileFormatVersion, projectFileFormatVersionUic, \
+    projectFileFormatVersionIdl, projectFileFormatVersionMake, \
+    projectFileFormatVersionProto, projectFileFormatVersionAlt
 
 import Preferences
 import Utilities
@@ -45,8 +45,10 @@
         XMLStreamWriterBase.writeXML(self)
         
         project = e5App().getObject("Project")
-        if not project.hasDefaultUicCompilerParameters():
+        if not project.hasDefaultRccCompilerParameters():
             fileFormatVersion = projectFileFormatVersion
+        elif not project.hasDefaultUicCompilerParameters():
+            fileFormatVersion = projectFileFormatVersionUic
         elif not project.hasDefaultIdlCompilerParameters():
             fileFormatVersion = projectFileFormatVersionIdl
         elif not project.hasDefaultMakeParameters():
@@ -241,6 +243,12 @@
             self.writeBasics("UicCompilerParameters", self.pdata["UICPARAMS"])
             self.writeEndElement()
         
+        # do the 'rcc' parameters
+        if not e5App().getObject("Project").hasDefaultRccCompilerParameters():
+            self.writeStartElement("RccCompiler")
+            self.writeBasics("RccCompilerParameters", self.pdata["RCCPARAMS"])
+            self.writeEndElement()
+        
         # do the extra project data stuff
         if len(self.pdata["PROJECTTYPESPECIFICDATA"]):
             self.writeStartElement("ProjectTypeSpecific")
--- a/E5XML/SessionReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/SessionReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/SessionWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/SessionWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/ShortcutsReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/ShortcutsReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/ShortcutsWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/ShortcutsWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -33,9 +33,11 @@
         
         self.email = Preferences.getUser("Email")
         
-    def writeXML(self):
+    def writeXML(self, helpViewer=None):
         """
         Public method to write the XML to the file.
+        
+        @param helpViewer reference to the help window object
         """
         XMLStreamWriterBase.writeXML(self)
         
@@ -52,54 +54,52 @@
         self.writeStartElement("Shortcuts")
         self.writeAttribute("version", shortcutsFileFormatVersion)
         
-        self.__writeActions(
-            "Project",
-            e5App().getObject("Project").getActions())
-        self.__writeActions(
-            "General",
-            e5App().getObject("UserInterface").getActions('ui'))
-        self.__writeActions(
-            "Wizards",
-            e5App().getObject("UserInterface").getActions('wizards'))
-        self.__writeActions(
-            "Debug",
-            e5App().getObject("DebugUI").getActions())
-        self.__writeActions(
-            "Edit",
-            e5App().getObject("ViewManager").getActions('edit'))
-        self.__writeActions(
-            "File",
-            e5App().getObject("ViewManager").getActions('file'))
-        self.__writeActions(
-            "Search",
-            e5App().getObject("ViewManager").getActions('search'))
-        self.__writeActions(
-            "View",
-            e5App().getObject("ViewManager").getActions('view'))
-        self.__writeActions(
-            "Macro",
-            e5App().getObject("ViewManager").getActions('macro'))
-        self.__writeActions(
-            "Bookmarks",
-            e5App().getObject("ViewManager").getActions('bookmark'))
-        self.__writeActions(
-            "Spelling",
-            e5App().getObject("ViewManager").getActions('spelling'))
-        self.__writeActions(
-            "Window",
-            e5App().getObject("ViewManager").getActions('window'))
+        if helpViewer is None:
+            self.__writeActions(
+                "Project",
+                e5App().getObject("Project").getActions())
+            self.__writeActions(
+                "General",
+                e5App().getObject("UserInterface").getActions('ui'))
+            self.__writeActions(
+                "Wizards",
+                e5App().getObject("UserInterface").getActions('wizards'))
+            self.__writeActions(
+                "Debug",
+                e5App().getObject("DebugUI").getActions())
+            self.__writeActions(
+                "Edit",
+                e5App().getObject("ViewManager").getActions('edit'))
+            self.__writeActions(
+                "File",
+                e5App().getObject("ViewManager").getActions('file'))
+            self.__writeActions(
+                "Search",
+                e5App().getObject("ViewManager").getActions('search'))
+            self.__writeActions(
+                "View",
+                e5App().getObject("ViewManager").getActions('view'))
+            self.__writeActions(
+                "Macro",
+                e5App().getObject("ViewManager").getActions('macro'))
+            self.__writeActions(
+                "Bookmarks",
+                e5App().getObject("ViewManager").getActions('bookmark'))
+            self.__writeActions(
+                "Spelling",
+                e5App().getObject("ViewManager").getActions('spelling'))
+            self.__writeActions(
+                "Window",
+                e5App().getObject("ViewManager").getActions('window'))
+            
+            for category, ref in e5App().getPluginObjects():
+                if hasattr(ref, "getActions"):
+                    self.__writeActions(category, ref.getActions())
         
-        for category, ref in e5App().getPluginObjects():
-            if hasattr(ref, "getActions"):
-                self.__writeActions(category, ref.getActions())
-    
-        try:
+        else:
             self.__writeActions(
-                "HelpViewer",
-                e5App().getObject("DummyHelpViewer").getActions())
-        except KeyError:
-            # no QtWebKit available
-            pass
+                helpViewer.getActionsCategory(),
+                helpViewer.getActions())
     
         # add the main end tag
         self.writeEndElement()
--- a/E5XML/SpellCheckDictionariesReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/SpellCheckDictionariesReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2017 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2017 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/TasksReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/TasksReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/TasksWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/TasksWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/TemplatesReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/TemplatesReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/TemplatesWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/TemplatesWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2005 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2005 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/UserProjectReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/UserProjectReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/UserProjectWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/UserProjectWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/XMLStreamReaderBase.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/XMLStreamReaderBase.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/XMLStreamWriterBase.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/XMLStreamWriterBase.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/E5XML/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/E5XML/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Globals/AppInfo.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Globals/AppInfo.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Globals/E5ConfigParser.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Globals/E5ConfigParser.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Globals/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Globals/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2006 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2006 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -12,6 +12,10 @@
 #
 
 from __future__ import unicode_literals
+try:
+    str = unicode       # __IGNORE_EXCEPTION__
+except NameError:
+    pass
 
 import sys
 import os
@@ -19,7 +23,7 @@
 import shutil
 
 from PyQt5.QtCore import QDir, QLibraryInfo, QByteArray, QCoreApplication, \
-    QT_VERSION_STR, QT_VERSION
+    QT_VERSION_STR, QT_VERSION, QProcess, qVersion
 
 # names of the various settings objects
 settingsNameOrganization = "Eric6"
@@ -468,5 +472,29 @@
     else:
         return value
 
+
+###############################################################################
+## functions for web browser variant detection
+###############################################################################
+
+
+def getWebBrowserSupport():
+    """
+    Module function to determine the supported web browser variant.
+    
+    @return string indicating the supported web browser variant ("QtWebEngine",
+        "QtWebKit" or "None")
+    @rtype str
+    """
+    from eric6config import getConfig
+    scriptPath = os.path.join(getConfig("ericDir"), "Tools",
+                              "webBrowserSupport.py")
+    proc = QProcess()
+    proc.start(sys.executable, [scriptPath, qVersion()])
+    if proc.waitForFinished(10000):
+        variant = str(proc.readAllStandardOutput(), "utf-8", 'replace').strip()
+    else:
+        variant = "None"
+    return variant
 #
 # eflag: noqa = M801
--- a/Graphics/ApplicationDiagramBuilder.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/ApplicationDiagramBuilder.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/AssociationItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/AssociationItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/ClassItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/ClassItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/GraphicsUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/GraphicsUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/ImportsDiagramBuilder.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/ImportsDiagramBuilder.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/ModuleItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/ModuleItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/PackageDiagramBuilder.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/PackageDiagramBuilder.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/PackageItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/PackageItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/PixmapDiagram.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/PixmapDiagram.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/SvgDiagram.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/SvgDiagram.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLClassDiagramBuilder.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLClassDiagramBuilder.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLDiagramBuilder.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLDiagramBuilder.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLGraphicsView.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLGraphicsView.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2007 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2007 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/UMLSceneSizeDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/UMLSceneSizeDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Graphics/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Graphics/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2004 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2004 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockBlockedNetworkReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockBlockedNetworkReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockExceptionsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockExceptionsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockIcon.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockIcon.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockNetwork.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockNetwork.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockRule.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockRule.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockSubscription.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockSubscription.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/AdBlockTreeWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/AdBlockTreeWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/AdBlock/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/AdBlock/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/AddBookmarkDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/AddBookmarkDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarkNode.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarkNode.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarkPropertiesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarkPropertiesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImportDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImportDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/BookmarksImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/BookmarksImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/ChromeImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/FirefoxImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/FirefoxImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/HtmlImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/HtmlImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/IExplorerImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/IExplorerImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/OperaImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/OperaImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/SafariImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/SafariImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/XbelImporter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/XbelImporter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksImporters/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksImporters/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksMenu.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksMenu.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/BookmarksToolBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/BookmarksToolBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/NsHtmlReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/NsHtmlReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/NsHtmlWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/NsHtmlWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/XbelReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/XbelReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/XbelWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/XbelWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Bookmarks/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Bookmarks/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/ClosedTabsManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/ClosedTabsManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookieDetailsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookieDetailsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookieExceptionsModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookieExceptionsModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookieJar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookieJar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookieModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookieModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookiesConfigurationDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookiesConfigurationDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookiesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookiesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/CookiesExceptionsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/CookiesExceptionsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/CookieJar/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/CookieJar/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/DownloadAskActionDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/DownloadAskActionDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/DownloadItem.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/DownloadItem.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/DownloadManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/DownloadManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/DownloadModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/DownloadModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/DownloadUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/DownloadUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Download/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Download/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FeaturePermissions/FeaturePermissionBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FeaturePermissions/FeaturePermissionBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FeaturePermissions/FeaturePermissionManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FeaturePermissions/FeaturePermissionManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FeaturePermissions/FeaturePermissionsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FeaturePermissions/FeaturePermissionsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FeaturePermissions/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FeaturePermissions/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Feeds/FeedEditDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Feeds/FeedEditDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Feeds/FeedsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Feeds/FeedsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Feeds/FeedsManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Feeds/FeedsManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Feeds/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Feeds/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookie.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookie.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookieManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookieManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookieManagerDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookieManagerDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookieNotification.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookieNotification.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookieReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookieReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/FlashCookieUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/FlashCookieUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/FlashCookieManager/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/FlashCookieManager/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyAddScriptDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyAddScriptDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListDelegate.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationScriptInfoDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationScriptInfoDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyJavaScript.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyJavaScript.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyScript.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyScript.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyUrlMatcher.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyUrlMatcher.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/GreaseMonkey/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/GreaseMonkey/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpBrowserWV.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpBrowserWV.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 
--- a/Helpviewer/HelpClearPrivateDataDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpClearPrivateDataDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpDocsInstaller.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpDocsInstaller.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpIndexWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpIndexWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpInspector.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpInspector.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpLanguagesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpLanguagesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpSearchWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpSearchWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Helpviewer/HelpSingleApplication.py	Thu Jan 10 14:22:59 2019 +0100
@@ -0,0 +1,195 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2018 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+
+"""
+Module implementing the single application server and client for the web
+browser.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import pyqtSignal
+
+from Toolbox.SingleApplication import SingleApplicationClient, \
+    SingleApplicationServer
+
+import Globals
+
+###########################################################################
+## define some module global stuff
+###########################################################################
+
+SAFile = "eric6_help"
+
+# define the protocol tokens
+SALoadUrl = 'LoadUrl'
+SANewTab = 'NewTab'
+SASearch = 'Search'
+SAShutdown = 'Shutdown'
+
+
+class HelpSingleApplicationServer(SingleApplicationServer):
+    """
+    Class implementing the single application server embedded within the
+    Help viewer.
+    
+    @signal loadUrl(str) emitted to load an URL
+    @signal newTab(str) emitted to load an URL in a new tab
+    @signal search(str) emitted to search for a given word
+    @signal shutdown() emitted to shut down the browser
+    """
+    loadUrl = pyqtSignal(str)
+    newTab = pyqtSignal(str)
+    search = pyqtSignal(str)
+    shutdown = pyqtSignal()
+    
+    def __init__(self, name=""):
+        """
+        Constructor
+        
+        @param name name to be used by the single application server
+        @type str
+        """
+        if not name:
+            name = SAFile
+        
+        SingleApplicationServer.__init__(self, name)
+
+    def handleCommand(self, command, arguments):
+        """
+        Public slot to handle the command sent by the client.
+        
+        @param command command sent by the client
+        @type str
+        @param arguments list of command arguments
+        @type list of str
+        """
+        if command == SALoadUrl:
+            self.__saLoadUrl(arguments[0])
+        
+        elif command == SANewTab:
+            self.__saNewTab(arguments[0])
+        
+        elif command == SASearch:
+            self.__saSearch(arguments[0])
+        
+        elif command == SAShutdown:
+            self.__saShutdown()
+    
+    def __saLoadUrl(self, url):
+        """
+        Private method to load an URL in a new tab.
+        
+        @param url URL to be loaded
+        @type str
+        """
+        self.loadUrl.emit(url)
+    
+    def __saNewTab(self, url):
+        """
+        Private method to load an URL .
+        
+        @param url URL to be loaded
+        @type str
+        """
+        self.newTab.emit(url)
+    
+    def __saSearch(self, word):
+        """
+        Private method to search for a given word.
+        
+        @param word word to be searched for
+        @type str
+        """
+        self.search.emit(word)
+    
+    def __saShutdown(self):
+        """
+        Private method to shut down the web browser.
+        """
+        self.shutdown.emit()
+
+
+class HelpSingleApplicationClient(SingleApplicationClient):
+    """
+    Class implementing the single application client of the help viewer.
+    """
+    def __init__(self, name=""):
+        """
+        Constructor
+        
+        @param name name to be used by the single application server
+        @type str
+        """
+        if not name:
+            name = SAFile
+        
+        SingleApplicationClient.__init__(self, name)
+    
+    def processArgs(self, args, disconnect=True):
+        """
+        Public method to process the command line args passed to the UI.
+        
+        @param args list of command line arguments
+        @type list of str
+        @param disconnect flag indicating to disconnect when done
+        @type bool
+        """
+        # no args, return
+        if args is None:
+            return
+        
+        if Globals.isWindowsPlatform():
+            argChars = ('-', '/')
+        else:
+            argChars = ('-', )
+        
+        for arg in args:
+            if arg.startswith("--search="):
+                self.__search(arg.replace("--search=", ""))
+            elif arg.startswith("--newtab="):
+                self.__newTab(arg.replace("--newtab=", ""))
+            elif arg == "--shutdown":
+                self.__shutdown()
+            elif not arg.startswith(argChars):
+                # it is an URL
+                self.__loadUrl(arg)
+        
+        if disconnect:
+            self.disconnect()
+    
+    def __loadUrl(self, url):
+        """
+        Private method to send an URL to be loaded.
+        
+        @param url URL to be loaded
+        @type str
+        """
+        self.sendCommand(SALoadUrl, [url])
+    
+    def __newTab(self, url):
+        """
+        Private method to send an URL to be loaded in a new tab.
+        
+        @param url URL to be loaded
+        @type str
+        """
+        self.sendCommand(SANewTab, [url])
+    
+    def __search(self, word):
+        """
+        Private method to send a word to search for.
+        
+        @param word to to be searched for
+        @type str
+        """
+        self.sendCommand(SASearch, [word])
+    
+    def __shutdown(self):
+        """
+        Private method to signal a shutdown request to the browser.
+        """
+        self.sendCommand(SAShutdown, [])
--- a/Helpviewer/HelpSnap.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpSnap.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpTabBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpTabBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpTabWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpTabWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpTocWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpTocWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpTopicDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpTopicDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpUtilities.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpUtilities.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpWebSearchWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpWebSearchWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/HelpWindow.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/HelpWindow.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -16,7 +16,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, \
-    QUrl, QThread, QTextCodec
+    QUrl, QThread, QTextCodec, QFileInfo
 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics, \
     QIcon
 from PyQt5.QtWidgets import QWidget, QVBoxLayout, QSizePolicy, QDockWidget, \
@@ -56,6 +56,8 @@
 import UI.Config
 from UI.Info import Version
 
+from .HelpSingleApplication import HelpSingleApplicationServer
+
 
 class HelpWindow(E5MainWindow):
     """
@@ -72,7 +74,6 @@
     
     helpwindows = []
 
-    _fromEric = False
     _useQtHelp = QTHELP_AVAILABLE
     
     _networkAccessManager = None
@@ -94,218 +95,231 @@
     _flashCookieManager = None
     _zoomManager = None
     
-    def __init__(self, home, path, parent, name, fromEric=False,
-                 initShortcutsOnly=False, searchWord=None):
+    def __init__(self, home, path, parent, name,
+                 searchWord=None, qthelp=False, single=False, saname=""):
         """
         Constructor
         
-        @param home the URL to be shown (string)
-        @param path the path of the working dir (usually '.') (string)
-        @param parent parent widget of this window (QWidget)
-        @param name name of this window (string)
-        @param fromEric flag indicating whether it was called from within
-            eric6 (boolean)
-        @keyparam initShortcutsOnly flag indicating to just initialize the
-            keyboard shortcuts (boolean)
-        @keyparam searchWord word to search for (string)
+        @param home the URL to be shown
+        @type str
+        @param path the path of the working dir (usually '.')
+        @type str
+        @param parent parent widget of this window
+        @type QWidget
+        @param name name of this window
+        @type str
+        @param searchWord word to search for
+        @type str
+        @param qthelp flag indicating to enable the QtHelp support
+        @type bool
+        @param single flag indicating to start in single application mode
+        @type bool
+        @param saname name to be used for the single application server
+        @type str
         """
         super(HelpWindow, self).__init__(parent)
         self.setObjectName(name)
         self.setWindowTitle(self.tr("eric6 Web Browser"))
         
-        self.fromEric = fromEric
-        self.__class__._fromEric = fromEric
-        self.initShortcutsOnly = initShortcutsOnly
         self.setWindowIcon(UI.PixmapCache.getIcon("ericWeb.png"))
 
         self.mHistory = []
         self.__lastConfigurationPageName = ""
         self.__lastActiveWindow = None
         
+        self.__shortcutsDialog = None
+        
         self.__eventMouseButtons = Qt.NoButton
         self.__eventKeyboardModifiers = Qt.NoModifier
         
-        if self.initShortcutsOnly:
-            self.__initActions()
-        else:
-            from .SearchWidget import SearchWidget
-            from .HelpTocWidget import HelpTocWidget
-            from .HelpIndexWidget import HelpIndexWidget
-            from .HelpSearchWidget import HelpSearchWidget
-            from .HelpBrowserWV import HelpBrowser
-            from .HelpTabWidget import HelpTabWidget
-            from .AdBlock.AdBlockIcon import AdBlockIcon
-            from .VirusTotal.VirusTotalApi import VirusTotalAPI
-            
-            HelpWindow.setUseQtHelp(self.fromEric)
-            
-            if not self.fromEric:
-                self.setStyle(Preferences.getUI("Style"),
-                              Preferences.getUI("StyleSheet"))
-                
-                # initialize some SSL stuff
-                from E5Network.E5SslUtilities import initSSL
-                initSSL()
-            
-            if HelpWindow._useQtHelp:
-                self.__helpEngine = QHelpEngine(
-                    HelpWindow.getQtHelpCollectionFileName(),
-                    self)
-                self.__removeOldDocumentation()
-                self.__helpEngine.warning.connect(self.__warning)
-            else:
-                self.__helpEngine = None
-            self.__helpInstaller = None
-            
-            self.__zoomWidget = E5ZoomWidget(
-                UI.PixmapCache.getPixmap("zoomOut.png"),
-                UI.PixmapCache.getPixmap("zoomIn.png"),
-                UI.PixmapCache.getPixmap("zoomReset.png"), self)
-            self.statusBar().addPermanentWidget(self.__zoomWidget)
-            self.__zoomWidget.setMapping(
-                HelpBrowser.ZoomLevels, HelpBrowser.ZoomLevelDefault)
-            self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged)
+        HelpWindow.setUseQtHelp(qthelp or bool(searchWord))
             
-            self.tabWidget = HelpTabWidget(self)
-            self.tabWidget.currentChanged[int].connect(self.__currentChanged)
-            self.tabWidget.titleChanged.connect(self.__titleChanged)
-            self.tabWidget.showMessage.connect(self.statusBar().showMessage)
-            self.tabWidget.browserZoomValueChanged.connect(
-                self.__zoomWidget.setValue)
-            
-            self.findDlg = SearchWidget(self, self)
-            centralWidget = QWidget()
-            layout = QVBoxLayout()
-            layout.setContentsMargins(1, 1, 1, 1)
-            layout.addWidget(self.tabWidget)
-            layout.addWidget(self.findDlg)
-            self.tabWidget.setSizePolicy(
-                QSizePolicy.Preferred, QSizePolicy.Expanding)
-            centralWidget.setLayout(layout)
-            self.setCentralWidget(centralWidget)
-            self.findDlg.hide()
+        from .SearchWidget import SearchWidget
+        from .HelpTocWidget import HelpTocWidget
+        from .HelpIndexWidget import HelpIndexWidget
+        from .HelpSearchWidget import HelpSearchWidget
+        from .HelpBrowserWV import HelpBrowser
+        from .HelpTabWidget import HelpTabWidget
+        from .AdBlock.AdBlockIcon import AdBlockIcon
+        from .VirusTotal.VirusTotalApi import VirusTotalAPI
+    
+        self.setStyle(Preferences.getUI("Style"),
+                      Preferences.getUI("StyleSheet"))
+        
+        # initialize some SSL stuff
+        from E5Network.E5SslUtilities import initSSL
+        initSSL()
+        
+        if HelpWindow._useQtHelp:
+            self.__helpEngine = QHelpEngine(
+                HelpWindow.getQtHelpCollectionFileName(),
+                self)
+            self.__removeOldDocumentation()
+            self.__helpEngine.warning.connect(self.__warning)
+        else:
+            self.__helpEngine = None
+        self.__helpInstaller = None
+        
+        self.__zoomWidget = E5ZoomWidget(
+            UI.PixmapCache.getPixmap("zoomOut.png"),
+            UI.PixmapCache.getPixmap("zoomIn.png"),
+            UI.PixmapCache.getPixmap("zoomReset.png"), self)
+        self.statusBar().addPermanentWidget(self.__zoomWidget)
+        self.__zoomWidget.setMapping(
+            HelpBrowser.ZoomLevels, HelpBrowser.ZoomLevelDefault)
+        self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged)
+        
+        self.tabWidget = HelpTabWidget(self)
+        self.tabWidget.currentChanged[int].connect(self.__currentChanged)
+        self.tabWidget.titleChanged.connect(self.__titleChanged)
+        self.tabWidget.showMessage.connect(self.statusBar().showMessage)
+        self.tabWidget.browserZoomValueChanged.connect(
+            self.__zoomWidget.setValue)
+        
+        self.findDlg = SearchWidget(self, self)
+        centralWidget = QWidget()
+        layout = QVBoxLayout()
+        layout.setContentsMargins(1, 1, 1, 1)
+        layout.addWidget(self.tabWidget)
+        layout.addWidget(self.findDlg)
+        self.tabWidget.setSizePolicy(
+            QSizePolicy.Preferred, QSizePolicy.Expanding)
+        centralWidget.setLayout(layout)
+        self.setCentralWidget(centralWidget)
+        self.findDlg.hide()
+        
+        if HelpWindow._useQtHelp:
+            # setup the TOC widget
+            self.__tocWindow = HelpTocWidget(self.__helpEngine, self)
+            self.__tocDock = QDockWidget(self.tr("Contents"), self)
+            self.__tocDock.setObjectName("TocWindow")
+            self.__tocDock.setWidget(self.__tocWindow)
+            self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock)
             
-            if HelpWindow._useQtHelp:
-                # setup the TOC widget
-                self.__tocWindow = HelpTocWidget(self.__helpEngine, self)
-                self.__tocDock = QDockWidget(self.tr("Contents"), self)
-                self.__tocDock.setObjectName("TocWindow")
-                self.__tocDock.setWidget(self.__tocWindow)
-                self.addDockWidget(Qt.LeftDockWidgetArea, self.__tocDock)
-                
-                # setup the index widget
-                self.__indexWindow = HelpIndexWidget(self.__helpEngine, self)
-                self.__indexDock = QDockWidget(self.tr("Index"), self)
-                self.__indexDock.setObjectName("IndexWindow")
-                self.__indexDock.setWidget(self.__indexWindow)
-                self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock)
-                
-                # setup the search widget
-                self.__searchWord = searchWord
-                self.__indexing = False
-                self.__indexingProgress = None
-                self.__searchEngine = self.__helpEngine.searchEngine()
-                self.__searchEngine.indexingStarted.connect(
-                    self.__indexingStarted)
-                self.__searchEngine.indexingFinished.connect(
-                    self.__indexingFinished)
-                self.__searchWindow = HelpSearchWidget(
-                    self.__searchEngine, self)
-                self.__searchDock = QDockWidget(self.tr("Search"), self)
-                self.__searchDock.setObjectName("SearchWindow")
-                self.__searchDock.setWidget(self.__searchWindow)
-                self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
+            # setup the index widget
+            self.__indexWindow = HelpIndexWidget(self.__helpEngine, self)
+            self.__indexDock = QDockWidget(self.tr("Index"), self)
+            self.__indexDock.setObjectName("IndexWindow")
+            self.__indexDock.setWidget(self.__indexWindow)
+            self.addDockWidget(Qt.LeftDockWidgetArea, self.__indexDock)
             
-            if Preferences.getHelp("SaveGeometry"):
-                g = Preferences.getGeometry("HelpViewerGeometry")
-            else:
-                g = QByteArray()
-            if g.isEmpty():
-                s = QSize(800, 800)
-                self.resize(s)
-            else:
-                self.restoreGeometry(g)
-            
-            self.__setIconDatabasePath()
-            self.__initWebSettings()
-            
-            self.__initActions()
-            self.__initMenus()
-            self.__initToolbars()
-            
-            self.historyManager()
-            
-            syncMgr = self.syncManager()
-            syncMgr.syncMessage.connect(self.statusBar().showMessage)
-            syncMgr.syncError.connect(self.statusBar().showMessage)
-            
-            self.tabWidget.newBrowser(home)
-            self.tabWidget.currentBrowser().setFocus()
-            
-            self.__class__.helpwindows.append(self)
-            
-            self.__adBlockIcon = AdBlockIcon(self)
-            self.statusBar().addPermanentWidget(self.__adBlockIcon)
-            self.__adBlockIcon.setEnabled(
-                Preferences.getHelp("AdBlockEnabled"))
-            self.tabWidget.currentChanged[int].connect(
-                self.__adBlockIcon.currentChanged)
-            self.tabWidget.sourceChanged.connect(
-                self.__adBlockIcon.sourceChanged)
-            
-            self.networkIcon = E5NetworkIcon(self)
-            self.statusBar().addPermanentWidget(self.networkIcon)
+            # setup the search widget
+            self.__searchWord = searchWord
+            self.__indexing = False
+            self.__indexingProgress = None
+            self.__searchEngine = self.__helpEngine.searchEngine()
+            self.__searchEngine.indexingStarted.connect(
+                self.__indexingStarted)
+            self.__searchEngine.indexingFinished.connect(
+                self.__indexingFinished)
+            self.__searchWindow = HelpSearchWidget(
+                self.__searchEngine, self)
+            self.__searchDock = QDockWidget(self.tr("Search"), self)
+            self.__searchDock.setObjectName("SearchWindow")
+            self.__searchDock.setWidget(self.__searchWindow)
+            self.addDockWidget(Qt.LeftDockWidgetArea, self.__searchDock)
+        
+        if Preferences.getHelp("SaveGeometry"):
+            g = Preferences.getGeometry("HelpViewerGeometry")
+        else:
+            g = QByteArray()
+        if g.isEmpty():
+            s = QSize(800, 800)
+            self.resize(s)
+        else:
+            self.restoreGeometry(g)
+        
+        self.__setIconDatabasePath()
+        self.__initWebSettings()
+        
+        self.__initActions()
+        self.__initMenus()
+        self.__initToolbars()
+        
+        self.historyManager()
+        
+        syncMgr = self.syncManager()
+        syncMgr.syncMessage.connect(self.statusBar().showMessage)
+        syncMgr.syncError.connect(self.statusBar().showMessage)
+        
+        self.tabWidget.newBrowser(home)
+        self.tabWidget.currentBrowser().setFocus()
+        
+        self.__class__.helpwindows.append(self)
+        
+        self.__adBlockIcon = AdBlockIcon(self)
+        self.statusBar().addPermanentWidget(self.__adBlockIcon)
+        self.__adBlockIcon.setEnabled(
+            Preferences.getHelp("AdBlockEnabled"))
+        self.tabWidget.currentChanged[int].connect(
+            self.__adBlockIcon.currentChanged)
+        self.tabWidget.sourceChanged.connect(
+            self.__adBlockIcon.sourceChanged)
+        
+        self.networkIcon = E5NetworkIcon(self)
+        self.statusBar().addPermanentWidget(self.networkIcon)
+        
+        if len(HelpWindow.helpwindows):
+            QDesktopServices.setUrlHandler(
+                "http", HelpWindow.helpwindows[0].urlHandler)
+            QDesktopServices.setUrlHandler(
+                "https", HelpWindow.helpwindows[0].urlHandler)
+        
+        # setup connections
+        self.__activating = False
+        if HelpWindow._useQtHelp:
+            # TOC window
+            self.__tocWindow.linkActivated.connect(self.__linkActivated)
+            self.__tocWindow.escapePressed.connect(
+                self.__activateCurrentBrowser)
             
-            if not self.fromEric and len(HelpWindow.helpwindows):
-                QDesktopServices.setUrlHandler(
-                    "http", HelpWindow.helpwindows[0].urlHandler)
-                QDesktopServices.setUrlHandler(
-                    "https", HelpWindow.helpwindows[0].urlHandler)
-            
-            # setup connections
-            self.__activating = False
-            if HelpWindow._useQtHelp:
-                # TOC window
-                self.__tocWindow.linkActivated.connect(self.__linkActivated)
-                self.__tocWindow.escapePressed.connect(
-                    self.__activateCurrentBrowser)
-                # index window
-                self.__indexWindow.linkActivated.connect(self.__linkActivated)
-                self.__indexWindow.linksActivated.connect(
-                    self.__linksActivated)
-                self.__indexWindow.escapePressed.connect(
-                    self.__activateCurrentBrowser)
-                # search window
-                self.__searchWindow.linkActivated.connect(
-                    self.__linkActivated)
-                self.__searchWindow.escapePressed.connect(
-                    self.__activateCurrentBrowser)
+            # index window
+            self.__indexWindow.linkActivated.connect(self.__linkActivated)
+            self.__indexWindow.linksActivated.connect(
+                self.__linksActivated)
+            self.__indexWindow.escapePressed.connect(
+                self.__activateCurrentBrowser)
             
-            state = Preferences.getHelp("HelpViewerState")
-            self.restoreState(state)
-            
-            self.__initHelpDb()
-            
-            self.__virusTotal = VirusTotalAPI(self)
-            self.__virusTotal.submitUrlError.connect(
-                self.__virusTotalSubmitUrlError)
-            self.__virusTotal.urlScanReport.connect(
-                self.__virusTotalUrlScanReport)
-            self.__virusTotal.fileScanReport.connect(
-                self.__virusTotalFileScanReport)
-            
-            self.__shutdownCalled = False
-            
-            self.flashCookieManager()
-            
-            if HelpWindow._useQtHelp:
-                QTimer.singleShot(0, self.__lookForNewDocumentation)
-                if self.__searchWord is not None:
-                    QTimer.singleShot(0, self.__searchForWord)
-            
-            e5App().focusChanged.connect(self.__appFocusChanged)
-            
-            QTimer.singleShot(0, syncMgr.loadSettings)
+            # search window
+            self.__searchWindow.linkActivated.connect(
+                self.__linkActivated)
+            self.__searchWindow.escapePressed.connect(
+                self.__activateCurrentBrowser)
+        
+        state = Preferences.getHelp("HelpViewerState")
+        self.restoreState(state)
+        
+        self.__initHelpDb()
+        
+        self.__virusTotal = VirusTotalAPI(self)
+        self.__virusTotal.submitUrlError.connect(
+            self.__virusTotalSubmitUrlError)
+        self.__virusTotal.urlScanReport.connect(
+            self.__virusTotalUrlScanReport)
+        self.__virusTotal.fileScanReport.connect(
+            self.__virusTotalFileScanReport)
+        
+        self.__shutdownCalled = False
+        
+        self.flashCookieManager()
+        
+        if single:
+            self.SAServer = HelpSingleApplicationServer(saname)
+            self.SAServer.loadUrl.connect(self.__saLoadUrl)
+            self.SAServer.newTab.connect(self.__saNewTab)
+            self.SAServer.search.connect(self.__saSearchWord)
+            self.SAServer.shutdown.connect(self.shutdown)
+        else:
+            self.SAServer = None
+        
+        if HelpWindow._useQtHelp:
+            QTimer.singleShot(50, self.__lookForNewDocumentation)
+            if self.__searchWord is not None:
+                QTimer.singleShot(0, self.__searchForWord)
+        
+        e5App().focusChanged.connect(self.__appFocusChanged)
+        
+        QTimer.singleShot(0, syncMgr.loadSettings)
     
     def __del__(self):
         """
@@ -467,8 +481,7 @@
             """<b>New Tab</b>"""
             """<p>This opens a new help window tab.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.newTabAct.triggered.connect(self.newTab)
+        self.newTabAct.triggered.connect(self.newTab)
         self.__actions.append(self.newTabAct)
         
         self.newAct = E5Action(
@@ -482,8 +495,7 @@
             """<b>New Window</b>"""
             """<p>This opens a new help browser window.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.newAct.triggered.connect(self.newWindow)
+        self.newAct.triggered.connect(self.newWindow)
         self.__actions.append(self.newAct)
         
         self.openAct = E5Action(
@@ -498,8 +510,7 @@
             """<p>This opens a new help file for display."""
             """ It pops up a file selection dialog.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.openAct.triggered.connect(self.__openFile)
+        self.openAct.triggered.connect(self.__openFile)
         self.__actions.append(self.openAct)
         
         self.openTabAct = E5Action(
@@ -515,8 +526,7 @@
             """<p>This opens a new help file for display in a new tab."""
             """ It pops up a file selection dialog.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.openTabAct.triggered.connect(self.__openFileNewTab)
+        self.openTabAct.triggered.connect(self.__openFileNewTab)
         self.__actions.append(self.openTabAct)
         
         self.saveAsAct = E5Action(
@@ -531,8 +541,7 @@
             """<b>Save As...</b>"""
             """<p>Saves the current page to disk.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.saveAsAct.triggered.connect(self.__savePageAs)
+        self.saveAsAct.triggered.connect(self.__savePageAs)
         self.__actions.append(self.saveAsAct)
         
         self.savePageScreenAct = E5Action(
@@ -546,8 +555,7 @@
             """<b>Save Page Screen...</b>"""
             """<p>Saves the current page as a screen shot.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.savePageScreenAct.triggered.connect(self.__savePageScreen)
+        self.savePageScreenAct.triggered.connect(self.__savePageScreen)
         self.__actions.append(self.savePageScreenAct)
         
         self.saveVisiblePageScreenAct = E5Action(
@@ -563,9 +571,8 @@
             """<p>Saves the visible part of the current page as a"""
             """ screen shot.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.saveVisiblePageScreenAct.triggered.connect(
-                self.__saveVisiblePageScreen)
+        self.saveVisiblePageScreenAct.triggered.connect(
+            self.__saveVisiblePageScreen)
         self.__actions.append(self.saveVisiblePageScreenAct)
         
         bookmarksManager = self.bookmarksManager()
@@ -579,9 +586,8 @@
             """<b>Import Bookmarks</b>"""
             """<p>Import bookmarks from other browsers.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.importBookmarksAct.triggered.connect(
-                bookmarksManager.importBookmarks)
+        self.importBookmarksAct.triggered.connect(
+            bookmarksManager.importBookmarks)
         self.__actions.append(self.importBookmarksAct)
         
         self.exportBookmarksAct = E5Action(
@@ -594,9 +600,8 @@
             """<b>Export Bookmarks</b>"""
             """<p>Export the bookmarks into a file.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.exportBookmarksAct.triggered.connect(
-                bookmarksManager.exportBookmarks)
+        self.exportBookmarksAct.triggered.connect(
+            bookmarksManager.exportBookmarks)
         self.__actions.append(self.exportBookmarksAct)
         
         self.printAct = E5Action(
@@ -610,8 +615,7 @@
             """<b>Print</b>"""
             """<p>Print the displayed help text.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.printAct.triggered.connect(self.tabWidget.printBrowser)
+        self.printAct.triggered.connect(self.tabWidget.printBrowser)
         self.__actions.append(self.printAct)
         
         if Globals.isLinuxPlatform():
@@ -626,9 +630,8 @@
                 """<b>Print as PDF</b>"""
                 """<p>Print the displayed help text as a PDF file.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.printPdfAct.triggered.connect(
-                    self.tabWidget.printBrowserPdf)
+            self.printPdfAct.triggered.connect(
+                self.tabWidget.printBrowserPdf)
             self.__actions.append(self.printPdfAct)
         else:
             self.printPdfAct = None
@@ -644,9 +647,8 @@
             """<b>Print Preview</b>"""
             """<p>Print preview of the displayed help text.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.printPreviewAct.triggered.connect(
-                self.tabWidget.printPreviewBrowser)
+        self.printPreviewAct.triggered.connect(
+            self.tabWidget.printPreviewBrowser)
         self.__actions.append(self.printPreviewAct)
         
         self.closeAct = E5Action(
@@ -661,8 +663,7 @@
             """<b>Close</b>"""
             """<p>Closes the current help window.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.closeAct.triggered.connect(self.tabWidget.closeBrowser)
+        self.closeAct.triggered.connect(self.tabWidget.closeBrowser)
         self.__actions.append(self.closeAct)
         
         self.closeAllAct = E5Action(
@@ -674,9 +675,8 @@
             """<b>Close All</b>"""
             """<p>Closes all help windows except the first one.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.closeAllAct.triggered.connect(
-                self.tabWidget.closeAllBrowsers)
+        self.closeAllAct.triggered.connect(
+            self.tabWidget.closeAllBrowsers)
         self.__actions.append(self.closeAllAct)
         
         self.privateBrowsingAct = E5Action(
@@ -690,9 +690,8 @@
             """<p>Enables private browsing. In this mode no history is"""
             """ recorded anymore.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.privateBrowsingAct.triggered.connect(
-                self.__privateBrowsing)
+        self.privateBrowsingAct.triggered.connect(
+            self.__privateBrowsing)
         self.privateBrowsingAct.setCheckable(True)
         self.__actions.append(self.privateBrowsingAct)
         
@@ -707,11 +706,7 @@
             """<b>Quit</b>"""
             """<p>Quit the eric6 Web Browser.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            if self.fromEric:
-                self.exitAct.triggered.connect(self.close)
-            else:
-                self.exitAct.triggered.connect(self.__closeAllWindows)
+        self.exitAct.triggered.connect(self.__closeAllWindows)
         self.__actions.append(self.exitAct)
         
         self.backAct = E5Action(
@@ -727,8 +722,7 @@
             """<p>Moves one help screen backward. If none is"""
             """ available, this action is disabled.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.backAct.triggered.connect(self.__backward)
+        self.backAct.triggered.connect(self.__backward)
         self.__actions.append(self.backAct)
         
         self.forwardAct = E5Action(
@@ -745,8 +739,7 @@
             """<p>Moves one help screen forward. If none is"""
             """ available, this action is disabled.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.forwardAct.triggered.connect(self.__forward)
+        self.forwardAct.triggered.connect(self.__forward)
         self.__actions.append(self.forwardAct)
         
         self.homeAct = E5Action(
@@ -761,8 +754,7 @@
             """<b>Home</b>"""
             """<p>Moves to the initial help screen.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.homeAct.triggered.connect(self.__home)
+        self.homeAct.triggered.connect(self.__home)
         self.__actions.append(self.homeAct)
         
         self.reloadAct = E5Action(
@@ -778,8 +770,7 @@
             """<b>Reload</b>"""
             """<p>Reloads the current help screen.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.reloadAct.triggered.connect(self.__reload)
+        self.reloadAct.triggered.connect(self.__reload)
         self.__actions.append(self.reloadAct)
         
         self.stopAct = E5Action(
@@ -794,8 +785,7 @@
             """<b>Stop</b>"""
             """<p>Stops loading of the current tab.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.stopAct.triggered.connect(self.__stopLoading)
+        self.stopAct.triggered.connect(self.__stopLoading)
         self.__actions.append(self.stopAct)
         
         self.copyAct = E5Action(
@@ -809,8 +799,7 @@
             """<b>Copy</b>"""
             """<p>Copy the selected text to the clipboard.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.copyAct.triggered.connect(self.__copy)
+        self.copyAct.triggered.connect(self.__copy)
         self.__actions.append(self.copyAct)
         
         self.findAct = E5Action(
@@ -824,8 +813,7 @@
             """<b>Find</b>"""
             """<p>Find text in the current page.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.findAct.triggered.connect(self.__find)
+        self.findAct.triggered.connect(self.__find)
         self.__actions.append(self.findAct)
         
         self.findNextAct = E5Action(
@@ -840,8 +828,7 @@
             """<b>Find next</b>"""
             """<p>Find the next occurrence of text in the current page.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.findNextAct.triggered.connect(self.findDlg.findNext)
+        self.findNextAct.triggered.connect(self.findDlg.findNext)
         self.__actions.append(self.findNextAct)
         
         self.findPrevAct = E5Action(
@@ -857,8 +844,7 @@
             """<p>Find the previous occurrence of text in the current"""
             """ page.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.findPrevAct.triggered.connect(self.findDlg.findPrevious)
+        self.findPrevAct.triggered.connect(self.findDlg.findPrevious)
         self.__actions.append(self.findPrevAct)
         
         self.bookmarksManageAct = E5Action(
@@ -872,9 +858,8 @@
             """<b>Manage Bookmarks...</b>"""
             """<p>Open a dialog to manage the bookmarks.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.bookmarksManageAct.triggered.connect(
-                self.__showBookmarksDialog)
+        self.bookmarksManageAct.triggered.connect(
+            self.__showBookmarksDialog)
         self.__actions.append(self.bookmarksManageAct)
         
         self.bookmarksAddAct = E5Action(
@@ -890,8 +875,7 @@
             """<b>Add Bookmark</b>"""
             """<p>Open a dialog to add the current URL as a bookmark.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.bookmarksAddAct.triggered.connect(self.__addBookmark)
+        self.bookmarksAddAct.triggered.connect(self.__addBookmark)
         self.__actions.append(self.bookmarksAddAct)
         
         self.bookmarksAddFolderAct = E5Action(
@@ -904,9 +888,8 @@
             """<b>Add Folder...</b>"""
             """<p>Open a dialog to add a new bookmarks folder.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.bookmarksAddFolderAct.triggered.connect(
-                self.__addBookmarkFolder)
+        self.bookmarksAddFolderAct.triggered.connect(
+            self.__addBookmarkFolder)
         self.__actions.append(self.bookmarksAddFolderAct)
         
         self.bookmarksAllTabsAct = E5Action(
@@ -920,8 +903,7 @@
             """<p>Open a dialog to add a new bookmarks folder for"""
             """ all open tabs.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.bookmarksAllTabsAct.triggered.connect(self.bookmarkAll)
+        self.bookmarksAllTabsAct.triggered.connect(self.bookmarkAll)
         self.__actions.append(self.bookmarksAllTabsAct)
         
         self.whatsThisAct = E5Action(
@@ -939,8 +921,7 @@
             """ to use them. In dialogs, this feature can be accessed using"""
             """ the context help button in the titlebar.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.whatsThisAct.triggered.connect(self.__whatsThis)
+        self.whatsThisAct.triggered.connect(self.__whatsThis)
         self.__actions.append(self.whatsThisAct)
         
         self.aboutAct = E5Action(
@@ -953,8 +934,7 @@
             """<b>About</b>"""
             """<p>Display some information about this software.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.aboutAct.triggered.connect(self.__about)
+        self.aboutAct.triggered.connect(self.__about)
         self.__actions.append(self.aboutAct)
         
         self.aboutQtAct = E5Action(
@@ -967,8 +947,7 @@
             """<b>About Qt</b>"""
             """<p>Display some information about the Qt toolkit.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.aboutQtAct.triggered.connect(self.__aboutQt)
+        self.aboutQtAct.triggered.connect(self.__aboutQt)
         self.__actions.append(self.aboutQtAct)
         
         self.zoomInAct = E5Action(
@@ -983,8 +962,7 @@
             """<b>Zoom in</b>"""
             """<p>Zoom in on the text. This makes the text bigger.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.zoomInAct.triggered.connect(self.__zoomIn)
+        self.zoomInAct.triggered.connect(self.__zoomIn)
         self.__actions.append(self.zoomInAct)
         
         self.zoomOutAct = E5Action(
@@ -999,8 +977,7 @@
             """<b>Zoom out</b>"""
             """<p>Zoom out on the text. This makes the text smaller.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.zoomOutAct.triggered.connect(self.__zoomOut)
+        self.zoomOutAct.triggered.connect(self.__zoomOut)
         self.__actions.append(self.zoomOutAct)
         
         self.zoomResetAct = E5Action(
@@ -1016,8 +993,7 @@
             """<p>Reset the zoom of the text. """
             """This sets the zoom factor to 100%.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.zoomResetAct.triggered.connect(self.__zoomReset)
+        self.zoomResetAct.triggered.connect(self.__zoomReset)
         self.__actions.append(self.zoomResetAct)
         
         if hasattr(QWebSettings, 'ZoomTextOnly'):
@@ -1032,9 +1008,8 @@
                 """<b>Zoom text only</b>"""
                 """<p>Zoom text only; pictures remain constant.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.zoomTextOnlyAct.triggered[bool].connect(
-                    self.__zoomTextOnly)
+            self.zoomTextOnlyAct.triggered[bool].connect(
+                self.__zoomTextOnly)
             self.__actions.append(self.zoomTextOnlyAct)
         else:
             self.zoomTextOnlyAct = None
@@ -1050,8 +1025,7 @@
             """<b>Show page source</b>"""
             """<p>Show the page source in an editor.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.pageSourceAct.triggered.connect(self.__showPageSource)
+        self.pageSourceAct.triggered.connect(self.__showPageSource)
         self.__actions.append(self.pageSourceAct)
         self.addAction(self.pageSourceAct)
         
@@ -1061,8 +1035,7 @@
             self.tr('&Full Screen'),
             QKeySequence(self.tr('F11')), 0,
             self, 'help_view_full_scree')
-        if not self.initShortcutsOnly:
-            self.fullScreenAct.triggered.connect(self.__viewFullScreen)
+        self.fullScreenAct.triggered.connect(self.__viewFullScreen)
         self.__actions.append(self.fullScreenAct)
         self.addAction(self.fullScreenAct)
         
@@ -1071,8 +1044,7 @@
             self.tr('Show next tab'),
             QKeySequence(self.tr('Ctrl+Alt+Tab')), 0,
             self, 'help_view_next_tab')
-        if not self.initShortcutsOnly:
-            self.nextTabAct.triggered.connect(self.__nextTab)
+        self.nextTabAct.triggered.connect(self.__nextTab)
         self.__actions.append(self.nextTabAct)
         self.addAction(self.nextTabAct)
         
@@ -1081,8 +1053,7 @@
             self.tr('Show previous tab'),
             QKeySequence(self.tr('Shift+Ctrl+Alt+Tab')), 0,
             self, 'help_view_previous_tab')
-        if not self.initShortcutsOnly:
-            self.prevTabAct.triggered.connect(self.__prevTab)
+        self.prevTabAct.triggered.connect(self.__prevTab)
         self.__actions.append(self.prevTabAct)
         self.addAction(self.prevTabAct)
         
@@ -1091,8 +1062,7 @@
             self.tr('Switch between tabs'),
             QKeySequence(self.tr('Ctrl+1')), 0,
             self, 'help_switch_tabs')
-        if not self.initShortcutsOnly:
-            self.switchTabAct.triggered.connect(self.__switchTab)
+        self.switchTabAct.triggered.connect(self.__switchTab)
         self.__actions.append(self.switchTabAct)
         self.addAction(self.switchTabAct)
         
@@ -1107,8 +1077,7 @@
             """<p>Set the configuration items of the application"""
             """ with your prefered values.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.prefAct.triggered.connect(self.__showPreferences)
+        self.prefAct.triggered.connect(self.__showPreferences)
         self.__actions.append(self.prefAct)
 
         self.acceptedLanguagesAct = E5Action(
@@ -1122,9 +1091,8 @@
             """<b>Languages</b>"""
             """<p>Configure the accepted languages for web pages.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.acceptedLanguagesAct.triggered.connect(
-                self.__showAcceptedLanguages)
+        self.acceptedLanguagesAct.triggered.connect(
+            self.__showAcceptedLanguages)
         self.__actions.append(self.acceptedLanguagesAct)
         
         self.cookiesAct = E5Action(
@@ -1137,9 +1105,8 @@
             """<b>Cookies</b>"""
             """<p>Configure cookies handling.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.cookiesAct.triggered.connect(
-                self.__showCookiesConfiguration)
+        self.cookiesAct.triggered.connect(
+            self.__showCookiesConfiguration)
         self.__actions.append(self.cookiesAct)
         
         self.flashCookiesAct = E5Action(
@@ -1152,9 +1119,8 @@
             """<b>Flash Cookies</b>"""
             """<p>Show a dialog to manage the flash cookies.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.flashCookiesAct.triggered.connect(
-                self.__showFlashCookiesManagement)
+        self.flashCookiesAct.triggered.connect(
+            self.__showFlashCookiesManagement)
         self.__actions.append(self.flashCookiesAct)
         
         self.offlineStorageAct = E5Action(
@@ -1168,9 +1134,8 @@
             """<b>Offline Storage</b>"""
             """<p>Opens a dialog to configure offline storage.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.offlineStorageAct.triggered.connect(
-                self.__showOfflineStorageConfiguration)
+        self.offlineStorageAct.triggered.connect(
+            self.__showOfflineStorageConfiguration)
         self.__actions.append(self.offlineStorageAct)
         
         self.personalDataAct = E5Action(
@@ -1186,9 +1151,8 @@
             """<p>Opens a dialog to configure the personal information"""
             """ used for completing form fields.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.personalDataAct.triggered.connect(
-                self.__showPersonalInformationDialog)
+        self.personalDataAct.triggered.connect(
+            self.__showPersonalInformationDialog)
         self.__actions.append(self.personalDataAct)
         
         self.greaseMonkeyAct = E5Action(
@@ -1204,9 +1168,8 @@
             """<p>Opens a dialog to configure the available GreaseMonkey"""
             """ Scripts.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.greaseMonkeyAct.triggered.connect(
-                self.__showGreaseMonkeyConfigDialog)
+        self.greaseMonkeyAct.triggered.connect(
+            self.__showGreaseMonkeyConfigDialog)
         self.__actions.append(self.greaseMonkeyAct)
         
         self.editMessageFilterAct = E5Action(
@@ -1222,9 +1185,8 @@
             """ suppress unwanted messages been shown in an error"""
             """ window.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.editMessageFilterAct.triggered.connect(
-                E5ErrorMessage.editMessageFilters)
+        self.editMessageFilterAct.triggered.connect(
+            E5ErrorMessage.editMessageFilters)
         self.__actions.append(self.editMessageFilterAct)
 
         self.featurePermissionAct = E5Action(
@@ -1239,12 +1201,11 @@
             """<p>Opens a dialog to edit the remembered HTML5"""
             """ feature permissions.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.featurePermissionAct.triggered.connect(
-                self.__showFeaturePermissionDialog)
+        self.featurePermissionAct.triggered.connect(
+            self.__showFeaturePermissionDialog)
         self.__actions.append(self.featurePermissionAct)
 
-        if HelpWindow._useQtHelp or self.initShortcutsOnly:
+        if HelpWindow._useQtHelp:
             self.syncTocAct = E5Action(
                 self.tr('Sync with Table of Contents'),
                 UI.PixmapCache.getIcon("syncToc.png"),
@@ -1257,8 +1218,7 @@
                 """<p>Synchronizes the table of contents with current"""
                 """ page.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.syncTocAct.triggered.connect(self.__syncTOC)
+            self.syncTocAct.triggered.connect(self.__syncTOC)
             self.__actions.append(self.syncTocAct)
             
             self.showTocAct = E5Action(
@@ -1271,8 +1231,7 @@
                 """<b>Table of Contents</b>"""
                 """<p>Shows the table of contents window.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.showTocAct.triggered.connect(self.__showTocWindow)
+            self.showTocAct.triggered.connect(self.__showTocWindow)
             self.__actions.append(self.showTocAct)
             
             self.showIndexAct = E5Action(
@@ -1285,8 +1244,7 @@
                 """<b>Index</b>"""
                 """<p>Shows the index window.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.showIndexAct.triggered.connect(self.__showIndexWindow)
+            self.showIndexAct.triggered.connect(self.__showIndexWindow)
             self.__actions.append(self.showIndexAct)
             
             self.showSearchAct = E5Action(
@@ -1299,9 +1257,8 @@
                 """<b>Search</b>"""
                 """<p>Shows the search window.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.showSearchAct.triggered.connect(
-                    self.__showSearchWindow)
+            self.showSearchAct.triggered.connect(
+                self.__showSearchWindow)
             self.__actions.append(self.showSearchAct)
             
             self.manageQtHelpDocsAct = E5Action(
@@ -1315,9 +1272,8 @@
                 """<p>Shows a dialog to manage the QtHelp documentation"""
                 """ set.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.manageQtHelpDocsAct.triggered.connect(
-                    self.__manageQtHelpDocumentation)
+            self.manageQtHelpDocsAct.triggered.connect(
+                self.__manageQtHelpDocumentation)
             self.__actions.append(self.manageQtHelpDocsAct)
             
             self.manageQtHelpFiltersAct = E5Action(
@@ -1330,9 +1286,8 @@
                 """<b>Manage QtHelp Filters</b>"""
                 """<p>Shows a dialog to manage the QtHelp filters.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.manageQtHelpFiltersAct.triggered.connect(
-                    self.__manageQtHelpFilters)
+            self.manageQtHelpFiltersAct.triggered.connect(
+                self.__manageQtHelpFilters)
             self.__actions.append(self.manageQtHelpFiltersAct)
             
             self.reindexDocumentationAct = E5Action(
@@ -1345,9 +1300,8 @@
                 """<b>Reindex Documentation</b>"""
                 """<p>Reindexes the documentation set.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.reindexDocumentationAct.triggered.connect(
-                    self.__searchEngine.reindexDocumentation)
+            self.reindexDocumentationAct.triggered.connect(
+                self.__searchEngine.reindexDocumentation)
             self.__actions.append(self.reindexDocumentationAct)
         
         self.clearPrivateDataAct = E5Action(
@@ -1363,9 +1317,8 @@
             """<p>Clears the private data like browsing history, search"""
             """ history or the favicons database.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.clearPrivateDataAct.triggered.connect(
-                self.__clearPrivateData)
+        self.clearPrivateDataAct.triggered.connect(
+            self.__clearPrivateData)
         self.__actions.append(self.clearPrivateDataAct)
         
         self.clearIconsAct = E5Action(
@@ -1380,8 +1333,7 @@
             """<p>Clears the database of favicons of previously visited"""
             """ URLs.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.clearIconsAct.triggered.connect(self.__clearIconsDatabase)
+        self.clearIconsAct.triggered.connect(self.__clearIconsDatabase)
         self.__actions.append(self.clearIconsAct)
         
         self.searchEnginesAct = E5Action(
@@ -1396,9 +1348,8 @@
             """<p>Opens a dialog to configure the available search"""
             """ engines.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.searchEnginesAct.triggered.connect(
-                self.__showEnginesConfigurationDialog)
+        self.searchEnginesAct.triggered.connect(
+            self.__showEnginesConfigurationDialog)
         self.__actions.append(self.searchEnginesAct)
         
         self.passwordsAct = E5Action(
@@ -1413,8 +1364,7 @@
             """<b>Manage Saved Passwords...</b>"""
             """<p>Opens a dialog to manage the saved passwords.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.passwordsAct.triggered.connect(self.__showPasswordsDialog)
+        self.passwordsAct.triggered.connect(self.__showPasswordsDialog)
         self.__actions.append(self.passwordsAct)
         
         self.adblockAct = E5Action(
@@ -1430,8 +1380,7 @@
             """<p>Opens a dialog to configure AdBlock subscriptions and"""
             """ rules.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.adblockAct.triggered.connect(self.__showAdBlockDialog)
+        self.adblockAct.triggered.connect(self.__showAdBlockDialog)
         self.__actions.append(self.adblockAct)
         
         self.flashblockAct = E5Action(
@@ -1447,9 +1396,8 @@
             """<p>Opens a dialog to configure the ClickToFlash"""
             """ whitelist.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.flashblockAct.triggered.connect(
-                self.__showClickToFlashDialog)
+        self.flashblockAct.triggered.connect(
+            self.__showClickToFlashDialog)
         self.__actions.append(self.flashblockAct)
         
         if SSL_AVAILABLE:
@@ -1466,9 +1414,8 @@
                 """<p>Opens a dialog to manage the saved SSL"""
                 """ certificates.</p>"""
             ))
-            if not self.initShortcutsOnly:
-                self.certificatesAct.triggered.connect(
-                    self.__showCertificatesDialog)
+            self.certificatesAct.triggered.connect(
+                self.__showCertificatesDialog)
             self.__actions.append(self.certificatesAct)
         
         self.toolsMonitorAct = E5Action(
@@ -1482,9 +1429,8 @@
             """<b>Network Monitor...</b>"""
             """<p>Shows the network monitor dialog.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.toolsMonitorAct.triggered.connect(
-                self.__showNetworkMonitor)
+        self.toolsMonitorAct.triggered.connect(
+            self.__showNetworkMonitor)
         self.__actions.append(self.toolsMonitorAct)
         
         self.showDownloadManagerAct = E5Action(
@@ -1497,9 +1443,8 @@
             """<b>Downloads</b>"""
             """<p>Shows the downloads window.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.showDownloadManagerAct.triggered.connect(
-                self.__showDownloadsWindow)
+        self.showDownloadManagerAct.triggered.connect(
+            self.__showDownloadsWindow)
         self.__actions.append(self.showDownloadManagerAct)
         
         self.feedsManagerAct = E5Action(
@@ -1516,8 +1461,7 @@
             """ It can be used to mange the feeds and to show their"""
             """ contents.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.feedsManagerAct.triggered.connect(self.__showFeedsManager)
+        self.feedsManagerAct.triggered.connect(self.__showFeedsManager)
         self.__actions.append(self.feedsManagerAct)
         
         self.siteInfoAct = E5Action(
@@ -1533,8 +1477,7 @@
             """<p>Opens a dialog showing some information about the current"""
             """ site.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog)
+        self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog)
         self.__actions.append(self.siteInfoAct)
         
         self.userAgentManagerAct = E5Action(
@@ -1547,9 +1490,8 @@
             """<b>Manage User Agent Settings</b>"""
             """<p>Shows a dialog to manage the User Agent settings.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.userAgentManagerAct.triggered.connect(
-                self.__showUserAgentsDialog)
+        self.userAgentManagerAct.triggered.connect(
+            self.__showUserAgentsDialog)
         self.__actions.append(self.userAgentManagerAct)
         
         self.synchronizationAct = E5Action(
@@ -1564,9 +1506,8 @@
             """<p>This shows a dialog to synchronize data via the"""
             """ network.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.synchronizationAct.triggered.connect(
-                self.__showSyncDialog)
+        self.synchronizationAct.triggered.connect(
+            self.__showSyncDialog)
         self.__actions.append(self.synchronizationAct)
         
         self.zoomValuesAct = E5Action(
@@ -1581,9 +1522,52 @@
             """<b>Manage Saved Zoom Values...</b>"""
             """<p>Opens a dialog to manage the saved zoom values.</p>"""
         ))
-        if not self.initShortcutsOnly:
-            self.zoomValuesAct.triggered.connect(self.__showZoomValuesDialog)
+        self.zoomValuesAct.triggered.connect(self.__showZoomValuesDialog)
         self.__actions.append(self.zoomValuesAct)
+
+        self.shortcutsAct = E5Action(
+            self.tr('Keyboard Shortcuts'),
+            UI.PixmapCache.getIcon("configureShortcuts.png"),
+            self.tr('Keyboard &Shortcuts...'),
+            0, 0,
+            self, 'webbrowser_keyboard_shortcuts')
+        self.shortcutsAct.setStatusTip(self.tr(
+            'Set the keyboard shortcuts'))
+        self.shortcutsAct.setWhatsThis(self.tr(
+            """<b>Keyboard Shortcuts</b>"""
+            """<p>Set the keyboard shortcuts of the application"""
+            """ with your prefered values.</p>"""
+        ))
+        self.shortcutsAct.triggered.connect(self.__configShortcuts)
+        self.__actions.append(self.shortcutsAct)
+
+        self.exportShortcutsAct = E5Action(
+            self.tr('Export Keyboard Shortcuts'),
+            UI.PixmapCache.getIcon("exportShortcuts.png"),
+            self.tr('&Export Keyboard Shortcuts...'),
+            0, 0, self, 'export_keyboard_shortcuts')
+        self.exportShortcutsAct.setStatusTip(self.tr(
+            'Export the keyboard shortcuts'))
+        self.exportShortcutsAct.setWhatsThis(self.tr(
+            """<b>Export Keyboard Shortcuts</b>"""
+            """<p>Export the keyboard shortcuts of the application.</p>"""
+        ))
+        self.exportShortcutsAct.triggered.connect(self.__exportShortcuts)
+        self.__actions.append(self.exportShortcutsAct)
+
+        self.importShortcutsAct = E5Action(
+            self.tr('Import Keyboard Shortcuts'),
+            UI.PixmapCache.getIcon("importShortcuts.png"),
+            self.tr('&Import Keyboard Shortcuts...'),
+            0, 0, self, 'import_keyboard_shortcuts')
+        self.importShortcutsAct.setStatusTip(self.tr(
+            'Import the keyboard shortcuts'))
+        self.importShortcutsAct.setWhatsThis(self.tr(
+            """<b>Import Keyboard Shortcuts</b>"""
+            """<p>Import the keyboard shortcuts of the application.</p>"""
+        ))
+        self.importShortcutsAct.triggered.connect(self.__importShortcuts)
+        self.__actions.append(self.importShortcutsAct)
         
         self.backAct.setEnabled(False)
         self.forwardAct.setEnabled(False)
@@ -1598,7 +1582,16 @@
         @return list of all actions (list of E5Action)
         """
         return self.__actions[:]
-        
+    
+    def getActionsCategory(self):
+        """
+        Public method to get the category of the defined actions.
+        
+        @return category of the actions
+        @rtype str
+        """
+        return "HelpViewer"
+    
     def __initMenus(self):
         """
         Private method to create the menus.
@@ -1694,6 +1687,11 @@
         menu = mb.addMenu(self.tr('&Settings'))
         menu.setTearOffEnabled(True)
         menu.addAction(self.prefAct)
+        menu.addSeparator()
+        menu.addAction(self.shortcutsAct)
+        menu.addAction(self.exportShortcutsAct)
+        menu.addAction(self.importShortcutsAct)
+        menu.addSeparator()
         menu.addAction(self.acceptedLanguagesAct)
         menu.addAction(self.cookiesAct)
         menu.addAction(self.flashCookiesAct)
@@ -1828,6 +1826,7 @@
         settingstb.setObjectName("SettingsToolBar")
         settingstb.setIconSize(UI.Config.ToolBarIconSize)
         settingstb.addAction(self.prefAct)
+        settingstb.addAction(self.shortcutsAct)
         settingstb.addAction(self.acceptedLanguagesAct)
         settingstb.addAction(self.cookiesAct)
         settingstb.addAction(self.flashCookiesAct)
@@ -2002,7 +2001,7 @@
             linkName = link.toString()
         else:
             linkName = link
-        h = HelpWindow(linkName, ".", self.parent(), "qbrowser", self.fromEric)
+        h = HelpWindow(linkName, ".", self.parent(), "qbrowser")
         h.show()
     
     def __openFile(self):
@@ -2289,7 +2288,7 @@
         
         try:
             browserIndex = HelpWindow.helpwindows.index(self)
-            if not self.fromEric and len(HelpWindow.helpwindows):
+            if len(HelpWindow.helpwindows):
                 if browserIndex == 0:
                     if len(HelpWindow.helpwindows) > 1:
                         # first window will be deleted
@@ -2302,13 +2301,12 @@
                     else:
                         QDesktopServices.unsetUrlHandler("http")
                         QDesktopServices.unsetUrlHandler("https")
-            if self.fromEric or len(HelpWindow.helpwindows) > 0:
+            if len(HelpWindow.helpwindows) > 0:
                 del HelpWindow.helpwindows[browserIndex]
         except ValueError:
             pass
         
-        if not self.fromEric:
-            Preferences.syncPreferences()
+        Preferences.syncPreferences()
         
         self.__shutdownCalled = True
         return True
@@ -2501,7 +2499,7 @@
         """
         from Preferences.ConfigurationDialog import ConfigurationDialog
         dlg = ConfigurationDialog(
-            self, 'Configuration', True, fromEric=self.fromEric,
+            self, 'Configuration', True, fromEric=False,
             displayMode=ConfigurationDialog.HelpBrowserMode)
         dlg.preferencesChanged.connect(self.preferencesChanged)
         dlg.masterPasswordChanged.connect(
@@ -2523,9 +2521,8 @@
         """
         Public slot to handle a change of preferences.
         """
-        if not self.fromEric:
-            self.setStyle(Preferences.getUI("Style"),
-                          Preferences.getUI("StyleSheet"))
+        self.setStyle(Preferences.getUI("Style"),
+                      Preferences.getUI("StyleSheet"))
         
         self.__initWebSettings()
         
@@ -2561,7 +2558,7 @@
         @type bool
         """
         self.passwordManager().masterPasswordChanged(oldPassword, newPassword)
-        if self.fromEric and local:
+        if local:
             # we were called from our local configuration dialog
             Preferences.convertPasswords(oldPassword, newPassword)
             Utilities.crypto.changeRememberedMaster(newPassword)
@@ -2910,10 +2907,11 @@
         """
         Private slot to remove non-existing documentation from the help engine.
         """
-        for namespace in self.__helpEngine.registeredDocumentations():
-            docFile = self.__helpEngine.documentationFileName(namespace)
-            if not os.path.exists(docFile):
-                self.__helpEngine.unregisterDocumentation(namespace)
+        if HelpWindow._useQtHelp:
+            for namespace in self.__helpEngine.registeredDocumentations():
+                docFile = self.__helpEngine.documentationFileName(namespace)
+                if not os.path.exists(docFile):
+                    self.__helpEngine.unregisterDocumentation(namespace)
         
     def __lookForNewDocumentation(self):
         """
@@ -3909,22 +3907,18 @@
         @param heading heading of the notification (string)
         @param text text of the notification (string)
         """
-        if cls._fromEric:
-            e5App().getObject("UserInterface").showNotification(
-                icon, heading, text)
-        else:
-            if Preferences.getUI("NotificationsEnabled"):
-                if cls._notification is None:
-                    from UI.NotificationWidget import NotificationWidget
-                    cls._notification = NotificationWidget()
-                cls._notification.setPixmap(icon)
-                cls._notification.setHeading(heading)
-                cls._notification.setText(text)
-                cls._notification.setTimeout(
-                    Preferences.getUI("NotificationTimeout"))
-                cls._notification.move(
-                    Preferences.getUI("NotificationPosition"))
-                cls._notification.show()
+        if Preferences.getUI("NotificationsEnabled"):
+            if cls._notification is None:
+                from UI.NotificationWidget import NotificationWidget
+                cls._notification = NotificationWidget()
+            cls._notification.setPixmap(icon)
+            cls._notification.setHeading(heading)
+            cls._notification.setText(text)
+            cls._notification.setTimeout(
+                Preferences.getUI("NotificationTimeout"))
+            cls._notification.move(
+                Preferences.getUI("NotificationPosition"))
+            cls._notification.show()
     
     @classmethod
     def notificationsEnabled(cls):
@@ -3933,7 +3927,96 @@
         
         @return flag indicating, if notifications are enabled (boolean)
         """
-        if cls._fromEric:
-            return e5App().getObject("UserInterface").notificationsEnabled()
-        else:
-            return Preferences.getUI("NotificationsEnabled")
+        return Preferences.getUI("NotificationsEnabled")
+    
+    ###############################################################
+    ## 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 __saNewTab(self, urlStr):
+        """
+        Private slot to load an URL received via the single application
+        protocol in a new tab.
+        
+        @param urlStr URL to be loaded
+        @type str
+        """
+        url = QUrl.fromUserInput(urlStr)
+        self.newTab(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 HelpWindow._useQtHelp:
+            self.__searchWord = word
+            self.__searchForWord()
+    
+    ######################################################
+    ## Methods below implement shortcuts related functions
+    ######################################################
+    
+    def __configShortcuts(self):
+        """
+        Private slot to configure the keyboard shortcuts.
+        """
+        if self.__shortcutsDialog is None:
+            from Preferences.ShortcutsDialog import ShortcutsDialog
+            self.__shortcutsDialog = ShortcutsDialog(self)
+        self.__shortcutsDialog.populate(helpViewer=self)
+        self.__shortcutsDialog.show()
+    
+    def __exportShortcuts(self):
+        """
+        Private slot to export the keyboard shortcuts.
+        """
+        fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
+            None,
+            self.tr("Export Keyboard Shortcuts"),
+            "",
+            self.tr("Keyboard shortcut file (*.e4k)"),
+            "",
+            E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
+        
+        if not fn:
+            return
+        
+        ext = QFileInfo(fn).suffix()
+        if not ext:
+            ex = selectedFilter.split("(*")[1].split(")")[0]
+            if ex:
+                fn += ex
+        
+        from Preferences import Shortcuts
+        Shortcuts.exportShortcuts(fn, helpViewer=self)
+
+    def __importShortcuts(self):
+        """
+        Private slot to import the keyboard shortcuts.
+        """
+        fn = E5FileDialog.getOpenFileName(
+            None,
+            self.tr("Import Keyboard Shortcuts"),
+            "",
+            self.tr("Keyboard shortcut file (*.e4k)"))
+        
+        if fn:
+            from Preferences import Shortcuts
+            Shortcuts.importShortcuts(fn, helpViewer=self)
--- a/Helpviewer/History/HistoryCompleter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryCompleter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryFilterModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryFilterModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryMenu.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryMenu.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/HistoryTreeModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/HistoryTreeModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/History/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/History/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/JavaScriptResources.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/JavaScriptResources.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/AboutAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/AboutAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/EmptyNetworkReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/EmptyNetworkReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/EricAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/EricAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/FileAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/FileAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/FileReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/FileReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/FollowRedirectReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/FollowRedirectReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/FtpAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/FtpAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/FtpReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/FtpReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NetworkAccessManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NetworkAccessManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NetworkAccessManagerProxy.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NetworkAccessManagerProxy.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NetworkDiskCache.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NetworkDiskCache.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NetworkProtocolUnknownErrorReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NetworkProtocolUnknownErrorReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NetworkReply.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NetworkReply.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/NoCacheHostsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/NoCacheHostsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/QtHelpAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/QtHelpAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/SchemeAccessHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/SchemeAccessHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/SendRefererWhitelistDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/SendRefererWhitelistDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Network/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Network/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OfflineStorage/OfflineStorageConfigDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OfflineStorage/OfflineStorageConfigDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OfflineStorage/WebDatabasesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OfflineStorage/WebDatabasesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OfflineStorage/WebDatabasesModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OfflineStorage/WebDatabasesModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OfflineStorage/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OfflineStorage/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/DefaultSearchEngines/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/DefaultSearchEngines/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2013 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2013 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchEditDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchEditDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchEngine.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchEngine.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchEngineAction.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchEngineAction.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchEngineModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchEngineModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/OpenSearchWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/OpenSearchWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/OpenSearch/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/OpenSearch/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/PageScreenDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/PageScreenDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/LoginForm.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/LoginForm.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/PasswordManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/PasswordManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/PasswordModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/PasswordModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/PasswordReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/PasswordReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/PasswordWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/PasswordWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/PasswordsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/PasswordsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Passwords/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Passwords/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/PersonalInformationManager/PersonalDataDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/PersonalInformationManager/PersonalDataDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/PersonalInformationManager/PersonalInformationManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/PersonalInformationManager/PersonalInformationManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/PersonalInformationManager/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/PersonalInformationManager/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/QtHelpDocumentationDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/QtHelpDocumentationDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
@@ -50,8 +50,10 @@
                 e5App().getObject("PluginManager").getPluginQtHelpFiles()
         except KeyError:
             from PluginManager.PluginManager import PluginManager
-            self.__pluginHelpDocuments = \
-                PluginManager(self).getPluginQtHelpFiles()
+            pluginManager = PluginManager(self, doLoadPlugins=False)
+            pluginManager.loadDocumentationSetPlugins()
+            pluginManager.activatePlugins()
+            self.__pluginHelpDocuments = pluginManager.getPluginQtHelpFiles()
         self.addPluginButton.setEnabled(bool(self.__pluginHelpDocuments))
     
     @pyqtSlot()
--- a/Helpviewer/QtHelpDocumentationSelectionDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/QtHelpDocumentationSelectionDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/QtHelpFiltersDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/QtHelpFiltersDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SearchWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SearchWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SiteInfo/SiteInfoDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SiteInfo/SiteInfoDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SiteInfo/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SiteInfo/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SpeedDial/Page.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/Page.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SpeedDial/PageThumbnailer.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/PageThumbnailer.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SpeedDial/SpeedDial.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/SpeedDial.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SpeedDial/SpeedDialReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/SpeedDialReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 
--- a/Helpviewer/SpeedDial/SpeedDialWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/SpeedDialWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/SpeedDial/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/SpeedDial/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/DirectorySyncHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/DirectorySyncHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/FtpSyncHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/FtpSyncHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncAssistantDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncAssistantDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncCheckPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncCheckPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncDataPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncDataPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncDirectorySettingsPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncDirectorySettingsPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncEncryptionPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncEncryptionPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncFtpSettingsPage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncFtpSettingsPage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncGlobals.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncGlobals.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncHandler.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncHandler.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncHostTypePage.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncHostTypePage.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/SyncManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/SyncManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/Sync/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/Sync/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/BookmarkActionSelectionDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/BookmarkActionSelectionDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/BookmarkInfoDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/BookmarkInfoDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/FavIconLabel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/FavIconLabel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/SslLabel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/SslLabel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/StackedUrlBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/StackedUrlBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/UrlBar.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/UrlBar.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UrlBar/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UrlBar/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/UserAgentManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/UserAgentMenu.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentMenu.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/UserAgentModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/UserAgentReader.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentReader.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 
--- a/Helpviewer/UserAgent/UserAgentWriter.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentWriter.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/UserAgentsDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/UserAgentsDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/UserAgent/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/UserAgent/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2010 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2010 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/VirusTotal/VirusTotalApi.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/VirusTotal/VirusTotalApi.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2011 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/VirusTotal/VirusTotalIpReportDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/VirusTotal/VirusTotalIpReportDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/VirusTotal/VirusTotalWhoisDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/VirusTotal/VirusTotalWhoisDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/VirusTotal/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/VirusTotal/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/ClickToFlash/ClickToFlashPlugin.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/ClickToFlash/ClickToFlashPlugin.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/ClickToFlash/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/ClickToFlash/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/WebPluginFactory.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/WebPluginFactory.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/WebPluginInterface.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/WebPluginInterface.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/WebPlugins/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/WebPlugins/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/ZoomManager/ZoomManager.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/ZoomManager/ZoomManager.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/ZoomManager/ZoomValuesDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/ZoomManager/ZoomValuesDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/ZoomManager/ZoomValuesModel.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/ZoomManager/ZoomValuesModel.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/ZoomManager/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/ZoomManager/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2015 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2015 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/Helpviewer/data/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/Helpviewer/data/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2012 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditChunks.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditChunks.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditGotoWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditGotoWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditMainWindow.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditMainWindow.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditSearchReplaceWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditSearchReplaceWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditUndoStack.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditUndoStack.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/HexEditWidget.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/HexEditWidget.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/HexEdit/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/HexEdit/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2016 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2016 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/IconEditorGrid.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/IconEditorGrid.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/IconEditorPalette.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/IconEditorPalette.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/IconEditorWindow.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/IconEditorWindow.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2002 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2002 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/IconSizeDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/IconSizeDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/IconEditor/cursors/__init__.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/IconEditor/cursors/__init__.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2009 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2009 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/MultiProject/AddProjectDialog.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/MultiProject/AddProjectDialog.py	Thu Jan 10 14:22:59 2019 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2008 - 2018 Detlev Offenbach <detlev@die-offenbachs.de>
+# Copyright (c) 2008 - 2019 Detlev Offenbach <detlev@die-offenbachs.de>
 #
 
 """
--- a/MultiProject/MultiProject.py	Sat Dec 01 11:45:24 2018 +0100
+++ b/MultiProject/MultiProject.py	Thu Jan 10 14:22:5