Merged with default branch in order to prepare a new release. maintenance release-17.09

Fri, 01 Sep 2017 12:08:17 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 01 Sep 2017 12:08:17 +0200
branch
maintenance
changeset 5863
0752bdd8db77
parent 5826
ea0f0f066b1d (current diff)
parent 5862
0a88812e43bf (diff)
child 5864
86ccabe751ac

Merged with default branch in order to prepare a new release.

APIs/Python3/eric6.api file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython2.py file | annotate | diff | comparison | revisions
Debugger/DebuggerInterfacePython3.py file | annotate | diff | comparison | revisions
Documentation/Help/source.qch file | annotate | diff | comparison | revisions
Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfacePython2.html file | annotate | diff | comparison | revisions
Documentation/Source/eric6.Debugger.DebuggerInterfacePython3.html file | annotate | diff | comparison | revisions
Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheckerDialog.py file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
WebBrowser/data/javascript_rc.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Thu Aug 03 14:50:59 2017 +0200
+++ b/APIs/Python3/eric6.api	Fri Sep 01 12:08:17 2017 +0200
@@ -430,7 +430,7 @@
 eric6.Debugger.DebugServer.DebugServer.passiveDebugStarted?7
 eric6.Debugger.DebugServer.DebugServer.passiveStartUp?4(fn, exc)
 eric6.Debugger.DebugServer.DebugServer.preferencesChanged?4()
-eric6.Debugger.DebugServer.DebugServer.registerDebuggerInterface?4(name, getRegistryData)
+eric6.Debugger.DebugServer.DebugServer.registerDebuggerInterface?4(interfaceName, getRegistryData)
 eric6.Debugger.DebugServer.DebugServer.remoteBanner?4()
 eric6.Debugger.DebugServer.DebugServer.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
 eric6.Debugger.DebugServer.DebugServer.remoteCapabilities?4()
@@ -480,7 +480,7 @@
 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)
-eric6.Debugger.DebugServer.DebugServer.unregisterDebuggerInterface?4(name)
+eric6.Debugger.DebugServer.DebugServer.unregisterDebuggerInterface?4(interfaceName)
 eric6.Debugger.DebugServer.DebugServer.utFinished?7
 eric6.Debugger.DebugServer.DebugServer.utPrepared?7
 eric6.Debugger.DebugServer.DebugServer.utStartTest?7
@@ -583,90 +583,49 @@
 eric6.Debugger.DebuggerInterfaceNone.DebuggerInterfaceNone?1(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.createDebuggerInterfaceNone?4(debugServer, passive)
 eric6.Debugger.DebuggerInterfaceNone.getRegistryData?4()
-eric6.Debugger.DebuggerInterfacePython2.ClientDefaultCapabilities?7
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.flush?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.getClientCapabilities?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.isConnected?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.newConnection?4(sock)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBanner?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpointEnable?4(fn, line, enable)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteBreakpointIgnore?4(fn, line, count)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCapabilities?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientSetFilter?4(scope, filterStr)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientVariable?4(scope, filterList, var, framenr=0)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteClientVariables?4(scope, filterList, framenr=0)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCompletion?4(text)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteContinue?4(special=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteCoverage?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteEnvironment?4(env)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteMoveIP?4(line)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteProfile?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteRawInput?4(s)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteSetThread?4(tid)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStatement?4(stmt)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStep?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepOut?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepOver?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteStepQuit?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteThreadList?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTRun?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteUTStop?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpoint?4(cond, setWatch, temp=False)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpointEnable?4(cond, enable)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.remoteWatchpointIgnore?4(cond, count)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.setCallTraceEnabled?4(on)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.shutdown?4()
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.startRemote?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2.startRemoteForProject?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfacePython2.DebuggerInterfacePython2?1(debugServer, passive)
-eric6.Debugger.DebuggerInterfacePython2.createDebuggerInterfacePython2?4(debugServer, passive)
-eric6.Debugger.DebuggerInterfacePython2.getRegistryData?4()
-eric6.Debugger.DebuggerInterfacePython3.ClientDefaultCapabilities?7
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.flush?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.getClientCapabilities?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.isConnected?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.newConnection?4(sock)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBanner?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpointEnable?4(fn, line, enable)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteBreakpointIgnore?4(fn, line, count)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteCapabilities?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteClientSetFilter?4(scope, filterStr)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteClientVariable?4(scope, filterList, var, framenr=0)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteClientVariables?4(scope, filterList, framenr=0)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteCompletion?4(text)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteContinue?4(special=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteCoverage?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteEnvironment?4(env)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteMoveIP?4(line)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteProfile?4(fn, argv, wd, erase=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRawInput?4(s)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteSetThread?4(tid)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStatement?4(stmt)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStep?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStepOut?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStepOver?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteStepQuit?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteThreadList?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTRun?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteUTStop?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpoint?4(cond, setWatch, temp=False)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointEnable?4(cond, enable)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.remoteWatchpointIgnore?4(cond, count)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.setCallTraceEnabled?4(on)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.shutdown?4()
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemote?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3.startRemoteForProject?4(port, runInConsole)
-eric6.Debugger.DebuggerInterfacePython3.DebuggerInterfacePython3?1(debugServer, passive)
-eric6.Debugger.DebuggerInterfacePython3.createDebuggerInterfacePython3?4(debugServer, passive)
-eric6.Debugger.DebuggerInterfacePython3.getRegistryData?4()
+eric6.Debugger.DebuggerInterfacePython.ClientDefaultCapabilities?7
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.flush?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.getClientCapabilities?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.isConnected?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.newConnection?4(sock)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBanner?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpoint?4(fn, line, setBreakpoint, cond=None, temp=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointEnable?4(fn, line, enable)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteBreakpointIgnore?4(fn, line, count)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCapabilities?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientSetFilter?4(scope, filterStr)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariable?4(scope, filterList, var, framenr=0)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteClientVariables?4(scope, filterList, framenr=0)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCompletion?4(text)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteContinue?4(special=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteCoverage?4(fn, argv, wd, erase=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteEnvironment?4(env)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteLoad?4(fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteMoveIP?4(line)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteProfile?4(fn, argv, wd, erase=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRawInput?4(s)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteRun?4(fn, argv, wd, autoFork=False, forkChild=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteSetThread?4(tid)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStatement?4(stmt)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStep?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOut?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepOver?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteStepQuit?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteThreadList?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTPrepare?4(fn, tn, tfn, failed, cov, covname, coverase)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTRun?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteUTStop?4()
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpoint?4(cond, setWatch, temp=False)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.remoteWatchpointEnable?4(cond, enable)
+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)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython.startRemoteForProject?4(port, runInConsole)
+eric6.Debugger.DebuggerInterfacePython.DebuggerInterfacePython?1(debugServer, passive, pythonVariant)
+eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython2?4(debugServer, passive)
+eric6.Debugger.DebuggerInterfacePython.createDebuggerInterfacePython3?4(debugServer, passive)
+eric6.Debugger.DebuggerInterfacePython.getRegistryData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.getAddData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.getData?4()
 eric6.Debugger.EditBreakpointDialog.EditBreakpointDialog.on_filenamePicker_editTextChanged?4(fn)
@@ -925,7 +884,7 @@
 eric6.E5Gui.E5ErrorMessage.messageHandlerInstalled?4()
 eric6.E5Gui.E5ErrorMessage.qtHandler?4()
 eric6.E5Gui.E5ErrorMessageFilterDialog.E5ErrorMessageFilterDialog.getFilters?4()
-eric6.E5Gui.E5ErrorMessageFilterDialog.E5ErrorMessageFilterDialog?1(messageFilters, parent=None)
+eric6.E5Gui.E5ErrorMessageFilterDialog.E5ErrorMessageFilterDialog?1(messageFilters, defaultFilters, parent=None)
 eric6.E5Gui.E5FileDialog.DontConfirmOverwrite?7
 eric6.E5Gui.E5FileDialog.DontResolveSymlinks?7
 eric6.E5Gui.E5FileDialog.DontUseNativeDialog?7
@@ -1264,8 +1223,10 @@
 eric6.E5Gui.E5SqueezeLabels.E5SqueezeLabelPath?1(parent=None)
 eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.getList?4()
 eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.on_addButton_clicked?4()
+eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setDefaultVisible?4(visible)
 eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setList?4(stringList)
 eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setListWhatsThis?4(txt)
+eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget.setToDefault?7
 eric6.E5Gui.E5StringListEditWidget.E5StringListEditWidget?1(parent=None)
 eric6.E5Gui.E5TabWidget.E5DnDTabBar.dragEnterEvent?4(event)
 eric6.E5Gui.E5TabWidget.E5DnDTabBar.dropEvent?4(event)
@@ -1703,6 +1664,7 @@
 eric6.Globals.settingsNameOrganization?7
 eric6.Globals.settingsNameRecent?7
 eric6.Globals.strGroup?4(txt, sep, groupLen=4)
+eric6.Globals.strToQByteArray?4(txt)
 eric6.Globals.toBool?4(value)
 eric6.Globals.toByteArray?4(value)
 eric6.Globals.toDict?4(value)
@@ -7517,6 +7479,8 @@
 eric6.QScintilla.Exporters.ExporterHTML.ExporterHTML?1(editor, parent=None)
 eric6.QScintilla.Exporters.ExporterHTML.HTMLGenerator.generate?4(tabSize=4, useTabs=False, wysiwyg=True, folding=False, onlyStylesUsed=False, titleFullPath=False)
 eric6.QScintilla.Exporters.ExporterHTML.HTMLGenerator?1(editor)
+eric6.QScintilla.Exporters.ExporterHTML._StrikeThroughExtension.DEL_RE?7
+eric6.QScintilla.Exporters.ExporterHTML._StrikeThroughExtension.extendMarkdown?4(md, md_globals)
 eric6.QScintilla.Exporters.ExporterODT.ExporterODT.exportSource?4()
 eric6.QScintilla.Exporters.ExporterODT.ExporterODT?1(editor, parent=None)
 eric6.QScintilla.Exporters.ExporterPDF.ExporterPDF.exportSource?4()
@@ -8838,7 +8802,7 @@
 eric6.UI.Previewer.Previewer.shutdown?4()
 eric6.UI.Previewer.Previewer?1(viewmanager, splitter, parent=None)
 eric6.UI.Previewers.PreviewerHTML.PreviewProcessingThread.htmlReady?7
-eric6.UI.Previewers.PreviewerHTML.PreviewProcessingThread.process?4(filePath, language, text, ssiEnabled, rootPath, useSphinx)
+eric6.UI.Previewers.PreviewerHTML.PreviewProcessingThread.process?4(filePath, language, text, ssiEnabled, rootPath, useSphinx, convertNewLineToBreak, markdownHtmlFormat, restDocutilsHtmlFormat)
 eric6.UI.Previewers.PreviewerHTML.PreviewProcessingThread.run?4()
 eric6.UI.Previewers.PreviewerHTML.PreviewProcessingThread?1(parent=None)
 eric6.UI.Previewers.PreviewerHTML.PreviewerHTML.on_jsCheckBox_clicked?4(checked)
@@ -8944,7 +8908,7 @@
 eric6.UI.UserInterface.UserInterface.showFindFilesDialog?4(txt="", searchDir="", openFiles=False)
 eric6.UI.UserInterface.UserInterface.showLogViewer?4()
 eric6.UI.UserInterface.UserInterface.showMenu?7
-eric6.UI.UserInterface.UserInterface.showNotification?4(icon, heading, text)
+eric6.UI.UserInterface.UserInterface.showNotification?4(icon, heading, text, timeout=None)
 eric6.UI.UserInterface.UserInterface.showPluginsAvailable?4()
 eric6.UI.UserInterface.UserInterface.showPreferences?4(pageName=None)
 eric6.UI.UserInterface.UserInterface.showReplaceFilesDialog?4(txt="", searchDir="", openFiles=False)
@@ -10589,6 +10553,105 @@
 eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog.on_removeButton_clicked?4()
 eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog.on_unusedAttributesButton_clicked?4()
 eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.QtHelpFiltersDialog?1(engine, parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.ClientId?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.ClientVersion?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.GsbUrlTemplate?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.fairUseDelayExpired?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getFullHashes?4(prefixes, clientState)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getPlatformString?4(platformType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getPlatformTypes?4(platform)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getThreatEntryString?4(threatEntry)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getThreatLists?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getThreatMessage?4(threatType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getThreatType?4(threatType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.getThreatsUpdate?4(clientStates)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.networkError?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient.setApiKey?4(apiKey)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.SafeBrowsingAPIClient?1(apiKey, fairUse=True, parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.HashPrefixList?1(prefixLength, rawHashes)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.addThreatList?4(threatList)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.cleanupFullHashes?4(keepExpiredFor=43200)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.close?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_full_hash_cue_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_full_hash_expires_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_full_hash_value_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_full_hashes_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_hash_prefix_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.create_threat_list_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.deleteHashPrefixList?4(threatList)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.deleteThreatList?4(threatList)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_full_hash_cue_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_full_hash_expires_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_full_hash_value_idx?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_full_hashes_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_hash_prefix_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.drop_threat_list_stmt?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.getHashPrefixValuesToRemove?4(threatList, indexes)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.getThreatLists?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.hashPrefixListChecksum?4(threatList)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.lookupFullHashes?4(hashValues)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.lookupHashPrefix?4(prefixes)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.maxProcessEventsTime?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.populateHashPrefixList?4(threatList, prefixes)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.prepareCacheDb?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.removeHashPrefixIndices?4(threatList, indexes)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.storeFullHash?4(threatList, hashValue, cacheDuration, malwareThreatType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.updateHashPrefixExpiration?4(threatList, hashPrefix, negativeCacheDuration)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache.updateThreatListClientState?4(threatList, clientState)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.SafeBrowsingCache?1(dbPath, parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.ThreatList.asTuple?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.ThreatList.fromApiEntry?4(entry)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.ThreatList?1(threatType, platformType, threatEntryType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.closeEvent?4(evt)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_buttonBox_clicked?4(button)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_clearCacheButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_gsbHelpButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_saveButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_showUpdateTimeButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_updateCacheButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_urlCheckButton_clicked?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.on_urlEdit_textChanged?4(text)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog.show?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.SafeBrowsingDialog?1(manager, parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingHelp?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.SafeBrowsingInfoWidget.showAt?4(pos)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.SafeBrowsingInfoWidget?1(info, parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.clicked?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.getThreatInfo?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.mouseDoubleClickEvent?4(evt)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.mouseReleaseEvent?4(evt)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.nokStyle?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel.setThreatInfo?4(threatType, threatMessages)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.SafeBrowsingLabel?1(parent=None)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.close?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.configurationChanged?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.fairUseDelayExpired?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.fullCacheCleanup?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getIgnoreSchemes?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getPlatformString?4(platformType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getThreatEntryString?4(threatEntry)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getThreatMessage?4(threatType)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getThreatMessages?4(threatLists)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.getThreatType?4(threatList)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.isEnabled?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.isUpdatingThreatLists?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.lookupUrl?4(url)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.progress?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.progressMessage?7
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.showSafeBrowsingDialog?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager.updateHashPrefixCache?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.SafeBrowsingManager?1()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.canonical?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.digest?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.fullUnescape?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.hashes?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.hostPermutations?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.pathPermutations?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.permutations?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl.quote?4()
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.SafeBrowsingUrl?1(url)
+eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.toHex?4(value)
 eric6.WebBrowser.SearchWidget.SearchWidget.findNext?4()
 eric6.WebBrowser.SearchWidget.SearchWidget.findPrevious?4()
 eric6.WebBrowser.SearchWidget.SearchWidget.keyPressEvent?4(event)
@@ -10979,6 +11042,7 @@
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.certificateError?4(error)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.execJavaScript?4(script, worldId=QWebEngineScript.MainWorld, timeout=500)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.execPrintPage?4(printer, timeout=1000)
+eric6.WebBrowser.WebBrowserPage.WebBrowserPage.getSafeBrowsingStatus?4()
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.hitTestContent?4(pos)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.icon?4()
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.isJavaScriptEnabled?4()
@@ -10987,6 +11051,8 @@
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.printCallback?4(resDict=resultDict)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.resultCallback?4(resDict=resultDict)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.runJavaScript?4(script, worldId=-1, callback=None)
+eric6.WebBrowser.WebBrowserPage.WebBrowserPage.safeBrowsingAbort?7
+eric6.WebBrowser.WebBrowserPage.WebBrowserPage.safeBrowsingBad?7
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.scroll?4(x, y)
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.scrollPosition?4()
 eric6.WebBrowser.WebBrowserPage.WebBrowserPage.scrollTo?4(pos)
@@ -11068,6 +11134,7 @@
 eric6.WebBrowser.WebBrowserView.WebBrowserView.forwardAvailable?7
 eric6.WebBrowser.WebBrowserView.WebBrowserView.getPreview?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.getRSS?4()
+eric6.WebBrowser.WebBrowserView.WebBrowserView.getSafeBrowsingStatus?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.getSessionData?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.hasRSS?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.hasSelection?4()
@@ -11090,6 +11157,8 @@
 eric6.WebBrowser.WebBrowserView.WebBrowserView.reload?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.reloadBypassingCache?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.requestFullScreen?4(enable)
+eric6.WebBrowser.WebBrowserView.WebBrowserView.safeBrowsingAbort?7
+eric6.WebBrowser.WebBrowserView.WebBrowserView.safeBrowsingBad?7
 eric6.WebBrowser.WebBrowserView.WebBrowserView.saveAs?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.search?7
 eric6.WebBrowser.WebBrowserView.WebBrowserView.selectAll?4()
@@ -11136,6 +11205,7 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._performingShutdown?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._performingStartup?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._personalInformationManager?8
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._safeBrowsingManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._sessionManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._speedDial?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._syncManager?8
@@ -11169,6 +11239,7 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getQtHelpCollectionFileName?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getSourceFileList?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getWindow?4()
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.globalStatusBar?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.greaseMonkeyManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.helpEngine?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.hideFullScreenNavigation?4()
@@ -11200,6 +11271,7 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.preferencesChanged?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.reloadUserStyleSheet?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.requestVirusTotalScan?4(url)
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.safeBrowsingManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.search?4(word)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.searchEnginesAction?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.sessionManager?4()
@@ -11210,7 +11282,7 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.setLoadingActions?4(b)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.setUseQtHelp?4(use)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.showFullScreenNavigation?4()
-eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.showNotification?4(icon, heading, text)
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.showNotification?4(icon, heading, text, timeout=None)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.shutdown?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.speedDial?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.syncManager?4()
--- a/APIs/Python3/eric6.bas	Thu Aug 03 14:50:59 2017 +0200
+++ b/APIs/Python3/eric6.bas	Fri Sep 01 12:08:17 2017 +0200
@@ -118,8 +118,7 @@
 DebugViewer QWidget
 DebuggerGeneralPage ConfigurationPageBase Ui_DebuggerGeneralPage
 DebuggerInterfaceNone QObject
-DebuggerInterfacePython2 QObject
-DebuggerInterfacePython3 QObject
+DebuggerInterfacePython QObject
 DebuggerPropertiesDialog QDialog Ui_DebuggerPropertiesDialog
 DebuggerPropertiesReader XMLStreamReaderBase
 DebuggerPropertiesWriter XMLStreamWriterBase
@@ -683,6 +682,12 @@
 RemoveBookmarksCommand QUndoCommand
 RestructuredTextProvider MarkupBase
 SafariImporter BookmarksImporter
+SafeBrowsingAPIClient QObject
+SafeBrowsingCache QObject
+SafeBrowsingDialog QDialog Ui_SafeBrowsingDialog
+SafeBrowsingInfoWidget QMenu
+SafeBrowsingLabel QLabel
+SafeBrowsingManager QObject
 SchemeAccessHandler QObject
 SearchReplaceSlidingWidget QWidget
 SearchReplaceWidget QWidget
--- a/Debugger/DebugServer.py	Thu Aug 03 14:50:59 2017 +0200
+++ b/Debugger/DebugServer.py	Fri Sep 01 12:08:17 2017 +0200
@@ -31,8 +31,7 @@
 
 
 DebuggerInterfaces = {
-    "Python2": "DebuggerInterfacePython2",
-    "Python3": "DebuggerInterfacePython3",
+    "Python": "DebuggerInterfacePython",
     "None": "DebuggerInterfaceNone",
 }
 
@@ -163,12 +162,15 @@
         """
         super(DebugServer, self).__init__()
         
+        self.__debuggerInterfaces = {}
+        # the interface name is the key, a function to get the
+        # registration data is the value
         self.__debuggerInterfaceRegistry = {}
         # the client language is the key, a list containing the client
-        # capabilities, the list of associated file extensions, a
+        # capabilities, a list of associated file extensions, a
         # function reference to create the debugger interface (see
-        # __createDebuggerInterface() below) and a function to be called
-        # to get the registration data as values
+        # __createDebuggerInterface() below) and the interface name is
+        # the value
         
         # create our models
         self.breakpointModel = BreakPointModel(self)
@@ -293,20 +295,20 @@
         Public slot to handle the preferencesChanged signal.
         """
         registeredInterfaces = {}
-        for language in self.__debuggerInterfaceRegistry:
-            registeredInterfaces[language] = \
-                self.__debuggerInterfaceRegistry[language][-1]
-            # last entry is the registry data function
+        for interfaceName in self.__debuggerInterfaces:
+            registeredInterfaces[interfaceName] = \
+                self.__debuggerInterfaces[interfaceName]
         
+        self.__debuggerInterfaces = {}
         self.__debuggerInterfaceRegistry = {}
-        for language, getRegistryData in registeredInterfaces.items():
-            self.registerDebuggerInterface(language, getRegistryData)
+        for interfaceName, getRegistryData in registeredInterfaces.items():
+            self.registerDebuggerInterface(interfaceName, getRegistryData)
         
-    def registerDebuggerInterface(self, name, getRegistryData):
+    def registerDebuggerInterface(self, interfaceName, getRegistryData):
         """
         Public method to register a debugger interface.
         
-        @param name name of the debugger interface
+        @param interfaceName name of the debugger interface
         @type str
         @param getRegistryData reference to a function to be called
             to get the debugger interface details. This method shall
@@ -315,7 +317,7 @@
             to create the debugger interface (see __createDebuggerInterface())
         @type function
         """
-        if name in self.__debuggerInterfaceRegistry:
+        if interfaceName in self.__debuggerInterfaces:
             E5MessageBox.warning(
                 None,
                 self.tr("Register Debugger Interface"),
@@ -323,22 +325,31 @@
                         """ been registered. Ignoring this request.</p>"""))
             return
         
-        clientLanguage, clientCapabilities, clientExtensions, \
-            interfaceCreator = getRegistryData()
-        if clientLanguage:
-            self.__debuggerInterfaceRegistry[clientLanguage] = \
-                [clientCapabilities, clientExtensions, interfaceCreator,
-                 getRegistryData]
+        registryDataList = getRegistryData()
+        if registryDataList:
+            self.__debuggerInterfaces[interfaceName] = getRegistryData
+            for clientLanguage, clientCapabilities, clientExtensions, \
+                    interfaceCreator in registryDataList:
+                self.__debuggerInterfaceRegistry[clientLanguage] = [
+                    clientCapabilities, clientExtensions, interfaceCreator,
+                    interfaceName]
         
-    def unregisterDebuggerInterface(self, name):
+    def unregisterDebuggerInterface(self, interfaceName):
         """
         Public method to unregister a debugger interface.
         
-        @param name name of the debugger interface
+        @param interfaceName interfaceName of the debugger interface
         @type str
         """
-        if name in self.__debuggerInterfaceRegistry:
-            del self.__debuggerInterfaceRegistry[name]
+        if interfaceName in self.__debuggerInterfaces:
+            clientLanguages = []
+            for clientLanguage, registryData in \
+                    self.__debuggerInterfaceRegistry.items():
+                if interfaceName == registryData[-1]:
+                    clientLanguages.append(clientLanguage)
+            for clientLanguage in clientLanguages:
+                del self.__debuggerInterfaceRegistry[clientLanguage]
+            del self.__debuggerInterfaces[interfaceName]
         
     def __findLanguageForExtension(self, ext):
         """
--- a/Debugger/DebuggerInterfaceNone.py	Thu Aug 03 14:50:59 2017 +0200
+++ b/Debugger/DebuggerInterfaceNone.py	Fri Sep 01 12:08:17 2017 +0200
@@ -409,18 +409,19 @@
     @param passive flag indicating passive connection mode
     @type bool
     @return instantiated debugger interface
-    @rtype DebuggerInterfacePython
+    @rtype DebuggerInterfaceNone
     """
     return DebuggerInterfaceNone(debugServer, passive)
 
 
 def getRegistryData():
     """
-    Module functionto get characterizing data for the debugger interface.
+    Module function to get characterizing data for the debugger interface.
     
-    @return tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
-    @rtype tuple of (str, int, list of str, function)
+    @return list of tuples containing the client type, the client capabilities,
+        the client file type associations and a reference to the creation
+        function
+    @rtype list of tuple of (str, int, list of str, function)
     """
-    return ["None", ClientDefaultCapabilities, ClientTypeAssociations,
-            createDebuggerInterfaceNone]
+    return [("None", ClientDefaultCapabilities, ClientTypeAssociations,
+            createDebuggerInterfaceNone)]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Debugger/DebuggerInterfacePython.py	Fri Sep 01 12:08:17 2017 +0200
@@ -0,0 +1,1156 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2009 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Python3 debugger interface for the debug server.
+"""
+
+from __future__ import unicode_literals
+
+import sys
+import os
+
+from PyQt5.QtCore import QObject, QTextCodec, QProcess, QProcessEnvironment, \
+    QTimer
+from PyQt5.QtWidgets import QInputDialog
+
+from E5Gui.E5Application import e5App
+from E5Gui import E5MessageBox
+
+from . import DebugClientCapabilities
+
+import Preferences
+import Utilities
+
+from eric6config import getConfig
+
+
+ClientDefaultCapabilities = DebugClientCapabilities.HasAll
+
+
+class DebuggerInterfacePython(QObject):
+    """
+    Class implementing the debugger interface for the debug server for Python 2
+    and Python 3.
+    """
+    def __init__(self, debugServer, passive, pythonVariant):
+        """
+        Constructor
+        
+        @param debugServer reference to the debug server
+        @type DebugServer
+        @param passive flag indicating passive connection mode
+        @type bool
+        @param pythonVariant Python variant to instantiate for
+        @type str (one of Python2 or Python3)
+        """
+        super(DebuggerInterfacePython, self).__init__()
+        
+        self.__isNetworked = True
+        self.__autoContinue = False
+        
+        self.debugServer = debugServer
+        self.passive = passive
+        self.process = None
+        self.__variant = pythonVariant
+        
+        self.qsock = None
+        self.queue = []
+        
+        # set default values for capabilities of clients
+        self.clientCapabilities = ClientDefaultCapabilities
+        
+        # set translation function
+        self.translate = self.__identityTranslation
+        
+        self.codec = QTextCodec.codecForName(
+            str(Preferences.getSystem("StringEncoding")))
+        
+        if passive:
+            # set translation function
+            if Preferences.getDebugger("PathTranslation"):
+                self.translateRemote = \
+                    Preferences.getDebugger("PathTranslationRemote")
+                self.translateLocal = \
+                    Preferences.getDebugger("PathTranslationLocal")
+                self.translate = self.__remoteTranslation
+            else:
+                self.translate = self.__identityTranslation
+        
+        # attribute to remember the name of the executed script
+        self.__scriptName = ""
+
+    def __identityTranslation(self, fn, remote2local=True):
+        """
+        Private method to perform the identity path translation.
+        
+        @param fn filename to be translated (string)
+        @param remote2local flag indicating the direction of translation
+            (False = local to remote, True = remote to local [default])
+        @return translated filename (string)
+        """
+        return fn
+        
+    def __remoteTranslation(self, fn, remote2local=True):
+        """
+        Private method to perform the path translation.
+        
+        @param fn filename to be translated (string)
+        @param remote2local flag indicating the direction of translation
+            (False = local to remote, True = remote to local [default])
+        @return translated filename (string)
+        """
+        if remote2local:
+            return fn.replace(self.translateRemote, self.translateLocal)
+        else:
+            return fn.replace(self.translateLocal, self.translateRemote)
+        
+    def __startProcess(self, program, arguments, environment=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 environment dictionary of environment settings to pass
+            (dict of string)
+        @return the process object (QProcess) or None
+        """
+        proc = QProcess()
+        if environment is not None:
+            env = QProcessEnvironment()
+            for key, value in list(environment.items()):
+                env.insert(key, value)
+            proc.setProcessEnvironment(env)
+        args = []
+        for arg in arguments:
+            args.append(arg)
+        proc.start(program, args)
+        if not proc.waitForStarted(10000):
+            proc = None
+        
+        return proc
+        
+    def startRemote(self, port, runInConsole):
+        """
+        Public method to start a remote Python interpreter.
+        
+        @param port portnumber the debug server is listening on (integer)
+        @param runInConsole flag indicating to start the debugger in a
+            console window (boolean)
+        @return client process object (QProcess), a flag to indicate
+            a network connection (boolean) and the name of the interpreter
+            in case of a local execution (string)
+        """
+        if self.__variant == "Python2":
+            interpreter = Preferences.getDebugger("PythonInterpreter")
+        else:
+            interpreter = Preferences.getDebugger("Python3Interpreter")
+        if interpreter == "":
+            E5MessageBox.critical(
+                None,
+                self.tr("Start Debugger"),
+                self.tr(
+                    """<p>No {0} interpreter configured.</p>""")
+                .format(self.__variant))
+            return None, False, ""
+        
+        if self.__variant == "Python2":
+            debugClientType = Preferences.getDebugger("DebugClientType")
+        else:
+            debugClientType = Preferences.getDebugger("DebugClientType3")
+        if debugClientType == "standard":
+            debugClient = os.path.join(getConfig('ericDir'),
+                                       "DebugClients", "Python",
+                                       "DebugClient.py")
+        else:
+            if self.__variant == "Python2":
+                debugClient = Preferences.getDebugger("DebugClient")
+            else:
+                debugClient = Preferences.getDebugger("DebugClient3")
+            if debugClient == "":
+                debugClient = os.path.join(sys.path[0],
+                                           "DebugClients", "Python",
+                                           "DebugClient.py")
+        
+        if self.__variant == "Python2":
+            redirect = str(Preferences.getDebugger("PythonRedirect"))
+            noencoding = Preferences.getDebugger("PythonNoEncoding") and \
+                '--no-encoding' or ''
+        else:
+            redirect = str(Preferences.getDebugger("Python3Redirect"))
+            noencoding = Preferences.getDebugger("Python3NoEncoding") and \
+                '--no-encoding' or ''
+        
+        if Preferences.getDebugger("RemoteDbgEnabled"):
+            ipaddr = self.debugServer.getHostAddress(False)
+            rexec = Preferences.getDebugger("RemoteExecution")
+            rhost = Preferences.getDebugger("RemoteHost")
+            if rhost == "":
+                rhost = "localhost"
+            if rexec:
+                args = Utilities.parseOptionString(rexec) + \
+                    [rhost, interpreter, debugClient,
+                        noencoding, str(port), redirect, ipaddr]
+                args[0] = Utilities.getExecutablePath(args[0])
+                process = self.__startProcess(args[0], args[1:])
+                if process is None:
+                    E5MessageBox.critical(
+                        None,
+                        self.tr("Start Debugger"),
+                        self.tr(
+                            """<p>The debugger backend could not be"""
+                            """ started.</p>"""))
+                
+                # set translation function
+                if Preferences.getDebugger("PathTranslation"):
+                    self.translateRemote = \
+                        Preferences.getDebugger("PathTranslationRemote")
+                    self.translateLocal = \
+                        Preferences.getDebugger("PathTranslationLocal")
+                    self.translate = self.__remoteTranslation
+                else:
+                    self.translate = self.__identityTranslation
+                return process, self.__isNetworked, ""
+        
+        # set translation function
+        self.translate = self.__identityTranslation
+        
+        # setup the environment for the debugger
+        if Preferences.getDebugger("DebugEnvironmentReplace"):
+            clientEnv = {}
+        else:
+            clientEnv = os.environ.copy()
+        envlist = Utilities.parseEnvironmentString(
+            Preferences.getDebugger("DebugEnvironment"))
+        for el in envlist:
+            try:
+                key, value = el.split('=', 1)
+                if value.startswith('"') or value.startswith("'"):
+                    value = value[1:-1]
+                clientEnv[str(key)] = str(value)
+            except ValueError:
+                pass
+        
+        ipaddr = self.debugServer.getHostAddress(True)
+        if runInConsole or Preferences.getDebugger("ConsoleDbgEnabled"):
+            ccmd = Preferences.getDebugger("ConsoleDbgCommand")
+            if ccmd:
+                args = Utilities.parseOptionString(ccmd) + \
+                    [interpreter, os.path.abspath(debugClient),
+                        noencoding, str(port), '0', ipaddr]
+                args[0] = Utilities.getExecutablePath(args[0])
+                process = self.__startProcess(args[0], args[1:], clientEnv)
+                if process is None:
+                    E5MessageBox.critical(
+                        None,
+                        self.tr("Start Debugger"),
+                        self.tr(
+                            """<p>The debugger backend could not be"""
+                            """ started.</p>"""))
+                return process, self.__isNetworked, interpreter
+        
+        process = self.__startProcess(
+            interpreter,
+            [debugClient, noencoding, str(port), redirect, ipaddr],
+            clientEnv)
+        if process is None:
+            E5MessageBox.critical(
+                None,
+                self.tr("Start Debugger"),
+                self.tr(
+                    """<p>The debugger backend could not be started.</p>"""))
+        return process, self.__isNetworked, interpreter
+
+    def startRemoteForProject(self, port, runInConsole):
+        """
+        Public method to start a remote Python interpreter for a project.
+        
+        @param port portnumber the debug server is listening on (integer)
+        @param runInConsole flag indicating to start the debugger in a
+            console window (boolean)
+        @return client process object (QProcess), a flag to indicate
+            a network connection (boolean) and the name of the interpreter
+            in case of a local execution (string)
+        """
+        project = e5App().getObject("Project")
+        if not project.isDebugPropertiesLoaded():
+            return None, self.__isNetworked, ""
+        
+        # start debugger with project specific settings
+        interpreter = project.getDebugProperty("INTERPRETER")
+        debugClient = project.getDebugProperty("DEBUGCLIENT")
+        
+        redirect = str(project.getDebugProperty("REDIRECT"))
+        noencoding = \
+            project.getDebugProperty("NOENCODING") and '--no-encoding' or ''
+        
+        if project.getDebugProperty("REMOTEDEBUGGER"):
+            ipaddr = self.debugServer.getHostAddress(False)
+            rexec = project.getDebugProperty("REMOTECOMMAND")
+            rhost = project.getDebugProperty("REMOTEHOST")
+            if rhost == "":
+                rhost = "localhost"
+            if rexec:
+                args = Utilities.parseOptionString(rexec) + \
+                    [rhost, interpreter, os.path.abspath(debugClient),
+                        noencoding, str(port), redirect, ipaddr]
+                args[0] = Utilities.getExecutablePath(args[0])
+                process = self.__startProcess(args[0], args[1:])
+                if process is None:
+                    E5MessageBox.critical(
+                        None,
+                        self.tr("Start Debugger"),
+                        self.tr(
+                            """<p>The debugger backend could not be"""
+                            """ started.</p>"""))
+                # set translation function
+                if project.getDebugProperty("PATHTRANSLATION"):
+                    self.translateRemote = \
+                        project.getDebugProperty("REMOTEPATH")
+                    self.translateLocal = \
+                        project.getDebugProperty("LOCALPATH")
+                    self.translate = self.__remoteTranslation
+                else:
+                    self.translate = self.__identityTranslation
+                return process, self.__isNetworked, ""
+        
+        # set translation function
+        self.translate = self.__identityTranslation
+        
+        # setup the environment for the debugger
+        if project.getDebugProperty("ENVIRONMENTOVERRIDE"):
+            clientEnv = {}
+        else:
+            clientEnv = os.environ.copy()
+        envlist = Utilities.parseEnvironmentString(
+            project.getDebugProperty("ENVIRONMENTSTRING"))
+        for el in envlist:
+            try:
+                key, value = el.split('=', 1)
+                if value.startswith('"') or value.startswith("'"):
+                    value = value[1:-1]
+                clientEnv[str(key)] = str(value)
+            except ValueError:
+                pass
+        
+        ipaddr = self.debugServer.getHostAddress(True)
+        if runInConsole or project.getDebugProperty("CONSOLEDEBUGGER"):
+            ccmd = project.getDebugProperty("CONSOLECOMMAND") or \
+                Preferences.getDebugger("ConsoleDbgCommand")
+            if ccmd:
+                args = Utilities.parseOptionString(ccmd) + \
+                    [interpreter, os.path.abspath(debugClient),
+                        noencoding, str(port), '0', ipaddr]
+                args[0] = Utilities.getExecutablePath(args[0])
+                process = self.__startProcess(args[0], args[1:], clientEnv)
+                if process is None:
+                    E5MessageBox.critical(
+                        None,
+                        self.tr("Start Debugger"),
+                        self.tr(
+                            """<p>The debugger backend could not be"""
+                            """ started.</p>"""))
+                return process, self.__isNetworked, interpreter
+        
+        process = self.__startProcess(
+            interpreter,
+            [debugClient, noencoding, str(port), redirect, ipaddr],
+            clientEnv)
+        if process is None:
+            E5MessageBox.critical(
+                None,
+                self.tr("Start Debugger"),
+                self.tr(
+                    """<p>The debugger backend could not be started.</p>"""))
+        return process, self.__isNetworked, interpreter
+
+    def getClientCapabilities(self):
+        """
+        Public method to retrieve the debug clients capabilities.
+        
+        @return debug client capabilities (integer)
+        """
+        return self.clientCapabilities
+    
+    def newConnection(self, sock):
+        """
+        Public slot to handle a new connection.
+        
+        @param sock reference to the socket object (QTcpSocket)
+        @return flag indicating success (boolean)
+        """
+        # If we already have a connection, refuse this one.  It will be closed
+        # automatically.
+        if self.qsock is not None:
+            return False
+        
+        sock.disconnected.connect(self.debugServer.startClient)
+        sock.readyRead.connect(self.__parseClientLine)
+        
+        self.qsock = sock
+        
+        # Get the remote clients capabilities
+        self.remoteCapabilities()
+        return True
+    
+    def flush(self):
+        """
+        Public slot to flush the queue.
+        """
+        # Send commands that were waiting for the connection.
+        for cmd in self.queue:
+            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
+        
+        self.queue = []
+    
+    def shutdown(self):
+        """
+        Public method to cleanly shut down.
+        
+        It closes our socket and shuts down
+        the debug client. (Needed on Win OS)
+        """
+        if self.qsock is None:
+            return
+        
+        # do not want any slots called during shutdown
+        self.qsock.disconnected.disconnect(self.debugServer.startClient)
+        self.qsock.readyRead.disconnect(self.__parseClientLine)
+        
+        # close down socket, and shut down client as well.
+        self.__sendJsonCommand("RequestShutdown", {})
+        self.qsock.flush()
+        self.qsock.close()
+        
+        # reinitialize
+        self.qsock = None
+        self.queue = []
+    
+    def isConnected(self):
+        """
+        Public method to test, if a debug client has connected.
+        
+        @return flag indicating the connection status (boolean)
+        """
+        return self.qsock is not None
+    
+    def remoteEnvironment(self, env):
+        """
+        Public method to set the environment for a program to debug, run, ...
+        
+        @param env environment settings (dictionary)
+        """
+        self.__sendJsonCommand("RequestEnvironment", {"environment": env})
+    
+    def remoteLoad(self, fn, argv, wd, traceInterpreter=False,
+                   autoContinue=True, autoFork=False, forkChild=False):
+        """
+        Public method to load a new program to debug.
+        
+        @param fn the filename to debug (string)
+        @param argv the commandline arguments to pass to the program (string)
+        @param wd the working directory for the program (string)
+        @keyparam traceInterpreter flag indicating if the interpreter library
+            should be traced as well (boolean)
+        @keyparam autoContinue flag indicating, that the debugger should not
+            stop at the first executable line (boolean)
+        @keyparam autoFork flag indicating the automatic fork mode (boolean)
+        @keyparam forkChild flag indicating to debug the child after forking
+            (boolean)
+        """
+        self.__autoContinue = autoContinue
+        self.__scriptName = os.path.abspath(fn)
+        
+        wd = self.translate(wd, False)
+        fn = self.translate(os.path.abspath(fn), False)
+        self.__sendJsonCommand("RequestLoad", {
+            "workdir": wd,
+            "filename": fn,
+            "argv": Utilities.parseOptionString(argv),
+            "traceInterpreter": traceInterpreter,
+            "autofork": autoFork,
+            "forkChild": forkChild,
+        })
+    
+    def remoteRun(self, fn, argv, wd, autoFork=False, forkChild=False):
+        """
+        Public method to load a new program to run.
+        
+        @param fn the filename to run (string)
+        @param argv the commandline arguments to pass to the program (string)
+        @param wd the working directory for the program (string)
+        @keyparam autoFork flag indicating the automatic fork mode (boolean)
+        @keyparam forkChild flag indicating to debug the child after forking
+            (boolean)
+        """
+        self.__scriptName = os.path.abspath(fn)
+        
+        wd = self.translate(wd, False)
+        fn = self.translate(os.path.abspath(fn), False)
+        self.__sendJsonCommand("RequestRun", {
+            "workdir": wd,
+            "filename": fn,
+            "argv": Utilities.parseOptionString(argv),
+            "autofork": autoFork,
+            "forkChild": forkChild,
+        })
+    
+    def remoteCoverage(self, fn, argv, wd, erase=False):
+        """
+        Public method to load a new program to collect coverage data.
+        
+        @param fn the filename to run (string)
+        @param argv the commandline arguments to pass to the program (string)
+        @param wd the working directory for the program (string)
+        @keyparam erase flag indicating that coverage info should be
+            cleared first (boolean)
+        """
+        self.__scriptName = os.path.abspath(fn)
+        
+        wd = self.translate(wd, False)
+        fn = self.translate(os.path.abspath(fn), False)
+        self.__sendJsonCommand("RequestCoverage", {
+            "workdir": wd,
+            "filename": fn,
+            "argv": Utilities.parseOptionString(argv),
+            "erase": erase,
+        })
+
+    def remoteProfile(self, fn, argv, wd, erase=False):
+        """
+        Public method to load a new program to collect profiling data.
+        
+        @param fn the filename to run (string)
+        @param argv the commandline arguments to pass to the program (string)
+        @param wd the working directory for the program (string)
+        @keyparam erase flag indicating that timing info should be cleared
+            first (boolean)
+        """
+        self.__scriptName = os.path.abspath(fn)
+        
+        wd = self.translate(wd, False)
+        fn = self.translate(os.path.abspath(fn), False)
+        self.__sendJsonCommand("RequestProfile", {
+            "workdir": wd,
+            "filename": fn,
+            "argv": Utilities.parseOptionString(argv),
+            "erase": erase,
+        })
+
+    def remoteStatement(self, stmt):
+        """
+        Public method to execute a Python statement.
+        
+        @param stmt the Python statement to execute (string). It
+              should not have a trailing newline.
+        """
+        self.__sendJsonCommand("ExecuteStatement", {
+            "statement": stmt,
+        })
+
+    def remoteStep(self):
+        """
+        Public method to single step the debugged program.
+        """
+        self.__sendJsonCommand("RequestStep", {})
+
+    def remoteStepOver(self):
+        """
+        Public method to step over the debugged program.
+        """
+        self.__sendJsonCommand("RequestStepOver", {})
+
+    def remoteStepOut(self):
+        """
+        Public method to step out the debugged program.
+        """
+        self.__sendJsonCommand("RequestStepOut", {})
+
+    def remoteStepQuit(self):
+        """
+        Public method to stop the debugged program.
+        """
+        self.__sendJsonCommand("RequestStepQuit", {})
+
+    def remoteContinue(self, special=False):
+        """
+        Public method to continue the debugged program.
+        
+        @param special flag indicating a special continue operation
+        """
+        self.__sendJsonCommand("RequestContinue", {
+            "special": special,
+        })
+
+    def remoteMoveIP(self, line):
+        """
+        Public method to move the instruction pointer to a different line.
+        
+        @param line the new line, where execution should be continued
+        """
+        self.__sendJsonCommand("RequestMoveIP", {
+            "newLine": line,
+        })
+
+    def remoteBreakpoint(self, fn, line, setBreakpoint, cond=None, temp=False):
+        """
+        Public method to set or clear a breakpoint.
+        
+        @param fn filename the breakpoint belongs to (string)
+        @param line linenumber of the breakpoint (int)
+        @param setBreakpoint flag indicating setting or resetting a
+            breakpoint (boolean)
+        @param cond condition of the breakpoint (string)
+        @param temp flag indicating a temporary breakpoint (boolean)
+        """
+        self.__sendJsonCommand("RequestBreakpoint", {
+            "filename": self.translate(fn, False),
+            "line": line,
+            "temporary": temp,
+            "setBreakpoint": setBreakpoint,
+            "condition": cond,
+        })
+    
+    def remoteBreakpointEnable(self, fn, line, enable):
+        """
+        Public method to enable or disable a breakpoint.
+        
+        @param fn filename the breakpoint belongs to (string)
+        @param line linenumber of the breakpoint (int)
+        @param enable flag indicating enabling or disabling a breakpoint
+            (boolean)
+        """
+        self.__sendJsonCommand("RequestBreakpointEnable", {
+            "filename": self.translate(fn, False),
+            "line": line,
+            "enable": enable,
+        })
+    
+    def remoteBreakpointIgnore(self, fn, line, count):
+        """
+        Public method to ignore a breakpoint the next couple of occurrences.
+        
+        @param fn filename the breakpoint belongs to (string)
+        @param line linenumber of the breakpoint (int)
+        @param count number of occurrences to ignore (int)
+        """
+        self.__sendJsonCommand("RequestBreakpointIgnore", {
+            "filename": self.translate(fn, False),
+            "line": line,
+            "count": count,
+        })
+    
+    def remoteWatchpoint(self, cond, setWatch, temp=False):
+        """
+        Public method to set or clear a watch expression.
+        
+        @param cond expression of the watch expression (string)
+        @param setWatch flag indicating setting or resetting a watch expression
+            (boolean)
+        @param temp flag indicating a temporary watch expression (boolean)
+        """
+        # cond is combination of cond and special (s. watch expression viewer)
+        self.__sendJsonCommand("RequestWatch", {
+            "temporary": temp,
+            "setWatch": setWatch,
+            "condition": cond,
+        })
+    
+    def remoteWatchpointEnable(self, cond, enable):
+        """
+        Public method to enable or disable a watch expression.
+        
+        @param cond expression of the watch expression (string)
+        @param enable flag indicating enabling or disabling a watch expression
+            (boolean)
+        """
+        # cond is combination of cond and special (s. watch expression viewer)
+        self.__sendJsonCommand("RequestWatchEnable", {
+            "condition": cond,
+            "enable": enable,
+        })
+    
+    def remoteWatchpointIgnore(self, cond, count):
+        """
+        Public method to ignore a watch expression the next couple of
+        occurrences.
+        
+        @param cond expression of the watch expression (string)
+        @param count number of occurrences to ignore (int)
+        """
+        # cond is combination of cond and special (s. watch expression viewer)
+        self.__sendJsonCommand("RequestWatchIgnore", {
+            "condition": cond,
+            "count": count,
+        })
+    
+    def remoteRawInput(self, s):
+        """
+        Public method to send the raw input to the debugged program.
+        
+        @param s the raw input (string)
+        """
+        self.__sendJsonCommand("RawInput", {
+            "input": s,
+        })
+    
+    def remoteThreadList(self):
+        """
+        Public method to request the list of threads from the client.
+        """
+        self.__sendJsonCommand("RequestThreadList", {})
+        
+    def remoteSetThread(self, tid):
+        """
+        Public method to request to set the given thread as current thread.
+        
+        @param tid id of the thread (integer)
+        """
+        self.__sendJsonCommand("RequestThreadSet", {
+            "threadID": tid,
+        })
+        
+    def remoteClientVariables(self, scope, filterList, framenr=0):
+        """
+        Public method to request the variables of the debugged program.
+        
+        @param scope the scope of the variables (0 = local, 1 = global)
+        @param filterList list of variable types to filter out (list of int)
+        @param framenr framenumber of the variables to retrieve (int)
+        """
+        self.__sendJsonCommand("RequestVariables", {
+            "frameNumber": framenr,
+            "scope": scope,
+            "filters": filterList,
+        })
+    
+    def remoteClientVariable(self, scope, filterList, var, framenr=0):
+        """
+        Public method to request the variables of the debugged program.
+        
+        @param scope the scope of the variables (0 = local, 1 = global)
+        @param filterList list of variable types to filter out (list of int)
+        @param var list encoded name of variable to retrieve (string)
+        @param framenr framenumber of the variables to retrieve (int)
+        """
+        self.__sendJsonCommand("RequestVariable", {
+            "variable": var,
+            "frameNumber": framenr,
+            "scope": scope,
+            "filters": filterList,
+        })
+    
+    def remoteClientSetFilter(self, scope, filterStr):
+        """
+        Public method to set a variables filter list.
+        
+        @param scope the scope of the variables (0 = local, 1 = global)
+        @param filterStr regexp string for variable names to filter out
+            (string)
+        """
+        self.__sendJsonCommand("RequestSetFilter", {
+            "scope": scope,
+            "filter": filterStr,
+        })
+    
+    def setCallTraceEnabled(self, on):
+        """
+        Public method to set the call trace state.
+        
+        @param on flag indicating to enable the call trace function (boolean)
+        """
+        self.__sendJsonCommand("RequestCallTrace", {
+            "enable": on,
+        })
+    
+    def remoteBanner(self):
+        """
+        Public slot to get the banner info of the remote client.
+        """
+        self.__sendJsonCommand("RequestBanner", {})
+    
+    def remoteCapabilities(self):
+        """
+        Public slot to get the debug clients capabilities.
+        """
+        self.__sendJsonCommand("RequestCapabilities", {})
+    
+    def remoteCompletion(self, text):
+        """
+        Public slot to get the a list of possible commandline completions
+        from the remote client.
+        
+        @param text the text to be completed (string)
+        """
+        self.__sendJsonCommand("RequestCompletion", {
+            "text": text,
+        })
+    
+    def remoteUTPrepare(self, fn, tn, tfn, failed, cov, covname, coverase):
+        """
+        Public method to prepare a new unittest run.
+        
+        @param fn the filename to load (string)
+        @param tn the testname to load (string)
+        @param tfn the test function name to load tests from (string)
+        @param failed list of failed test, if only failed test should be run
+            (list of strings)
+        @param cov flag indicating collection of coverage data is requested
+            (boolean)
+        @param covname filename to be used to assemble the coverage caches
+            filename (string)
+        @param coverase flag indicating erasure of coverage data is requested
+            (boolean)
+        """
+        self.__scriptName = os.path.abspath(fn)
+        
+        fn = self.translate(os.path.abspath(fn), False)
+        self.__sendJsonCommand("RequestUTPrepare", {
+            "filename": fn,
+            "testname": tn,
+            "testfunctionname": tfn,
+            "failed": failed,
+            "coverage": cov,
+            "coveragefile": covname,
+            "coverageerase": coverase,
+        })
+    
+    def remoteUTRun(self):
+        """
+        Public method to start a unittest run.
+        """
+        self.__sendJsonCommand("RequestUTRun", {})
+    
+    def remoteUTStop(self):
+        """
+        Public method to stop a unittest run.
+        """
+        self.__sendJsonCommand("RequestUTStop", {})
+    
+    def __askForkTo(self):
+        """
+        Private method to ask the user which branch of a fork to follow.
+        """
+        selections = [self.tr("Parent Process"),
+                      self.tr("Child process")]
+        res, ok = QInputDialog.getItem(
+            None,
+            self.tr("Client forking"),
+            self.tr("Select the fork branch to follow."),
+            selections,
+            0, False)
+        if not ok or res == selections[0]:
+            self.__sendJsonCommand("ResponseForkTo", {
+                "target": "parent",
+            })
+        else:
+            self.__sendJsonCommand("ResponseForkTo", {
+                "target": "child",
+            })
+    
+    def __parseClientLine(self):
+        """
+        Private method to handle data from the client.
+        """
+        while self.qsock and self.qsock.canReadLine():
+            qs = self.qsock.readLine()
+            if self.codec is not None:
+                line = self.codec.toUnicode(qs)
+            else:
+                line = bytes(qs).decode()
+            
+##            print("Server: ", line)          ##debug
+            
+            self.__handleJsonCommand(line)
+            continue
+    
+    def __handleJsonCommand(self, jsonStr):
+        """
+        Private method to handle a command or response serialized as a
+        JSON string.
+        
+        @param jsonStr string containing the command or response received
+            from the debug backend
+        @type str
+        """
+        import json
+        
+        try:
+            commandDict = json.loads(jsonStr.strip())
+        except (TypeError, ValueError) as err:
+            E5MessageBox.critical(
+                None,
+                self.tr("Debug Protocol Error"),
+                self.tr("""<p>The response received from the debugger"""
+                        """ backend could not be decoded. Please report"""
+                        """ this issue with the received data to the"""
+                        """ eric bugs email address.</p>"""
+                        """<p>Error: {0}</p>"""
+                        """<p>Data:<br/>{0}</p>""").format(
+                    str(err), Utilities.html_encode(jsonStr.strip())),
+                E5MessageBox.StandardButtons(
+                    E5MessageBox.Ok))
+            return
+        
+        method = commandDict["method"]
+        params = commandDict["params"]
+        
+        if method == "ClientOutput":
+            self.debugServer.signalClientOutput(params["text"])
+        
+        elif method in ["ResponseLine", "ResponseStack"]:
+            # Check if obsolet thread was clicked
+            if params["stack"] == []:
+                # Request updated list
+                self.remoteThreadList()
+                return
+            for s in params["stack"]:
+                s[0] = self.translate(s[0], True)
+            cf = params["stack"][0]
+            if self.__autoContinue:
+                self.__autoContinue = False
+                QTimer.singleShot(0, self.remoteContinue)
+            else:
+                self.debugServer.signalClientLine(
+                    cf[0], int(cf[1]),
+                    method == "ResponseStack")
+                self.debugServer.signalClientStack(params["stack"])
+        
+        elif method == "CallTrace":
+            isCall = params["event"].lower() == "c"
+            fromInfo = params["from"]
+            toInfo = params["to"]
+            self.debugServer.signalClientCallTrace(
+                isCall,
+                fromInfo["filename"], str(fromInfo["linenumber"]),
+                fromInfo["codename"],
+                toInfo["filename"], str(toInfo["linenumber"]),
+                toInfo["codename"])
+        
+        elif method == "ResponseVariables":
+            self.debugServer.signalClientVariables(
+                params["scope"], params["variables"])
+        
+        elif method == "ResponseVariable":
+            self.debugServer.signalClientVariable(
+                params["scope"], [params["variable"]] + params["variables"])
+        
+        elif method == "ResponseThreadList":
+            self.debugServer.signalClientThreadList(
+                params["currentID"], params["threadList"])
+        
+        elif method == "ResponseThreadSet":
+            self.debugServer.signalClientThreadSet()
+        
+        elif method == "ResponseCapabilities":
+            self.clientCapabilities = params["capabilities"]
+            self.debugServer.signalClientCapabilities(
+                params["capabilities"], params["clientType"])
+        
+        elif method == "ResponseBanner":
+            self.debugServer.signalClientBanner(
+                params["version"],
+                params["platform"],
+                params["dbgclient"])
+        
+        elif method == "ResponseOK":
+            self.debugServer.signalClientStatement(False)
+        
+        elif method == "ResponseContinue":
+            self.debugServer.signalClientStatement(True)
+        
+        elif method == "RequestRaw":
+            self.debugServer.signalClientRawInput(
+                params["prompt"], params["echo"])
+        
+        elif method == "ResponseBPConditionError":
+            fn = self.translate(params["filename"], True)
+            self.debugServer.signalClientBreakConditionError(
+                fn, params["line"])
+        
+        elif method == "ResponseClearBreakpoint":
+            fn = self.translate(params["filename"], True)
+            self.debugServer.signalClientClearBreak(fn, params["line"])
+        
+        elif method == "ResponseWatchConditionError":
+            self.debugServer.signalClientWatchConditionError(
+                params["condition"])
+        
+        elif method == "ResponseClearWatch":
+            self.debugServer.signalClientClearWatch(params["condition"])
+        
+        elif method == "ResponseException":
+            if params:
+                exctype = params["type"]
+                excmessage = params["message"]
+                stack = params["stack"]
+                if stack:
+                    for stackEntry in stack:
+                        stackEntry[0] = self.translate(stackEntry[0], True)
+                    if stack[0] and stack[0][0] == "<string>":
+                        for stackEntry in stack:
+                            if stackEntry[0] == "<string>":
+                                stackEntry[0] = self.__scriptName
+                            else:
+                                break
+            else:
+                exctype = ''
+                excmessage = ''
+                stack = []
+            
+            self.debugServer.signalClientException(
+                exctype, excmessage, stack)
+        
+        elif method == "ResponseSyntax":
+            self.debugServer.signalClientSyntaxError(
+                params["message"], self.translate(params["filename"], True),
+                params["linenumber"], params["characternumber"])
+        
+        elif method == "ResponseSignal":
+            self.debugServer.signalClientSignal(
+                params["message"], self.translate(params["filename"], True),
+                params["linenumber"], params["function"], params["arguments"])
+        
+        elif method == "ResponseExit":
+            self.__scriptName = ""
+            self.debugServer.signalClientExit(
+                params["status"], params["message"])
+        
+        elif method == "PassiveStartup":
+            self.debugServer.passiveStartUp(
+                self.translate(params["filename"], True), params["exceptions"])
+        
+        elif method == "ResponseCompletion":
+            self.debugServer.signalClientCompletionList(
+                params["completions"], params["text"])
+        
+        elif method == "ResponseUTPrepared":
+            self.debugServer.clientUtPrepared(
+                params["count"], params["exception"], params["message"])
+        
+        elif method == "ResponseUTFinished":
+            self.debugServer.clientUtFinished()
+        
+        elif method == "ResponseUTStartTest":
+            self.debugServer.clientUtStartTest(
+                params["testname"], params["description"])
+        
+        elif method == "ResponseUTStopTest":
+            self.debugServer.clientUtStopTest()
+        
+        elif method == "ResponseUTTestFailed":
+            self.debugServer.clientUtTestFailed(
+                params["testname"], params["traceback"], params["id"])
+        
+        elif method == "ResponseUTTestErrored":
+            self.debugServer.clientUtTestErrored(
+                params["testname"], params["traceback"], params["id"])
+        
+        elif method == "ResponseUTTestSkipped":
+            self.debugServer.clientUtTestSkipped(
+                params["testname"], params["reason"], params["id"])
+        
+        elif method == "ResponseUTTestFailedExpected":
+            self.debugServer.clientUtTestFailedExpected(
+                params["testname"], params["traceback"], params["id"])
+        
+        elif method == "ResponseUTTestSucceededUnexpected":
+            self.debugServer.clientUtTestSucceededUnexpected(
+                params["testname"], params["id"])
+        
+        elif method == "RequestForkTo":
+            self.__askForkTo()
+    
+    def __sendJsonCommand(self, command, params):
+        """
+        Private method to send a single command to the client.
+        
+        @param command command name to be sent
+        @type str
+        @param params dictionary of named parameters for the command
+        @type dict
+        """
+        import json
+        
+        commandDict = {
+            "jsonrpc": "2.0",
+            "method": command,
+            "params": params,
+        }
+        cmd = json.dumps(commandDict) + '\n'
+        if self.qsock is not None:
+            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
+        else:
+            self.queue.append(cmd)
+
+
+def createDebuggerInterfacePython2(debugServer, passive):
+    """
+    Module function to create a debugger interface instance.
+    
+        
+    @param debugServer reference to the debug server
+    @type DebugServer
+    @param passive flag indicating passive connection mode
+    @type bool
+    @return instantiated debugger interface
+    @rtype DebuggerInterfacePython
+    """
+    return DebuggerInterfacePython(debugServer, passive, "Python2")
+    
+
+def createDebuggerInterfacePython3(debugServer, passive):
+    """
+    Module function to create a debugger interface instance.
+    
+        
+    @param debugServer reference to the debug server
+    @type DebugServer
+    @param passive flag indicating passive connection mode
+    @type bool
+    @return instantiated debugger interface
+    @rtype DebuggerInterfacePython
+    """
+    return DebuggerInterfacePython(debugServer, passive, "Python3")
+
+
+def getRegistryData():
+    """
+    Module function to get characterizing data for the supported debugger
+    interfaces.
+    
+    @return list of tuples containing the client type, the client capabilities,
+        the client file type associations and a reference to the creation
+        function
+    @rtype list of tuple of (str, int, list of str, function)
+    """
+    py2Exts = []
+    for ext in Preferences.getDebugger("PythonExtensions").split():
+        if ext.startswith("."):
+            py2Exts.append(ext)
+        else:
+            py2Exts.append(".{0}".format(ext))
+    
+    py3Exts = []
+    for ext in Preferences.getDebugger("Python3Extensions").split():
+        if ext.startswith("."):
+            py3Exts.append(ext)
+        else:
+            py3Exts.append(".{0}".format(ext))
+    
+    registryData = []
+    if py2Exts and Preferences.getDebugger("PythonInterpreter"):
+        registryData.append(
+            ("Python2", ClientDefaultCapabilities, py2Exts,
+             createDebuggerInterfacePython2)
+        )
+    
+    if py3Exts and Preferences.getDebugger("Python3Interpreter"):
+        registryData.append(
+            ("Python3", ClientDefaultCapabilities, py3Exts,
+                createDebuggerInterfacePython3)
+        )
+    
+    return registryData
--- a/Debugger/DebuggerInterfacePython2.py	Thu Aug 03 14:50:59 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1102 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2007 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the Python debugger interface for the debug server.
-"""
-
-from __future__ import unicode_literals
-
-import sys
-import os
-
-from PyQt5.QtCore import QObject, QTextCodec, QProcess, QProcessEnvironment, \
-    QTimer
-from PyQt5.QtWidgets import QInputDialog
-
-from E5Gui.E5Application import e5App
-from E5Gui import E5MessageBox
-
-from . import DebugClientCapabilities
-
-import Preferences
-import Utilities
-
-from eric6config import getConfig
-
-
-ClientDefaultCapabilities = DebugClientCapabilities.HasAll
-
-
-class DebuggerInterfacePython2(QObject):
-    """
-    Class implementing the Python 2 debugger interface for the debug server.
-    """
-    def __init__(self, debugServer, passive):
-        """
-        Constructor
-        
-        @param debugServer reference to the debug server (DebugServer)
-        @param passive flag indicating passive connection mode (boolean)
-        """
-        super(DebuggerInterfacePython2, self).__init__()
-        
-        self.__isNetworked = True
-        self.__autoContinue = False
-        
-        self.debugServer = debugServer
-        self.passive = passive
-        self.process = None
-        
-        self.qsock = None
-        self.queue = []
-        
-        # set default values for capabilities of clients
-        self.clientCapabilities = ClientDefaultCapabilities
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        self.codec = QTextCodec.codecForName(
-            Preferences.getSystem("StringEncoding"))
-        
-        if passive:
-            # set translation function
-            if Preferences.getDebugger("PathTranslation"):
-                self.translateRemote = \
-                    Preferences.getDebugger("PathTranslationRemote")
-                self.translateLocal = \
-                    Preferences.getDebugger("PathTranslationLocal")
-                self.translate = self.__remoteTranslation
-            else:
-                self.translate = self.__identityTranslation
-        
-        # attribute to remember the name of the executed script
-        self.__scriptName = ""
-
-    def __identityTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the identity path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        return fn
-        
-    def __remoteTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        if remote2local:
-            return fn.replace(self.translateRemote, self.translateLocal)
-        else:
-            return fn.replace(self.translateLocal, self.translateRemote)
-        
-    def __startProcess(self, program, arguments, environment=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 environment dictionary of environment settings to pass
-            (dict of string)
-        @return the process object (QProcess) or None
-        """
-        proc = QProcess()
-        if environment is not None:
-            env = QProcessEnvironment()
-            for key, value in list(environment.items()):
-                env.insert(key, value)
-            proc.setProcessEnvironment(env)
-        args = []
-        for arg in arguments:
-            args.append(arg)
-        proc.start(program, args)
-        if not proc.waitForStarted(10000):
-            proc = None
-        
-        return proc
-        
-    def startRemote(self, port, runInConsole):
-        """
-        Public method to start a remote Python interpreter.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        interpreter = Preferences.getDebugger("PythonInterpreter")
-        if interpreter == "":
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>No Python2 interpreter configured.</p>"""))
-            return None, False, ""
-        
-        debugClientType = Preferences.getDebugger("DebugClientType")
-        if debugClientType == "standard":
-            debugClient = os.path.join(getConfig('ericDir'),
-                                       "DebugClients", "Python",
-                                       "DebugClient.py")
-        else:
-            debugClient = Preferences.getDebugger("DebugClient")
-            if debugClient == "":
-                debugClient = os.path.join(sys.path[0],
-                                           "DebugClients", "Python",
-                                           "DebugClient.py")
-        
-        redirect = str(Preferences.getDebugger("PythonRedirect"))
-        noencoding = Preferences.getDebugger("PythonNoEncoding") and \
-            '--no-encoding' or ''
-        
-        if Preferences.getDebugger("RemoteDbgEnabled"):
-            ipaddr = self.debugServer.getHostAddress(False)
-            rexec = Preferences.getDebugger("RemoteExecution")
-            rhost = Preferences.getDebugger("RemoteHost")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, debugClient,
-                        noencoding, str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                
-                # set translation function
-                if Preferences.getDebugger("PathTranslation"):
-                    self.translateRemote = \
-                        Preferences.getDebugger("PathTranslationRemote")
-                    self.translateLocal = \
-                        Preferences.getDebugger("PathTranslationLocal")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if Preferences.getDebugger("DebugEnvironmentReplace"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            Preferences.getDebugger("DebugEnvironment"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or Preferences.getDebugger("ConsoleDbgEnabled"):
-            ccmd = Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def startRemoteForProject(self, port, runInConsole):
-        """
-        Public method to start a remote Python interpreter for a project.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        project = e5App().getObject("Project")
-        if not project.isDebugPropertiesLoaded():
-            return None, self.__isNetworked, ""
-        
-        # start debugger with project specific settings
-        interpreter = project.getDebugProperty("INTERPRETER")
-        debugClient = project.getDebugProperty("DEBUGCLIENT")
-        
-        redirect = str(project.getDebugProperty("REDIRECT"))
-        noencoding = \
-            project.getDebugProperty("NOENCODING") and '--no-encoding' or ''
-        
-        if project.getDebugProperty("REMOTEDEBUGGER"):
-            ipaddr = self.debugServer.getHostAddress(False)
-            rexec = project.getDebugProperty("REMOTECOMMAND")
-            rhost = project.getDebugProperty("REMOTEHOST")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                # set translation function
-                if project.getDebugProperty("PATHTRANSLATION"):
-                    self.translateRemote = \
-                        project.getDebugProperty("REMOTEPATH")
-                    self.translateLocal = \
-                        project.getDebugProperty("LOCALPATH")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if project.getDebugProperty("ENVIRONMENTOVERRIDE"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            project.getDebugProperty("ENVIRONMENTSTRING"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or project.getDebugProperty("CONSOLEDEBUGGER"):
-            ccmd = project.getDebugProperty("CONSOLECOMMAND") or \
-                Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def getClientCapabilities(self):
-        """
-        Public method to retrieve the debug clients capabilities.
-        
-        @return debug client capabilities (integer)
-        """
-        return self.clientCapabilities
-        
-    def newConnection(self, sock):
-        """
-        Public slot to handle a new connection.
-        
-        @param sock reference to the socket object (QTcpSocket)
-        @return flag indicating success (boolean)
-        """
-        # If we already have a connection, refuse this one.  It will be closed
-        # automatically.
-        if self.qsock is not None:
-            return False
-        
-        sock.disconnected.connect(self.debugServer.startClient)
-        sock.readyRead.connect(self.__parseClientLine)
-        
-        self.qsock = sock
-        
-        # Get the remote clients capabilities
-        self.remoteCapabilities()
-        return True
-        
-    def flush(self):
-        """
-        Public slot to flush the queue.
-        """
-        # Send commands that were waiting for the connection.
-        for cmd in self.queue:
-            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
-        
-        self.queue = []
-        
-    def shutdown(self):
-        """
-        Public method to cleanly shut down.
-        
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
-        """
-        if self.qsock is None:
-            return
-        
-        # do not want any slots called during shutdown
-        self.qsock.disconnected.disconnect(self.debugServer.startClient)
-        self.qsock.readyRead.disconnect(self.__parseClientLine)
-        
-        # close down socket, and shut down client as well.
-        self.__sendJsonCommand("RequestShutdown", {})
-        self.qsock.flush()
-        self.qsock.close()
-        
-        # reinitialize
-        self.qsock = None
-        self.queue = []
-        
-    def isConnected(self):
-        """
-        Public method to test, if a debug client has connected.
-        
-        @return flag indicating the connection status (boolean)
-        """
-        return self.qsock is not None
-        
-    def remoteEnvironment(self, env):
-        """
-        Public method to set the environment for a program to debug, run, ...
-        
-        @param env environment settings (dictionary)
-        """
-        self.__sendJsonCommand("RequestEnvironment", {"environment": env})
-        
-    def remoteLoad(self, fn, argv, wd, traceInterpreter=False,
-                   autoContinue=True, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to debug.
-        
-        @param fn the filename to debug (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam traceInterpreter flag indicating if the interpreter library
-            should be traced as well (boolean)
-        @keyparam autoContinue flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean)
-        """
-        self.__autoContinue = autoContinue
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestLoad", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "traceInterpreter": traceInterpreter,
-            "autofork": autoFork,
-            "forkChild": forkChild,
-        })
-        
-    def remoteRun(self, fn, argv, wd, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to run.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestRun", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "autofork": autoFork,
-            "forkChild": forkChild,
-        })
-        
-    def remoteCoverage(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect coverage data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that coverage info should be
-            cleared first (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestCoverage", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "erase": erase,
-        })
-
-    def remoteProfile(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect profiling data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that timing info should be cleared
-            first (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestProfile", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "erase": erase,
-        })
-
-    def remoteStatement(self, stmt):
-        """
-        Public method to execute a Python statement.
-        
-        @param stmt the Python statement to execute (string). It
-              should not have a trailing newline.
-        """
-        self.__sendJsonCommand("ExecuteStatement", {
-            "statement": stmt,
-        })
-
-    def remoteStep(self):
-        """
-        Public method to single step the debugged program.
-        """
-        self.__sendJsonCommand("RequestStep", {})
-
-    def remoteStepOver(self):
-        """
-        Public method to step over the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepOver", {})
-
-    def remoteStepOut(self):
-        """
-        Public method to step out the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepOut", {})
-
-    def remoteStepQuit(self):
-        """
-        Public method to stop the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepQuit", {})
-
-    def remoteContinue(self, special=False):
-        """
-        Public method to continue the debugged program.
-        
-        @param special flag indicating a special continue operation (boolean)
-        """
-        self.__sendJsonCommand("RequestContinue", {
-            "special": special,
-        })
-
-    def remoteMoveIP(self, line):
-        """
-        Public method to move the instruction pointer to a different line.
-        
-        @param line the new line, where execution should be continued
-        """
-        self.__sendJsonCommand("RequestMoveIP", {
-            "newLine": line,
-        })
-
-    def remoteBreakpoint(self, fn, line, setBreakpoint, cond=None, temp=False):
-        """
-        Public method to set or clear a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param setBreakpoint flag indicating setting or resetting a
-            breakpoint (boolean)
-        @param cond condition of the breakpoint (string)
-        @param temp flag indicating a temporary breakpoint (boolean)
-        """
-        self.__sendJsonCommand("RequestBreakpoint", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "temporary": temp,
-            "setBreakpoint": setBreakpoint,
-            "condition": cond,
-        })
-        
-    def remoteBreakpointEnable(self, fn, line, enable):
-        """
-        Public method to enable or disable a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param enable flag indicating enabling or disabling a breakpoint
-            (boolean)
-        """
-        self.__sendJsonCommand("RequestBreakpointEnable", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "enable": enable,
-        })
-        
-    def remoteBreakpointIgnore(self, fn, line, count):
-        """
-        Public method to ignore a breakpoint the next couple of occurrences.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param count number of occurrences to ignore (int)
-        """
-        self.__sendJsonCommand("RequestBreakpointIgnore", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "count": count,
-        })
-        
-    def remoteWatchpoint(self, cond, setWatch, temp=False):
-        """
-        Public method to set or clear a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param setWatch flag indicating setting or resetting a watch expression
-            (boolean)
-        @param temp flag indicating a temporary watch expression (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatch", {
-            "temporary": temp,
-            "setWatch": setWatch,
-            "condition": cond,
-        })
-    
-    def remoteWatchpointEnable(self, cond, enable):
-        """
-        Public method to enable or disable a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param enable flag indicating enabling or disabling a watch expression
-            (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatchEnable", {
-            "condition": cond,
-            "enable": enable,
-        })
-    
-    def remoteWatchpointIgnore(self, cond, count):
-        """
-        Public method to ignore a watch expression the next couple of
-        occurrences.
-        
-        @param cond expression of the watch expression (string)
-        @param count number of occurrences to ignore (int)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatchIgnore", {
-            "condition": cond,
-            "count": count,
-        })
-    
-    def remoteRawInput(self, s):
-        """
-        Public method to send the raw input to the debugged program.
-        
-        @param s the raw input (string)
-        """
-        self.__sendJsonCommand("RawInput", {
-            "input": s,
-        })
-        
-    def remoteThreadList(self):
-        """
-        Public method to request the list of threads from the client.
-        """
-        self.__sendJsonCommand("RequestThreadList", {})
-        
-    def remoteSetThread(self, tid):
-        """
-        Public method to request to set the given thread as current thread.
-        
-        @param tid id of the thread (integer)
-        """
-        self.__sendJsonCommand("RequestThreadSet", {
-            "threadID": tid,
-        })
-        
-    def remoteClientVariables(self, scope, filterList, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterList list of variable types to filter out (list of int)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendJsonCommand("RequestVariables", {
-            "frameNumber": framenr,
-            "scope": scope,
-            "filters": filterList,
-        })
-        
-    def remoteClientVariable(self, scope, filterList, var, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterList list of variable types to filter out (list of int)
-        @param var list encoded name of variable to retrieve (string)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendJsonCommand("RequestVariable", {
-            "variable": var,
-            "frameNumber": framenr,
-            "scope": scope,
-            "filters": filterList,
-        })
-        
-    def remoteClientSetFilter(self, scope, filterStr):
-        """
-        Public method to set a variables filter list.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterStr regexp string for variable names to filter out
-            (string)
-        """
-        self.__sendJsonCommand("RequestSetFilter", {
-            "scope": scope,
-            "filter": filterStr,
-        })
-        
-    def setCallTraceEnabled(self, on):
-        """
-        Public method to set the call trace state.
-        
-        @param on flag indicating to enable the call trace function (boolean)
-        """
-        self.__sendJsonCommand("RequestCallTrace", {
-            "enable": on,
-        })
-    
-    def remoteBanner(self):
-        """
-        Public slot to get the banner info of the remote client.
-        """
-        self.__sendJsonCommand("RequestBanner", {})
-        
-    def remoteCapabilities(self):
-        """
-        Public slot to get the debug clients capabilities.
-        """
-        self.__sendJsonCommand("RequestCapabilities", {})
-        
-    def remoteCompletion(self, text):
-        """
-        Public slot to get the a list of possible commandline completions
-        from the remote client.
-        
-        @param text the text to be completed (string)
-        """
-        self.__sendJsonCommand("RequestCompletion", {
-            "text": text,
-        })
-        
-    def remoteUTPrepare(self, fn, tn, tfn, failed, cov, covname, coverase):
-        """
-        Public method to prepare a new unittest run.
-        
-        @param fn the filename to load (string)
-        @param tn the testname to load (string)
-        @param tfn the test function name to load tests from (string)
-        @param failed list of failed test, if only failed test should be run
-            (list of strings)
-        @param cov flag indicating collection of coverage data is requested
-            (boolean)
-        @param covname filename to be used to assemble the coverage caches
-            filename (string)
-        @param coverase flag indicating erasure of coverage data is requested
-            (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestUTPrepare", {
-            "filename": fn,
-            "testname": tn,
-            "testfunctionname": tfn,
-            "failed": failed,
-            "coverage": cov,
-            "coveragefile": covname,
-            "coverageerase": coverase,
-        })
-        
-    def remoteUTRun(self):
-        """
-        Public method to start a unittest run.
-        """
-        self.__sendJsonCommand("RequestUTRun", {})
-        
-    def remoteUTStop(self):
-        """
-        Public method to stop a unittest run.
-        """
-        self.__sendJsonCommand("RequestUTStop", {})
-        
-    def __askForkTo(self):
-        """
-        Private method to ask the user which branch of a fork to follow.
-        """
-        selections = [self.tr("Parent Process"),
-                      self.tr("Child process")]
-        res, ok = QInputDialog.getItem(
-            None,
-            self.tr("Client forking"),
-            self.tr("Select the fork branch to follow."),
-            selections,
-            0, False)
-        if not ok or res == selections[0]:
-            self.__sendJsonCommand("ResponseForkTo", {
-                "target": "parent",
-            })
-        else:
-            self.__sendJsonCommand("ResponseForkTo", {
-                "target": "child",
-            })
-        
-    def __parseClientLine(self):
-        """
-        Private method to handle data from the client.
-        """
-        while self.qsock and self.qsock.canReadLine():
-            qs = self.qsock.readLine()
-            if self.codec is not None:
-                line = self.codec.toUnicode(qs)
-            else:
-                line = bytes(qs).decode()
-            
-##            print("Server: ", line)          ##debug
-            
-            self.__handleJsonCommand(line)
-            continue
-    
-    def __handleJsonCommand(self, jsonStr):
-        """
-        Private method to handle a command or response serialized as a
-        JSON string.
-        
-        @param jsonStr string containing the command or response received
-            from the debug backend
-        @type str
-        """
-        import json
-        
-        try:
-            commandDict = json.loads(jsonStr.strip())
-        except (TypeError, ValueError) as err:
-            E5MessageBox.critical(
-                None,
-                self.tr("Debug Protocol Error"),
-                self.tr("""<p>The response received from the debugger"""
-                        """ backend could not be decoded. Please report"""
-                        """ this issue with the received data to the"""
-                        """ eric bugs email address.</p>"""
-                        """<p>Error: {0}</p>"""
-                        """<p>Data:<br/>{0}</p>""").format(
-                    str(err), Utilities.html_encode(jsonStr.strip())),
-                E5MessageBox.StandardButtons(
-                    E5MessageBox.Ok))
-            return
-        
-        method = commandDict["method"]
-        params = commandDict["params"]
-        
-        if method == "ClientOutput":
-            self.debugServer.signalClientOutput(params["text"])
-        
-        elif method in ["ResponseLine", "ResponseStack"]:
-            # Check if obsolet thread was clicked
-            if params["stack"] == []:
-                # Request updated list
-                self.remoteThreadList()
-                return
-            for s in params["stack"]:
-                s[0] = self.translate(s[0], True)
-            cf = params["stack"][0]
-            if self.__autoContinue:
-                self.__autoContinue = False
-                QTimer.singleShot(0, self.remoteContinue)
-            else:
-                self.debugServer.signalClientLine(
-                    cf[0], int(cf[1]),
-                    method == "ResponseStack")
-                self.debugServer.signalClientStack(params["stack"])
-        
-        elif method == "CallTrace":
-            isCall = params["event"].lower() == "c"
-            fromInfo = params["from"]
-            toInfo = params["to"]
-            self.debugServer.signalClientCallTrace(
-                isCall,
-                fromInfo["filename"], str(fromInfo["linenumber"]),
-                fromInfo["codename"],
-                toInfo["filename"], str(toInfo["linenumber"]),
-                toInfo["codename"])
-        
-        elif method == "ResponseVariables":
-            self.debugServer.signalClientVariables(
-                params["scope"], params["variables"])
-        
-        elif method == "ResponseVariable":
-            self.debugServer.signalClientVariable(
-                params["scope"], [params["variable"]] + params["variables"])
-        
-        elif method == "ResponseThreadList":
-            self.debugServer.signalClientThreadList(
-                params["currentID"], params["threadList"])
-        
-        elif method == "ResponseThreadSet":
-            self.debugServer.signalClientThreadSet()
-        
-        elif method == "ResponseCapabilities":
-            self.clientCapabilities = params["capabilities"]
-            self.debugServer.signalClientCapabilities(
-                params["capabilities"], params["clientType"])
-        
-        elif method == "ResponseBanner":
-            self.debugServer.signalClientBanner(
-                params["version"],
-                params["platform"],
-                params["dbgclient"])
-        
-        elif method == "ResponseOK":
-            self.debugServer.signalClientStatement(False)
-        
-        elif method == "ResponseContinue":
-            self.debugServer.signalClientStatement(True)
-        
-        elif method == "RequestRaw":
-            self.debugServer.signalClientRawInput(
-                params["prompt"], params["echo"])
-        
-        elif method == "ResponseBPConditionError":
-            fn = self.translate(params["filename"], True)
-            self.debugServer.signalClientBreakConditionError(
-                fn, params["line"])
-        
-        elif method == "ResponseClearBreakpoint":
-            fn = self.translate(params["filename"], True)
-            self.debugServer.signalClientClearBreak(fn, params["line"])
-        
-        elif method == "ResponseWatchConditionError":
-            self.debugServer.signalClientWatchConditionError(
-                params["condition"])
-        
-        elif method == "ResponseClearWatch":
-            self.debugServer.signalClientClearWatch(params["condition"])
-        
-        elif method == "ResponseException":
-            if params:
-                exctype = params["type"]
-                excmessage = params["message"]
-                stack = params["stack"]
-                if stack:
-                    for stackEntry in stack:
-                        stackEntry[0] = self.translate(stackEntry[0], True)
-                    if stack[0] and stack[0][0] == "<string>":
-                        for stackEntry in stack:
-                            if stackEntry[0] == "<string>":
-                                stackEntry[0] = self.__scriptName
-                            else:
-                                break
-            else:
-                exctype = ''
-                excmessage = ''
-                stack = []
-            
-            self.debugServer.signalClientException(
-                exctype, excmessage, stack)
-        
-        elif method == "ResponseSyntax":
-            self.debugServer.signalClientSyntaxError(
-                params["message"], self.translate(params["filename"], True),
-                params["linenumber"], params["characternumber"])
-        
-        elif method == "ResponseSignal":
-            self.debugServer.signalClientSignal(
-                params["message"], self.translate(params["filename"], True),
-                params["linenumber"], params["function"], params["arguments"])
-        
-        elif method == "ResponseExit":
-            self.__scriptName = ""
-            self.debugServer.signalClientExit(
-                params["status"], params["message"])
-        
-        elif method == "PassiveStartup":
-            self.debugServer.passiveStartUp(
-                self.translate(params["filename"], True), params["exceptions"])
-        
-        elif method == "ResponseCompletion":
-            self.debugServer.signalClientCompletionList(
-                params["completions"], params["text"])
-        
-        elif method == "ResponseUTPrepared":
-            self.debugServer.clientUtPrepared(
-                params["count"], params["exception"], params["message"])
-        
-        elif method == "ResponseUTFinished":
-            self.debugServer.clientUtFinished()
-        
-        elif method == "ResponseUTStartTest":
-            self.debugServer.clientUtStartTest(
-                params["testname"], params["description"])
-        
-        elif method == "ResponseUTStopTest":
-            self.debugServer.clientUtStopTest()
-        
-        elif method == "ResponseUTTestFailed":
-            self.debugServer.clientUtTestFailed(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestErrored":
-            self.debugServer.clientUtTestErrored(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestSkipped":
-            self.debugServer.clientUtTestSkipped(
-                params["testname"], params["reason"], params["id"])
-        
-        elif method == "ResponseUTTestFailedExpected":
-            self.debugServer.clientUtTestFailedExpected(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestSucceededUnexpected":
-            self.debugServer.clientUtTestSucceededUnexpected(
-                params["testname"], params["id"])
-        
-        elif method == "RequestForkTo":
-            self.__askForkTo()
-
-    def __sendJsonCommand(self, command, params):
-        """
-        Private method to send a single command to the client.
-        
-        @param command command name to be sent
-        @type str
-        @param params dictionary of named parameters for the command
-        @type dict
-        """
-        import json
-        
-        commandDict = {
-            "jsonrpc": "2.0",
-            "method": command,
-            "params": params,
-        }
-        cmd = json.dumps(commandDict) + '\n'
-        if self.qsock is not None:
-            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
-        else:
-            self.queue.append(cmd)
-    
-
-def createDebuggerInterfacePython2(debugServer, passive):
-    """
-    Module function to create a debugger interface instance.
-    
-        
-    @param debugServer reference to the debug server
-    @type DebugServer
-    @param passive flag indicating passive connection mode
-    @type bool
-    @return instantiated debugger interface
-    @rtype DebuggerInterfacePython
-    """
-    return DebuggerInterfacePython2(debugServer, passive)
-
-
-def getRegistryData():
-    """
-    Module function to get characterizing data for the debugger interface.
-    
-    @return tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
-    @rtype tuple of (str, int, list of str, function)
-    """
-    exts = []
-    for ext in Preferences.getDebugger("PythonExtensions").split():
-        if ext.startswith("."):
-            exts.append(ext)
-        else:
-            exts.append(".{0}".format(ext))
-    
-    if exts and Preferences.getDebugger("PythonInterpreter"):
-        return ["Python2", ClientDefaultCapabilities, exts,
-                createDebuggerInterfacePython2]
-    else:
-        return ["", 0, [], None]
--- a/Debugger/DebuggerInterfacePython3.py	Thu Aug 03 14:50:59 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1102 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing the Python3 debugger interface for the debug server.
-"""
-
-from __future__ import unicode_literals
-
-import sys
-import os
-
-from PyQt5.QtCore import QObject, QTextCodec, QProcess, QProcessEnvironment, \
-    QTimer
-from PyQt5.QtWidgets import QInputDialog
-
-from E5Gui.E5Application import e5App
-from E5Gui import E5MessageBox
-
-from . import DebugClientCapabilities
-
-import Preferences
-import Utilities
-
-from eric6config import getConfig
-
-
-ClientDefaultCapabilities = DebugClientCapabilities.HasAll
-
-
-class DebuggerInterfacePython3(QObject):
-    """
-    Class implementing the Python 3 debugger interface for the debug server.
-    """
-    def __init__(self, debugServer, passive):
-        """
-        Constructor
-        
-        @param debugServer reference to the debug server (DebugServer)
-        @param passive flag indicating passive connection mode (boolean)
-        """
-        super(DebuggerInterfacePython3, self).__init__()
-        
-        self.__isNetworked = True
-        self.__autoContinue = False
-        
-        self.debugServer = debugServer
-        self.passive = passive
-        self.process = None
-        
-        self.qsock = None
-        self.queue = []
-        
-        # set default values for capabilities of clients
-        self.clientCapabilities = ClientDefaultCapabilities
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        self.codec = QTextCodec.codecForName(
-            str(Preferences.getSystem("StringEncoding")))
-        
-        if passive:
-            # set translation function
-            if Preferences.getDebugger("PathTranslation"):
-                self.translateRemote = \
-                    Preferences.getDebugger("PathTranslationRemote")
-                self.translateLocal = \
-                    Preferences.getDebugger("PathTranslationLocal")
-                self.translate = self.__remoteTranslation
-            else:
-                self.translate = self.__identityTranslation
-        
-        # attribute to remember the name of the executed script
-        self.__scriptName = ""
-
-    def __identityTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the identity path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        return fn
-        
-    def __remoteTranslation(self, fn, remote2local=True):
-        """
-        Private method to perform the path translation.
-        
-        @param fn filename to be translated (string)
-        @param remote2local flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-        @return translated filename (string)
-        """
-        if remote2local:
-            return fn.replace(self.translateRemote, self.translateLocal)
-        else:
-            return fn.replace(self.translateLocal, self.translateRemote)
-        
-    def __startProcess(self, program, arguments, environment=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 environment dictionary of environment settings to pass
-            (dict of string)
-        @return the process object (QProcess) or None
-        """
-        proc = QProcess()
-        if environment is not None:
-            env = QProcessEnvironment()
-            for key, value in list(environment.items()):
-                env.insert(key, value)
-            proc.setProcessEnvironment(env)
-        args = []
-        for arg in arguments:
-            args.append(arg)
-        proc.start(program, args)
-        if not proc.waitForStarted(10000):
-            proc = None
-        
-        return proc
-        
-    def startRemote(self, port, runInConsole):
-        """
-        Public method to start a remote Python interpreter.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        interpreter = Preferences.getDebugger("Python3Interpreter")
-        if interpreter == "":
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>No Python3 interpreter configured.</p>"""))
-            return None, False, ""
-        
-        debugClientType = Preferences.getDebugger("DebugClientType3")
-        if debugClientType == "standard":
-            debugClient = os.path.join(getConfig('ericDir'),
-                                       "DebugClients", "Python",
-                                       "DebugClient.py")
-        else:
-            debugClient = Preferences.getDebugger("DebugClient3")
-            if debugClient == "":
-                debugClient = os.path.join(sys.path[0],
-                                           "DebugClients", "Python",
-                                           "DebugClient.py")
-        
-        redirect = str(Preferences.getDebugger("Python3Redirect"))
-        noencoding = Preferences.getDebugger("Python3NoEncoding") and \
-            '--no-encoding' or ''
-        
-        if Preferences.getDebugger("RemoteDbgEnabled"):
-            ipaddr = self.debugServer.getHostAddress(False)
-            rexec = Preferences.getDebugger("RemoteExecution")
-            rhost = Preferences.getDebugger("RemoteHost")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, debugClient,
-                        noencoding, str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                
-                # set translation function
-                if Preferences.getDebugger("PathTranslation"):
-                    self.translateRemote = \
-                        Preferences.getDebugger("PathTranslationRemote")
-                    self.translateLocal = \
-                        Preferences.getDebugger("PathTranslationLocal")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if Preferences.getDebugger("DebugEnvironmentReplace"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            Preferences.getDebugger("DebugEnvironment"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or Preferences.getDebugger("ConsoleDbgEnabled"):
-            ccmd = Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def startRemoteForProject(self, port, runInConsole):
-        """
-        Public method to start a remote Python interpreter for a project.
-        
-        @param port portnumber the debug server is listening on (integer)
-        @param runInConsole flag indicating to start the debugger in a
-            console window (boolean)
-        @return client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-        """
-        project = e5App().getObject("Project")
-        if not project.isDebugPropertiesLoaded():
-            return None, self.__isNetworked, ""
-        
-        # start debugger with project specific settings
-        interpreter = project.getDebugProperty("INTERPRETER")
-        debugClient = project.getDebugProperty("DEBUGCLIENT")
-        
-        redirect = str(project.getDebugProperty("REDIRECT"))
-        noencoding = \
-            project.getDebugProperty("NOENCODING") and '--no-encoding' or ''
-        
-        if project.getDebugProperty("REMOTEDEBUGGER"):
-            ipaddr = self.debugServer.getHostAddress(False)
-            rexec = project.getDebugProperty("REMOTECOMMAND")
-            rhost = project.getDebugProperty("REMOTEHOST")
-            if rhost == "":
-                rhost = "localhost"
-            if rexec:
-                args = Utilities.parseOptionString(rexec) + \
-                    [rhost, interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), redirect, ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:])
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                # set translation function
-                if project.getDebugProperty("PATHTRANSLATION"):
-                    self.translateRemote = \
-                        project.getDebugProperty("REMOTEPATH")
-                    self.translateLocal = \
-                        project.getDebugProperty("LOCALPATH")
-                    self.translate = self.__remoteTranslation
-                else:
-                    self.translate = self.__identityTranslation
-                return process, self.__isNetworked, ""
-        
-        # set translation function
-        self.translate = self.__identityTranslation
-        
-        # setup the environment for the debugger
-        if project.getDebugProperty("ENVIRONMENTOVERRIDE"):
-            clientEnv = {}
-        else:
-            clientEnv = os.environ.copy()
-        envlist = Utilities.parseEnvironmentString(
-            project.getDebugProperty("ENVIRONMENTSTRING"))
-        for el in envlist:
-            try:
-                key, value = el.split('=', 1)
-                if value.startswith('"') or value.startswith("'"):
-                    value = value[1:-1]
-                clientEnv[str(key)] = str(value)
-            except ValueError:
-                pass
-        
-        ipaddr = self.debugServer.getHostAddress(True)
-        if runInConsole or project.getDebugProperty("CONSOLEDEBUGGER"):
-            ccmd = project.getDebugProperty("CONSOLECOMMAND") or \
-                Preferences.getDebugger("ConsoleDbgCommand")
-            if ccmd:
-                args = Utilities.parseOptionString(ccmd) + \
-                    [interpreter, os.path.abspath(debugClient),
-                        noencoding, str(port), '0', ipaddr]
-                args[0] = Utilities.getExecutablePath(args[0])
-                process = self.__startProcess(args[0], args[1:], clientEnv)
-                if process is None:
-                    E5MessageBox.critical(
-                        None,
-                        self.tr("Start Debugger"),
-                        self.tr(
-                            """<p>The debugger backend could not be"""
-                            """ started.</p>"""))
-                return process, self.__isNetworked, interpreter
-        
-        process = self.__startProcess(
-            interpreter,
-            [debugClient, noencoding, str(port), redirect, ipaddr],
-            clientEnv)
-        if process is None:
-            E5MessageBox.critical(
-                None,
-                self.tr("Start Debugger"),
-                self.tr(
-                    """<p>The debugger backend could not be started.</p>"""))
-        return process, self.__isNetworked, interpreter
-
-    def getClientCapabilities(self):
-        """
-        Public method to retrieve the debug clients capabilities.
-        
-        @return debug client capabilities (integer)
-        """
-        return self.clientCapabilities
-    
-    def newConnection(self, sock):
-        """
-        Public slot to handle a new connection.
-        
-        @param sock reference to the socket object (QTcpSocket)
-        @return flag indicating success (boolean)
-        """
-        # If we already have a connection, refuse this one.  It will be closed
-        # automatically.
-        if self.qsock is not None:
-            return False
-        
-        sock.disconnected.connect(self.debugServer.startClient)
-        sock.readyRead.connect(self.__parseClientLine)
-        
-        self.qsock = sock
-        
-        # Get the remote clients capabilities
-        self.remoteCapabilities()
-        return True
-    
-    def flush(self):
-        """
-        Public slot to flush the queue.
-        """
-        # Send commands that were waiting for the connection.
-        for cmd in self.queue:
-            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
-        
-        self.queue = []
-    
-    def shutdown(self):
-        """
-        Public method to cleanly shut down.
-        
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
-        """
-        if self.qsock is None:
-            return
-        
-        # do not want any slots called during shutdown
-        self.qsock.disconnected.disconnect(self.debugServer.startClient)
-        self.qsock.readyRead.disconnect(self.__parseClientLine)
-        
-        # close down socket, and shut down client as well.
-        self.__sendJsonCommand("RequestShutdown", {})
-        self.qsock.flush()
-        self.qsock.close()
-        
-        # reinitialize
-        self.qsock = None
-        self.queue = []
-    
-    def isConnected(self):
-        """
-        Public method to test, if a debug client has connected.
-        
-        @return flag indicating the connection status (boolean)
-        """
-        return self.qsock is not None
-    
-    def remoteEnvironment(self, env):
-        """
-        Public method to set the environment for a program to debug, run, ...
-        
-        @param env environment settings (dictionary)
-        """
-        self.__sendJsonCommand("RequestEnvironment", {"environment": env})
-    
-    def remoteLoad(self, fn, argv, wd, traceInterpreter=False,
-                   autoContinue=True, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to debug.
-        
-        @param fn the filename to debug (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam traceInterpreter flag indicating if the interpreter library
-            should be traced as well (boolean)
-        @keyparam autoContinue flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean)
-        """
-        self.__autoContinue = autoContinue
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestLoad", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "traceInterpreter": traceInterpreter,
-            "autofork": autoFork,
-            "forkChild": forkChild,
-        })
-    
-    def remoteRun(self, fn, argv, wd, autoFork=False, forkChild=False):
-        """
-        Public method to load a new program to run.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam autoFork flag indicating the automatic fork mode (boolean)
-        @keyparam forkChild flag indicating to debug the child after forking
-            (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestRun", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "autofork": autoFork,
-            "forkChild": forkChild,
-        })
-    
-    def remoteCoverage(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect coverage data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that coverage info should be
-            cleared first (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestCoverage", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "erase": erase,
-        })
-
-    def remoteProfile(self, fn, argv, wd, erase=False):
-        """
-        Public method to load a new program to collect profiling data.
-        
-        @param fn the filename to run (string)
-        @param argv the commandline arguments to pass to the program (string)
-        @param wd the working directory for the program (string)
-        @keyparam erase flag indicating that timing info should be cleared
-            first (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        wd = self.translate(wd, False)
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestProfile", {
-            "workdir": wd,
-            "filename": fn,
-            "argv": Utilities.parseOptionString(argv),
-            "erase": erase,
-        })
-
-    def remoteStatement(self, stmt):
-        """
-        Public method to execute a Python statement.
-        
-        @param stmt the Python statement to execute (string). It
-              should not have a trailing newline.
-        """
-        self.__sendJsonCommand("ExecuteStatement", {
-            "statement": stmt,
-        })
-
-    def remoteStep(self):
-        """
-        Public method to single step the debugged program.
-        """
-        self.__sendJsonCommand("RequestStep", {})
-
-    def remoteStepOver(self):
-        """
-        Public method to step over the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepOver", {})
-
-    def remoteStepOut(self):
-        """
-        Public method to step out the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepOut", {})
-
-    def remoteStepQuit(self):
-        """
-        Public method to stop the debugged program.
-        """
-        self.__sendJsonCommand("RequestStepQuit", {})
-
-    def remoteContinue(self, special=False):
-        """
-        Public method to continue the debugged program.
-        
-        @param special flag indicating a special continue operation
-        """
-        self.__sendJsonCommand("RequestContinue", {
-            "special": special,
-        })
-
-    def remoteMoveIP(self, line):
-        """
-        Public method to move the instruction pointer to a different line.
-        
-        @param line the new line, where execution should be continued
-        """
-        self.__sendJsonCommand("RequestMoveIP", {
-            "newLine": line,
-        })
-
-    def remoteBreakpoint(self, fn, line, setBreakpoint, cond=None, temp=False):
-        """
-        Public method to set or clear a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param setBreakpoint flag indicating setting or resetting a
-            breakpoint (boolean)
-        @param cond condition of the breakpoint (string)
-        @param temp flag indicating a temporary breakpoint (boolean)
-        """
-        self.__sendJsonCommand("RequestBreakpoint", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "temporary": temp,
-            "setBreakpoint": setBreakpoint,
-            "condition": cond,
-        })
-    
-    def remoteBreakpointEnable(self, fn, line, enable):
-        """
-        Public method to enable or disable a breakpoint.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param enable flag indicating enabling or disabling a breakpoint
-            (boolean)
-        """
-        self.__sendJsonCommand("RequestBreakpointEnable", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "enable": enable,
-        })
-    
-    def remoteBreakpointIgnore(self, fn, line, count):
-        """
-        Public method to ignore a breakpoint the next couple of occurrences.
-        
-        @param fn filename the breakpoint belongs to (string)
-        @param line linenumber of the breakpoint (int)
-        @param count number of occurrences to ignore (int)
-        """
-        self.__sendJsonCommand("RequestBreakpointIgnore", {
-            "filename": self.translate(fn, False),
-            "line": line,
-            "count": count,
-        })
-    
-    def remoteWatchpoint(self, cond, setWatch, temp=False):
-        """
-        Public method to set or clear a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param setWatch flag indicating setting or resetting a watch expression
-            (boolean)
-        @param temp flag indicating a temporary watch expression (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatch", {
-            "temporary": temp,
-            "setWatch": setWatch,
-            "condition": cond,
-        })
-    
-    def remoteWatchpointEnable(self, cond, enable):
-        """
-        Public method to enable or disable a watch expression.
-        
-        @param cond expression of the watch expression (string)
-        @param enable flag indicating enabling or disabling a watch expression
-            (boolean)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatchEnable", {
-            "condition": cond,
-            "enable": enable,
-        })
-    
-    def remoteWatchpointIgnore(self, cond, count):
-        """
-        Public method to ignore a watch expression the next couple of
-        occurrences.
-        
-        @param cond expression of the watch expression (string)
-        @param count number of occurrences to ignore (int)
-        """
-        # cond is combination of cond and special (s. watch expression viewer)
-        self.__sendJsonCommand("RequestWatchIgnore", {
-            "condition": cond,
-            "count": count,
-        })
-    
-    def remoteRawInput(self, s):
-        """
-        Public method to send the raw input to the debugged program.
-        
-        @param s the raw input (string)
-        """
-        self.__sendJsonCommand("RawInput", {
-            "input": s,
-        })
-    
-    def remoteThreadList(self):
-        """
-        Public method to request the list of threads from the client.
-        """
-        self.__sendJsonCommand("RequestThreadList", {})
-        
-    def remoteSetThread(self, tid):
-        """
-        Public method to request to set the given thread as current thread.
-        
-        @param tid id of the thread (integer)
-        """
-        self.__sendJsonCommand("RequestThreadSet", {
-            "threadID": tid,
-        })
-        
-    def remoteClientVariables(self, scope, filterList, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterList list of variable types to filter out (list of int)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendJsonCommand("RequestVariables", {
-            "frameNumber": framenr,
-            "scope": scope,
-            "filters": filterList,
-        })
-    
-    def remoteClientVariable(self, scope, filterList, var, framenr=0):
-        """
-        Public method to request the variables of the debugged program.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterList list of variable types to filter out (list of int)
-        @param var list encoded name of variable to retrieve (string)
-        @param framenr framenumber of the variables to retrieve (int)
-        """
-        self.__sendJsonCommand("RequestVariable", {
-            "variable": var,
-            "frameNumber": framenr,
-            "scope": scope,
-            "filters": filterList,
-        })
-    
-    def remoteClientSetFilter(self, scope, filterStr):
-        """
-        Public method to set a variables filter list.
-        
-        @param scope the scope of the variables (0 = local, 1 = global)
-        @param filterStr regexp string for variable names to filter out
-            (string)
-        """
-        self.__sendJsonCommand("RequestSetFilter", {
-            "scope": scope,
-            "filter": filterStr,
-        })
-    
-    def setCallTraceEnabled(self, on):
-        """
-        Public method to set the call trace state.
-        
-        @param on flag indicating to enable the call trace function (boolean)
-        """
-        self.__sendJsonCommand("RequestCallTrace", {
-            "enable": on,
-        })
-    
-    def remoteBanner(self):
-        """
-        Public slot to get the banner info of the remote client.
-        """
-        self.__sendJsonCommand("RequestBanner", {})
-    
-    def remoteCapabilities(self):
-        """
-        Public slot to get the debug clients capabilities.
-        """
-        self.__sendJsonCommand("RequestCapabilities", {})
-    
-    def remoteCompletion(self, text):
-        """
-        Public slot to get the a list of possible commandline completions
-        from the remote client.
-        
-        @param text the text to be completed (string)
-        """
-        self.__sendJsonCommand("RequestCompletion", {
-            "text": text,
-        })
-    
-    def remoteUTPrepare(self, fn, tn, tfn, failed, cov, covname, coverase):
-        """
-        Public method to prepare a new unittest run.
-        
-        @param fn the filename to load (string)
-        @param tn the testname to load (string)
-        @param tfn the test function name to load tests from (string)
-        @param failed list of failed test, if only failed test should be run
-            (list of strings)
-        @param cov flag indicating collection of coverage data is requested
-            (boolean)
-        @param covname filename to be used to assemble the coverage caches
-            filename (string)
-        @param coverase flag indicating erasure of coverage data is requested
-            (boolean)
-        """
-        self.__scriptName = os.path.abspath(fn)
-        
-        fn = self.translate(os.path.abspath(fn), False)
-        self.__sendJsonCommand("RequestUTPrepare", {
-            "filename": fn,
-            "testname": tn,
-            "testfunctionname": tfn,
-            "failed": failed,
-            "coverage": cov,
-            "coveragefile": covname,
-            "coverageerase": coverase,
-        })
-    
-    def remoteUTRun(self):
-        """
-        Public method to start a unittest run.
-        """
-        self.__sendJsonCommand("RequestUTRun", {})
-    
-    def remoteUTStop(self):
-        """
-        Public method to stop a unittest run.
-        """
-        self.__sendJsonCommand("RequestUTStop", {})
-    
-    def __askForkTo(self):
-        """
-        Private method to ask the user which branch of a fork to follow.
-        """
-        selections = [self.tr("Parent Process"),
-                      self.tr("Child process")]
-        res, ok = QInputDialog.getItem(
-            None,
-            self.tr("Client forking"),
-            self.tr("Select the fork branch to follow."),
-            selections,
-            0, False)
-        if not ok or res == selections[0]:
-            self.__sendJsonCommand("ResponseForkTo", {
-                "target": "parent",
-            })
-        else:
-            self.__sendJsonCommand("ResponseForkTo", {
-                "target": "child",
-            })
-    
-    def __parseClientLine(self):
-        """
-        Private method to handle data from the client.
-        """
-        while self.qsock and self.qsock.canReadLine():
-            qs = self.qsock.readLine()
-            if self.codec is not None:
-                line = self.codec.toUnicode(qs)
-            else:
-                line = bytes(qs).decode()
-            
-##            print("Server: ", line)          ##debug
-            
-            self.__handleJsonCommand(line)
-            continue
-    
-    def __handleJsonCommand(self, jsonStr):
-        """
-        Private method to handle a command or response serialized as a
-        JSON string.
-        
-        @param jsonStr string containing the command or response received
-            from the debug backend
-        @type str
-        """
-        import json
-        
-        try:
-            commandDict = json.loads(jsonStr.strip())
-        except (TypeError, ValueError) as err:
-            E5MessageBox.critical(
-                None,
-                self.tr("Debug Protocol Error"),
-                self.tr("""<p>The response received from the debugger"""
-                        """ backend could not be decoded. Please report"""
-                        """ this issue with the received data to the"""
-                        """ eric bugs email address.</p>"""
-                        """<p>Error: {0}</p>"""
-                        """<p>Data:<br/>{0}</p>""").format(
-                    str(err), Utilities.html_encode(jsonStr.strip())),
-                E5MessageBox.StandardButtons(
-                    E5MessageBox.Ok))
-            return
-        
-        method = commandDict["method"]
-        params = commandDict["params"]
-        
-        if method == "ClientOutput":
-            self.debugServer.signalClientOutput(params["text"])
-        
-        elif method in ["ResponseLine", "ResponseStack"]:
-            # Check if obsolet thread was clicked
-            if params["stack"] == []:
-                # Request updated list
-                self.remoteThreadList()
-                return
-            for s in params["stack"]:
-                s[0] = self.translate(s[0], True)
-            cf = params["stack"][0]
-            if self.__autoContinue:
-                self.__autoContinue = False
-                QTimer.singleShot(0, self.remoteContinue)
-            else:
-                self.debugServer.signalClientLine(
-                    cf[0], int(cf[1]),
-                    method == "ResponseStack")
-                self.debugServer.signalClientStack(params["stack"])
-        
-        elif method == "CallTrace":
-            isCall = params["event"].lower() == "c"
-            fromInfo = params["from"]
-            toInfo = params["to"]
-            self.debugServer.signalClientCallTrace(
-                isCall,
-                fromInfo["filename"], str(fromInfo["linenumber"]),
-                fromInfo["codename"],
-                toInfo["filename"], str(toInfo["linenumber"]),
-                toInfo["codename"])
-        
-        elif method == "ResponseVariables":
-            self.debugServer.signalClientVariables(
-                params["scope"], params["variables"])
-        
-        elif method == "ResponseVariable":
-            self.debugServer.signalClientVariable(
-                params["scope"], [params["variable"]] + params["variables"])
-        
-        elif method == "ResponseThreadList":
-            self.debugServer.signalClientThreadList(
-                params["currentID"], params["threadList"])
-        
-        elif method == "ResponseThreadSet":
-            self.debugServer.signalClientThreadSet()
-        
-        elif method == "ResponseCapabilities":
-            self.clientCapabilities = params["capabilities"]
-            self.debugServer.signalClientCapabilities(
-                params["capabilities"], params["clientType"])
-        
-        elif method == "ResponseBanner":
-            self.debugServer.signalClientBanner(
-                params["version"],
-                params["platform"],
-                params["dbgclient"])
-        
-        elif method == "ResponseOK":
-            self.debugServer.signalClientStatement(False)
-        
-        elif method == "ResponseContinue":
-            self.debugServer.signalClientStatement(True)
-        
-        elif method == "RequestRaw":
-            self.debugServer.signalClientRawInput(
-                params["prompt"], params["echo"])
-        
-        elif method == "ResponseBPConditionError":
-            fn = self.translate(params["filename"], True)
-            self.debugServer.signalClientBreakConditionError(
-                fn, params["line"])
-        
-        elif method == "ResponseClearBreakpoint":
-            fn = self.translate(params["filename"], True)
-            self.debugServer.signalClientClearBreak(fn, params["line"])
-        
-        elif method == "ResponseWatchConditionError":
-            self.debugServer.signalClientWatchConditionError(
-                params["condition"])
-        
-        elif method == "ResponseClearWatch":
-            self.debugServer.signalClientClearWatch(params["condition"])
-        
-        elif method == "ResponseException":
-            if params:
-                exctype = params["type"]
-                excmessage = params["message"]
-                stack = params["stack"]
-                if stack:
-                    for stackEntry in stack:
-                        stackEntry[0] = self.translate(stackEntry[0], True)
-                    if stack[0] and stack[0][0] == "<string>":
-                        for stackEntry in stack:
-                            if stackEntry[0] == "<string>":
-                                stackEntry[0] = self.__scriptName
-                            else:
-                                break
-            else:
-                exctype = ''
-                excmessage = ''
-                stack = []
-            
-            self.debugServer.signalClientException(
-                exctype, excmessage, stack)
-        
-        elif method == "ResponseSyntax":
-            self.debugServer.signalClientSyntaxError(
-                params["message"], self.translate(params["filename"], True),
-                params["linenumber"], params["characternumber"])
-        
-        elif method == "ResponseSignal":
-            self.debugServer.signalClientSignal(
-                params["message"], self.translate(params["filename"], True),
-                params["linenumber"], params["function"], params["arguments"])
-        
-        elif method == "ResponseExit":
-            self.__scriptName = ""
-            self.debugServer.signalClientExit(
-                params["status"], params["message"])
-        
-        elif method == "PassiveStartup":
-            self.debugServer.passiveStartUp(
-                self.translate(params["filename"], True), params["exceptions"])
-        
-        elif method == "ResponseCompletion":
-            self.debugServer.signalClientCompletionList(
-                params["completions"], params["text"])
-        
-        elif method == "ResponseUTPrepared":
-            self.debugServer.clientUtPrepared(
-                params["count"], params["exception"], params["message"])
-        
-        elif method == "ResponseUTFinished":
-            self.debugServer.clientUtFinished()
-        
-        elif method == "ResponseUTStartTest":
-            self.debugServer.clientUtStartTest(
-                params["testname"], params["description"])
-        
-        elif method == "ResponseUTStopTest":
-            self.debugServer.clientUtStopTest()
-        
-        elif method == "ResponseUTTestFailed":
-            self.debugServer.clientUtTestFailed(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestErrored":
-            self.debugServer.clientUtTestErrored(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestSkipped":
-            self.debugServer.clientUtTestSkipped(
-                params["testname"], params["reason"], params["id"])
-        
-        elif method == "ResponseUTTestFailedExpected":
-            self.debugServer.clientUtTestFailedExpected(
-                params["testname"], params["traceback"], params["id"])
-        
-        elif method == "ResponseUTTestSucceededUnexpected":
-            self.debugServer.clientUtTestSucceededUnexpected(
-                params["testname"], params["id"])
-        
-        elif method == "RequestForkTo":
-            self.__askForkTo()
-    
-    def __sendJsonCommand(self, command, params):
-        """
-        Private method to send a single command to the client.
-        
-        @param command command name to be sent
-        @type str
-        @param params dictionary of named parameters for the command
-        @type dict
-        """
-        import json
-        
-        commandDict = {
-            "jsonrpc": "2.0",
-            "method": command,
-            "params": params,
-        }
-        cmd = json.dumps(commandDict) + '\n'
-        if self.qsock is not None:
-            self.qsock.write(cmd.encode('utf8', 'backslashreplace'))
-        else:
-            self.queue.append(cmd)
-    
-
-def createDebuggerInterfacePython3(debugServer, passive):
-    """
-    Module function to create a debugger interface instance.
-    
-        
-    @param debugServer reference to the debug server
-    @type DebugServer
-    @param passive flag indicating passive connection mode
-    @type bool
-    @return instantiated debugger interface
-    @rtype DebuggerInterfacePython
-    """
-    return DebuggerInterfacePython3(debugServer, passive)
-
-
-def getRegistryData():
-    """
-    Module function to get characterizing data for the debugger interface.
-    
-    @return tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
-    @rtype tuple of (str, int, list of str, function)
-    """
-    exts = []
-    for ext in Preferences.getDebugger("Python3Extensions").split():
-        if ext.startswith("."):
-            exts.append(ext)
-        else:
-            exts.append(".{0}".format(ext))
-    
-    if exts and Preferences.getDebugger("Python3Interpreter"):
-        return ["Python3", ClientDefaultCapabilities, exts,
-                createDebuggerInterfacePython3]
-    else:
-        return ["", 0, [], None]
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Help/source.qhp	Fri Sep 01 12:08:17 2017 +0200
@@ -54,8 +54,7 @@
             <section title="eric6.Debugger.DebugUI" ref="eric6.Debugger.DebugUI.html" />
             <section title="eric6.Debugger.DebugViewer" ref="eric6.Debugger.DebugViewer.html" />
             <section title="eric6.Debugger.DebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html" />
-            <section title="eric6.Debugger.DebuggerInterfacePython2" ref="eric6.Debugger.DebuggerInterfacePython2.html" />
-            <section title="eric6.Debugger.DebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython3.html" />
+            <section title="eric6.Debugger.DebuggerInterfacePython" ref="eric6.Debugger.DebuggerInterfacePython.html" />
             <section title="eric6.Debugger.EditBreakpointDialog" ref="eric6.Debugger.EditBreakpointDialog.html" />
             <section title="eric6.Debugger.EditWatchpointDialog" ref="eric6.Debugger.EditWatchpointDialog.html" />
             <section title="eric6.Debugger.ExceptionLogger" ref="eric6.Debugger.ExceptionLogger.html" />
@@ -1224,6 +1223,17 @@
               <section title="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog" ref="eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html" />
               <section title="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog" ref="eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html" />
             </section>
+            <section title="eric6.WebBrowser.SafeBrowsing" ref="index-eric6.WebBrowser.SafeBrowsing.html">
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.html" />
+              <section title="eric6.WebBrowser.SafeBrowsing.__init__" ref="eric6.WebBrowser.SafeBrowsing.__init__.html" />
+            </section>
             <section title="eric6.WebBrowser.Session" ref="index-eric6.WebBrowser.Session.html">
               <section title="eric6.WebBrowser.Session.SessionManager" ref="eric6.WebBrowser.Session.SessionManager.html" />
               <section title="eric6.WebBrowser.Session.SessionManagerDialog" ref="eric6.WebBrowser.Session.SessionManagerDialog.html" />
@@ -3673,102 +3683,54 @@
       <keyword name="DebuggerInterfaceNone.shutdown" id="DebuggerInterfaceNone.shutdown" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.shutdown" />
       <keyword name="DebuggerInterfaceNone.startRemote" id="DebuggerInterfaceNone.startRemote" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.startRemote" />
       <keyword name="DebuggerInterfaceNone.startRemoteForProject" id="DebuggerInterfaceNone.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfaceNone.html#DebuggerInterfaceNone.startRemoteForProject" />
-      <keyword name="DebuggerInterfacePython2" id="DebuggerInterfacePython2" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2" />
-      <keyword name="DebuggerInterfacePython2 (Constructor)" id="DebuggerInterfacePython2 (Constructor)" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__init__" />
-      <keyword name="DebuggerInterfacePython2 (Module)" id="DebuggerInterfacePython2 (Module)" ref="eric6.Debugger.DebuggerInterfacePython2.html" />
-      <keyword name="DebuggerInterfacePython2.__askForkTo" id="DebuggerInterfacePython2.__askForkTo" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__askForkTo" />
-      <keyword name="DebuggerInterfacePython2.__handleJsonCommand" id="DebuggerInterfacePython2.__handleJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__handleJsonCommand" />
-      <keyword name="DebuggerInterfacePython2.__identityTranslation" id="DebuggerInterfacePython2.__identityTranslation" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__identityTranslation" />
-      <keyword name="DebuggerInterfacePython2.__parseClientLine" id="DebuggerInterfacePython2.__parseClientLine" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__parseClientLine" />
-      <keyword name="DebuggerInterfacePython2.__remoteTranslation" id="DebuggerInterfacePython2.__remoteTranslation" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__remoteTranslation" />
-      <keyword name="DebuggerInterfacePython2.__sendJsonCommand" id="DebuggerInterfacePython2.__sendJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__sendJsonCommand" />
-      <keyword name="DebuggerInterfacePython2.__startProcess" id="DebuggerInterfacePython2.__startProcess" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.__startProcess" />
-      <keyword name="DebuggerInterfacePython2.flush" id="DebuggerInterfacePython2.flush" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.flush" />
-      <keyword name="DebuggerInterfacePython2.getClientCapabilities" id="DebuggerInterfacePython2.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.getClientCapabilities" />
-      <keyword name="DebuggerInterfacePython2.isConnected" id="DebuggerInterfacePython2.isConnected" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.isConnected" />
-      <keyword name="DebuggerInterfacePython2.newConnection" id="DebuggerInterfacePython2.newConnection" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.newConnection" />
-      <keyword name="DebuggerInterfacePython2.remoteBanner" id="DebuggerInterfacePython2.remoteBanner" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteBanner" />
-      <keyword name="DebuggerInterfacePython2.remoteBreakpoint" id="DebuggerInterfacePython2.remoteBreakpoint" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteBreakpoint" />
-      <keyword name="DebuggerInterfacePython2.remoteBreakpointEnable" id="DebuggerInterfacePython2.remoteBreakpointEnable" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteBreakpointEnable" />
-      <keyword name="DebuggerInterfacePython2.remoteBreakpointIgnore" id="DebuggerInterfacePython2.remoteBreakpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteBreakpointIgnore" />
-      <keyword name="DebuggerInterfacePython2.remoteCapabilities" id="DebuggerInterfacePython2.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteCapabilities" />
-      <keyword name="DebuggerInterfacePython2.remoteClientSetFilter" id="DebuggerInterfacePython2.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteClientSetFilter" />
-      <keyword name="DebuggerInterfacePython2.remoteClientVariable" id="DebuggerInterfacePython2.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteClientVariable" />
-      <keyword name="DebuggerInterfacePython2.remoteClientVariables" id="DebuggerInterfacePython2.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteClientVariables" />
-      <keyword name="DebuggerInterfacePython2.remoteCompletion" id="DebuggerInterfacePython2.remoteCompletion" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteCompletion" />
-      <keyword name="DebuggerInterfacePython2.remoteContinue" id="DebuggerInterfacePython2.remoteContinue" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteContinue" />
-      <keyword name="DebuggerInterfacePython2.remoteCoverage" id="DebuggerInterfacePython2.remoteCoverage" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteCoverage" />
-      <keyword name="DebuggerInterfacePython2.remoteEnvironment" id="DebuggerInterfacePython2.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteEnvironment" />
-      <keyword name="DebuggerInterfacePython2.remoteLoad" id="DebuggerInterfacePython2.remoteLoad" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteLoad" />
-      <keyword name="DebuggerInterfacePython2.remoteMoveIP" id="DebuggerInterfacePython2.remoteMoveIP" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteMoveIP" />
-      <keyword name="DebuggerInterfacePython2.remoteProfile" id="DebuggerInterfacePython2.remoteProfile" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteProfile" />
-      <keyword name="DebuggerInterfacePython2.remoteRawInput" id="DebuggerInterfacePython2.remoteRawInput" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteRawInput" />
-      <keyword name="DebuggerInterfacePython2.remoteRun" id="DebuggerInterfacePython2.remoteRun" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteRun" />
-      <keyword name="DebuggerInterfacePython2.remoteSetThread" id="DebuggerInterfacePython2.remoteSetThread" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteSetThread" />
-      <keyword name="DebuggerInterfacePython2.remoteStatement" id="DebuggerInterfacePython2.remoteStatement" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteStatement" />
-      <keyword name="DebuggerInterfacePython2.remoteStep" id="DebuggerInterfacePython2.remoteStep" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteStep" />
-      <keyword name="DebuggerInterfacePython2.remoteStepOut" id="DebuggerInterfacePython2.remoteStepOut" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteStepOut" />
-      <keyword name="DebuggerInterfacePython2.remoteStepOver" id="DebuggerInterfacePython2.remoteStepOver" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteStepOver" />
-      <keyword name="DebuggerInterfacePython2.remoteStepQuit" id="DebuggerInterfacePython2.remoteStepQuit" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteStepQuit" />
-      <keyword name="DebuggerInterfacePython2.remoteThreadList" id="DebuggerInterfacePython2.remoteThreadList" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteThreadList" />
-      <keyword name="DebuggerInterfacePython2.remoteUTPrepare" id="DebuggerInterfacePython2.remoteUTPrepare" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteUTPrepare" />
-      <keyword name="DebuggerInterfacePython2.remoteUTRun" id="DebuggerInterfacePython2.remoteUTRun" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteUTRun" />
-      <keyword name="DebuggerInterfacePython2.remoteUTStop" id="DebuggerInterfacePython2.remoteUTStop" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteUTStop" />
-      <keyword name="DebuggerInterfacePython2.remoteWatchpoint" id="DebuggerInterfacePython2.remoteWatchpoint" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteWatchpoint" />
-      <keyword name="DebuggerInterfacePython2.remoteWatchpointEnable" id="DebuggerInterfacePython2.remoteWatchpointEnable" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteWatchpointEnable" />
-      <keyword name="DebuggerInterfacePython2.remoteWatchpointIgnore" id="DebuggerInterfacePython2.remoteWatchpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.remoteWatchpointIgnore" />
-      <keyword name="DebuggerInterfacePython2.setCallTraceEnabled" id="DebuggerInterfacePython2.setCallTraceEnabled" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.setCallTraceEnabled" />
-      <keyword name="DebuggerInterfacePython2.shutdown" id="DebuggerInterfacePython2.shutdown" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.shutdown" />
-      <keyword name="DebuggerInterfacePython2.startRemote" id="DebuggerInterfacePython2.startRemote" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.startRemote" />
-      <keyword name="DebuggerInterfacePython2.startRemoteForProject" id="DebuggerInterfacePython2.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfacePython2.html#DebuggerInterfacePython2.startRemoteForProject" />
-      <keyword name="DebuggerInterfacePython3" id="DebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3" />
-      <keyword name="DebuggerInterfacePython3 (Constructor)" id="DebuggerInterfacePython3 (Constructor)" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__init__" />
-      <keyword name="DebuggerInterfacePython3 (Module)" id="DebuggerInterfacePython3 (Module)" ref="eric6.Debugger.DebuggerInterfacePython3.html" />
-      <keyword name="DebuggerInterfacePython3.__askForkTo" id="DebuggerInterfacePython3.__askForkTo" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__askForkTo" />
-      <keyword name="DebuggerInterfacePython3.__handleJsonCommand" id="DebuggerInterfacePython3.__handleJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__handleJsonCommand" />
-      <keyword name="DebuggerInterfacePython3.__identityTranslation" id="DebuggerInterfacePython3.__identityTranslation" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__identityTranslation" />
-      <keyword name="DebuggerInterfacePython3.__parseClientLine" id="DebuggerInterfacePython3.__parseClientLine" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__parseClientLine" />
-      <keyword name="DebuggerInterfacePython3.__remoteTranslation" id="DebuggerInterfacePython3.__remoteTranslation" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__remoteTranslation" />
-      <keyword name="DebuggerInterfacePython3.__sendJsonCommand" id="DebuggerInterfacePython3.__sendJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__sendJsonCommand" />
-      <keyword name="DebuggerInterfacePython3.__startProcess" id="DebuggerInterfacePython3.__startProcess" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.__startProcess" />
-      <keyword name="DebuggerInterfacePython3.flush" id="DebuggerInterfacePython3.flush" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.flush" />
-      <keyword name="DebuggerInterfacePython3.getClientCapabilities" id="DebuggerInterfacePython3.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.getClientCapabilities" />
-      <keyword name="DebuggerInterfacePython3.isConnected" id="DebuggerInterfacePython3.isConnected" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.isConnected" />
-      <keyword name="DebuggerInterfacePython3.newConnection" id="DebuggerInterfacePython3.newConnection" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.newConnection" />
-      <keyword name="DebuggerInterfacePython3.remoteBanner" id="DebuggerInterfacePython3.remoteBanner" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteBanner" />
-      <keyword name="DebuggerInterfacePython3.remoteBreakpoint" id="DebuggerInterfacePython3.remoteBreakpoint" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteBreakpoint" />
-      <keyword name="DebuggerInterfacePython3.remoteBreakpointEnable" id="DebuggerInterfacePython3.remoteBreakpointEnable" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteBreakpointEnable" />
-      <keyword name="DebuggerInterfacePython3.remoteBreakpointIgnore" id="DebuggerInterfacePython3.remoteBreakpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteBreakpointIgnore" />
-      <keyword name="DebuggerInterfacePython3.remoteCapabilities" id="DebuggerInterfacePython3.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteCapabilities" />
-      <keyword name="DebuggerInterfacePython3.remoteClientSetFilter" id="DebuggerInterfacePython3.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteClientSetFilter" />
-      <keyword name="DebuggerInterfacePython3.remoteClientVariable" id="DebuggerInterfacePython3.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteClientVariable" />
-      <keyword name="DebuggerInterfacePython3.remoteClientVariables" id="DebuggerInterfacePython3.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteClientVariables" />
-      <keyword name="DebuggerInterfacePython3.remoteCompletion" id="DebuggerInterfacePython3.remoteCompletion" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteCompletion" />
-      <keyword name="DebuggerInterfacePython3.remoteContinue" id="DebuggerInterfacePython3.remoteContinue" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteContinue" />
-      <keyword name="DebuggerInterfacePython3.remoteCoverage" id="DebuggerInterfacePython3.remoteCoverage" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteCoverage" />
-      <keyword name="DebuggerInterfacePython3.remoteEnvironment" id="DebuggerInterfacePython3.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteEnvironment" />
-      <keyword name="DebuggerInterfacePython3.remoteLoad" id="DebuggerInterfacePython3.remoteLoad" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteLoad" />
-      <keyword name="DebuggerInterfacePython3.remoteMoveIP" id="DebuggerInterfacePython3.remoteMoveIP" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteMoveIP" />
-      <keyword name="DebuggerInterfacePython3.remoteProfile" id="DebuggerInterfacePython3.remoteProfile" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteProfile" />
-      <keyword name="DebuggerInterfacePython3.remoteRawInput" id="DebuggerInterfacePython3.remoteRawInput" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteRawInput" />
-      <keyword name="DebuggerInterfacePython3.remoteRun" id="DebuggerInterfacePython3.remoteRun" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteRun" />
-      <keyword name="DebuggerInterfacePython3.remoteSetThread" id="DebuggerInterfacePython3.remoteSetThread" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteSetThread" />
-      <keyword name="DebuggerInterfacePython3.remoteStatement" id="DebuggerInterfacePython3.remoteStatement" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteStatement" />
-      <keyword name="DebuggerInterfacePython3.remoteStep" id="DebuggerInterfacePython3.remoteStep" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteStep" />
-      <keyword name="DebuggerInterfacePython3.remoteStepOut" id="DebuggerInterfacePython3.remoteStepOut" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteStepOut" />
-      <keyword name="DebuggerInterfacePython3.remoteStepOver" id="DebuggerInterfacePython3.remoteStepOver" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteStepOver" />
-      <keyword name="DebuggerInterfacePython3.remoteStepQuit" id="DebuggerInterfacePython3.remoteStepQuit" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteStepQuit" />
-      <keyword name="DebuggerInterfacePython3.remoteThreadList" id="DebuggerInterfacePython3.remoteThreadList" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteThreadList" />
-      <keyword name="DebuggerInterfacePython3.remoteUTPrepare" id="DebuggerInterfacePython3.remoteUTPrepare" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteUTPrepare" />
-      <keyword name="DebuggerInterfacePython3.remoteUTRun" id="DebuggerInterfacePython3.remoteUTRun" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteUTRun" />
-      <keyword name="DebuggerInterfacePython3.remoteUTStop" id="DebuggerInterfacePython3.remoteUTStop" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteUTStop" />
-      <keyword name="DebuggerInterfacePython3.remoteWatchpoint" id="DebuggerInterfacePython3.remoteWatchpoint" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpoint" />
-      <keyword name="DebuggerInterfacePython3.remoteWatchpointEnable" id="DebuggerInterfacePython3.remoteWatchpointEnable" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpointEnable" />
-      <keyword name="DebuggerInterfacePython3.remoteWatchpointIgnore" id="DebuggerInterfacePython3.remoteWatchpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.remoteWatchpointIgnore" />
-      <keyword name="DebuggerInterfacePython3.setCallTraceEnabled" id="DebuggerInterfacePython3.setCallTraceEnabled" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.setCallTraceEnabled" />
-      <keyword name="DebuggerInterfacePython3.shutdown" id="DebuggerInterfacePython3.shutdown" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.shutdown" />
-      <keyword name="DebuggerInterfacePython3.startRemote" id="DebuggerInterfacePython3.startRemote" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemote" />
-      <keyword name="DebuggerInterfacePython3.startRemoteForProject" id="DebuggerInterfacePython3.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfacePython3.html#DebuggerInterfacePython3.startRemoteForProject" />
+      <keyword name="DebuggerInterfacePython" id="DebuggerInterfacePython" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython" />
+      <keyword name="DebuggerInterfacePython (Constructor)" id="DebuggerInterfacePython (Constructor)" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__init__" />
+      <keyword name="DebuggerInterfacePython (Module)" id="DebuggerInterfacePython (Module)" ref="eric6.Debugger.DebuggerInterfacePython.html" />
+      <keyword name="DebuggerInterfacePython.__askForkTo" id="DebuggerInterfacePython.__askForkTo" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__askForkTo" />
+      <keyword name="DebuggerInterfacePython.__handleJsonCommand" id="DebuggerInterfacePython.__handleJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__handleJsonCommand" />
+      <keyword name="DebuggerInterfacePython.__identityTranslation" id="DebuggerInterfacePython.__identityTranslation" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__identityTranslation" />
+      <keyword name="DebuggerInterfacePython.__parseClientLine" id="DebuggerInterfacePython.__parseClientLine" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__parseClientLine" />
+      <keyword name="DebuggerInterfacePython.__remoteTranslation" id="DebuggerInterfacePython.__remoteTranslation" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__remoteTranslation" />
+      <keyword name="DebuggerInterfacePython.__sendJsonCommand" id="DebuggerInterfacePython.__sendJsonCommand" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__sendJsonCommand" />
+      <keyword name="DebuggerInterfacePython.__startProcess" id="DebuggerInterfacePython.__startProcess" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.__startProcess" />
+      <keyword name="DebuggerInterfacePython.flush" id="DebuggerInterfacePython.flush" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.flush" />
+      <keyword name="DebuggerInterfacePython.getClientCapabilities" id="DebuggerInterfacePython.getClientCapabilities" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.getClientCapabilities" />
+      <keyword name="DebuggerInterfacePython.isConnected" id="DebuggerInterfacePython.isConnected" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.isConnected" />
+      <keyword name="DebuggerInterfacePython.newConnection" id="DebuggerInterfacePython.newConnection" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.newConnection" />
+      <keyword name="DebuggerInterfacePython.remoteBanner" id="DebuggerInterfacePython.remoteBanner" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteBanner" />
+      <keyword name="DebuggerInterfacePython.remoteBreakpoint" id="DebuggerInterfacePython.remoteBreakpoint" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteBreakpoint" />
+      <keyword name="DebuggerInterfacePython.remoteBreakpointEnable" id="DebuggerInterfacePython.remoteBreakpointEnable" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteBreakpointEnable" />
+      <keyword name="DebuggerInterfacePython.remoteBreakpointIgnore" id="DebuggerInterfacePython.remoteBreakpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteBreakpointIgnore" />
+      <keyword name="DebuggerInterfacePython.remoteCapabilities" id="DebuggerInterfacePython.remoteCapabilities" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteCapabilities" />
+      <keyword name="DebuggerInterfacePython.remoteClientSetFilter" id="DebuggerInterfacePython.remoteClientSetFilter" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientSetFilter" />
+      <keyword name="DebuggerInterfacePython.remoteClientVariable" id="DebuggerInterfacePython.remoteClientVariable" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientVariable" />
+      <keyword name="DebuggerInterfacePython.remoteClientVariables" id="DebuggerInterfacePython.remoteClientVariables" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteClientVariables" />
+      <keyword name="DebuggerInterfacePython.remoteCompletion" id="DebuggerInterfacePython.remoteCompletion" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteCompletion" />
+      <keyword name="DebuggerInterfacePython.remoteContinue" id="DebuggerInterfacePython.remoteContinue" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteContinue" />
+      <keyword name="DebuggerInterfacePython.remoteCoverage" id="DebuggerInterfacePython.remoteCoverage" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteCoverage" />
+      <keyword name="DebuggerInterfacePython.remoteEnvironment" id="DebuggerInterfacePython.remoteEnvironment" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteEnvironment" />
+      <keyword name="DebuggerInterfacePython.remoteLoad" id="DebuggerInterfacePython.remoteLoad" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteLoad" />
+      <keyword name="DebuggerInterfacePython.remoteMoveIP" id="DebuggerInterfacePython.remoteMoveIP" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteMoveIP" />
+      <keyword name="DebuggerInterfacePython.remoteProfile" id="DebuggerInterfacePython.remoteProfile" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteProfile" />
+      <keyword name="DebuggerInterfacePython.remoteRawInput" id="DebuggerInterfacePython.remoteRawInput" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteRawInput" />
+      <keyword name="DebuggerInterfacePython.remoteRun" id="DebuggerInterfacePython.remoteRun" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteRun" />
+      <keyword name="DebuggerInterfacePython.remoteSetThread" id="DebuggerInterfacePython.remoteSetThread" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteSetThread" />
+      <keyword name="DebuggerInterfacePython.remoteStatement" id="DebuggerInterfacePython.remoteStatement" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteStatement" />
+      <keyword name="DebuggerInterfacePython.remoteStep" id="DebuggerInterfacePython.remoteStep" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteStep" />
+      <keyword name="DebuggerInterfacePython.remoteStepOut" id="DebuggerInterfacePython.remoteStepOut" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteStepOut" />
+      <keyword name="DebuggerInterfacePython.remoteStepOver" id="DebuggerInterfacePython.remoteStepOver" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteStepOver" />
+      <keyword name="DebuggerInterfacePython.remoteStepQuit" id="DebuggerInterfacePython.remoteStepQuit" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteStepQuit" />
+      <keyword name="DebuggerInterfacePython.remoteThreadList" id="DebuggerInterfacePython.remoteThreadList" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteThreadList" />
+      <keyword name="DebuggerInterfacePython.remoteUTPrepare" id="DebuggerInterfacePython.remoteUTPrepare" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteUTPrepare" />
+      <keyword name="DebuggerInterfacePython.remoteUTRun" id="DebuggerInterfacePython.remoteUTRun" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteUTRun" />
+      <keyword name="DebuggerInterfacePython.remoteUTStop" id="DebuggerInterfacePython.remoteUTStop" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteUTStop" />
+      <keyword name="DebuggerInterfacePython.remoteWatchpoint" id="DebuggerInterfacePython.remoteWatchpoint" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpoint" />
+      <keyword name="DebuggerInterfacePython.remoteWatchpointEnable" id="DebuggerInterfacePython.remoteWatchpointEnable" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpointEnable" />
+      <keyword name="DebuggerInterfacePython.remoteWatchpointIgnore" id="DebuggerInterfacePython.remoteWatchpointIgnore" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.remoteWatchpointIgnore" />
+      <keyword name="DebuggerInterfacePython.setCallTraceEnabled" id="DebuggerInterfacePython.setCallTraceEnabled" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.setCallTraceEnabled" />
+      <keyword name="DebuggerInterfacePython.shutdown" id="DebuggerInterfacePython.shutdown" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.shutdown" />
+      <keyword name="DebuggerInterfacePython.startRemote" id="DebuggerInterfacePython.startRemote" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.startRemote" />
+      <keyword name="DebuggerInterfacePython.startRemoteForProject" id="DebuggerInterfacePython.startRemoteForProject" ref="eric6.Debugger.DebuggerInterfacePython.html#DebuggerInterfacePython.startRemoteForProject" />
       <keyword name="DebuggerPropertiesDialog" id="DebuggerPropertiesDialog" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog" />
       <keyword name="DebuggerPropertiesDialog (Constructor)" id="DebuggerPropertiesDialog (Constructor)" ref="eric6.Project.DebuggerPropertiesDialog.html#DebuggerPropertiesDialog.__init__" />
       <keyword name="DebuggerPropertiesDialog (Module)" id="DebuggerPropertiesDialog (Module)" ref="eric6.Project.DebuggerPropertiesDialog.html" />
@@ -4185,6 +4147,7 @@
       <keyword name="E5ErrorMessageFilterDialog" id="E5ErrorMessageFilterDialog" ref="eric6.E5Gui.E5ErrorMessageFilterDialog.html#E5ErrorMessageFilterDialog" />
       <keyword name="E5ErrorMessageFilterDialog (Constructor)" id="E5ErrorMessageFilterDialog (Constructor)" ref="eric6.E5Gui.E5ErrorMessageFilterDialog.html#E5ErrorMessageFilterDialog.__init__" />
       <keyword name="E5ErrorMessageFilterDialog (Module)" id="E5ErrorMessageFilterDialog (Module)" ref="eric6.E5Gui.E5ErrorMessageFilterDialog.html" />
+      <keyword name="E5ErrorMessageFilterDialog.__setToDefault" id="E5ErrorMessageFilterDialog.__setToDefault" ref="eric6.E5Gui.E5ErrorMessageFilterDialog.html#E5ErrorMessageFilterDialog.__setToDefault" />
       <keyword name="E5ErrorMessageFilterDialog.getFilters" id="E5ErrorMessageFilterDialog.getFilters" ref="eric6.E5Gui.E5ErrorMessageFilterDialog.html#E5ErrorMessageFilterDialog.getFilters" />
       <keyword name="E5FileCompleter" id="E5FileCompleter" ref="eric6.E5Gui.E5Completers.html#E5FileCompleter" />
       <keyword name="E5FileCompleter (Constructor)" id="E5FileCompleter (Constructor)" ref="eric6.E5Gui.E5Completers.html#E5FileCompleter.__init__" />
@@ -4652,6 +4615,7 @@
       <keyword name="E5StringListEditWidget (Module)" id="E5StringListEditWidget (Module)" ref="eric6.E5Gui.E5StringListEditWidget.html" />
       <keyword name="E5StringListEditWidget.getList" id="E5StringListEditWidget.getList" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.getList" />
       <keyword name="E5StringListEditWidget.on_addButton_clicked" id="E5StringListEditWidget.on_addButton_clicked" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.on_addButton_clicked" />
+      <keyword name="E5StringListEditWidget.setDefaultVisible" id="E5StringListEditWidget.setDefaultVisible" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setDefaultVisible" />
       <keyword name="E5StringListEditWidget.setList" id="E5StringListEditWidget.setList" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setList" />
       <keyword name="E5StringListEditWidget.setListWhatsThis" id="E5StringListEditWidget.setListWhatsThis" ref="eric6.E5Gui.E5StringListEditWidget.html#E5StringListEditWidget.setListWhatsThis" />
       <keyword name="E5TabWidget" id="E5TabWidget" ref="eric6.E5Gui.E5TabWidget.html#E5TabWidget" />
@@ -5587,6 +5551,8 @@
       <keyword name="ExporterHTML" id="ExporterHTML" ref="eric6.QScintilla.Exporters.ExporterHTML.html#ExporterHTML" />
       <keyword name="ExporterHTML (Constructor)" id="ExporterHTML (Constructor)" ref="eric6.QScintilla.Exporters.ExporterHTML.html#ExporterHTML.__init__" />
       <keyword name="ExporterHTML (Module)" id="ExporterHTML (Module)" ref="eric6.QScintilla.Exporters.ExporterHTML.html" />
+      <keyword name="ExporterHTML.__generateFromMarkdown" id="ExporterHTML.__generateFromMarkdown" ref="eric6.QScintilla.Exporters.ExporterHTML.html#ExporterHTML.__generateFromMarkdown" />
+      <keyword name="ExporterHTML.__generateFromReSTDocutils" id="ExporterHTML.__generateFromReSTDocutils" ref="eric6.QScintilla.Exporters.ExporterHTML.html#ExporterHTML.__generateFromReSTDocutils" />
       <keyword name="ExporterHTML.exportSource" id="ExporterHTML.exportSource" ref="eric6.QScintilla.Exporters.ExporterHTML.html#ExporterHTML.exportSource" />
       <keyword name="ExporterODT" id="ExporterODT" ref="eric6.QScintilla.Exporters.ExporterODT.html#ExporterODT" />
       <keyword name="ExporterODT (Constructor)" id="ExporterODT (Constructor)" ref="eric6.QScintilla.Exporters.ExporterODT.html#ExporterODT.__init__" />
@@ -6391,6 +6357,10 @@
       <keyword name="HTMLGenerator" id="HTMLGenerator" ref="eric6.QScintilla.Exporters.ExporterHTML.html#HTMLGenerator" />
       <keyword name="HTMLGenerator (Constructor)" id="HTMLGenerator (Constructor)" ref="eric6.QScintilla.Exporters.ExporterHTML.html#HTMLGenerator.__init__" />
       <keyword name="HTMLGenerator.generate" id="HTMLGenerator.generate" ref="eric6.QScintilla.Exporters.ExporterHTML.html#HTMLGenerator.generate" />
+      <keyword name="HashPrefixList" id="HashPrefixList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#HashPrefixList" />
+      <keyword name="HashPrefixList (Constructor)" id="HashPrefixList (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#HashPrefixList.__init__" />
+      <keyword name="HashPrefixList.__iter__" id="HashPrefixList.__iter__" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#HashPrefixList.__iter__" />
+      <keyword name="HashPrefixList.__len__" id="HashPrefixList.__len__" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#HashPrefixList.__len__" />
       <keyword name="HashableWrapper" id="HashableWrapper" ref="eric6.Utilities.binplistlib.html#HashableWrapper" />
       <keyword name="HashableWrapper (Constructor)" id="HashableWrapper (Constructor)" ref="eric6.Utilities.binplistlib.html#HashableWrapper.__init__" />
       <keyword name="HashableWrapper.__repr__" id="HashableWrapper.__repr__" ref="eric6.Utilities.binplistlib.html#HashableWrapper.__repr__" />
@@ -9741,6 +9711,7 @@
       <keyword name="MimeTypesPage" id="MimeTypesPage" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html#MimeTypesPage" />
       <keyword name="MimeTypesPage (Constructor)" id="MimeTypesPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html#MimeTypesPage.__init__" />
       <keyword name="MimeTypesPage (Module)" id="MimeTypesPage (Module)" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html" />
+      <keyword name="MimeTypesPage.__setToDefault" id="MimeTypesPage.__setToDefault" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html#MimeTypesPage.__setToDefault" />
       <keyword name="MimeTypesPage.on_resetButton_clicked" id="MimeTypesPage.on_resetButton_clicked" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html#MimeTypesPage.on_resetButton_clicked" />
       <keyword name="MimeTypesPage.save" id="MimeTypesPage.save" ref="eric6.Preferences.ConfigurationPages.MimeTypesPage.html#MimeTypesPage.save" />
       <keyword name="MiniEditor" id="MiniEditor" ref="eric6.QScintilla.MiniEditor.html#MiniEditor" />
@@ -11003,6 +10974,7 @@
       <keyword name="PreviewProcessingThread.__convertReSTDocutils" id="PreviewProcessingThread.__convertReSTDocutils" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__convertReSTDocutils" />
       <keyword name="PreviewProcessingThread.__convertReSTSphinx" id="PreviewProcessingThread.__convertReSTSphinx" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__convertReSTSphinx" />
       <keyword name="PreviewProcessingThread.__getHtml" id="PreviewProcessingThread.__getHtml" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__getHtml" />
+      <keyword name="PreviewProcessingThread.__processRootPath" id="PreviewProcessingThread.__processRootPath" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__processRootPath" />
       <keyword name="PreviewProcessingThread.__processSSI" id="PreviewProcessingThread.__processSSI" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.__processSSI" />
       <keyword name="PreviewProcessingThread.process" id="PreviewProcessingThread.process" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.process" />
       <keyword name="PreviewProcessingThread.run" id="PreviewProcessingThread.run" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewProcessingThread.run" />
@@ -11027,6 +10999,7 @@
       <keyword name="PreviewerHTML.__saveScrollBarPositions" id="PreviewerHTML.__saveScrollBarPositions" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.__saveScrollBarPositions" />
       <keyword name="PreviewerHTML.__setHtml" id="PreviewerHTML.__setHtml" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.__setHtml" />
       <keyword name="PreviewerHTML.__setJavaScriptEnabled" id="PreviewerHTML.__setJavaScriptEnabled" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.__setJavaScriptEnabled" />
+      <keyword name="PreviewerHTML.__showLink" id="PreviewerHTML.__showLink" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.__showLink" />
       <keyword name="PreviewerHTML.on_jsCheckBox_clicked" id="PreviewerHTML.on_jsCheckBox_clicked" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.on_jsCheckBox_clicked" />
       <keyword name="PreviewerHTML.on_previewView_linkClicked" id="PreviewerHTML.on_previewView_linkClicked" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.on_previewView_linkClicked" />
       <keyword name="PreviewerHTML.on_previewView_titleChanged" id="PreviewerHTML.on_previewView_titleChanged" ref="eric6.UI.Previewers.PreviewerHTML.html#PreviewerHTML.on_previewView_titleChanged" />
@@ -12298,6 +12271,113 @@
       <keyword name="SafariImporter.open" id="SafariImporter.open" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.SafariImporter.html#SafariImporter.open" />
       <keyword name="SafariImporter.setPath" id="SafariImporter.setPath" ref="eric6.Helpviewer.Bookmarks.BookmarksImporters.SafariImporter.html#SafariImporter.setPath" />
       <keyword name="SafariImporter.setPath" id="SafariImporter.setPath" ref="eric6.WebBrowser.Bookmarks.BookmarksImporters.SafariImporter.html#SafariImporter.setPath" />
+      <keyword name="SafeBrowsing (Package)" id="SafeBrowsing (Package)" ref="index-eric6.WebBrowser.SafeBrowsing.html" />
+      <keyword name="SafeBrowsingAPIClient" id="SafeBrowsingAPIClient" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient" />
+      <keyword name="SafeBrowsingAPIClient (Constructor)" id="SafeBrowsingAPIClient (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.__init__" />
+      <keyword name="SafeBrowsingAPIClient (Module)" id="SafeBrowsingAPIClient (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html" />
+      <keyword name="SafeBrowsingAPIClient.__extractData" id="SafeBrowsingAPIClient.__extractData" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.__extractData" />
+      <keyword name="SafeBrowsingAPIClient.__setWaitDuration" id="SafeBrowsingAPIClient.__setWaitDuration" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.__setWaitDuration" />
+      <keyword name="SafeBrowsingAPIClient.fairUseDelayExpired" id="SafeBrowsingAPIClient.fairUseDelayExpired" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.fairUseDelayExpired" />
+      <keyword name="SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime" id="SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime" />
+      <keyword name="SafeBrowsingAPIClient.getFullHashes" id="SafeBrowsingAPIClient.getFullHashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getFullHashes" />
+      <keyword name="SafeBrowsingAPIClient.getPlatformString" id="SafeBrowsingAPIClient.getPlatformString" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getPlatformString" />
+      <keyword name="SafeBrowsingAPIClient.getPlatformTypes" id="SafeBrowsingAPIClient.getPlatformTypes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getPlatformTypes" />
+      <keyword name="SafeBrowsingAPIClient.getThreatEntryString" id="SafeBrowsingAPIClient.getThreatEntryString" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getThreatEntryString" />
+      <keyword name="SafeBrowsingAPIClient.getThreatLists" id="SafeBrowsingAPIClient.getThreatLists" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getThreatLists" />
+      <keyword name="SafeBrowsingAPIClient.getThreatMessage" id="SafeBrowsingAPIClient.getThreatMessage" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getThreatMessage" />
+      <keyword name="SafeBrowsingAPIClient.getThreatType" id="SafeBrowsingAPIClient.getThreatType" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getThreatType" />
+      <keyword name="SafeBrowsingAPIClient.getThreatsUpdate" id="SafeBrowsingAPIClient.getThreatsUpdate" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.getThreatsUpdate" />
+      <keyword name="SafeBrowsingAPIClient.setApiKey" id="SafeBrowsingAPIClient.setApiKey" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html#SafeBrowsingAPIClient.setApiKey" />
+      <keyword name="SafeBrowsingCache" id="SafeBrowsingCache" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache" />
+      <keyword name="SafeBrowsingCache (Constructor)" id="SafeBrowsingCache (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.__init__" />
+      <keyword name="SafeBrowsingCache (Module)" id="SafeBrowsingCache (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html" />
+      <keyword name="SafeBrowsingCache.__openCacheDb" id="SafeBrowsingCache.__openCacheDb" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.__openCacheDb" />
+      <keyword name="SafeBrowsingCache.addThreatList" id="SafeBrowsingCache.addThreatList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.addThreatList" />
+      <keyword name="SafeBrowsingCache.cleanupFullHashes" id="SafeBrowsingCache.cleanupFullHashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.cleanupFullHashes" />
+      <keyword name="SafeBrowsingCache.close" id="SafeBrowsingCache.close" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.close" />
+      <keyword name="SafeBrowsingCache.deleteHashPrefixList" id="SafeBrowsingCache.deleteHashPrefixList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.deleteHashPrefixList" />
+      <keyword name="SafeBrowsingCache.deleteThreatList" id="SafeBrowsingCache.deleteThreatList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.deleteThreatList" />
+      <keyword name="SafeBrowsingCache.getHashPrefixValuesToRemove" id="SafeBrowsingCache.getHashPrefixValuesToRemove" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.getHashPrefixValuesToRemove" />
+      <keyword name="SafeBrowsingCache.getThreatLists" id="SafeBrowsingCache.getThreatLists" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.getThreatLists" />
+      <keyword name="SafeBrowsingCache.hashPrefixListChecksum" id="SafeBrowsingCache.hashPrefixListChecksum" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.hashPrefixListChecksum" />
+      <keyword name="SafeBrowsingCache.lookupFullHashes" id="SafeBrowsingCache.lookupFullHashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.lookupFullHashes" />
+      <keyword name="SafeBrowsingCache.lookupHashPrefix" id="SafeBrowsingCache.lookupHashPrefix" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.lookupHashPrefix" />
+      <keyword name="SafeBrowsingCache.populateHashPrefixList" id="SafeBrowsingCache.populateHashPrefixList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.populateHashPrefixList" />
+      <keyword name="SafeBrowsingCache.prepareCacheDb" id="SafeBrowsingCache.prepareCacheDb" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.prepareCacheDb" />
+      <keyword name="SafeBrowsingCache.removeHashPrefixIndices" id="SafeBrowsingCache.removeHashPrefixIndices" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.removeHashPrefixIndices" />
+      <keyword name="SafeBrowsingCache.storeFullHash" id="SafeBrowsingCache.storeFullHash" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.storeFullHash" />
+      <keyword name="SafeBrowsingCache.updateHashPrefixExpiration" id="SafeBrowsingCache.updateHashPrefixExpiration" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.updateHashPrefixExpiration" />
+      <keyword name="SafeBrowsingCache.updateThreatListClientState" id="SafeBrowsingCache.updateThreatListClientState" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#SafeBrowsingCache.updateThreatListClientState" />
+      <keyword name="SafeBrowsingDialog" id="SafeBrowsingDialog" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog" />
+      <keyword name="SafeBrowsingDialog (Constructor)" id="SafeBrowsingDialog (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__init__" />
+      <keyword name="SafeBrowsingDialog (Module)" id="SafeBrowsingDialog (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html" />
+      <keyword name="SafeBrowsingDialog.__isModified" id="SafeBrowsingDialog.__isModified" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__isModified" />
+      <keyword name="SafeBrowsingDialog.__okToClose" id="SafeBrowsingDialog.__okToClose" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__okToClose" />
+      <keyword name="SafeBrowsingDialog.__resetProgress" id="SafeBrowsingDialog.__resetProgress" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__resetProgress" />
+      <keyword name="SafeBrowsingDialog.__save" id="SafeBrowsingDialog.__save" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__save" />
+      <keyword name="SafeBrowsingDialog.__setProgress" id="SafeBrowsingDialog.__setProgress" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__setProgress" />
+      <keyword name="SafeBrowsingDialog.__setProgressMessage" id="SafeBrowsingDialog.__setProgressMessage" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__setProgressMessage" />
+      <keyword name="SafeBrowsingDialog.__updateCacheButtons" id="SafeBrowsingDialog.__updateCacheButtons" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.__updateCacheButtons" />
+      <keyword name="SafeBrowsingDialog.closeEvent" id="SafeBrowsingDialog.closeEvent" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.closeEvent" />
+      <keyword name="SafeBrowsingDialog.on_buttonBox_clicked" id="SafeBrowsingDialog.on_buttonBox_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_buttonBox_clicked" />
+      <keyword name="SafeBrowsingDialog.on_clearCacheButton_clicked" id="SafeBrowsingDialog.on_clearCacheButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_clearCacheButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_gsbHelpButton_clicked" id="SafeBrowsingDialog.on_gsbHelpButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_gsbHelpButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_saveButton_clicked" id="SafeBrowsingDialog.on_saveButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_saveButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_showUpdateTimeButton_clicked" id="SafeBrowsingDialog.on_showUpdateTimeButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_showUpdateTimeButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_updateCacheButton_clicked" id="SafeBrowsingDialog.on_updateCacheButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_updateCacheButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_urlCheckButton_clicked" id="SafeBrowsingDialog.on_urlCheckButton_clicked" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_urlCheckButton_clicked" />
+      <keyword name="SafeBrowsingDialog.on_urlEdit_textChanged" id="SafeBrowsingDialog.on_urlEdit_textChanged" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.on_urlEdit_textChanged" />
+      <keyword name="SafeBrowsingDialog.show" id="SafeBrowsingDialog.show" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html#SafeBrowsingDialog.show" />
+      <keyword name="SafeBrowsingHelp" id="SafeBrowsingHelp" ref="eric6.WebBrowser.SafeBrowsing.__init__.html#SafeBrowsingHelp" />
+      <keyword name="SafeBrowsingInfoWidget" id="SafeBrowsingInfoWidget" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html#SafeBrowsingInfoWidget" />
+      <keyword name="SafeBrowsingInfoWidget (Constructor)" id="SafeBrowsingInfoWidget (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html#SafeBrowsingInfoWidget.__init__" />
+      <keyword name="SafeBrowsingInfoWidget (Module)" id="SafeBrowsingInfoWidget (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html" />
+      <keyword name="SafeBrowsingInfoWidget.showAt" id="SafeBrowsingInfoWidget.showAt" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html#SafeBrowsingInfoWidget.showAt" />
+      <keyword name="SafeBrowsingLabel" id="SafeBrowsingLabel" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel" />
+      <keyword name="SafeBrowsingLabel (Constructor)" id="SafeBrowsingLabel (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.__init__" />
+      <keyword name="SafeBrowsingLabel (Module)" id="SafeBrowsingLabel (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html" />
+      <keyword name="SafeBrowsingLabel.__updateLabel" id="SafeBrowsingLabel.__updateLabel" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.__updateLabel" />
+      <keyword name="SafeBrowsingLabel.getThreatInfo" id="SafeBrowsingLabel.getThreatInfo" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.getThreatInfo" />
+      <keyword name="SafeBrowsingLabel.mouseDoubleClickEvent" id="SafeBrowsingLabel.mouseDoubleClickEvent" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.mouseDoubleClickEvent" />
+      <keyword name="SafeBrowsingLabel.mouseReleaseEvent" id="SafeBrowsingLabel.mouseReleaseEvent" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.mouseReleaseEvent" />
+      <keyword name="SafeBrowsingLabel.setThreatInfo" id="SafeBrowsingLabel.setThreatInfo" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html#SafeBrowsingLabel.setThreatInfo" />
+      <keyword name="SafeBrowsingManager" id="SafeBrowsingManager" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager" />
+      <keyword name="SafeBrowsingManager (Constructor)" id="SafeBrowsingManager (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__init__" />
+      <keyword name="SafeBrowsingManager (Module)" id="SafeBrowsingManager (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html" />
+      <keyword name="SafeBrowsingManager.__lookupHashes" id="SafeBrowsingManager.__lookupHashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__lookupHashes" />
+      <keyword name="SafeBrowsingManager.__setAutoUpdateThreatLists" id="SafeBrowsingManager.__setAutoUpdateThreatLists" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__setAutoUpdateThreatLists" />
+      <keyword name="SafeBrowsingManager.__setPlatforms" id="SafeBrowsingManager.__setPlatforms" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__setPlatforms" />
+      <keyword name="SafeBrowsingManager.__showNotificationMessage" id="SafeBrowsingManager.__showNotificationMessage" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__showNotificationMessage" />
+      <keyword name="SafeBrowsingManager.__syncFullHashes" id="SafeBrowsingManager.__syncFullHashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__syncFullHashes" />
+      <keyword name="SafeBrowsingManager.__threatListsUpdateTimerTimeout" id="SafeBrowsingManager.__threatListsUpdateTimerTimeout" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__threatListsUpdateTimerTimeout" />
+      <keyword name="SafeBrowsingManager.__verifyThreatListChecksum" id="SafeBrowsingManager.__verifyThreatListChecksum" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.__verifyThreatListChecksum" />
+      <keyword name="SafeBrowsingManager.close" id="SafeBrowsingManager.close" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.close" />
+      <keyword name="SafeBrowsingManager.configurationChanged" id="SafeBrowsingManager.configurationChanged" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.configurationChanged" />
+      <keyword name="SafeBrowsingManager.fairUseDelayExpired" id="SafeBrowsingManager.fairUseDelayExpired" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.fairUseDelayExpired" />
+      <keyword name="SafeBrowsingManager.fullCacheCleanup" id="SafeBrowsingManager.fullCacheCleanup" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.fullCacheCleanup" />
+      <keyword name="SafeBrowsingManager.getIgnoreSchemes" id="SafeBrowsingManager.getIgnoreSchemes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getIgnoreSchemes" />
+      <keyword name="SafeBrowsingManager.getPlatformString" id="SafeBrowsingManager.getPlatformString" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getPlatformString" />
+      <keyword name="SafeBrowsingManager.getThreatEntryString" id="SafeBrowsingManager.getThreatEntryString" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getThreatEntryString" />
+      <keyword name="SafeBrowsingManager.getThreatMessage" id="SafeBrowsingManager.getThreatMessage" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getThreatMessage" />
+      <keyword name="SafeBrowsingManager.getThreatMessages" id="SafeBrowsingManager.getThreatMessages" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getThreatMessages" />
+      <keyword name="SafeBrowsingManager.getThreatType" id="SafeBrowsingManager.getThreatType" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.getThreatType" />
+      <keyword name="SafeBrowsingManager.isEnabled" id="SafeBrowsingManager.isEnabled" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.isEnabled" />
+      <keyword name="SafeBrowsingManager.isUpdatingThreatLists" id="SafeBrowsingManager.isUpdatingThreatLists" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.isUpdatingThreatLists" />
+      <keyword name="SafeBrowsingManager.lookupUrl" id="SafeBrowsingManager.lookupUrl" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.lookupUrl" />
+      <keyword name="SafeBrowsingManager.showSafeBrowsingDialog" id="SafeBrowsingManager.showSafeBrowsingDialog" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.showSafeBrowsingDialog" />
+      <keyword name="SafeBrowsingManager.updateHashPrefixCache" id="SafeBrowsingManager.updateHashPrefixCache" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html#SafeBrowsingManager.updateHashPrefixCache" />
+      <keyword name="SafeBrowsingUrl" id="SafeBrowsingUrl" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl" />
+      <keyword name="SafeBrowsingUrl (Constructor)" id="SafeBrowsingUrl (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.__init__" />
+      <keyword name="SafeBrowsingUrl (Module)" id="SafeBrowsingUrl (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html" />
+      <keyword name="SafeBrowsingUrl.canonical" id="SafeBrowsingUrl.canonical" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.canonical" />
+      <keyword name="SafeBrowsingUrl.digest" id="SafeBrowsingUrl.digest" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.digest" />
+      <keyword name="SafeBrowsingUrl.fullUnescape" id="SafeBrowsingUrl.fullUnescape" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.fullUnescape" />
+      <keyword name="SafeBrowsingUrl.hashes" id="SafeBrowsingUrl.hashes" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.hashes" />
+      <keyword name="SafeBrowsingUrl.hostPermutations" id="SafeBrowsingUrl.hostPermutations" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.hostPermutations" />
+      <keyword name="SafeBrowsingUrl.pathPermutations" id="SafeBrowsingUrl.pathPermutations" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.pathPermutations" />
+      <keyword name="SafeBrowsingUrl.permutations" id="SafeBrowsingUrl.permutations" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.permutations" />
+      <keyword name="SafeBrowsingUrl.quote" id="SafeBrowsingUrl.quote" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html#SafeBrowsingUrl.quote" />
+      <keyword name="SafeBrowsingUtilities (Module)" id="SafeBrowsingUtilities (Module)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.html" />
       <keyword name="SchemeAccessHandler" id="SchemeAccessHandler" ref="eric6.Helpviewer.Network.SchemeAccessHandler.html#SchemeAccessHandler" />
       <keyword name="SchemeAccessHandler (Constructor)" id="SchemeAccessHandler (Constructor)" ref="eric6.Helpviewer.Network.SchemeAccessHandler.html#SchemeAccessHandler.__init__" />
       <keyword name="SchemeAccessHandler (Module)" id="SchemeAccessHandler (Module)" ref="eric6.Helpviewer.Network.SchemeAccessHandler.html" />
@@ -14549,6 +14629,11 @@
       <keyword name="ThreadExtension.updateThreadList" id="ThreadExtension.updateThreadList" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadExtension.updateThreadList" />
       <keyword name="ThreadWrapper" id="ThreadWrapper" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadWrapper" />
       <keyword name="ThreadWrapper (Constructor)" id="ThreadWrapper (Constructor)" ref="eric6.DebugClients.Python.ThreadExtension.html#ThreadWrapper.__init__" />
+      <keyword name="ThreatList" id="ThreatList" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#ThreatList" />
+      <keyword name="ThreatList (Constructor)" id="ThreatList (Constructor)" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#ThreatList.__init__" />
+      <keyword name="ThreatList.__repr__" id="ThreatList.__repr__" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#ThreatList.__repr__" />
+      <keyword name="ThreatList.asTuple" id="ThreatList.asTuple" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#ThreatList.asTuple" />
+      <keyword name="ThreatList.fromApiEntry" id="ThreatList.fromApiEntry" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html#ThreatList.fromApiEntry" />
       <keyword name="Token" id="Token" ref="eric6.DataViews.CodeMetrics.html#Token" />
       <keyword name="Token" id="Token" ref="eric6.E5Network.E5RFC6266.html#Token" />
       <keyword name="Token (Constructor)" id="Token (Constructor)" ref="eric6.DataViews.CodeMetrics.html#Token.__init__" />
@@ -14832,6 +14917,7 @@
       <keyword name="UrlBar.__setRssButton" id="UrlBar.__setRssButton" ref="eric6.WebBrowser.UrlBar.UrlBar.html#UrlBar.__setRssButton" />
       <keyword name="UrlBar.__showBookmarkInfo" id="UrlBar.__showBookmarkInfo" ref="eric6.Helpviewer.UrlBar.UrlBar.html#UrlBar.__showBookmarkInfo" />
       <keyword name="UrlBar.__showBookmarkInfo" id="UrlBar.__showBookmarkInfo" ref="eric6.WebBrowser.UrlBar.UrlBar.html#UrlBar.__showBookmarkInfo" />
+      <keyword name="UrlBar.__showThreatInfo" id="UrlBar.__showThreatInfo" ref="eric6.WebBrowser.UrlBar.UrlBar.html#UrlBar.__showThreatInfo" />
       <keyword name="UrlBar.__textChanged" id="UrlBar.__textChanged" ref="eric6.Helpviewer.UrlBar.UrlBar.html#UrlBar.__textChanged" />
       <keyword name="UrlBar.__textChanged" id="UrlBar.__textChanged" ref="eric6.WebBrowser.UrlBar.UrlBar.html#UrlBar.__textChanged" />
       <keyword name="UrlBar.browser" id="UrlBar.browser" ref="eric6.Helpviewer.UrlBar.UrlBar.html#UrlBar.browser" />
@@ -15848,6 +15934,7 @@
       <keyword name="WebBrowserPage.certificateError" id="WebBrowserPage.certificateError" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.certificateError" />
       <keyword name="WebBrowserPage.execJavaScript" id="WebBrowserPage.execJavaScript" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.execJavaScript" />
       <keyword name="WebBrowserPage.execPrintPage" id="WebBrowserPage.execPrintPage" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.execPrintPage" />
+      <keyword name="WebBrowserPage.getSafeBrowsingStatus" id="WebBrowserPage.getSafeBrowsingStatus" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.getSafeBrowsingStatus" />
       <keyword name="WebBrowserPage.hitTestContent" id="WebBrowserPage.hitTestContent" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.hitTestContent" />
       <keyword name="WebBrowserPage.icon" id="WebBrowserPage.icon" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.icon" />
       <keyword name="WebBrowserPage.isJavaScriptEnabled" id="WebBrowserPage.isJavaScriptEnabled" ref="eric6.WebBrowser.WebBrowserPage.html#WebBrowserPage.isJavaScriptEnabled" />
@@ -15961,6 +16048,7 @@
       <keyword name="WebBrowserView.__createImageContextMenu" id="WebBrowserView.__createImageContextMenu" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createImageContextMenu" />
       <keyword name="WebBrowserView.__createLinkContextMenu" id="WebBrowserView.__createLinkContextMenu" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createLinkContextMenu" />
       <keyword name="WebBrowserView.__createMediaContextMenu" id="WebBrowserView.__createMediaContextMenu" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createMediaContextMenu" />
+      <keyword name="WebBrowserView.__createNewPage" id="WebBrowserView.__createNewPage" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createNewPage" />
       <keyword name="WebBrowserView.__createPageContextMenu" id="WebBrowserView.__createPageContextMenu" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createPageContextMenu" />
       <keyword name="WebBrowserView.__createSelectedTextContextMenu" id="WebBrowserView.__createSelectedTextContextMenu" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__createSelectedTextContextMenu" />
       <keyword name="WebBrowserView.__currentEngineChanged" id="WebBrowserView.__currentEngineChanged" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.__currentEngineChanged" />
@@ -16025,6 +16113,7 @@
       <keyword name="WebBrowserView.forward" id="WebBrowserView.forward" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.forward" />
       <keyword name="WebBrowserView.getPreview" id="WebBrowserView.getPreview" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.getPreview" />
       <keyword name="WebBrowserView.getRSS" id="WebBrowserView.getRSS" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.getRSS" />
+      <keyword name="WebBrowserView.getSafeBrowsingStatus" id="WebBrowserView.getSafeBrowsingStatus" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.getSafeBrowsingStatus" />
       <keyword name="WebBrowserView.getSessionData" id="WebBrowserView.getSessionData" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.getSessionData" />
       <keyword name="WebBrowserView.hasRSS" id="WebBrowserView.hasRSS" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.hasRSS" />
       <keyword name="WebBrowserView.hasSelection" id="WebBrowserView.hasSelection" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.hasSelection" />
@@ -16166,6 +16255,7 @@
       <keyword name="WebBrowserWindow.__showPasswordsDialog" id="WebBrowserWindow.__showPasswordsDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showPasswordsDialog" />
       <keyword name="WebBrowserWindow.__showPersonalInformationDialog" id="WebBrowserWindow.__showPersonalInformationDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showPersonalInformationDialog" />
       <keyword name="WebBrowserWindow.__showPreferences" id="WebBrowserWindow.__showPreferences" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showPreferences" />
+      <keyword name="WebBrowserWindow.__showSafeBrowsingDialog" id="WebBrowserWindow.__showSafeBrowsingDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showSafeBrowsingDialog" />
       <keyword name="WebBrowserWindow.__showSearchWindow" id="WebBrowserWindow.__showSearchWindow" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showSearchWindow" />
       <keyword name="WebBrowserWindow.__showSessionManagerDialog" id="WebBrowserWindow.__showSessionManagerDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showSessionManagerDialog" />
       <keyword name="WebBrowserWindow.__showSiteinfoDialog" id="WebBrowserWindow.__showSiteinfoDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showSiteinfoDialog" />
@@ -16222,6 +16312,7 @@
       <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" />
+      <keyword name="WebBrowserWindow.globalStatusBar" id="WebBrowserWindow.globalStatusBar" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.globalStatusBar" />
       <keyword name="WebBrowserWindow.greaseMonkeyManager" id="WebBrowserWindow.greaseMonkeyManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.greaseMonkeyManager" />
       <keyword name="WebBrowserWindow.helpEngine" id="WebBrowserWindow.helpEngine" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.helpEngine" />
       <keyword name="WebBrowserWindow.hideFullScreenNavigation" id="WebBrowserWindow.hideFullScreenNavigation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.hideFullScreenNavigation" />
@@ -16253,6 +16344,7 @@
       <keyword name="WebBrowserWindow.preferencesChanged" id="WebBrowserWindow.preferencesChanged" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.preferencesChanged" />
       <keyword name="WebBrowserWindow.reloadUserStyleSheet" id="WebBrowserWindow.reloadUserStyleSheet" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.reloadUserStyleSheet" />
       <keyword name="WebBrowserWindow.requestVirusTotalScan" id="WebBrowserWindow.requestVirusTotalScan" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.requestVirusTotalScan" />
+      <keyword name="WebBrowserWindow.safeBrowsingManager" id="WebBrowserWindow.safeBrowsingManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.safeBrowsingManager" />
       <keyword name="WebBrowserWindow.search" id="WebBrowserWindow.search" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.search" />
       <keyword name="WebBrowserWindow.searchEnginesAction" id="WebBrowserWindow.searchEnginesAction" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.searchEnginesAction" />
       <keyword name="WebBrowserWindow.sessionManager" id="WebBrowserWindow.sessionManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.sessionManager" />
@@ -16536,7 +16628,9 @@
       <keyword name="_ClbrBase" id="_ClbrBase" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#_ClbrBase" />
       <keyword name="_ClbrBase (Constructor)" id="_ClbrBase (Constructor)" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#_ClbrBase.__init__" />
       <keyword name="_ClbrBase.setEndLine" id="_ClbrBase.setEndLine" ref="eric6.Utilities.ClassBrowsers.ClbrBaseClasses.html#_ClbrBase.setEndLine" />
+      <keyword name="_StrikeThroughExtension" id="_StrikeThroughExtension" ref="eric6.QScintilla.Exporters.ExporterHTML.html#_StrikeThroughExtension" />
       <keyword name="_StrikeThroughExtension" id="_StrikeThroughExtension" ref="eric6.UI.Previewers.PreviewerHTML.html#_StrikeThroughExtension" />
+      <keyword name="_StrikeThroughExtension.extendMarkdown" id="_StrikeThroughExtension.extendMarkdown" ref="eric6.QScintilla.Exporters.ExporterHTML.html#_StrikeThroughExtension.extendMarkdown" />
       <keyword name="_StrikeThroughExtension.extendMarkdown" id="_StrikeThroughExtension.extendMarkdown" ref="eric6.UI.Previewers.PreviewerHTML.html#_StrikeThroughExtension.extendMarkdown" />
       <keyword name="__check" id="__check" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#__check" />
       <keyword name="__checkCodeStyle" id="__checkCodeStyle" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#__checkCodeStyle" />
@@ -16685,8 +16779,8 @@
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsPySvn.html#createConfigurationPage" />
       <keyword name="createConfigurationPage" id="createConfigurationPage" ref="eric6.Plugins.PluginVcsSubversion.html#createConfigurationPage" />
       <keyword name="createDebuggerInterfaceNone" id="createDebuggerInterfaceNone" ref="eric6.Debugger.DebuggerInterfaceNone.html#createDebuggerInterfaceNone" />
-      <keyword name="createDebuggerInterfacePython2" id="createDebuggerInterfacePython2" ref="eric6.Debugger.DebuggerInterfacePython2.html#createDebuggerInterfacePython2" />
-      <keyword name="createDebuggerInterfacePython3" id="createDebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython3.html#createDebuggerInterfacePython3" />
+      <keyword name="createDebuggerInterfacePython2" id="createDebuggerInterfacePython2" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython2" />
+      <keyword name="createDebuggerInterfacePython3" id="createDebuggerInterfacePython3" ref="eric6.Debugger.DebuggerInterfacePython.html#createDebuggerInterfacePython3" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsPySvn.SvnUtilities.html#createDefaultConfig" />
       <keyword name="createDefaultConfig" id="createDefaultConfig" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#createDefaultConfig" />
       <keyword name="createGlobalPluginsDir" id="createGlobalPluginsDir" ref="eric6.install.html#createGlobalPluginsDir" />
@@ -16920,8 +17014,7 @@
       <keyword name="getQtTranslationsDir" id="getQtTranslationsDir" ref="eric6.Preferences.__init__.html#getQtTranslationsDir" />
       <keyword name="getRealName" id="getRealName" ref="eric6.Utilities.__init__.html#getRealName" />
       <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfaceNone.html#getRegistryData" />
-      <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython2.html#getRegistryData" />
-      <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython3.html#getRegistryData" />
+      <keyword name="getRegistryData" id="getRegistryData" ref="eric6.Debugger.DebuggerInterfacePython.html#getRegistryData" />
       <keyword name="getSaveFileFiltersList" id="getSaveFileFiltersList" ref="eric6.QScintilla.Lexers.__init__.html#getSaveFileFiltersList" />
       <keyword name="getSaveFileName" id="getSaveFileName" ref="eric6.E5Gui.E5FileDialog.html#getSaveFileName" />
       <keyword name="getSaveFileNameAndFilter" id="getSaveFileNameAndFilter" ref="eric6.E5Gui.E5FileDialog.html#getSaveFileNameAndFilter" />
@@ -17255,6 +17348,7 @@
       <keyword name="startswithPath" id="startswithPath" ref="eric6.Utilities.__init__.html#startswithPath" />
       <keyword name="stdin_get_value" id="stdin_get_value" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#stdin_get_value" />
       <keyword name="strGroup" id="strGroup" ref="eric6.Globals.__init__.html#strGroup" />
+      <keyword name="strToQByteArray" id="strToQByteArray" ref="eric6.Globals.__init__.html#strToQByteArray" />
       <keyword name="strip (Module)" id="strip (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.StripExtension.strip.html" />
       <keyword name="strip_PKCS7_padding" id="strip_PKCS7_padding" ref="eric6.Utilities.crypto.py3AES.html#strip_PKCS7_padding" />
       <keyword name="subversion (Module)" id="subversion (Module)" ref="eric6.Plugins.VcsPlugins.vcsPySvn.subversion.html" />
@@ -17274,6 +17368,8 @@
       <keyword name="toByteArray" id="toByteArray" ref="eric6.Preferences.__init__.html#toByteArray" />
       <keyword name="toDict" id="toDict" ref="eric6.Globals.__init__.html#toDict" />
       <keyword name="toDict" id="toDict" ref="eric6.Preferences.__init__.html#toDict" />
+      <keyword name="toHex" id="toHex" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.html#toHex" />
+      <keyword name="toHex_1" id="toHex_1" ref="eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.html#toHex_1" />
       <keyword name="toList" id="toList" ref="eric6.Globals.__init__.html#toList" />
       <keyword name="toList" id="toList" ref="eric6.Preferences.__init__.html#toList" />
       <keyword name="toNativeSeparators" id="toNativeSeparators" ref="eric6.Utilities.__init__.html#toNativeSeparators" />
@@ -17367,8 +17463,7 @@
       <file>eric6.Debugger.DebugUI.html</file>
       <file>eric6.Debugger.DebugViewer.html</file>
       <file>eric6.Debugger.DebuggerInterfaceNone.html</file>
-      <file>eric6.Debugger.DebuggerInterfacePython2.html</file>
-      <file>eric6.Debugger.DebuggerInterfacePython3.html</file>
+      <file>eric6.Debugger.DebuggerInterfacePython.html</file>
       <file>eric6.Debugger.EditBreakpointDialog.html</file>
       <file>eric6.Debugger.EditWatchpointDialog.html</file>
       <file>eric6.Debugger.ExceptionLogger.html</file>
@@ -18289,6 +18384,15 @@
       <file>eric6.WebBrowser.QtHelp.QtHelpDocumentationDialog.html</file>
       <file>eric6.WebBrowser.QtHelp.QtHelpDocumentationSelectionDialog.html</file>
       <file>eric6.WebBrowser.QtHelp.QtHelpFiltersDialog.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingDialog.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingInfoWidget.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingLabel.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingManager.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingUrl.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.SafeBrowsingUtilities.html</file>
+      <file>eric6.WebBrowser.SafeBrowsing.__init__.html</file>
       <file>eric6.WebBrowser.SearchWidget.html</file>
       <file>eric6.WebBrowser.Session.SessionManager.html</file>
       <file>eric6.WebBrowser.Session.SessionManagerDialog.html</file>
@@ -18515,6 +18619,7 @@
       <file>index-eric6.WebBrowser.Passwords.html</file>
       <file>index-eric6.WebBrowser.PersonalInformationManager.html</file>
       <file>index-eric6.WebBrowser.QtHelp.html</file>
+      <file>index-eric6.WebBrowser.SafeBrowsing.html</file>
       <file>index-eric6.WebBrowser.Session.html</file>
       <file>index-eric6.WebBrowser.SiteInfo.html</file>
       <file>index-eric6.WebBrowser.SpeedDial.html</file>
--- a/Documentation/Source/eric6.Debugger.DebugServer.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.Debugger.DebugServer.html	Fri Sep 01 12:08:17 2017 +0200
@@ -1106,11 +1106,11 @@
         Public slot to handle the preferencesChanged signal.
 </p><a NAME="DebugServer.registerDebuggerInterface" ID="DebugServer.registerDebuggerInterface"></a>
 <h4>DebugServer.registerDebuggerInterface</h4>
-<b>registerDebuggerInterface</b>(<i>name, getRegistryData</i>)
+<b>registerDebuggerInterface</b>(<i>interfaceName, getRegistryData</i>)
 <p>
         Public method to register a debugger interface.
 </p><dl>
-<dt><i>name</i> (str)</dt>
+<dt><i>interfaceName</i> (str)</dt>
 <dd>
 name of the debugger interface
 </dd><dt><i>getRegistryData</i> (function)</dt>
@@ -1848,13 +1848,13 @@
 </dd>
 </dl><a NAME="DebugServer.unregisterDebuggerInterface" ID="DebugServer.unregisterDebuggerInterface"></a>
 <h4>DebugServer.unregisterDebuggerInterface</h4>
-<b>unregisterDebuggerInterface</b>(<i>name</i>)
+<b>unregisterDebuggerInterface</b>(<i>interfaceName</i>)
 <p>
         Public method to unregister a debugger interface.
 </p><dl>
-<dt><i>name</i> (str)</dt>
+<dt><i>interfaceName</i> (str)</dt>
 <dd>
-name of the debugger interface
+interfaceName of the debugger interface
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfaceNone.html	Fri Sep 01 12:08:17 2017 +0200
@@ -41,7 +41,7 @@
 <td>Module function to create a debugger interface instance.</td>
 </tr><tr>
 <td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module functionto get characterizing data for the debugger interface.</td>
+<td>Module function to get characterizing data for the debugger interface.</td>
 </tr>
 </table>
 <hr /><hr />
@@ -723,7 +723,7 @@
 </dl><dl>
 <dt>Return Type:</dt>
 <dd>
-DebuggerInterfacePython
+DebuggerInterfaceNone
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
@@ -732,17 +732,18 @@
 <h2>getRegistryData</h2>
 <b>getRegistryData</b>(<i></i>)
 <p>
-    Module functionto get characterizing data for the debugger interface.
+    Module function to get characterizing data for the debugger interface.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
+list of tuples containing the client type, the client capabilities,
+        the client file type associations and a reference to the creation
+        function
 </dd>
 </dl><dl>
 <dt>Return Type:</dt>
 <dd>
-tuple of (str, int, list of str, function)
+list of tuple of (str, int, list of str, function)
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Debugger.DebuggerInterfacePython.html	Fri Sep 01 12:08:17 2017 +0200
@@ -0,0 +1,897 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Debugger.DebuggerInterfacePython</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.Debugger.DebuggerInterfacePython</h1>
+<p>
+Module implementing the Python3 debugger interface for the debug server.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>ClientDefaultCapabilities</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DebuggerInterfacePython">DebuggerInterfacePython</a></td>
+<td>Class implementing the debugger interface for the debug server for Python 2 and Python 3.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#createDebuggerInterfacePython2">createDebuggerInterfacePython2</a></td>
+<td>Module function to create a debugger interface instance.</td>
+</tr><tr>
+<td><a href="#createDebuggerInterfacePython3">createDebuggerInterfacePython3</a></td>
+<td>Module function to create a debugger interface instance.</td>
+</tr><tr>
+<td><a href="#getRegistryData">getRegistryData</a></td>
+<td>Module function to get characterizing data for the supported debugger interfaces.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="DebuggerInterfacePython" ID="DebuggerInterfacePython"></a>
+<h2>DebuggerInterfacePython</h2>
+<p>
+    Class implementing the debugger interface for the debug server for Python 2
+    and Python 3.
+</p>
+<h3>Derived from</h3>
+QObject
+<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="#DebuggerInterfacePython.__init__">DebuggerInterfacePython</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__askForkTo">__askForkTo</a></td>
+<td>Private method to ask the user which branch of a fork to follow.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__handleJsonCommand">__handleJsonCommand</a></td>
+<td>Private method to handle a command or response serialized as a JSON string.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__identityTranslation">__identityTranslation</a></td>
+<td>Private method to perform the identity path translation.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__parseClientLine">__parseClientLine</a></td>
+<td>Private method to handle data from the client.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__remoteTranslation">__remoteTranslation</a></td>
+<td>Private method to perform the path translation.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__sendJsonCommand">__sendJsonCommand</a></td>
+<td>Private method to send a single command to the client.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.__startProcess">__startProcess</a></td>
+<td>Private method to start the debugger client process.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.flush">flush</a></td>
+<td>Public slot to flush the queue.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.getClientCapabilities">getClientCapabilities</a></td>
+<td>Public method to retrieve the debug clients capabilities.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.isConnected">isConnected</a></td>
+<td>Public method to test, if a debug client has connected.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.newConnection">newConnection</a></td>
+<td>Public slot to handle a new connection.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteBanner">remoteBanner</a></td>
+<td>Public slot to get the banner info of the remote client.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteBreakpoint">remoteBreakpoint</a></td>
+<td>Public method to set or clear a breakpoint.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteBreakpointEnable">remoteBreakpointEnable</a></td>
+<td>Public method to enable or disable a breakpoint.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteBreakpointIgnore">remoteBreakpointIgnore</a></td>
+<td>Public method to ignore a breakpoint the next couple of occurrences.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteCapabilities">remoteCapabilities</a></td>
+<td>Public slot to get the debug clients capabilities.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteClientSetFilter">remoteClientSetFilter</a></td>
+<td>Public method to set a variables filter list.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteClientVariable">remoteClientVariable</a></td>
+<td>Public method to request the variables of the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteClientVariables">remoteClientVariables</a></td>
+<td>Public method to request the variables of the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteCompletion">remoteCompletion</a></td>
+<td>Public slot to get the a list of possible commandline completions from the remote client.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteContinue">remoteContinue</a></td>
+<td>Public method to continue the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteCoverage">remoteCoverage</a></td>
+<td>Public method to load a new program to collect coverage data.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteEnvironment">remoteEnvironment</a></td>
+<td>Public method to set the environment for a program to debug, run, ...</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteLoad">remoteLoad</a></td>
+<td>Public method to load a new program to debug.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteMoveIP">remoteMoveIP</a></td>
+<td>Public method to move the instruction pointer to a different line.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteProfile">remoteProfile</a></td>
+<td>Public method to load a new program to collect profiling data.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteRawInput">remoteRawInput</a></td>
+<td>Public method to send the raw input to the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteRun">remoteRun</a></td>
+<td>Public method to load a new program to run.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteSetThread">remoteSetThread</a></td>
+<td>Public method to request to set the given thread as current thread.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteStatement">remoteStatement</a></td>
+<td>Public method to execute a Python statement.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteStep">remoteStep</a></td>
+<td>Public method to single step the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteStepOut">remoteStepOut</a></td>
+<td>Public method to step out the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteStepOver">remoteStepOver</a></td>
+<td>Public method to step over the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteStepQuit">remoteStepQuit</a></td>
+<td>Public method to stop the debugged program.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteThreadList">remoteThreadList</a></td>
+<td>Public method to request the list of threads from the client.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteUTPrepare">remoteUTPrepare</a></td>
+<td>Public method to prepare a new unittest run.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteUTRun">remoteUTRun</a></td>
+<td>Public method to start a unittest run.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteUTStop">remoteUTStop</a></td>
+<td>Public method to stop a unittest run.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteWatchpoint">remoteWatchpoint</a></td>
+<td>Public method to set or clear a watch expression.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteWatchpointEnable">remoteWatchpointEnable</a></td>
+<td>Public method to enable or disable a watch expression.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
+<td>Public method to ignore a watch expression the next couple of occurrences.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.setCallTraceEnabled">setCallTraceEnabled</a></td>
+<td>Public method to set the call trace state.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.shutdown">shutdown</a></td>
+<td>Public method to cleanly shut down.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.startRemote">startRemote</a></td>
+<td>Public method to start a remote Python interpreter.</td>
+</tr><tr>
+<td><a href="#DebuggerInterfacePython.startRemoteForProject">startRemoteForProject</a></td>
+<td>Public method to start a remote Python interpreter for a project.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DebuggerInterfacePython.__init__" ID="DebuggerInterfacePython.__init__"></a>
+<h4>DebuggerInterfacePython (Constructor)</h4>
+<b>DebuggerInterfacePython</b>(<i>debugServer, passive, pythonVariant</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd><dt><i>pythonVariant</i> (str (one of Python2 or Python3))</dt>
+<dd>
+Python variant to instantiate for
+</dd>
+</dl><a NAME="DebuggerInterfacePython.__askForkTo" ID="DebuggerInterfacePython.__askForkTo"></a>
+<h4>DebuggerInterfacePython.__askForkTo</h4>
+<b>__askForkTo</b>(<i></i>)
+<p>
+        Private method to ask the user which branch of a fork to follow.
+</p><a NAME="DebuggerInterfacePython.__handleJsonCommand" ID="DebuggerInterfacePython.__handleJsonCommand"></a>
+<h4>DebuggerInterfacePython.__handleJsonCommand</h4>
+<b>__handleJsonCommand</b>(<i>jsonStr</i>)
+<p>
+        Private method to handle a command or response serialized as a
+        JSON string.
+</p><dl>
+<dt><i>jsonStr</i> (str)</dt>
+<dd>
+string containing the command or response received
+            from the debug backend
+</dd>
+</dl><a NAME="DebuggerInterfacePython.__identityTranslation" ID="DebuggerInterfacePython.__identityTranslation"></a>
+<h4>DebuggerInterfacePython.__identityTranslation</h4>
+<b>__identityTranslation</b>(<i>fn, remote2local=True</i>)
+<p>
+        Private method to perform the identity path translation.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+filename to be translated (string)
+</dd><dt><i>remote2local</i></dt>
+<dd>
+flag indicating the direction of translation
+            (False = local to remote, True = remote to local [default])
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+translated filename (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.__parseClientLine" ID="DebuggerInterfacePython.__parseClientLine"></a>
+<h4>DebuggerInterfacePython.__parseClientLine</h4>
+<b>__parseClientLine</b>(<i></i>)
+<p>
+        Private method to handle data from the client.
+</p><a NAME="DebuggerInterfacePython.__remoteTranslation" ID="DebuggerInterfacePython.__remoteTranslation"></a>
+<h4>DebuggerInterfacePython.__remoteTranslation</h4>
+<b>__remoteTranslation</b>(<i>fn, remote2local=True</i>)
+<p>
+        Private method to perform the path translation.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+filename to be translated (string)
+</dd><dt><i>remote2local</i></dt>
+<dd>
+flag indicating the direction of translation
+            (False = local to remote, True = remote to local [default])
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+translated filename (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.__sendJsonCommand" ID="DebuggerInterfacePython.__sendJsonCommand"></a>
+<h4>DebuggerInterfacePython.__sendJsonCommand</h4>
+<b>__sendJsonCommand</b>(<i>command, params</i>)
+<p>
+        Private method to send a single command to the client.
+</p><dl>
+<dt><i>command</i> (str)</dt>
+<dd>
+command name to be sent
+</dd><dt><i>params</i> (dict)</dt>
+<dd>
+dictionary of named parameters for the command
+</dd>
+</dl><a NAME="DebuggerInterfacePython.__startProcess" ID="DebuggerInterfacePython.__startProcess"></a>
+<h4>DebuggerInterfacePython.__startProcess</h4>
+<b>__startProcess</b>(<i>program, arguments, environment=None</i>)
+<p>
+        Private method to start the debugger client process.
+</p><dl>
+<dt><i>program</i></dt>
+<dd>
+name of the executable to start (string)
+</dd><dt><i>arguments</i></dt>
+<dd>
+arguments to be passed to the program (list of string)
+</dd><dt><i>environment</i></dt>
+<dd>
+dictionary of environment settings to pass
+            (dict of string)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+the process object (QProcess) or None
+</dd>
+</dl><a NAME="DebuggerInterfacePython.flush" ID="DebuggerInterfacePython.flush"></a>
+<h4>DebuggerInterfacePython.flush</h4>
+<b>flush</b>(<i></i>)
+<p>
+        Public slot to flush the queue.
+</p><a NAME="DebuggerInterfacePython.getClientCapabilities" ID="DebuggerInterfacePython.getClientCapabilities"></a>
+<h4>DebuggerInterfacePython.getClientCapabilities</h4>
+<b>getClientCapabilities</b>(<i></i>)
+<p>
+        Public method to retrieve the debug clients capabilities.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+debug client capabilities (integer)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.isConnected" ID="DebuggerInterfacePython.isConnected"></a>
+<h4>DebuggerInterfacePython.isConnected</h4>
+<b>isConnected</b>(<i></i>)
+<p>
+        Public method to test, if a debug client has connected.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the connection status (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.newConnection" ID="DebuggerInterfacePython.newConnection"></a>
+<h4>DebuggerInterfacePython.newConnection</h4>
+<b>newConnection</b>(<i>sock</i>)
+<p>
+        Public slot to handle a new connection.
+</p><dl>
+<dt><i>sock</i></dt>
+<dd>
+reference to the socket object (QTcpSocket)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating success (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteBanner" ID="DebuggerInterfacePython.remoteBanner"></a>
+<h4>DebuggerInterfacePython.remoteBanner</h4>
+<b>remoteBanner</b>(<i></i>)
+<p>
+        Public slot to get the banner info of the remote client.
+</p><a NAME="DebuggerInterfacePython.remoteBreakpoint" ID="DebuggerInterfacePython.remoteBreakpoint"></a>
+<h4>DebuggerInterfacePython.remoteBreakpoint</h4>
+<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
+<p>
+        Public method to set or clear a breakpoint.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+filename the breakpoint belongs to (string)
+</dd><dt><i>line</i></dt>
+<dd>
+linenumber of the breakpoint (int)
+</dd><dt><i>setBreakpoint</i></dt>
+<dd>
+flag indicating setting or resetting a
+            breakpoint (boolean)
+</dd><dt><i>cond</i></dt>
+<dd>
+condition of the breakpoint (string)
+</dd><dt><i>temp</i></dt>
+<dd>
+flag indicating a temporary breakpoint (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteBreakpointEnable" ID="DebuggerInterfacePython.remoteBreakpointEnable"></a>
+<h4>DebuggerInterfacePython.remoteBreakpointEnable</h4>
+<b>remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
+<p>
+        Public method to enable or disable a breakpoint.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+filename the breakpoint belongs to (string)
+</dd><dt><i>line</i></dt>
+<dd>
+linenumber of the breakpoint (int)
+</dd><dt><i>enable</i></dt>
+<dd>
+flag indicating enabling or disabling a breakpoint
+            (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteBreakpointIgnore" ID="DebuggerInterfacePython.remoteBreakpointIgnore"></a>
+<h4>DebuggerInterfacePython.remoteBreakpointIgnore</h4>
+<b>remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
+<p>
+        Public method to ignore a breakpoint the next couple of occurrences.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+filename the breakpoint belongs to (string)
+</dd><dt><i>line</i></dt>
+<dd>
+linenumber of the breakpoint (int)
+</dd><dt><i>count</i></dt>
+<dd>
+number of occurrences to ignore (int)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteCapabilities" ID="DebuggerInterfacePython.remoteCapabilities"></a>
+<h4>DebuggerInterfacePython.remoteCapabilities</h4>
+<b>remoteCapabilities</b>(<i></i>)
+<p>
+        Public slot to get the debug clients capabilities.
+</p><a NAME="DebuggerInterfacePython.remoteClientSetFilter" ID="DebuggerInterfacePython.remoteClientSetFilter"></a>
+<h4>DebuggerInterfacePython.remoteClientSetFilter</h4>
+<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
+<p>
+        Public method to set a variables filter list.
+</p><dl>
+<dt><i>scope</i></dt>
+<dd>
+the scope of the variables (0 = local, 1 = global)
+</dd><dt><i>filterStr</i></dt>
+<dd>
+regexp string for variable names to filter out
+            (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteClientVariable" ID="DebuggerInterfacePython.remoteClientVariable"></a>
+<h4>DebuggerInterfacePython.remoteClientVariable</h4>
+<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0</i>)
+<p>
+        Public method to request the variables of the debugged program.
+</p><dl>
+<dt><i>scope</i></dt>
+<dd>
+the scope of the variables (0 = local, 1 = global)
+</dd><dt><i>filterList</i></dt>
+<dd>
+list of variable types to filter out (list of int)
+</dd><dt><i>var</i></dt>
+<dd>
+list encoded name of variable to retrieve (string)
+</dd><dt><i>framenr</i></dt>
+<dd>
+framenumber of the variables to retrieve (int)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteClientVariables" ID="DebuggerInterfacePython.remoteClientVariables"></a>
+<h4>DebuggerInterfacePython.remoteClientVariables</h4>
+<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0</i>)
+<p>
+        Public method to request the variables of the debugged program.
+</p><dl>
+<dt><i>scope</i></dt>
+<dd>
+the scope of the variables (0 = local, 1 = global)
+</dd><dt><i>filterList</i></dt>
+<dd>
+list of variable types to filter out (list of int)
+</dd><dt><i>framenr</i></dt>
+<dd>
+framenumber of the variables to retrieve (int)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteCompletion" ID="DebuggerInterfacePython.remoteCompletion"></a>
+<h4>DebuggerInterfacePython.remoteCompletion</h4>
+<b>remoteCompletion</b>(<i>text</i>)
+<p>
+        Public slot to get the a list of possible commandline completions
+        from the remote client.
+</p><dl>
+<dt><i>text</i></dt>
+<dd>
+the text to be completed (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteContinue" ID="DebuggerInterfacePython.remoteContinue"></a>
+<h4>DebuggerInterfacePython.remoteContinue</h4>
+<b>remoteContinue</b>(<i>special=False</i>)
+<p>
+        Public method to continue the debugged program.
+</p><dl>
+<dt><i>special</i></dt>
+<dd>
+flag indicating a special continue operation
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteCoverage" ID="DebuggerInterfacePython.remoteCoverage"></a>
+<h4>DebuggerInterfacePython.remoteCoverage</h4>
+<b>remoteCoverage</b>(<i>fn, argv, wd, erase=False</i>)
+<p>
+        Public method to load a new program to collect coverage data.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+the filename to run (string)
+</dd><dt><i>argv</i></dt>
+<dd>
+the commandline arguments to pass to the program (string)
+</dd><dt><i>wd</i></dt>
+<dd>
+the working directory for the program (string)
+</dd><dt><i>erase=</i></dt>
+<dd>
+flag indicating that coverage info should be
+            cleared first (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteEnvironment" ID="DebuggerInterfacePython.remoteEnvironment"></a>
+<h4>DebuggerInterfacePython.remoteEnvironment</h4>
+<b>remoteEnvironment</b>(<i>env</i>)
+<p>
+        Public method to set the environment for a program to debug, run, ...
+</p><dl>
+<dt><i>env</i></dt>
+<dd>
+environment settings (dictionary)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteLoad" ID="DebuggerInterfacePython.remoteLoad"></a>
+<h4>DebuggerInterfacePython.remoteLoad</h4>
+<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False</i>)
+<p>
+        Public method to load a new program to debug.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+the filename to debug (string)
+</dd><dt><i>argv</i></dt>
+<dd>
+the commandline arguments to pass to the program (string)
+</dd><dt><i>wd</i></dt>
+<dd>
+the working directory for the program (string)
+</dd><dt><i>traceInterpreter=</i></dt>
+<dd>
+flag indicating if the interpreter library
+            should be traced as well (boolean)
+</dd><dt><i>autoContinue=</i></dt>
+<dd>
+flag indicating, that the debugger should not
+            stop at the first executable line (boolean)
+</dd><dt><i>autoFork=</i></dt>
+<dd>
+flag indicating the automatic fork mode (boolean)
+</dd><dt><i>forkChild=</i></dt>
+<dd>
+flag indicating to debug the child after forking
+            (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteMoveIP" ID="DebuggerInterfacePython.remoteMoveIP"></a>
+<h4>DebuggerInterfacePython.remoteMoveIP</h4>
+<b>remoteMoveIP</b>(<i>line</i>)
+<p>
+        Public method to move the instruction pointer to a different line.
+</p><dl>
+<dt><i>line</i></dt>
+<dd>
+the new line, where execution should be continued
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteProfile" ID="DebuggerInterfacePython.remoteProfile"></a>
+<h4>DebuggerInterfacePython.remoteProfile</h4>
+<b>remoteProfile</b>(<i>fn, argv, wd, erase=False</i>)
+<p>
+        Public method to load a new program to collect profiling data.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+the filename to run (string)
+</dd><dt><i>argv</i></dt>
+<dd>
+the commandline arguments to pass to the program (string)
+</dd><dt><i>wd</i></dt>
+<dd>
+the working directory for the program (string)
+</dd><dt><i>erase=</i></dt>
+<dd>
+flag indicating that timing info should be cleared
+            first (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteRawInput" ID="DebuggerInterfacePython.remoteRawInput"></a>
+<h4>DebuggerInterfacePython.remoteRawInput</h4>
+<b>remoteRawInput</b>(<i>s</i>)
+<p>
+        Public method to send the raw input to the debugged program.
+</p><dl>
+<dt><i>s</i></dt>
+<dd>
+the raw input (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteRun" ID="DebuggerInterfacePython.remoteRun"></a>
+<h4>DebuggerInterfacePython.remoteRun</h4>
+<b>remoteRun</b>(<i>fn, argv, wd, autoFork=False, forkChild=False</i>)
+<p>
+        Public method to load a new program to run.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+the filename to run (string)
+</dd><dt><i>argv</i></dt>
+<dd>
+the commandline arguments to pass to the program (string)
+</dd><dt><i>wd</i></dt>
+<dd>
+the working directory for the program (string)
+</dd><dt><i>autoFork=</i></dt>
+<dd>
+flag indicating the automatic fork mode (boolean)
+</dd><dt><i>forkChild=</i></dt>
+<dd>
+flag indicating to debug the child after forking
+            (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteSetThread" ID="DebuggerInterfacePython.remoteSetThread"></a>
+<h4>DebuggerInterfacePython.remoteSetThread</h4>
+<b>remoteSetThread</b>(<i>tid</i>)
+<p>
+        Public method to request to set the given thread as current thread.
+</p><dl>
+<dt><i>tid</i></dt>
+<dd>
+id of the thread (integer)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteStatement" ID="DebuggerInterfacePython.remoteStatement"></a>
+<h4>DebuggerInterfacePython.remoteStatement</h4>
+<b>remoteStatement</b>(<i>stmt</i>)
+<p>
+        Public method to execute a Python statement.
+</p><dl>
+<dt><i>stmt</i></dt>
+<dd>
+the Python statement to execute (string). It
+              should not have a trailing newline.
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteStep" ID="DebuggerInterfacePython.remoteStep"></a>
+<h4>DebuggerInterfacePython.remoteStep</h4>
+<b>remoteStep</b>(<i></i>)
+<p>
+        Public method to single step the debugged program.
+</p><a NAME="DebuggerInterfacePython.remoteStepOut" ID="DebuggerInterfacePython.remoteStepOut"></a>
+<h4>DebuggerInterfacePython.remoteStepOut</h4>
+<b>remoteStepOut</b>(<i></i>)
+<p>
+        Public method to step out the debugged program.
+</p><a NAME="DebuggerInterfacePython.remoteStepOver" ID="DebuggerInterfacePython.remoteStepOver"></a>
+<h4>DebuggerInterfacePython.remoteStepOver</h4>
+<b>remoteStepOver</b>(<i></i>)
+<p>
+        Public method to step over the debugged program.
+</p><a NAME="DebuggerInterfacePython.remoteStepQuit" ID="DebuggerInterfacePython.remoteStepQuit"></a>
+<h4>DebuggerInterfacePython.remoteStepQuit</h4>
+<b>remoteStepQuit</b>(<i></i>)
+<p>
+        Public method to stop the debugged program.
+</p><a NAME="DebuggerInterfacePython.remoteThreadList" ID="DebuggerInterfacePython.remoteThreadList"></a>
+<h4>DebuggerInterfacePython.remoteThreadList</h4>
+<b>remoteThreadList</b>(<i></i>)
+<p>
+        Public method to request the list of threads from the client.
+</p><a NAME="DebuggerInterfacePython.remoteUTPrepare" ID="DebuggerInterfacePython.remoteUTPrepare"></a>
+<h4>DebuggerInterfacePython.remoteUTPrepare</h4>
+<b>remoteUTPrepare</b>(<i>fn, tn, tfn, failed, cov, covname, coverase</i>)
+<p>
+        Public method to prepare a new unittest run.
+</p><dl>
+<dt><i>fn</i></dt>
+<dd>
+the filename to load (string)
+</dd><dt><i>tn</i></dt>
+<dd>
+the testname to load (string)
+</dd><dt><i>tfn</i></dt>
+<dd>
+the test function name to load tests from (string)
+</dd><dt><i>failed</i></dt>
+<dd>
+list of failed test, if only failed test should be run
+            (list of strings)
+</dd><dt><i>cov</i></dt>
+<dd>
+flag indicating collection of coverage data is requested
+            (boolean)
+</dd><dt><i>covname</i></dt>
+<dd>
+filename to be used to assemble the coverage caches
+            filename (string)
+</dd><dt><i>coverase</i></dt>
+<dd>
+flag indicating erasure of coverage data is requested
+            (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteUTRun" ID="DebuggerInterfacePython.remoteUTRun"></a>
+<h4>DebuggerInterfacePython.remoteUTRun</h4>
+<b>remoteUTRun</b>(<i></i>)
+<p>
+        Public method to start a unittest run.
+</p><a NAME="DebuggerInterfacePython.remoteUTStop" ID="DebuggerInterfacePython.remoteUTStop"></a>
+<h4>DebuggerInterfacePython.remoteUTStop</h4>
+<b>remoteUTStop</b>(<i></i>)
+<p>
+        Public method to stop a unittest run.
+</p><a NAME="DebuggerInterfacePython.remoteWatchpoint" ID="DebuggerInterfacePython.remoteWatchpoint"></a>
+<h4>DebuggerInterfacePython.remoteWatchpoint</h4>
+<b>remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
+<p>
+        Public method to set or clear a watch expression.
+</p><dl>
+<dt><i>cond</i></dt>
+<dd>
+expression of the watch expression (string)
+</dd><dt><i>setWatch</i></dt>
+<dd>
+flag indicating setting or resetting a watch expression
+            (boolean)
+</dd><dt><i>temp</i></dt>
+<dd>
+flag indicating a temporary watch expression (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteWatchpointEnable" ID="DebuggerInterfacePython.remoteWatchpointEnable"></a>
+<h4>DebuggerInterfacePython.remoteWatchpointEnable</h4>
+<b>remoteWatchpointEnable</b>(<i>cond, enable</i>)
+<p>
+        Public method to enable or disable a watch expression.
+</p><dl>
+<dt><i>cond</i></dt>
+<dd>
+expression of the watch expression (string)
+</dd><dt><i>enable</i></dt>
+<dd>
+flag indicating enabling or disabling a watch expression
+            (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.remoteWatchpointIgnore" ID="DebuggerInterfacePython.remoteWatchpointIgnore"></a>
+<h4>DebuggerInterfacePython.remoteWatchpointIgnore</h4>
+<b>remoteWatchpointIgnore</b>(<i>cond, count</i>)
+<p>
+        Public method to ignore a watch expression the next couple of
+        occurrences.
+</p><dl>
+<dt><i>cond</i></dt>
+<dd>
+expression of the watch expression (string)
+</dd><dt><i>count</i></dt>
+<dd>
+number of occurrences to ignore (int)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.setCallTraceEnabled" ID="DebuggerInterfacePython.setCallTraceEnabled"></a>
+<h4>DebuggerInterfacePython.setCallTraceEnabled</h4>
+<b>setCallTraceEnabled</b>(<i>on</i>)
+<p>
+        Public method to set the call trace state.
+</p><dl>
+<dt><i>on</i></dt>
+<dd>
+flag indicating to enable the call trace function (boolean)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.shutdown" ID="DebuggerInterfacePython.shutdown"></a>
+<h4>DebuggerInterfacePython.shutdown</h4>
+<b>shutdown</b>(<i></i>)
+<p>
+        Public method to cleanly shut down.
+</p><p>
+        It closes our socket and shuts down
+        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</i>)
+<p>
+        Public method to start a remote Python interpreter.
+</p><dl>
+<dt><i>port</i></dt>
+<dd>
+portnumber the debug server is listening on (integer)
+</dd><dt><i>runInConsole</i></dt>
+<dd>
+flag indicating to start the debugger in a
+            console window (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+client process object (QProcess), a flag to indicate
+            a network connection (boolean) and the name of the interpreter
+            in case of a local execution (string)
+</dd>
+</dl><a NAME="DebuggerInterfacePython.startRemoteForProject" ID="DebuggerInterfacePython.startRemoteForProject"></a>
+<h4>DebuggerInterfacePython.startRemoteForProject</h4>
+<b>startRemoteForProject</b>(<i>port, runInConsole</i>)
+<p>
+        Public method to start a remote Python interpreter for a project.
+</p><dl>
+<dt><i>port</i></dt>
+<dd>
+portnumber the debug server is listening on (integer)
+</dd><dt><i>runInConsole</i></dt>
+<dd>
+flag indicating to start the debugger in a
+            console window (boolean)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+client process object (QProcess), a flag to indicate
+            a network connection (boolean) and the name of the interpreter
+            in case of a local execution (string)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="createDebuggerInterfacePython2" ID="createDebuggerInterfacePython2"></a>
+<h2>createDebuggerInterfacePython2</h2>
+<b>createDebuggerInterfacePython2</b>(<i>debugServer, passive</i>)
+<p>
+    Module function to create a debugger interface instance.
+</p><p>
+
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+instantiated debugger interface
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+DebuggerInterfacePython
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="createDebuggerInterfacePython3" ID="createDebuggerInterfacePython3"></a>
+<h2>createDebuggerInterfacePython3</h2>
+<b>createDebuggerInterfacePython3</b>(<i>debugServer, passive</i>)
+<p>
+    Module function to create a debugger interface instance.
+</p><p>
+
+</p><dl>
+<dt><i>debugServer</i> (DebugServer)</dt>
+<dd>
+reference to the debug server
+</dd><dt><i>passive</i> (bool)</dt>
+<dd>
+flag indicating passive connection mode
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+instantiated debugger interface
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+DebuggerInterfacePython
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getRegistryData" ID="getRegistryData"></a>
+<h2>getRegistryData</h2>
+<b>getRegistryData</b>(<i></i>)
+<p>
+    Module function to get characterizing data for the supported debugger
+    interfaces.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of tuples containing the client type, the client capabilities,
+        the client file type associations and a reference to the creation
+        function
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of tuple of (str, int, list of str, function)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfacePython2.html	Thu Aug 03 14:50:59 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,860 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.Debugger.DebuggerInterfacePython2</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.Debugger.DebuggerInterfacePython2</h1>
-<p>
-Module implementing the Python debugger interface for the debug server.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>ClientDefaultCapabilities</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#DebuggerInterfacePython2">DebuggerInterfacePython2</a></td>
-<td>Class implementing the Python 2 debugger interface for the debug server.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#createDebuggerInterfacePython2">createDebuggerInterfacePython2</a></td>
-<td>Module function to create a debugger interface instance.</td>
-</tr><tr>
-<td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module function to get characterizing data for the debugger interface.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="DebuggerInterfacePython2" ID="DebuggerInterfacePython2"></a>
-<h2>DebuggerInterfacePython2</h2>
-<p>
-    Class implementing the Python 2 debugger interface for the debug server.
-</p>
-<h3>Derived from</h3>
-QObject
-<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="#DebuggerInterfacePython2.__init__">DebuggerInterfacePython2</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__askForkTo">__askForkTo</a></td>
-<td>Private method to ask the user which branch of a fork to follow.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__handleJsonCommand">__handleJsonCommand</a></td>
-<td>Private method to handle a command or response serialized as a JSON string.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__identityTranslation">__identityTranslation</a></td>
-<td>Private method to perform the identity path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__parseClientLine">__parseClientLine</a></td>
-<td>Private method to handle data from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__remoteTranslation">__remoteTranslation</a></td>
-<td>Private method to perform the path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__sendJsonCommand">__sendJsonCommand</a></td>
-<td>Private method to send a single command to the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.__startProcess">__startProcess</a></td>
-<td>Private method to start the debugger client process.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.flush">flush</a></td>
-<td>Public slot to flush the queue.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.getClientCapabilities">getClientCapabilities</a></td>
-<td>Public method to retrieve the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.isConnected">isConnected</a></td>
-<td>Public method to test, if a debug client has connected.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.newConnection">newConnection</a></td>
-<td>Public slot to handle a new connection.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteBanner">remoteBanner</a></td>
-<td>Public slot to get the banner info of the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteBreakpoint">remoteBreakpoint</a></td>
-<td>Public method to set or clear a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteBreakpointEnable">remoteBreakpointEnable</a></td>
-<td>Public method to enable or disable a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteBreakpointIgnore">remoteBreakpointIgnore</a></td>
-<td>Public method to ignore a breakpoint the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteCapabilities">remoteCapabilities</a></td>
-<td>Public slot to get the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteClientSetFilter">remoteClientSetFilter</a></td>
-<td>Public method to set a variables filter list.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteClientVariable">remoteClientVariable</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteClientVariables">remoteClientVariables</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteCompletion">remoteCompletion</a></td>
-<td>Public slot to get the a list of possible commandline completions from the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteContinue">remoteContinue</a></td>
-<td>Public method to continue the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteCoverage">remoteCoverage</a></td>
-<td>Public method to load a new program to collect coverage data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteEnvironment">remoteEnvironment</a></td>
-<td>Public method to set the environment for a program to debug, run, ...</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteLoad">remoteLoad</a></td>
-<td>Public method to load a new program to debug.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteMoveIP">remoteMoveIP</a></td>
-<td>Public method to move the instruction pointer to a different line.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteProfile">remoteProfile</a></td>
-<td>Public method to load a new program to collect profiling data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteRawInput">remoteRawInput</a></td>
-<td>Public method to send the raw input to the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteRun">remoteRun</a></td>
-<td>Public method to load a new program to run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteSetThread">remoteSetThread</a></td>
-<td>Public method to request to set the given thread as current thread.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteStatement">remoteStatement</a></td>
-<td>Public method to execute a Python statement.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteStep">remoteStep</a></td>
-<td>Public method to single step the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteStepOut">remoteStepOut</a></td>
-<td>Public method to step out the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteStepOver">remoteStepOver</a></td>
-<td>Public method to step over the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteStepQuit">remoteStepQuit</a></td>
-<td>Public method to stop the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteThreadList">remoteThreadList</a></td>
-<td>Public method to request the list of threads from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteUTPrepare">remoteUTPrepare</a></td>
-<td>Public method to prepare a new unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteUTRun">remoteUTRun</a></td>
-<td>Public method to start a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteUTStop">remoteUTStop</a></td>
-<td>Public method to stop a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteWatchpoint">remoteWatchpoint</a></td>
-<td>Public method to set or clear a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteWatchpointEnable">remoteWatchpointEnable</a></td>
-<td>Public method to enable or disable a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
-<td>Public method to ignore a watch expression the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.setCallTraceEnabled">setCallTraceEnabled</a></td>
-<td>Public method to set the call trace state.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.shutdown">shutdown</a></td>
-<td>Public method to cleanly shut down.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.startRemote">startRemote</a></td>
-<td>Public method to start a remote Python interpreter.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython2.startRemoteForProject">startRemoteForProject</a></td>
-<td>Public method to start a remote Python interpreter for a project.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="DebuggerInterfacePython2.__init__" ID="DebuggerInterfacePython2.__init__"></a>
-<h4>DebuggerInterfacePython2 (Constructor)</h4>
-<b>DebuggerInterfacePython2</b>(<i>debugServer, passive</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>debugServer</i></dt>
-<dd>
-reference to the debug server (DebugServer)
-</dd><dt><i>passive</i></dt>
-<dd>
-flag indicating passive connection mode (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.__askForkTo" ID="DebuggerInterfacePython2.__askForkTo"></a>
-<h4>DebuggerInterfacePython2.__askForkTo</h4>
-<b>__askForkTo</b>(<i></i>)
-<p>
-        Private method to ask the user which branch of a fork to follow.
-</p><a NAME="DebuggerInterfacePython2.__handleJsonCommand" ID="DebuggerInterfacePython2.__handleJsonCommand"></a>
-<h4>DebuggerInterfacePython2.__handleJsonCommand</h4>
-<b>__handleJsonCommand</b>(<i>jsonStr</i>)
-<p>
-        Private method to handle a command or response serialized as a
-        JSON string.
-</p><dl>
-<dt><i>jsonStr</i> (str)</dt>
-<dd>
-string containing the command or response received
-            from the debug backend
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.__identityTranslation" ID="DebuggerInterfacePython2.__identityTranslation"></a>
-<h4>DebuggerInterfacePython2.__identityTranslation</h4>
-<b>__identityTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the identity path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.__parseClientLine" ID="DebuggerInterfacePython2.__parseClientLine"></a>
-<h4>DebuggerInterfacePython2.__parseClientLine</h4>
-<b>__parseClientLine</b>(<i></i>)
-<p>
-        Private method to handle data from the client.
-</p><a NAME="DebuggerInterfacePython2.__remoteTranslation" ID="DebuggerInterfacePython2.__remoteTranslation"></a>
-<h4>DebuggerInterfacePython2.__remoteTranslation</h4>
-<b>__remoteTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.__sendJsonCommand" ID="DebuggerInterfacePython2.__sendJsonCommand"></a>
-<h4>DebuggerInterfacePython2.__sendJsonCommand</h4>
-<b>__sendJsonCommand</b>(<i>command, params</i>)
-<p>
-        Private method to send a single command to the client.
-</p><dl>
-<dt><i>command</i> (str)</dt>
-<dd>
-command name to be sent
-</dd><dt><i>params</i> (dict)</dt>
-<dd>
-dictionary of named parameters for the command
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.__startProcess" ID="DebuggerInterfacePython2.__startProcess"></a>
-<h4>DebuggerInterfacePython2.__startProcess</h4>
-<b>__startProcess</b>(<i>program, arguments, environment=None</i>)
-<p>
-        Private method to start the debugger client process.
-</p><dl>
-<dt><i>program</i></dt>
-<dd>
-name of the executable to start (string)
-</dd><dt><i>arguments</i></dt>
-<dd>
-arguments to be passed to the program (list of string)
-</dd><dt><i>environment</i></dt>
-<dd>
-dictionary of environment settings to pass
-            (dict of string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the process object (QProcess) or None
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.flush" ID="DebuggerInterfacePython2.flush"></a>
-<h4>DebuggerInterfacePython2.flush</h4>
-<b>flush</b>(<i></i>)
-<p>
-        Public slot to flush the queue.
-</p><a NAME="DebuggerInterfacePython2.getClientCapabilities" ID="DebuggerInterfacePython2.getClientCapabilities"></a>
-<h4>DebuggerInterfacePython2.getClientCapabilities</h4>
-<b>getClientCapabilities</b>(<i></i>)
-<p>
-        Public method to retrieve the debug clients capabilities.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-debug client capabilities (integer)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.isConnected" ID="DebuggerInterfacePython2.isConnected"></a>
-<h4>DebuggerInterfacePython2.isConnected</h4>
-<b>isConnected</b>(<i></i>)
-<p>
-        Public method to test, if a debug client has connected.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating the connection status (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.newConnection" ID="DebuggerInterfacePython2.newConnection"></a>
-<h4>DebuggerInterfacePython2.newConnection</h4>
-<b>newConnection</b>(<i>sock</i>)
-<p>
-        Public slot to handle a new connection.
-</p><dl>
-<dt><i>sock</i></dt>
-<dd>
-reference to the socket object (QTcpSocket)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating success (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteBanner" ID="DebuggerInterfacePython2.remoteBanner"></a>
-<h4>DebuggerInterfacePython2.remoteBanner</h4>
-<b>remoteBanner</b>(<i></i>)
-<p>
-        Public slot to get the banner info of the remote client.
-</p><a NAME="DebuggerInterfacePython2.remoteBreakpoint" ID="DebuggerInterfacePython2.remoteBreakpoint"></a>
-<h4>DebuggerInterfacePython2.remoteBreakpoint</h4>
-<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
-<p>
-        Public method to set or clear a breakpoint.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>setBreakpoint</i></dt>
-<dd>
-flag indicating setting or resetting a
-            breakpoint (boolean)
-</dd><dt><i>cond</i></dt>
-<dd>
-condition of the breakpoint (string)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary breakpoint (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteBreakpointEnable" ID="DebuggerInterfacePython2.remoteBreakpointEnable"></a>
-<h4>DebuggerInterfacePython2.remoteBreakpointEnable</h4>
-<b>remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
-<p>
-        Public method to enable or disable a breakpoint.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating enabling or disabling a breakpoint
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteBreakpointIgnore" ID="DebuggerInterfacePython2.remoteBreakpointIgnore"></a>
-<h4>DebuggerInterfacePython2.remoteBreakpointIgnore</h4>
-<b>remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
-<p>
-        Public method to ignore a breakpoint the next couple of occurrences.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteCapabilities" ID="DebuggerInterfacePython2.remoteCapabilities"></a>
-<h4>DebuggerInterfacePython2.remoteCapabilities</h4>
-<b>remoteCapabilities</b>(<i></i>)
-<p>
-        Public slot to get the debug clients capabilities.
-</p><a NAME="DebuggerInterfacePython2.remoteClientSetFilter" ID="DebuggerInterfacePython2.remoteClientSetFilter"></a>
-<h4>DebuggerInterfacePython2.remoteClientSetFilter</h4>
-<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
-<p>
-        Public method to set a variables filter list.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterStr</i></dt>
-<dd>
-regexp string for variable names to filter out
-            (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteClientVariable" ID="DebuggerInterfacePython2.remoteClientVariable"></a>
-<h4>DebuggerInterfacePython2.remoteClientVariable</h4>
-<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0</i>)
-<p>
-        Public method to request the variables of the debugged program.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd><dt><i>var</i></dt>
-<dd>
-list encoded name of variable to retrieve (string)
-</dd><dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteClientVariables" ID="DebuggerInterfacePython2.remoteClientVariables"></a>
-<h4>DebuggerInterfacePython2.remoteClientVariables</h4>
-<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0</i>)
-<p>
-        Public method to request the variables of the debugged program.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd><dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteCompletion" ID="DebuggerInterfacePython2.remoteCompletion"></a>
-<h4>DebuggerInterfacePython2.remoteCompletion</h4>
-<b>remoteCompletion</b>(<i>text</i>)
-<p>
-        Public slot to get the a list of possible commandline completions
-        from the remote client.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-the text to be completed (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteContinue" ID="DebuggerInterfacePython2.remoteContinue"></a>
-<h4>DebuggerInterfacePython2.remoteContinue</h4>
-<b>remoteContinue</b>(<i>special=False</i>)
-<p>
-        Public method to continue the debugged program.
-</p><dl>
-<dt><i>special</i></dt>
-<dd>
-flag indicating a special continue operation (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteCoverage" ID="DebuggerInterfacePython2.remoteCoverage"></a>
-<h4>DebuggerInterfacePython2.remoteCoverage</h4>
-<b>remoteCoverage</b>(<i>fn, argv, wd, erase=False</i>)
-<p>
-        Public method to load a new program to collect coverage data.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>erase=</i></dt>
-<dd>
-flag indicating that coverage info should be
-            cleared first (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteEnvironment" ID="DebuggerInterfacePython2.remoteEnvironment"></a>
-<h4>DebuggerInterfacePython2.remoteEnvironment</h4>
-<b>remoteEnvironment</b>(<i>env</i>)
-<p>
-        Public method to set the environment for a program to debug, run, ...
-</p><dl>
-<dt><i>env</i></dt>
-<dd>
-environment settings (dictionary)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteLoad" ID="DebuggerInterfacePython2.remoteLoad"></a>
-<h4>DebuggerInterfacePython2.remoteLoad</h4>
-<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False</i>)
-<p>
-        Public method to load a new program to debug.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to debug (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>traceInterpreter=</i></dt>
-<dd>
-flag indicating if the interpreter library
-            should be traced as well (boolean)
-</dd><dt><i>autoContinue=</i></dt>
-<dd>
-flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
-</dd><dt><i>autoFork=</i></dt>
-<dd>
-flag indicating the automatic fork mode (boolean)
-</dd><dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteMoveIP" ID="DebuggerInterfacePython2.remoteMoveIP"></a>
-<h4>DebuggerInterfacePython2.remoteMoveIP</h4>
-<b>remoteMoveIP</b>(<i>line</i>)
-<p>
-        Public method to move the instruction pointer to a different line.
-</p><dl>
-<dt><i>line</i></dt>
-<dd>
-the new line, where execution should be continued
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteProfile" ID="DebuggerInterfacePython2.remoteProfile"></a>
-<h4>DebuggerInterfacePython2.remoteProfile</h4>
-<b>remoteProfile</b>(<i>fn, argv, wd, erase=False</i>)
-<p>
-        Public method to load a new program to collect profiling data.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>erase=</i></dt>
-<dd>
-flag indicating that timing info should be cleared
-            first (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteRawInput" ID="DebuggerInterfacePython2.remoteRawInput"></a>
-<h4>DebuggerInterfacePython2.remoteRawInput</h4>
-<b>remoteRawInput</b>(<i>s</i>)
-<p>
-        Public method to send the raw input to the debugged program.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-the raw input (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteRun" ID="DebuggerInterfacePython2.remoteRun"></a>
-<h4>DebuggerInterfacePython2.remoteRun</h4>
-<b>remoteRun</b>(<i>fn, argv, wd, autoFork=False, forkChild=False</i>)
-<p>
-        Public method to load a new program to run.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>autoFork=</i></dt>
-<dd>
-flag indicating the automatic fork mode (boolean)
-</dd><dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteSetThread" ID="DebuggerInterfacePython2.remoteSetThread"></a>
-<h4>DebuggerInterfacePython2.remoteSetThread</h4>
-<b>remoteSetThread</b>(<i>tid</i>)
-<p>
-        Public method to request to set the given thread as current thread.
-</p><dl>
-<dt><i>tid</i></dt>
-<dd>
-id of the thread (integer)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteStatement" ID="DebuggerInterfacePython2.remoteStatement"></a>
-<h4>DebuggerInterfacePython2.remoteStatement</h4>
-<b>remoteStatement</b>(<i>stmt</i>)
-<p>
-        Public method to execute a Python statement.
-</p><dl>
-<dt><i>stmt</i></dt>
-<dd>
-the Python statement to execute (string). It
-              should not have a trailing newline.
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteStep" ID="DebuggerInterfacePython2.remoteStep"></a>
-<h4>DebuggerInterfacePython2.remoteStep</h4>
-<b>remoteStep</b>(<i></i>)
-<p>
-        Public method to single step the debugged program.
-</p><a NAME="DebuggerInterfacePython2.remoteStepOut" ID="DebuggerInterfacePython2.remoteStepOut"></a>
-<h4>DebuggerInterfacePython2.remoteStepOut</h4>
-<b>remoteStepOut</b>(<i></i>)
-<p>
-        Public method to step out the debugged program.
-</p><a NAME="DebuggerInterfacePython2.remoteStepOver" ID="DebuggerInterfacePython2.remoteStepOver"></a>
-<h4>DebuggerInterfacePython2.remoteStepOver</h4>
-<b>remoteStepOver</b>(<i></i>)
-<p>
-        Public method to step over the debugged program.
-</p><a NAME="DebuggerInterfacePython2.remoteStepQuit" ID="DebuggerInterfacePython2.remoteStepQuit"></a>
-<h4>DebuggerInterfacePython2.remoteStepQuit</h4>
-<b>remoteStepQuit</b>(<i></i>)
-<p>
-        Public method to stop the debugged program.
-</p><a NAME="DebuggerInterfacePython2.remoteThreadList" ID="DebuggerInterfacePython2.remoteThreadList"></a>
-<h4>DebuggerInterfacePython2.remoteThreadList</h4>
-<b>remoteThreadList</b>(<i></i>)
-<p>
-        Public method to request the list of threads from the client.
-</p><a NAME="DebuggerInterfacePython2.remoteUTPrepare" ID="DebuggerInterfacePython2.remoteUTPrepare"></a>
-<h4>DebuggerInterfacePython2.remoteUTPrepare</h4>
-<b>remoteUTPrepare</b>(<i>fn, tn, tfn, failed, cov, covname, coverase</i>)
-<p>
-        Public method to prepare a new unittest run.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to load (string)
-</dd><dt><i>tn</i></dt>
-<dd>
-the testname to load (string)
-</dd><dt><i>tfn</i></dt>
-<dd>
-the test function name to load tests from (string)
-</dd><dt><i>failed</i></dt>
-<dd>
-list of failed test, if only failed test should be run
-            (list of strings)
-</dd><dt><i>cov</i></dt>
-<dd>
-flag indicating collection of coverage data is requested
-            (boolean)
-</dd><dt><i>covname</i></dt>
-<dd>
-filename to be used to assemble the coverage caches
-            filename (string)
-</dd><dt><i>coverase</i></dt>
-<dd>
-flag indicating erasure of coverage data is requested
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteUTRun" ID="DebuggerInterfacePython2.remoteUTRun"></a>
-<h4>DebuggerInterfacePython2.remoteUTRun</h4>
-<b>remoteUTRun</b>(<i></i>)
-<p>
-        Public method to start a unittest run.
-</p><a NAME="DebuggerInterfacePython2.remoteUTStop" ID="DebuggerInterfacePython2.remoteUTStop"></a>
-<h4>DebuggerInterfacePython2.remoteUTStop</h4>
-<b>remoteUTStop</b>(<i></i>)
-<p>
-        Public method to stop a unittest run.
-</p><a NAME="DebuggerInterfacePython2.remoteWatchpoint" ID="DebuggerInterfacePython2.remoteWatchpoint"></a>
-<h4>DebuggerInterfacePython2.remoteWatchpoint</h4>
-<b>remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
-<p>
-        Public method to set or clear a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>setWatch</i></dt>
-<dd>
-flag indicating setting or resetting a watch expression
-            (boolean)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary watch expression (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteWatchpointEnable" ID="DebuggerInterfacePython2.remoteWatchpointEnable"></a>
-<h4>DebuggerInterfacePython2.remoteWatchpointEnable</h4>
-<b>remoteWatchpointEnable</b>(<i>cond, enable</i>)
-<p>
-        Public method to enable or disable a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating enabling or disabling a watch expression
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.remoteWatchpointIgnore" ID="DebuggerInterfacePython2.remoteWatchpointIgnore"></a>
-<h4>DebuggerInterfacePython2.remoteWatchpointIgnore</h4>
-<b>remoteWatchpointIgnore</b>(<i>cond, count</i>)
-<p>
-        Public method to ignore a watch expression the next couple of
-        occurrences.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.setCallTraceEnabled" ID="DebuggerInterfacePython2.setCallTraceEnabled"></a>
-<h4>DebuggerInterfacePython2.setCallTraceEnabled</h4>
-<b>setCallTraceEnabled</b>(<i>on</i>)
-<p>
-        Public method to set the call trace state.
-</p><dl>
-<dt><i>on</i></dt>
-<dd>
-flag indicating to enable the call trace function (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.shutdown" ID="DebuggerInterfacePython2.shutdown"></a>
-<h4>DebuggerInterfacePython2.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to cleanly shut down.
-</p><p>
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
-</p><a NAME="DebuggerInterfacePython2.startRemote" ID="DebuggerInterfacePython2.startRemote"></a>
-<h4>DebuggerInterfacePython2.startRemote</h4>
-<b>startRemote</b>(<i>port, runInConsole</i>)
-<p>
-        Public method to start a remote Python interpreter.
-</p><dl>
-<dt><i>port</i></dt>
-<dd>
-portnumber the debug server is listening on (integer)
-</dd><dt><i>runInConsole</i></dt>
-<dd>
-flag indicating to start the debugger in a
-            console window (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython2.startRemoteForProject" ID="DebuggerInterfacePython2.startRemoteForProject"></a>
-<h4>DebuggerInterfacePython2.startRemoteForProject</h4>
-<b>startRemoteForProject</b>(<i>port, runInConsole</i>)
-<p>
-        Public method to start a remote Python interpreter for a project.
-</p><dl>
-<dt><i>port</i></dt>
-<dd>
-portnumber the debug server is listening on (integer)
-</dd><dt><i>runInConsole</i></dt>
-<dd>
-flag indicating to start the debugger in a
-            console window (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="createDebuggerInterfacePython2" ID="createDebuggerInterfacePython2"></a>
-<h2>createDebuggerInterfacePython2</h2>
-<b>createDebuggerInterfacePython2</b>(<i>debugServer, passive</i>)
-<p>
-    Module function to create a debugger interface instance.
-</p><p>
-
-</p><dl>
-<dt><i>debugServer</i> (DebugServer)</dt>
-<dd>
-reference to the debug server
-</dd><dt><i>passive</i> (bool)</dt>
-<dd>
-flag indicating passive connection mode
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-instantiated debugger interface
-</dd>
-</dl><dl>
-<dt>Return Type:</dt>
-<dd>
-DebuggerInterfacePython
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="getRegistryData" ID="getRegistryData"></a>
-<h2>getRegistryData</h2>
-<b>getRegistryData</b>(<i></i>)
-<p>
-    Module function to get characterizing data for the debugger interface.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
-</dd>
-</dl><dl>
-<dt>Return Type:</dt>
-<dd>
-tuple of (str, int, list of str, function)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Debugger.DebuggerInterfacePython3.html	Thu Aug 03 14:50:59 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,860 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.Debugger.DebuggerInterfacePython3</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.Debugger.DebuggerInterfacePython3</h1>
-<p>
-Module implementing the Python3 debugger interface for the debug server.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>ClientDefaultCapabilities</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#DebuggerInterfacePython3">DebuggerInterfacePython3</a></td>
-<td>Class implementing the Python 3 debugger interface for the debug server.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr>
-<td><a href="#createDebuggerInterfacePython3">createDebuggerInterfacePython3</a></td>
-<td>Module function to create a debugger interface instance.</td>
-</tr><tr>
-<td><a href="#getRegistryData">getRegistryData</a></td>
-<td>Module function to get characterizing data for the debugger interface.</td>
-</tr>
-</table>
-<hr /><hr />
-<a NAME="DebuggerInterfacePython3" ID="DebuggerInterfacePython3"></a>
-<h2>DebuggerInterfacePython3</h2>
-<p>
-    Class implementing the Python 3 debugger interface for the debug server.
-</p>
-<h3>Derived from</h3>
-QObject
-<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="#DebuggerInterfacePython3.__init__">DebuggerInterfacePython3</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__askForkTo">__askForkTo</a></td>
-<td>Private method to ask the user which branch of a fork to follow.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__handleJsonCommand">__handleJsonCommand</a></td>
-<td>Private method to handle a command or response serialized as a JSON string.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__identityTranslation">__identityTranslation</a></td>
-<td>Private method to perform the identity path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__parseClientLine">__parseClientLine</a></td>
-<td>Private method to handle data from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__remoteTranslation">__remoteTranslation</a></td>
-<td>Private method to perform the path translation.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__sendJsonCommand">__sendJsonCommand</a></td>
-<td>Private method to send a single command to the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.__startProcess">__startProcess</a></td>
-<td>Private method to start the debugger client process.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.flush">flush</a></td>
-<td>Public slot to flush the queue.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.getClientCapabilities">getClientCapabilities</a></td>
-<td>Public method to retrieve the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.isConnected">isConnected</a></td>
-<td>Public method to test, if a debug client has connected.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.newConnection">newConnection</a></td>
-<td>Public slot to handle a new connection.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteBanner">remoteBanner</a></td>
-<td>Public slot to get the banner info of the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteBreakpoint">remoteBreakpoint</a></td>
-<td>Public method to set or clear a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteBreakpointEnable">remoteBreakpointEnable</a></td>
-<td>Public method to enable or disable a breakpoint.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteBreakpointIgnore">remoteBreakpointIgnore</a></td>
-<td>Public method to ignore a breakpoint the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteCapabilities">remoteCapabilities</a></td>
-<td>Public slot to get the debug clients capabilities.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteClientSetFilter">remoteClientSetFilter</a></td>
-<td>Public method to set a variables filter list.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteClientVariable">remoteClientVariable</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteClientVariables">remoteClientVariables</a></td>
-<td>Public method to request the variables of the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteCompletion">remoteCompletion</a></td>
-<td>Public slot to get the a list of possible commandline completions from the remote client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteContinue">remoteContinue</a></td>
-<td>Public method to continue the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteCoverage">remoteCoverage</a></td>
-<td>Public method to load a new program to collect coverage data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteEnvironment">remoteEnvironment</a></td>
-<td>Public method to set the environment for a program to debug, run, ...</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteLoad">remoteLoad</a></td>
-<td>Public method to load a new program to debug.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteMoveIP">remoteMoveIP</a></td>
-<td>Public method to move the instruction pointer to a different line.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteProfile">remoteProfile</a></td>
-<td>Public method to load a new program to collect profiling data.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteRawInput">remoteRawInput</a></td>
-<td>Public method to send the raw input to the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteRun">remoteRun</a></td>
-<td>Public method to load a new program to run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteSetThread">remoteSetThread</a></td>
-<td>Public method to request to set the given thread as current thread.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteStatement">remoteStatement</a></td>
-<td>Public method to execute a Python statement.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteStep">remoteStep</a></td>
-<td>Public method to single step the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteStepOut">remoteStepOut</a></td>
-<td>Public method to step out the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteStepOver">remoteStepOver</a></td>
-<td>Public method to step over the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteStepQuit">remoteStepQuit</a></td>
-<td>Public method to stop the debugged program.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteThreadList">remoteThreadList</a></td>
-<td>Public method to request the list of threads from the client.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteUTPrepare">remoteUTPrepare</a></td>
-<td>Public method to prepare a new unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteUTRun">remoteUTRun</a></td>
-<td>Public method to start a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteUTStop">remoteUTStop</a></td>
-<td>Public method to stop a unittest run.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteWatchpoint">remoteWatchpoint</a></td>
-<td>Public method to set or clear a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteWatchpointEnable">remoteWatchpointEnable</a></td>
-<td>Public method to enable or disable a watch expression.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.remoteWatchpointIgnore">remoteWatchpointIgnore</a></td>
-<td>Public method to ignore a watch expression the next couple of occurrences.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.setCallTraceEnabled">setCallTraceEnabled</a></td>
-<td>Public method to set the call trace state.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.shutdown">shutdown</a></td>
-<td>Public method to cleanly shut down.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.startRemote">startRemote</a></td>
-<td>Public method to start a remote Python interpreter.</td>
-</tr><tr>
-<td><a href="#DebuggerInterfacePython3.startRemoteForProject">startRemoteForProject</a></td>
-<td>Public method to start a remote Python interpreter for a project.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="DebuggerInterfacePython3.__init__" ID="DebuggerInterfacePython3.__init__"></a>
-<h4>DebuggerInterfacePython3 (Constructor)</h4>
-<b>DebuggerInterfacePython3</b>(<i>debugServer, passive</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>debugServer</i></dt>
-<dd>
-reference to the debug server (DebugServer)
-</dd><dt><i>passive</i></dt>
-<dd>
-flag indicating passive connection mode (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.__askForkTo" ID="DebuggerInterfacePython3.__askForkTo"></a>
-<h4>DebuggerInterfacePython3.__askForkTo</h4>
-<b>__askForkTo</b>(<i></i>)
-<p>
-        Private method to ask the user which branch of a fork to follow.
-</p><a NAME="DebuggerInterfacePython3.__handleJsonCommand" ID="DebuggerInterfacePython3.__handleJsonCommand"></a>
-<h4>DebuggerInterfacePython3.__handleJsonCommand</h4>
-<b>__handleJsonCommand</b>(<i>jsonStr</i>)
-<p>
-        Private method to handle a command or response serialized as a
-        JSON string.
-</p><dl>
-<dt><i>jsonStr</i> (str)</dt>
-<dd>
-string containing the command or response received
-            from the debug backend
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.__identityTranslation" ID="DebuggerInterfacePython3.__identityTranslation"></a>
-<h4>DebuggerInterfacePython3.__identityTranslation</h4>
-<b>__identityTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the identity path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.__parseClientLine" ID="DebuggerInterfacePython3.__parseClientLine"></a>
-<h4>DebuggerInterfacePython3.__parseClientLine</h4>
-<b>__parseClientLine</b>(<i></i>)
-<p>
-        Private method to handle data from the client.
-</p><a NAME="DebuggerInterfacePython3.__remoteTranslation" ID="DebuggerInterfacePython3.__remoteTranslation"></a>
-<h4>DebuggerInterfacePython3.__remoteTranslation</h4>
-<b>__remoteTranslation</b>(<i>fn, remote2local=True</i>)
-<p>
-        Private method to perform the path translation.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename to be translated (string)
-</dd><dt><i>remote2local</i></dt>
-<dd>
-flag indicating the direction of translation
-            (False = local to remote, True = remote to local [default])
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-translated filename (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.__sendJsonCommand" ID="DebuggerInterfacePython3.__sendJsonCommand"></a>
-<h4>DebuggerInterfacePython3.__sendJsonCommand</h4>
-<b>__sendJsonCommand</b>(<i>command, params</i>)
-<p>
-        Private method to send a single command to the client.
-</p><dl>
-<dt><i>command</i> (str)</dt>
-<dd>
-command name to be sent
-</dd><dt><i>params</i> (dict)</dt>
-<dd>
-dictionary of named parameters for the command
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.__startProcess" ID="DebuggerInterfacePython3.__startProcess"></a>
-<h4>DebuggerInterfacePython3.__startProcess</h4>
-<b>__startProcess</b>(<i>program, arguments, environment=None</i>)
-<p>
-        Private method to start the debugger client process.
-</p><dl>
-<dt><i>program</i></dt>
-<dd>
-name of the executable to start (string)
-</dd><dt><i>arguments</i></dt>
-<dd>
-arguments to be passed to the program (list of string)
-</dd><dt><i>environment</i></dt>
-<dd>
-dictionary of environment settings to pass
-            (dict of string)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-the process object (QProcess) or None
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.flush" ID="DebuggerInterfacePython3.flush"></a>
-<h4>DebuggerInterfacePython3.flush</h4>
-<b>flush</b>(<i></i>)
-<p>
-        Public slot to flush the queue.
-</p><a NAME="DebuggerInterfacePython3.getClientCapabilities" ID="DebuggerInterfacePython3.getClientCapabilities"></a>
-<h4>DebuggerInterfacePython3.getClientCapabilities</h4>
-<b>getClientCapabilities</b>(<i></i>)
-<p>
-        Public method to retrieve the debug clients capabilities.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-debug client capabilities (integer)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.isConnected" ID="DebuggerInterfacePython3.isConnected"></a>
-<h4>DebuggerInterfacePython3.isConnected</h4>
-<b>isConnected</b>(<i></i>)
-<p>
-        Public method to test, if a debug client has connected.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating the connection status (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.newConnection" ID="DebuggerInterfacePython3.newConnection"></a>
-<h4>DebuggerInterfacePython3.newConnection</h4>
-<b>newConnection</b>(<i>sock</i>)
-<p>
-        Public slot to handle a new connection.
-</p><dl>
-<dt><i>sock</i></dt>
-<dd>
-reference to the socket object (QTcpSocket)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-flag indicating success (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteBanner" ID="DebuggerInterfacePython3.remoteBanner"></a>
-<h4>DebuggerInterfacePython3.remoteBanner</h4>
-<b>remoteBanner</b>(<i></i>)
-<p>
-        Public slot to get the banner info of the remote client.
-</p><a NAME="DebuggerInterfacePython3.remoteBreakpoint" ID="DebuggerInterfacePython3.remoteBreakpoint"></a>
-<h4>DebuggerInterfacePython3.remoteBreakpoint</h4>
-<b>remoteBreakpoint</b>(<i>fn, line, setBreakpoint, cond=None, temp=False</i>)
-<p>
-        Public method to set or clear a breakpoint.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>setBreakpoint</i></dt>
-<dd>
-flag indicating setting or resetting a
-            breakpoint (boolean)
-</dd><dt><i>cond</i></dt>
-<dd>
-condition of the breakpoint (string)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary breakpoint (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteBreakpointEnable" ID="DebuggerInterfacePython3.remoteBreakpointEnable"></a>
-<h4>DebuggerInterfacePython3.remoteBreakpointEnable</h4>
-<b>remoteBreakpointEnable</b>(<i>fn, line, enable</i>)
-<p>
-        Public method to enable or disable a breakpoint.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating enabling or disabling a breakpoint
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteBreakpointIgnore" ID="DebuggerInterfacePython3.remoteBreakpointIgnore"></a>
-<h4>DebuggerInterfacePython3.remoteBreakpointIgnore</h4>
-<b>remoteBreakpointIgnore</b>(<i>fn, line, count</i>)
-<p>
-        Public method to ignore a breakpoint the next couple of occurrences.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-filename the breakpoint belongs to (string)
-</dd><dt><i>line</i></dt>
-<dd>
-linenumber of the breakpoint (int)
-</dd><dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteCapabilities" ID="DebuggerInterfacePython3.remoteCapabilities"></a>
-<h4>DebuggerInterfacePython3.remoteCapabilities</h4>
-<b>remoteCapabilities</b>(<i></i>)
-<p>
-        Public slot to get the debug clients capabilities.
-</p><a NAME="DebuggerInterfacePython3.remoteClientSetFilter" ID="DebuggerInterfacePython3.remoteClientSetFilter"></a>
-<h4>DebuggerInterfacePython3.remoteClientSetFilter</h4>
-<b>remoteClientSetFilter</b>(<i>scope, filterStr</i>)
-<p>
-        Public method to set a variables filter list.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterStr</i></dt>
-<dd>
-regexp string for variable names to filter out
-            (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteClientVariable" ID="DebuggerInterfacePython3.remoteClientVariable"></a>
-<h4>DebuggerInterfacePython3.remoteClientVariable</h4>
-<b>remoteClientVariable</b>(<i>scope, filterList, var, framenr=0</i>)
-<p>
-        Public method to request the variables of the debugged program.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd><dt><i>var</i></dt>
-<dd>
-list encoded name of variable to retrieve (string)
-</dd><dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteClientVariables" ID="DebuggerInterfacePython3.remoteClientVariables"></a>
-<h4>DebuggerInterfacePython3.remoteClientVariables</h4>
-<b>remoteClientVariables</b>(<i>scope, filterList, framenr=0</i>)
-<p>
-        Public method to request the variables of the debugged program.
-</p><dl>
-<dt><i>scope</i></dt>
-<dd>
-the scope of the variables (0 = local, 1 = global)
-</dd><dt><i>filterList</i></dt>
-<dd>
-list of variable types to filter out (list of int)
-</dd><dt><i>framenr</i></dt>
-<dd>
-framenumber of the variables to retrieve (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteCompletion" ID="DebuggerInterfacePython3.remoteCompletion"></a>
-<h4>DebuggerInterfacePython3.remoteCompletion</h4>
-<b>remoteCompletion</b>(<i>text</i>)
-<p>
-        Public slot to get the a list of possible commandline completions
-        from the remote client.
-</p><dl>
-<dt><i>text</i></dt>
-<dd>
-the text to be completed (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteContinue" ID="DebuggerInterfacePython3.remoteContinue"></a>
-<h4>DebuggerInterfacePython3.remoteContinue</h4>
-<b>remoteContinue</b>(<i>special=False</i>)
-<p>
-        Public method to continue the debugged program.
-</p><dl>
-<dt><i>special</i></dt>
-<dd>
-flag indicating a special continue operation
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteCoverage" ID="DebuggerInterfacePython3.remoteCoverage"></a>
-<h4>DebuggerInterfacePython3.remoteCoverage</h4>
-<b>remoteCoverage</b>(<i>fn, argv, wd, erase=False</i>)
-<p>
-        Public method to load a new program to collect coverage data.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>erase=</i></dt>
-<dd>
-flag indicating that coverage info should be
-            cleared first (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteEnvironment" ID="DebuggerInterfacePython3.remoteEnvironment"></a>
-<h4>DebuggerInterfacePython3.remoteEnvironment</h4>
-<b>remoteEnvironment</b>(<i>env</i>)
-<p>
-        Public method to set the environment for a program to debug, run, ...
-</p><dl>
-<dt><i>env</i></dt>
-<dd>
-environment settings (dictionary)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteLoad" ID="DebuggerInterfacePython3.remoteLoad"></a>
-<h4>DebuggerInterfacePython3.remoteLoad</h4>
-<b>remoteLoad</b>(<i>fn, argv, wd, traceInterpreter=False, autoContinue=True, autoFork=False, forkChild=False</i>)
-<p>
-        Public method to load a new program to debug.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to debug (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>traceInterpreter=</i></dt>
-<dd>
-flag indicating if the interpreter library
-            should be traced as well (boolean)
-</dd><dt><i>autoContinue=</i></dt>
-<dd>
-flag indicating, that the debugger should not
-            stop at the first executable line (boolean)
-</dd><dt><i>autoFork=</i></dt>
-<dd>
-flag indicating the automatic fork mode (boolean)
-</dd><dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteMoveIP" ID="DebuggerInterfacePython3.remoteMoveIP"></a>
-<h4>DebuggerInterfacePython3.remoteMoveIP</h4>
-<b>remoteMoveIP</b>(<i>line</i>)
-<p>
-        Public method to move the instruction pointer to a different line.
-</p><dl>
-<dt><i>line</i></dt>
-<dd>
-the new line, where execution should be continued
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteProfile" ID="DebuggerInterfacePython3.remoteProfile"></a>
-<h4>DebuggerInterfacePython3.remoteProfile</h4>
-<b>remoteProfile</b>(<i>fn, argv, wd, erase=False</i>)
-<p>
-        Public method to load a new program to collect profiling data.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>erase=</i></dt>
-<dd>
-flag indicating that timing info should be cleared
-            first (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteRawInput" ID="DebuggerInterfacePython3.remoteRawInput"></a>
-<h4>DebuggerInterfacePython3.remoteRawInput</h4>
-<b>remoteRawInput</b>(<i>s</i>)
-<p>
-        Public method to send the raw input to the debugged program.
-</p><dl>
-<dt><i>s</i></dt>
-<dd>
-the raw input (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteRun" ID="DebuggerInterfacePython3.remoteRun"></a>
-<h4>DebuggerInterfacePython3.remoteRun</h4>
-<b>remoteRun</b>(<i>fn, argv, wd, autoFork=False, forkChild=False</i>)
-<p>
-        Public method to load a new program to run.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to run (string)
-</dd><dt><i>argv</i></dt>
-<dd>
-the commandline arguments to pass to the program (string)
-</dd><dt><i>wd</i></dt>
-<dd>
-the working directory for the program (string)
-</dd><dt><i>autoFork=</i></dt>
-<dd>
-flag indicating the automatic fork mode (boolean)
-</dd><dt><i>forkChild=</i></dt>
-<dd>
-flag indicating to debug the child after forking
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteSetThread" ID="DebuggerInterfacePython3.remoteSetThread"></a>
-<h4>DebuggerInterfacePython3.remoteSetThread</h4>
-<b>remoteSetThread</b>(<i>tid</i>)
-<p>
-        Public method to request to set the given thread as current thread.
-</p><dl>
-<dt><i>tid</i></dt>
-<dd>
-id of the thread (integer)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteStatement" ID="DebuggerInterfacePython3.remoteStatement"></a>
-<h4>DebuggerInterfacePython3.remoteStatement</h4>
-<b>remoteStatement</b>(<i>stmt</i>)
-<p>
-        Public method to execute a Python statement.
-</p><dl>
-<dt><i>stmt</i></dt>
-<dd>
-the Python statement to execute (string). It
-              should not have a trailing newline.
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteStep" ID="DebuggerInterfacePython3.remoteStep"></a>
-<h4>DebuggerInterfacePython3.remoteStep</h4>
-<b>remoteStep</b>(<i></i>)
-<p>
-        Public method to single step the debugged program.
-</p><a NAME="DebuggerInterfacePython3.remoteStepOut" ID="DebuggerInterfacePython3.remoteStepOut"></a>
-<h4>DebuggerInterfacePython3.remoteStepOut</h4>
-<b>remoteStepOut</b>(<i></i>)
-<p>
-        Public method to step out the debugged program.
-</p><a NAME="DebuggerInterfacePython3.remoteStepOver" ID="DebuggerInterfacePython3.remoteStepOver"></a>
-<h4>DebuggerInterfacePython3.remoteStepOver</h4>
-<b>remoteStepOver</b>(<i></i>)
-<p>
-        Public method to step over the debugged program.
-</p><a NAME="DebuggerInterfacePython3.remoteStepQuit" ID="DebuggerInterfacePython3.remoteStepQuit"></a>
-<h4>DebuggerInterfacePython3.remoteStepQuit</h4>
-<b>remoteStepQuit</b>(<i></i>)
-<p>
-        Public method to stop the debugged program.
-</p><a NAME="DebuggerInterfacePython3.remoteThreadList" ID="DebuggerInterfacePython3.remoteThreadList"></a>
-<h4>DebuggerInterfacePython3.remoteThreadList</h4>
-<b>remoteThreadList</b>(<i></i>)
-<p>
-        Public method to request the list of threads from the client.
-</p><a NAME="DebuggerInterfacePython3.remoteUTPrepare" ID="DebuggerInterfacePython3.remoteUTPrepare"></a>
-<h4>DebuggerInterfacePython3.remoteUTPrepare</h4>
-<b>remoteUTPrepare</b>(<i>fn, tn, tfn, failed, cov, covname, coverase</i>)
-<p>
-        Public method to prepare a new unittest run.
-</p><dl>
-<dt><i>fn</i></dt>
-<dd>
-the filename to load (string)
-</dd><dt><i>tn</i></dt>
-<dd>
-the testname to load (string)
-</dd><dt><i>tfn</i></dt>
-<dd>
-the test function name to load tests from (string)
-</dd><dt><i>failed</i></dt>
-<dd>
-list of failed test, if only failed test should be run
-            (list of strings)
-</dd><dt><i>cov</i></dt>
-<dd>
-flag indicating collection of coverage data is requested
-            (boolean)
-</dd><dt><i>covname</i></dt>
-<dd>
-filename to be used to assemble the coverage caches
-            filename (string)
-</dd><dt><i>coverase</i></dt>
-<dd>
-flag indicating erasure of coverage data is requested
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteUTRun" ID="DebuggerInterfacePython3.remoteUTRun"></a>
-<h4>DebuggerInterfacePython3.remoteUTRun</h4>
-<b>remoteUTRun</b>(<i></i>)
-<p>
-        Public method to start a unittest run.
-</p><a NAME="DebuggerInterfacePython3.remoteUTStop" ID="DebuggerInterfacePython3.remoteUTStop"></a>
-<h4>DebuggerInterfacePython3.remoteUTStop</h4>
-<b>remoteUTStop</b>(<i></i>)
-<p>
-        Public method to stop a unittest run.
-</p><a NAME="DebuggerInterfacePython3.remoteWatchpoint" ID="DebuggerInterfacePython3.remoteWatchpoint"></a>
-<h4>DebuggerInterfacePython3.remoteWatchpoint</h4>
-<b>remoteWatchpoint</b>(<i>cond, setWatch, temp=False</i>)
-<p>
-        Public method to set or clear a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>setWatch</i></dt>
-<dd>
-flag indicating setting or resetting a watch expression
-            (boolean)
-</dd><dt><i>temp</i></dt>
-<dd>
-flag indicating a temporary watch expression (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteWatchpointEnable" ID="DebuggerInterfacePython3.remoteWatchpointEnable"></a>
-<h4>DebuggerInterfacePython3.remoteWatchpointEnable</h4>
-<b>remoteWatchpointEnable</b>(<i>cond, enable</i>)
-<p>
-        Public method to enable or disable a watch expression.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>enable</i></dt>
-<dd>
-flag indicating enabling or disabling a watch expression
-            (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.remoteWatchpointIgnore" ID="DebuggerInterfacePython3.remoteWatchpointIgnore"></a>
-<h4>DebuggerInterfacePython3.remoteWatchpointIgnore</h4>
-<b>remoteWatchpointIgnore</b>(<i>cond, count</i>)
-<p>
-        Public method to ignore a watch expression the next couple of
-        occurrences.
-</p><dl>
-<dt><i>cond</i></dt>
-<dd>
-expression of the watch expression (string)
-</dd><dt><i>count</i></dt>
-<dd>
-number of occurrences to ignore (int)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.setCallTraceEnabled" ID="DebuggerInterfacePython3.setCallTraceEnabled"></a>
-<h4>DebuggerInterfacePython3.setCallTraceEnabled</h4>
-<b>setCallTraceEnabled</b>(<i>on</i>)
-<p>
-        Public method to set the call trace state.
-</p><dl>
-<dt><i>on</i></dt>
-<dd>
-flag indicating to enable the call trace function (boolean)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.shutdown" ID="DebuggerInterfacePython3.shutdown"></a>
-<h4>DebuggerInterfacePython3.shutdown</h4>
-<b>shutdown</b>(<i></i>)
-<p>
-        Public method to cleanly shut down.
-</p><p>
-        It closes our socket and shuts down
-        the debug client. (Needed on Win OS)
-</p><a NAME="DebuggerInterfacePython3.startRemote" ID="DebuggerInterfacePython3.startRemote"></a>
-<h4>DebuggerInterfacePython3.startRemote</h4>
-<b>startRemote</b>(<i>port, runInConsole</i>)
-<p>
-        Public method to start a remote Python interpreter.
-</p><dl>
-<dt><i>port</i></dt>
-<dd>
-portnumber the debug server is listening on (integer)
-</dd><dt><i>runInConsole</i></dt>
-<dd>
-flag indicating to start the debugger in a
-            console window (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-</dd>
-</dl><a NAME="DebuggerInterfacePython3.startRemoteForProject" ID="DebuggerInterfacePython3.startRemoteForProject"></a>
-<h4>DebuggerInterfacePython3.startRemoteForProject</h4>
-<b>startRemoteForProject</b>(<i>port, runInConsole</i>)
-<p>
-        Public method to start a remote Python interpreter for a project.
-</p><dl>
-<dt><i>port</i></dt>
-<dd>
-portnumber the debug server is listening on (integer)
-</dd><dt><i>runInConsole</i></dt>
-<dd>
-flag indicating to start the debugger in a
-            console window (boolean)
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-client process object (QProcess), a flag to indicate
-            a network connection (boolean) and the name of the interpreter
-            in case of a local execution (string)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="createDebuggerInterfacePython3" ID="createDebuggerInterfacePython3"></a>
-<h2>createDebuggerInterfacePython3</h2>
-<b>createDebuggerInterfacePython3</b>(<i>debugServer, passive</i>)
-<p>
-    Module function to create a debugger interface instance.
-</p><p>
-
-</p><dl>
-<dt><i>debugServer</i> (DebugServer)</dt>
-<dd>
-reference to the debug server
-</dd><dt><i>passive</i> (bool)</dt>
-<dd>
-flag indicating passive connection mode
-</dd>
-</dl><dl>
-<dt>Returns:</dt>
-<dd>
-instantiated debugger interface
-</dd>
-</dl><dl>
-<dt>Return Type:</dt>
-<dd>
-DebuggerInterfacePython
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr /><hr />
-<a NAME="getRegistryData" ID="getRegistryData"></a>
-<h2>getRegistryData</h2>
-<b>getRegistryData</b>(<i></i>)
-<p>
-    Module function to get characterizing data for the debugger interface.
-</p><dl>
-<dt>Returns:</dt>
-<dd>
-tuple containing  client type, client capabilities, client file
-        type associations and reference to creation function
-</dd>
-</dl><dl>
-<dt>Return Type:</dt>
-<dd>
-tuple of (str, int, list of str, function)
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.E5Gui.E5ErrorMessageFilterDialog.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5ErrorMessageFilterDialog.html	Fri Sep 01 12:08:17 2017 +0200
@@ -60,6 +60,9 @@
 <td><a href="#E5ErrorMessageFilterDialog.__init__">E5ErrorMessageFilterDialog</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#E5ErrorMessageFilterDialog.__setToDefault">__setToDefault</a></td>
+<td>Private slot to set the message list to the default values.</td>
+</tr><tr>
 <td><a href="#E5ErrorMessageFilterDialog.getFilters">getFilters</a></td>
 <td>Public method to get the list of message filters.</td>
 </tr>
@@ -70,19 +73,26 @@
 </table>
 <a NAME="E5ErrorMessageFilterDialog.__init__" ID="E5ErrorMessageFilterDialog.__init__"></a>
 <h4>E5ErrorMessageFilterDialog (Constructor)</h4>
-<b>E5ErrorMessageFilterDialog</b>(<i>messageFilters, parent=None</i>)
+<b>E5ErrorMessageFilterDialog</b>(<i>messageFilters, defaultFilters, parent=None</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>messageFilters</i></dt>
+<dt><i>messageFilters</i> (list of str)</dt>
 <dd>
 list of message filters to be edited
-            (list of strings)
-</dd><dt><i>parent</i></dt>
+</dd><dt><i>defaultFilters</i> (list of str)</dt>
+<dd>
+list of default message filters
+</dd><dt><i>parent</i> (QWidget)</dt>
 <dd>
-reference to the parent widget (QWidget)
+reference to the parent widget
 </dd>
-</dl><a NAME="E5ErrorMessageFilterDialog.getFilters" ID="E5ErrorMessageFilterDialog.getFilters"></a>
+</dl><a NAME="E5ErrorMessageFilterDialog.__setToDefault" ID="E5ErrorMessageFilterDialog.__setToDefault"></a>
+<h4>E5ErrorMessageFilterDialog.__setToDefault</h4>
+<b>__setToDefault</b>(<i></i>)
+<p>
+        Private slot to set the message list to the default values.
+</p><a NAME="E5ErrorMessageFilterDialog.getFilters" ID="E5ErrorMessageFilterDialog.getFilters"></a>
 <h4>E5ErrorMessageFilterDialog.getFilters</h4>
 <b>getFilters</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.E5Gui.E5StringListEditWidget.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5StringListEditWidget.html	Fri Sep 01 12:08:17 2017 +0200
@@ -43,7 +43,13 @@
 <h2>E5StringListEditWidget</h2>
 <p>
     Class implementing a dialog to edit a list of strings.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>setToDefault()</dt>
+<dd>
+emitted to request the default list of values
+</dd>
+</dl>
 <h3>Derived from</h3>
 QWidget, Ui_E5StringListEditWidget
 <h3>Class Attributes</h3>
@@ -66,6 +72,9 @@
 <td><a href="#E5StringListEditWidget.on_addButton_clicked">on_addButton_clicked</a></td>
 <td>Private slot to add an entry to the list.</td>
 </tr><tr>
+<td><a href="#E5StringListEditWidget.setDefaultVisible">setDefaultVisible</a></td>
+<td>Public method to show or hide the default button.</td>
+</tr><tr>
 <td><a href="#E5StringListEditWidget.setList">setList</a></td>
 <td>Public method to set the list of strings to be edited.</td>
 </tr><tr>
@@ -102,7 +111,17 @@
 <b>on_addButton_clicked</b>(<i></i>)
 <p>
         Private slot to add an entry to the list.
-</p><a NAME="E5StringListEditWidget.setList" ID="E5StringListEditWidget.setList"></a>
+</p><a NAME="E5StringListEditWidget.setDefaultVisible" ID="E5StringListEditWidget.setDefaultVisible"></a>
+<h4>E5StringListEditWidget.setDefaultVisible</h4>
+<b>setDefaultVisible</b>(<i>visible</i>)
+<p>
+        Public method to show or hide the default button.
+</p><dl>
+<dt><i>visible</i> (bool)</dt>
+<dd>
+flag indicating the visibility of the default button
+</dd>
+</dl><a NAME="E5StringListEditWidget.setList" ID="E5StringListEditWidget.setList"></a>
 <h4>E5StringListEditWidget.setList</h4>
 <b>setList</b>(<i>stringList</i>)
 <p>
--- a/Documentation/Source/eric6.Globals.__init__.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.Globals.__init__.html	Fri Sep 01 12:08:17 2017 +0200
@@ -73,6 +73,9 @@
 <td><a href="#strGroup">strGroup</a></td>
 <td>Module function to group a string into sub-strings separated by a separator.</td>
 </tr><tr>
+<td><a href="#strToQByteArray">strToQByteArray</a></td>
+<td>Module function to convert a Python string into a QByteArray.</td>
+</tr><tr>
 <td><a href="#toBool">toBool</a></td>
 <td>Module function to convert a value to bool.</td>
 </tr><tr>
@@ -299,6 +302,29 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="strToQByteArray" ID="strToQByteArray"></a>
+<h2>strToQByteArray</h2>
+<b>strToQByteArray</b>(<i>txt</i>)
+<p>
+    Module function to convert a Python string into a QByteArray.
+</p><dl>
+<dt><i>txt</i> (str, bytes, bytearray, unicode)</dt>
+<dd>
+Python string to be converted
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+converted QByteArray
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QByteArray
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="toBool" ID="toBool"></a>
 <h2>toBool</h2>
 <b>toBool</b>(<i>value</i>)
--- a/Documentation/Source/eric6.PluginManager.PluginManager.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.PluginManager.PluginManager.html	Fri Sep 01 12:08:17 2017 +0200
@@ -456,7 +456,7 @@
 </p><dl>
 <dt><i>type_</i></dt>
 <dd>
-type of the plugin to be activated (string)
+type of the plugin to clear private data for (string)
 </dd>
 </dl><a NAME="PluginManager.deactivatePlugin" ID="PluginManager.deactivatePlugin"></a>
 <h4>PluginManager.deactivatePlugin</h4>
--- a/Documentation/Source/eric6.Preferences.ConfigurationPages.MimeTypesPage.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.Preferences.ConfigurationPages.MimeTypesPage.html	Fri Sep 01 12:08:17 2017 +0200
@@ -63,6 +63,9 @@
 <td><a href="#MimeTypesPage.__init__">MimeTypesPage</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#MimeTypesPage.__setToDefault">__setToDefault</a></td>
+<td>Private slot to set the message list to the default values.</td>
+</tr><tr>
 <td><a href="#MimeTypesPage.on_resetButton_clicked">on_resetButton_clicked</a></td>
 <td>Private slot to set the default list of mime types.</td>
 </tr><tr>
@@ -84,7 +87,12 @@
 <dd>
 reference to the parent widget (QWidget)
 </dd>
-</dl><a NAME="MimeTypesPage.on_resetButton_clicked" ID="MimeTypesPage.on_resetButton_clicked"></a>
+</dl><a NAME="MimeTypesPage.__setToDefault" ID="MimeTypesPage.__setToDefault"></a>
+<h4>MimeTypesPage.__setToDefault</h4>
+<b>__setToDefault</b>(<i></i>)
+<p>
+        Private slot to set the message list to the default values.
+</p><a NAME="MimeTypesPage.on_resetButton_clicked" ID="MimeTypesPage.on_resetButton_clicked"></a>
 <h4>MimeTypesPage.on_resetButton_clicked</h4>
 <b>on_resetButton_clicked</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.QScintilla.Exporters.ExporterHTML.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.QScintilla.Exporters.ExporterHTML.html	Fri Sep 01 12:08:17 2017 +0200
@@ -35,6 +35,9 @@
 </tr><tr>
 <td><a href="#HTMLGenerator">HTMLGenerator</a></td>
 <td>Class implementing an HTML generator for exporting source code.</td>
+</tr><tr>
+<td><a href="#_StrikeThroughExtension">_StrikeThroughExtension</a></td>
+<td>Class is placed here, because it depends on imported markdown, and markdown import is lazy.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -63,6 +66,12 @@
 <td><a href="#ExporterHTML.__init__">ExporterHTML</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#ExporterHTML.__generateFromMarkdown">__generateFromMarkdown</a></td>
+<td>Private method to convert Markdown text into HTML.</td>
+</tr><tr>
+<td><a href="#ExporterHTML.__generateFromReSTDocutils">__generateFromReSTDocutils</a></td>
+<td>Private method to convert ReST text into HTML using 'docutils'.</td>
+</tr><tr>
 <td><a href="#ExporterHTML.exportSource">exportSource</a></td>
 <td>Public method performing the export.</td>
 </tr>
@@ -84,6 +93,31 @@
 <dd>
 parent object of the exporter (QObject)
 </dd>
+</dl><a NAME="ExporterHTML.__generateFromMarkdown" ID="ExporterHTML.__generateFromMarkdown"></a>
+<h4>ExporterHTML.__generateFromMarkdown</h4>
+<b>__generateFromMarkdown</b>(<i></i>)
+<p>
+        Private method to convert Markdown text into HTML.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+processed HTML
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="ExporterHTML.__generateFromReSTDocutils" ID="ExporterHTML.__generateFromReSTDocutils"></a>
+<h4>ExporterHTML.__generateFromReSTDocutils</h4>
+<b>__generateFromReSTDocutils</b>(<i></i>)
+<p>
+        Private method to convert ReST text into HTML using 'docutils'.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+processed HTML (string)
+</dd>
 </dl><a NAME="ExporterHTML.exportSource" ID="ExporterHTML.exportSource"></a>
 <h4>ExporterHTML.exportSource</h4>
 <b>exportSource</b>(<i></i>)
@@ -165,5 +199,42 @@
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="_StrikeThroughExtension" ID="_StrikeThroughExtension"></a>
+<h2>_StrikeThroughExtension</h2>
+<p>
+                Class is placed here, because it depends on imported markdown,
+                and markdown import is lazy.
+</p><p>
+                (see http://achinghead.com/
+                python-markdown-adding-insert-delete.html this page for
+                details)
+</p>
+<h3>Derived from</h3>
+markdown.Extension
+<h3>Class Attributes</h3>
+<table>
+<tr><td>DEL_RE</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#_StrikeThroughExtension.extendMarkdown">extendMarkdown</a></td>
+<td></td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="_StrikeThroughExtension.extendMarkdown" ID="_StrikeThroughExtension.extendMarkdown"></a>
+<h4>_StrikeThroughExtension.extendMarkdown</h4>
+<b>extendMarkdown</b>(<i>md, md_globals</i>)
+
+<div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Tasks.TaskViewer.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.Tasks.TaskViewer.html	Fri Sep 01 12:08:17 2017 +0200
@@ -177,7 +177,7 @@
 <td>Private method to delete all sub-tasks.</td>
 </tr><tr>
 <td><a href="#TaskViewer.__deleteTask">__deleteTask</a></td>
-<td>Private slot to handle the "Delete Task" context menu entry.</td>
+<td>Private slot to delete a task.</td>
 </tr><tr>
 <td><a href="#TaskViewer.__editTaskProperties">__editTaskProperties</a></td>
 <td>Private slot to handle the "Properties" context menu entry.</td>
@@ -327,10 +327,15 @@
 </dd>
 </dl><a NAME="TaskViewer.__deleteTask" ID="TaskViewer.__deleteTask"></a>
 <h4>TaskViewer.__deleteTask</h4>
-<b>__deleteTask</b>(<i></i>)
+<b>__deleteTask</b>(<i>task=None</i>)
 <p>
-        Private slot to handle the "Delete Task" context menu entry.
-</p><a NAME="TaskViewer.__editTaskProperties" ID="TaskViewer.__editTaskProperties"></a>
+        Private slot to delete a task.
+</p><dl>
+<dt><i>task</i> (Task)</dt>
+<dd>
+task to be deleted
+</dd>
+</dl><a NAME="TaskViewer.__editTaskProperties" ID="TaskViewer.__editTaskProperties"></a>
 <h4>TaskViewer.__editTaskProperties</h4>
 <b>__editTaskProperties</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.UI.NotificationWidget.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.UI.NotificationWidget.html	Fri Sep 01 12:08:17 2017 +0200
@@ -169,9 +169,9 @@
 <p>
         Public method to set the timeout for the notification.
 </p><dl>
-<dt><i>timeout</i></dt>
+<dt><i>timeout</i> (int)</dt>
 <dd>
-timeout to be used in seconds (integer)
+timeout to be used in seconds (0 = indefinitely)
 </dd>
 </dl><a NAME="NotificationWidget.show" ID="NotificationWidget.show"></a>
 <h4>NotificationWidget.show</h4>
--- a/Documentation/Source/eric6.UI.Previewers.PreviewerHTML.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.UI.Previewers.PreviewerHTML.html	Fri Sep 01 12:08:17 2017 +0200
@@ -52,10 +52,11 @@
     previewer view.
 </p><h3>Signals</h3>
 <dl>
-<dt>htmlReady(str,str)</dt>
+<dt>htmlReady(str, str, str)</dt>
 <dd>
-emitted with the file name and processed HTML
-        to signal the availability of the processed HTML
+emitted with the file name, the processed
+        HTML and the web site root path to signal the availability of the
+        processed HTML
 </dd>
 </dl>
 <h3>Derived from</h3>
@@ -89,6 +90,9 @@
 <td><a href="#PreviewProcessingThread.__getHtml">__getHtml</a></td>
 <td>Private method to process the given text depending upon the given language.</td>
 </tr><tr>
+<td><a href="#PreviewProcessingThread.__processRootPath">__processRootPath</a></td>
+<td>Private method to adjust absolute references to the given root path.</td>
+</tr><tr>
 <td><a href="#PreviewProcessingThread.__processSSI">__processSSI</a></td>
 <td>Private method to process the given text for SSI statements.</td>
 </tr><tr>
@@ -115,13 +119,20 @@
 </dd>
 </dl><a NAME="PreviewProcessingThread.__convertMarkdown" ID="PreviewProcessingThread.__convertMarkdown"></a>
 <h4>PreviewProcessingThread.__convertMarkdown</h4>
-<b>__convertMarkdown</b>(<i>text</i>)
+<b>__convertMarkdown</b>(<i>text, convertNewLineToBreak, htmlFormat</i>)
 <p>
         Private method to convert Markdown text into HTML.
 </p><dl>
 <dt><i>text</i></dt>
 <dd>
 text to be processed (string)
+</dd><dt><i>convertNewLineToBreak</i></dt>
+<dd>
+flag indicating to convert new lines
+            to HTML break (Markdown only) (boolean)
+</dd><dt><i>htmlFormat</i></dt>
+<dd>
+HTML format to be generated by markdown (string)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -130,7 +141,7 @@
 </dd>
 </dl><a NAME="PreviewProcessingThread.__convertReST" ID="PreviewProcessingThread.__convertReST"></a>
 <h4>PreviewProcessingThread.__convertReST</h4>
-<b>__convertReST</b>(<i>text, useSphinx</i>)
+<b>__convertReST</b>(<i>text, useSphinx, restDocutilsHtmlFormat</i>)
 <p>
         Private method to convert ReST text into HTML.
 </p><dl>
@@ -141,6 +152,10 @@
 <dd>
 flag indicating to use Sphinx to generate the
             ReST preview (boolean)
+</dd><dt><i>restDocutilsHtmlFormat</i></dt>
+<dd>
+HTML format to be generated by docutils
+            (string)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -149,13 +164,16 @@
 </dd>
 </dl><a NAME="PreviewProcessingThread.__convertReSTDocutils" ID="PreviewProcessingThread.__convertReSTDocutils"></a>
 <h4>PreviewProcessingThread.__convertReSTDocutils</h4>
-<b>__convertReSTDocutils</b>(<i>text</i>)
+<b>__convertReSTDocutils</b>(<i>text, htmlFormat</i>)
 <p>
         Private method to convert ReST text into HTML using 'docutils'.
 </p><dl>
 <dt><i>text</i></dt>
 <dd>
 text to be processed (string)
+</dd><dt><i>htmlFormat</i></dt>
+<dd>
+HTML format to be generated (string)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -179,7 +197,7 @@
 </dd>
 </dl><a NAME="PreviewProcessingThread.__getHtml" ID="PreviewProcessingThread.__getHtml"></a>
 <h4>PreviewProcessingThread.__getHtml</h4>
-<b>__getHtml</b>(<i>language, text, ssiEnabled, filePath, rootPath, useSphinx</i>)
+<b>__getHtml</b>(<i>language, text, ssiEnabled, filePath, rootPath, useSphinx, convertNewLineToBreak, markdownHtmlFormat, restDocutilsHtmlFormat</i>)
 <p>
         Private method to process the given text depending upon the given
         language.
@@ -204,12 +222,47 @@
 <dd>
 flag indicating to use Sphinx to generate the
             ReST preview (boolean)
+</dd><dt><i>convertNewLineToBreak</i></dt>
+<dd>
+flag indicating to convert new lines
+            to HTML break (Markdown only) (boolean)
+</dd><dt><i>markdownHtmlFormat</i></dt>
+<dd>
+HTML format to be generated by markdown
+            (string)
+</dd><dt><i>restDocutilsHtmlFormat</i></dt>
+<dd>
+HTML format to be generated by docutils
+            (string)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
 <dd>
 processed HTML text (string)
 </dd>
+</dl><a NAME="PreviewProcessingThread.__processRootPath" ID="PreviewProcessingThread.__processRootPath"></a>
+<h4>PreviewProcessingThread.__processRootPath</h4>
+<b>__processRootPath</b>(<i>txt, root</i>)
+<p>
+        Private method to adjust absolute references to the given root path.
+</p><dl>
+<dt><i>txt</i> (str)</dt>
+<dd>
+text to be processed
+</dd><dt><i>root</i> (str)</dt>
+<dd>
+directory of the document root
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+processed HTML
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
 </dl><a NAME="PreviewProcessingThread.__processSSI" ID="PreviewProcessingThread.__processSSI"></a>
 <h4>PreviewProcessingThread.__processSSI</h4>
 <b>__processSSI</b>(<i>txt, filename, root</i>)
@@ -236,7 +289,7 @@
 </dd>
 </dl><a NAME="PreviewProcessingThread.process" ID="PreviewProcessingThread.process"></a>
 <h4>PreviewProcessingThread.process</h4>
-<b>process</b>(<i>filePath, language, text, ssiEnabled, rootPath, useSphinx</i>)
+<b>process</b>(<i>filePath, language, text, ssiEnabled, rootPath, useSphinx, convertNewLineToBreak, markdownHtmlFormat, restDocutilsHtmlFormat</i>)
 <p>
         Public method to convert the given text to HTML.
 </p><dl>
@@ -260,6 +313,18 @@
 <dd>
 flag indicating to use Sphinx to generate the
             ReST preview (boolean)
+</dd><dt><i>convertNewLineToBreak</i></dt>
+<dd>
+flag indicating to convert new lines
+            to HTML break (Markdown only) (boolean)
+</dd><dt><i>markdownHtmlFormat</i></dt>
+<dd>
+HTML format to be generated by markdown
+            (string)
+</dd><dt><i>restDocutilsHtmlFormat</i></dt>
+<dd>
+HTML format to be generated by docutils
+            (string)
 </dd>
 </dl><a NAME="PreviewProcessingThread.run" ID="PreviewProcessingThread.run"></a>
 <h4>PreviewProcessingThread.run</h4>
@@ -305,6 +370,9 @@
 <td><a href="#PreviewerHTML.__setJavaScriptEnabled">__setJavaScriptEnabled</a></td>
 <td>Private method to enable/disable JavaScript.</td>
 </tr><tr>
+<td><a href="#PreviewerHTML.__showLink">__showLink</a></td>
+<td>Private slot to show the hovered link in a tooltip.</td>
+</tr><tr>
 <td><a href="#PreviewerHTML.on_jsCheckBox_clicked">on_jsCheckBox_clicked</a></td>
 <td>Private slot to enable/disable JavaScript.</td>
 </tr><tr>
@@ -373,17 +441,20 @@
         Private method to save scroll bar positions for a previewed editor.
 </p><a NAME="PreviewerHTML.__setHtml" ID="PreviewerHTML.__setHtml"></a>
 <h4>PreviewerHTML.__setHtml</h4>
-<b>__setHtml</b>(<i>filePath, html</i>)
+<b>__setHtml</b>(<i>filePath, html, rootPath</i>)
 <p>
         Private method to set the HTML to the view and restore the scroll bars
         positions.
 </p><dl>
-<dt><i>filePath</i></dt>
+<dt><i>filePath</i> (str)</dt>
+<dd>
+file path of the previewed editor
+</dd><dt><i>html</i> (str)</dt>
 <dd>
-file path of the previewed editor (string)
-</dd><dt><i>html</i></dt>
+processed HTML text ready to be shown
+</dd><dt><i>rootPath</i> (str)</dt>
 <dd>
-processed HTML text ready to be shown (string)
+path of the web site root
 </dd>
 </dl><a NAME="PreviewerHTML.__setJavaScriptEnabled" ID="PreviewerHTML.__setJavaScriptEnabled"></a>
 <h4>PreviewerHTML.__setJavaScriptEnabled</h4>
@@ -395,6 +466,16 @@
 <dd>
 flag indicating the enable state (boolean)
 </dd>
+</dl><a NAME="PreviewerHTML.__showLink" ID="PreviewerHTML.__showLink"></a>
+<h4>PreviewerHTML.__showLink</h4>
+<b>__showLink</b>(<i>urlStr</i>)
+<p>
+        Private slot to show the hovered link in a tooltip.
+</p><dl>
+<dt><i>urlStr</i> (str)</dt>
+<dd>
+hovered URL
+</dd>
 </dl><a NAME="PreviewerHTML.on_jsCheckBox_clicked" ID="PreviewerHTML.on_jsCheckBox_clicked"></a>
 <h4>PreviewerHTML.on_jsCheckBox_clicked</h4>
 <b>on_jsCheckBox_clicked</b>(<i>checked</i>)
--- a/Documentation/Source/eric6.UI.UserInterface.html	Thu Aug 03 14:50:59 2017 +0200
+++ b/Documentation/Source/eric6.UI.UserInterface.html	Fri Sep 01 12:08:17 2017 +0200
@@ -1999,7 +1999,7 @@
 </dl><dl>
 <dt>Return Type:</dt>
 <dd>
-tuple of int and str
+tuple of int
 </dd>
 </dl><a NAME="UserInterface.__versionsDownloadCanceled" ID="UserInterface.__versionsDownloadCanceled"></a>
 <h4>UserInterface.__versionsDownloadCanceled</h4>
@@ -2543,19 +2543,23 @@
         Public method to show the Log-Viewer.
 </p><a NAME="UserInterface.showNotification" ID="UserInterface.showNotification"></a>
 <h4>UserInterface.showNotification</h4>
-<b>showNotification</b>(<i>icon, heading, text</i>)
+<b>showNotification</b>(<i>icon, heading, text, timeout=None</i>)
 <p>
         Public method to show a desktop notification.
 </p><dl>
-<dt><i>icon</i></dt>
+<dt><i>icon</i> (QPixmap)</dt>
 <dd>
-icon to be shown in the notification (QPixmap)
-</dd><dt><i>heading</i></dt>
+icon to be shown in the notification
+</dd><dt><i>heading</i> (str)</dt>
 <dd>
-heading of the notification (string)
-</dd><dt><i>text</i></dt>
+heading of the notification
+</dd><dt><i>text</i> (str)</dt>
 <dd>
-text of the notification (string)
+text of the notification
+</dd><dt><i>timeout</i> (int)</dt>
+<dd>
+time in seconds the notification should be shown
+            (None = use configured timeout, 0 = indefinitely)
 </dd>
 </dl><a NAME="UserInterface.showPluginsAvailable" ID="UserInterface.showPluginsAvailable"></a>
 <h4>UserInterface.showPluginsAvailable</h4>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient.html	Fri Sep 01 12:08:17 2017 +0200
@@ -0,0 +1,370 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.SafeBrowsing.SafeBrowsingAPIClient</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.SafeBrowsing.SafeBrowsingAPIClient</h1>
+<p>
+Module implementing the low level interface for Google Safe Browsing.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#SafeBrowsingAPIClient">SafeBrowsingAPIClient</a></td>
+<td>Class implementing the low level interface for Google Safe Browsing.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="SafeBrowsingAPIClient" ID="SafeBrowsingAPIClient"></a>
+<h2>SafeBrowsingAPIClient</h2>
+<p>
+    Class implementing the low level interface for Google Safe Browsing.
+</p><h3>Signals</h3>
+<dl>
+<dt>networkError(str)</dt>
+<dd>
+emitted to indicate a network error
+</dd>
+</dl>
+<h3>Derived from</h3>
+QObject
+<h3>Class Attributes</h3>
+<table>
+<tr><td>ClientId</td></tr><tr><td>ClientVersion</td></tr><tr><td>GsbUrlTemplate</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr>
+<td><a href="#SafeBrowsingAPIClient.getPlatformString">getPlatformString</a></td>
+<td>Class method to get the platform string for a given platform type.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getPlatformTypes">getPlatformTypes</a></td>
+<td>Class method to get the platform types for a given platform.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getThreatEntryString">getThreatEntryString</a></td>
+<td>Class method to get the threat entry string.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getThreatMessage">getThreatMessage</a></td>
+<td>Class method to get a warning message for the given threat type.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getThreatType">getThreatType</a></td>
+<td>Class method to get a display string for a given threat type.</td>
+</tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#SafeBrowsingAPIClient.__init__">SafeBrowsingAPIClient</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.__extractData">__extractData</a></td>
+<td>Private method to extract the data of a network reply.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.__setWaitDuration">__setWaitDuration</a></td>
+<td>Private method to set the minimum wait duration.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.fairUseDelayExpired">fairUseDelayExpired</a></td>
+<td>Public method to check, if the fair use wait period has expired.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime">getFairUseDelayExpirationDateTime</a></td>
+<td>Public method to get the date and time the fair use delay will expire.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getFullHashes">getFullHashes</a></td>
+<td>Public method to find full hashes matching hash prefixes.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getThreatLists">getThreatLists</a></td>
+<td>Public method to retrieve all available threat lists.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.getThreatsUpdate">getThreatsUpdate</a></td>
+<td>Public method to fetch hash prefix updates for the given threat list.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingAPIClient.setApiKey">setApiKey</a></td>
+<td>Public method to set the API key.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="SafeBrowsingAPIClient.getPlatformString" ID="SafeBrowsingAPIClient.getPlatformString"></a>
+<h4>SafeBrowsingAPIClient.getPlatformString (class method)</h4>
+<b>getPlatformString</b>(<i>platformType</i>)
+<p>
+        Class method to get the platform string for a given platform type.
+</p><dl>
+<dt><i>platformType</i> (str)</dt>
+<dd>
+platform type as defined in the v4 API
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+platform string
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getPlatformTypes" ID="SafeBrowsingAPIClient.getPlatformTypes"></a>
+<h4>SafeBrowsingAPIClient.getPlatformTypes (class method)</h4>
+<b>getPlatformTypes</b>(<i>platform</i>)
+<p>
+        Class method to get the platform types for a given platform.
+</p><dl>
+<dt><i>platform</i> (str (one of 'linux', 'windows', 'macos'))</dt>
+<dd>
+platform string
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of platform types as defined in the v4 API for the
+            given platform
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl><dl>
+<dt>Raises <b>ValueError</b>:</dt>
+<dd>
+raised to indicate an invalid platform string
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getThreatEntryString" ID="SafeBrowsingAPIClient.getThreatEntryString"></a>
+<h4>SafeBrowsingAPIClient.getThreatEntryString (class method)</h4>
+<b>getThreatEntryString</b>(<i>threatEntry</i>)
+<p>
+        Class method to get the threat entry string.
+</p><dl>
+<dt><i>threatEntry</i> (str)</dt>
+<dd>
+threat entry type as defined in the v4 API
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+threat entry string
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getThreatMessage" ID="SafeBrowsingAPIClient.getThreatMessage"></a>
+<h4>SafeBrowsingAPIClient.getThreatMessage (class method)</h4>
+<b>getThreatMessage</b>(<i>threatType</i>)
+<p>
+        Class method to get a warning message for the given threat type.
+</p><dl>
+<dt><i>threatType</i> (str)</dt>
+<dd>
+threat type to get the message for
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+threat message
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getThreatType" ID="SafeBrowsingAPIClient.getThreatType"></a>
+<h4>SafeBrowsingAPIClient.getThreatType (class method)</h4>
+<b>getThreatType</b>(<i>threatType</i>)
+<p>
+        Class method to get a display string for a given threat type.
+</p><dl>
+<dt><i>threatType</i> (str)</dt>
+<dd>
+threat type to get display string for
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+display string
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.__init__" ID="SafeBrowsingAPIClient.__init__"></a>
+<h4>SafeBrowsingAPIClient (Constructor)</h4>
+<b>SafeBrowsingAPIClient</b>(<i>apiKey, fairUse=True, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>apiKey</i> (str)</dt>
+<dd>
+API key to be used
+</dd><dt><i>fairUse</i> (bool)</dt>
+<dd>
+flag indicating to follow the fair use policy
+</dd><dt><i>parent</i> (QObject)</dt>
+<dd>
+reference to the parent object
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.__extractData" ID="SafeBrowsingAPIClient.__extractData"></a>
+<h4>SafeBrowsingAPIClient.__extractData</h4>
+<b>__extractData</b>(<i>reply</i>)
+<p>
+        Private method to extract the data of a network reply.
+</p><dl>
+<dt><i>reply</i> (QNetworkReply)</dt>
+<dd>
+reference to the network reply object
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+extracted data
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list or dict
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.__setWaitDuration" ID="SafeBrowsingAPIClient.__setWaitDuration"></a>
+<h4>SafeBrowsingAPIClient.__setWaitDuration</h4>
+<b>__setWaitDuration</b>(<i>minimumWaitDuration</i>)
+<p>
+        Private method to set the minimum wait duration.
+</p><dl>
+<dt><i>minimumWaitDuration</i> (str)</dt>
+<dd>
+duration to be set
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.fairUseDelayExpired" ID="SafeBrowsingAPIClient.fairUseDelayExpired"></a>
+<h4>SafeBrowsingAPIClient.fairUseDelayExpired</h4>
+<b>fairUseDelayExpired</b>(<i></i>)
+<p>
+        Public method to check, if the fair use wait period has expired.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating expiration
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime" ID="SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime"></a>
+<h4>SafeBrowsingAPIClient.getFairUseDelayExpirationDateTime</h4>
+<b>getFairUseDelayExpirationDateTime</b>(<i></i>)
+<p>
+        Public method to get the date and time the fair use delay will expire.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+fair use delay expiration date and time
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QDateTime
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getFullHashes" ID="SafeBrowsingAPIClient.getFullHashes"></a>
+<h4>SafeBrowsingAPIClient.getFullHashes</h4>
+<b>getFullHashes</b>(<i>prefixes, clientState</i>)
+<p>
+        Public method to find full hashes matching hash prefixes.
+</p><dl>
+<dt><i>prefixes</i> (list of str (Python 2) or list of bytes (Python 3))</dt>
+<dd>
+list of hash prefixes to find
+</dd><dt><i>clientState</i> (dict)</dt>
+<dd>
+dictionary of client states with keys like
+            (threatType, platformType, threatEntryType)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+dictionary containing the list of found hashes and the
+            negative cache duration
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+dict
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getThreatLists" ID="SafeBrowsingAPIClient.getThreatLists"></a>
+<h4>SafeBrowsingAPIClient.getThreatLists</h4>
+<b>getThreatLists</b>(<i></i>)
+<p>
+        Public method to retrieve all available threat lists.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+list of threat lists
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of dict containing 'threatType', 'platformType' and
+            'threatEntryType'
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.getThreatsUpdate" ID="SafeBrowsingAPIClient.getThreatsUpdate"></a>
+<h4>SafeBrowsingAPIClient.getThreatsUpdate</h4>
+<b>getThreatsUpdate</b>(<i>clientStates</i>)
+<p>
+        Public method to fetch hash prefix updates for the given threat list.
+</p><dl>
+<dt><i>clientStates</i> (dict)</dt>
+<dd>
+dictionary of client states with keys like
+            (threatType, platformType, threatEntryType)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+list of threat updates
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+list of dict
+</dd>
+</dl><a NAME="SafeBrowsingAPIClient.setApiKey" ID="SafeBrowsingAPIClient.setApiKey"></a>
+<h4>SafeBrowsingAPIClient.setApiKey</h4>
+<b>setApiKey</b>(<i>apiKey</i>)
+<p>
+        Public method to set the API key.
+</p><dl>
+<dt><i>apiKey</i> (str)</dt>
+<dd>
+API key to be set
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache.html	Fri Sep 01 12:08:17 2017 +0200
@@ -0,0 +1,569 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.SafeBrowsing.SafeBrowsingCache</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.SafeBrowsing.SafeBrowsingCache</h1>
+<p>
+Module implementing a cache for Google Safe Browsing.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#HashPrefixList">HashPrefixList</a></td>
+<td>Class implementing a container for threat list data.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache">SafeBrowsingCache</a></td>
+<td>Class implementing a cache for Google Safe Browsing.</td>
+</tr><tr>
+<td><a href="#ThreatList">ThreatList</a></td>
+<td>Class implementing the threat list info.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="HashPrefixList" ID="HashPrefixList"></a>
+<h2>HashPrefixList</h2>
+<p>
+    Class implementing a container for threat list data.
+</p>
+<h3>Derived from</h3>
+object
+<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="#HashPrefixList.__init__">HashPrefixList</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#HashPrefixList.__iter__">__iter__</a></td>
+<td>Special method to iterate over the raw hashes.</td>
+</tr><tr>
+<td><a href="#HashPrefixList.__len__">__len__</a></td>
+<td>Special method to calculate the number of entries.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="HashPrefixList.__init__" ID="HashPrefixList.__init__"></a>
+<h4>HashPrefixList (Constructor)</h4>
+<b>HashPrefixList</b>(<i>prefixLength, rawHashes</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>prefixLength</i> (int)</dt>
+<dd>
+length of each hash prefix
+</dd><dt><i>rawHashes</i> (str)</dt>
+<dd>
+raw hash prefixes of given length concatenated and
+            sorted in lexicographical order
+</dd>
+</dl><a NAME="HashPrefixList.__iter__" ID="HashPrefixList.__iter__"></a>
+<h4>HashPrefixList.__iter__</h4>
+<b>__iter__</b>(<i></i>)
+<p>
+        Special method to iterate over the raw hashes.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+iterator object
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+iterator
+</dd>
+</dl><a NAME="HashPrefixList.__len__" ID="HashPrefixList.__len__"></a>
+<h4>HashPrefixList.__len__</h4>
+<b>__len__</b>(<i></i>)
+<p>
+        Special method to calculate the number of entries.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+length
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+int
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="SafeBrowsingCache" ID="SafeBrowsingCache"></a>
+<h2>SafeBrowsingCache</h2>
+<p>
+    Class implementing a cache for Google Safe Browsing.
+</p>
+<h3>Derived from</h3>
+QObject
+<h3>Class Attributes</h3>
+<table>
+<tr><td>create_full_hash_cue_idx</td></tr><tr><td>create_full_hash_expires_idx</td></tr><tr><td>create_full_hash_value_idx</td></tr><tr><td>create_full_hashes_stmt</td></tr><tr><td>create_hash_prefix_stmt</td></tr><tr><td>create_threat_list_stmt</td></tr><tr><td>drop_full_hash_cue_idx</td></tr><tr><td>drop_full_hash_expires_idx</td></tr><tr><td>drop_full_hash_value_idx</td></tr><tr><td>drop_full_hashes_stmt</td></tr><tr><td>drop_hash_prefix_stmt</td></tr><tr><td>drop_threat_list_stmt</td></tr><tr><td>maxProcessEventsTime</td></tr>
+</table>
+<h3>Class Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+<table>
+<tr>
+<td><a href="#SafeBrowsingCache.__init__">SafeBrowsingCache</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.__openCacheDb">__openCacheDb</a></td>
+<td>Private method to open the cache database.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.addThreatList">addThreatList</a></td>
+<td>Public method to add a threat list to the cache.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.cleanupFullHashes">cleanupFullHashes</a></td>
+<td>Public method to clean up full hash entries expired more than the given time.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.close">close</a></td>
+<td>Public method to close the database.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.deleteHashPrefixList">deleteHashPrefixList</a></td>
+<td>Public method to delete hash prefixes for a given threat list.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.deleteThreatList">deleteThreatList</a></td>
+<td>Public method to delete a threat list from the cache.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.getHashPrefixValuesToRemove">getHashPrefixValuesToRemove</a></td>
+<td>Public method to get the hash prefix values to be removed from the cache.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.getThreatLists">getThreatLists</a></td>
+<td>Public method to get the available threat lists.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.hashPrefixListChecksum">hashPrefixListChecksum</a></td>
+<td>Public method to calculate the SHA256 checksum for an alphabetically sorted concatenated list of hash prefixes.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.lookupFullHashes">lookupFullHashes</a></td>
+<td>Public method to get a list of threat lists and expiration flag for the given hashes if a hash is blacklisted.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.lookupHashPrefix">lookupHashPrefix</a></td>
+<td>Public method to look up hash prefixes in the local cache.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.populateHashPrefixList">populateHashPrefixList</a></td>
+<td>Public method to populate the hash prefixes for a threat list.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.prepareCacheDb">prepareCacheDb</a></td>
+<td>Public method to prepare the cache database.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.removeHashPrefixIndices">removeHashPrefixIndices</a></td>
+<td>Public method to remove hash prefixes from the cache.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.storeFullHash">storeFullHash</a></td>
+<td>Public method to store full hash data in the cache database.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.updateHashPrefixExpiration">updateHashPrefixExpiration</a></td>
+<td>Public method to update the hash prefix expiration time.</td>
+</tr><tr>
+<td><a href="#SafeBrowsingCache.updateThreatListClientState">updateThreatListClientState</a></td>
+<td>Public method to update the client state of a threat list.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="SafeBrowsingCache.__init__" ID="SafeBrowsingCache.__init__"></a>
+<h4>SafeBrowsingCache (Constructor)</h4>
+<b>SafeBrowsingCache</b>(<i>dbPath, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>dbPath</i> (str)</dt>
+<dd>
+path to store the cache DB into
+</dd><dt><i>parent</i> (QObject)</dt>
+<dd>
+reference to the parent object
+</dd>
+</dl><a NAME="SafeBrowsingCache.__openCacheDb" ID="SafeBrowsingCache.__openCacheDb"></a>
+<h4>SafeBrowsingCache.__openCacheDb</h4>
+<b>__openCacheDb</b>(<i></i>)
+<p>
+        Private method to open the cache database.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating the open state
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl><a NAME="SafeBrowsingCache.addThreatList" ID="SafeBrowsingCache.addThreatList"></a>
+<h4>SafeBrowsingCache.addThreatList</h4>
+<b>addThreatList</b>(<i>threatList</i>)
+<p>
+        Public method to add a threat list to the cache.
+</p><dl>
+<dt><i>threatList</i> (ThreatList)</dt>
+<dd>
+threat list to be added
+</dd>
+</dl><a NAME="SafeBrowsingCache.cleanupFullHashes" ID="SafeBrowsingCache.cleanupFullHashes"></a>
+<h4>SafeBrowsingCache.cleanupFullHashes</h4>
+<b>cleanupFullHashes</b>(<i>keepExpiredFor=43200</i>)
+<p>
+        Public method to clean up full hash entries expired more than the
+        given time.
+</p><dl>
+<dt><i>keepExpiredFor</i> (int or float)</dt>
+<dd>
+time period in seconds of entries to be expired
+</dd>
+</dl><a NAME="SafeBrowsingCache.close" ID="SafeBrowsingCache.close"></a>
+<h4>SafeBrowsingCache.close</h4>
+<b>close</b>(<i></i>)
+<p>
+        Public method to close the database.
+</p><a NAME="SafeBrowsingCache.deleteHashPrefixList" ID="SafeBrowsingCache.deleteHashPrefixList"></a>
+<h4>SafeBrowsingCache.deleteHashPrefixList</h4>
+<b>deleteHashPrefixList</b>(<i>threatList</i>)
+<p>
+        Public method to delete hash prefixes for a given threat list.
+</p><dl>
+<dt><i>threatList</i> (ThreatList)</dt>
+<dd>
+threat list info object
+</dd>
+</dl><a NAME="SafeBrowsingCache.deleteThreatList" ID="SafeBrowsingCache.deleteThreatList"></a>
+<h4>SafeBrowsingCache.deleteThreatList</h4>
+<b>deleteThreatList</b>(<i>threatList</i>)
+<p>
+        Public method to delete a threat list from the cache.
+</p><dl>
+<dt><i>threatList</i> (ThreatList)</dt>