Merged with default branch in order to prepare the 17.05 release. maintenance release-17.05

Sat, 06 May 2017 13:43:21 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 06 May 2017 13:43:21 +0200
branch
maintenance
changeset 5730
6422afc7adc4
parent 5695
9a71bd9e2e37 (current diff)
parent 5729
e67c1c4f4abb (diff)
child 5731
54829a44cea5

Merged with default branch in order to prepare the 17.05 release.

APIs/Python3/eric6.api 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.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html file | annotate | diff | comparison | revisions
E5Gui/E5ZoomWidget.py file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
QScintilla/Editor.py file | annotate | diff | comparison | revisions
QScintilla/Shell.py file | annotate | diff | comparison | revisions
ThirdParty/CharDet/chardet/chardetect.py file | annotate | diff | comparison | revisions
ThirdParty/CharDet/chardet/constants.py file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
WebBrowser/GreaseMonkey/GreaseMonkeyUrlInterceptor.py file | annotate | diff | comparison | revisions
WebBrowser/Network/NetworkManager.py file | annotate | diff | comparison | revisions
WebBrowser/WebBrowserView.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Sun Apr 09 16:52:55 2017 +0200
+++ b/APIs/Python3/eric6.api	Sat May 06 13:43:21 2017 +0200
@@ -490,7 +490,7 @@
 eric6.Debugger.DebugServer.DebugServer.utTestFailedExpected?7
 eric6.Debugger.DebugServer.DebugServer.utTestSkipped?7
 eric6.Debugger.DebugServer.DebugServer.utTestSucceededUnexpected?7
-eric6.Debugger.DebugServer.DebugServer?1()
+eric6.Debugger.DebugServer.DebugServer?1(preventPassiveDebugging=False)
 eric6.Debugger.DebugServer.DebuggerInterfaces?7
 eric6.Debugger.DebugUI.DebugUI.appendStdout?7
 eric6.Debugger.DebugUI.DebugUI.clearHistories?4()
@@ -1657,6 +1657,7 @@
 eric6.Globals.findPythonInterpreters?4(pyVersion)
 eric6.Globals.getConfigDir?4()
 eric6.Globals.getPyQt5ModulesDirectory?4()
+eric6.Globals.getPyQtToolsPath?4(version=5)
 eric6.Globals.getPythonModulesDirectory?4()
 eric6.Globals.getQtBinariesPath?4()
 eric6.Globals.isLinuxPlatform?4()
@@ -3916,6 +3917,7 @@
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.codeStyleBatchCheck?4(argumentsList, send, fx, cancelled)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.codeStyleCheck?4(filename, source, args)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.extractLineFlags?4(line, startComment=")
+eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.ignoreCode?4(code, lineFlags)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.initBatchService?4()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.initService?4()
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.worker?4(inputQueue, outputQueue)
@@ -8112,6 +8114,7 @@
 eric6.QScintilla.SearchReplaceWidget.SearchReplaceWidget?1(replace, vm, parent=None, sliding=False)
 eric6.QScintilla.Shell.Shell.clear?4()
 eric6.QScintilla.Shell.Shell.clearAllHistories?4()
+eric6.QScintilla.Shell.Shell.clearHistory?4()
 eric6.QScintilla.Shell.Shell.closeShell?4()
 eric6.QScintilla.Shell.Shell.contextMenuEvent?4(ev)
 eric6.QScintilla.Shell.Shell.dragEnterEvent?4(event)
@@ -8138,9 +8141,11 @@
 eric6.QScintilla.Shell.Shell.searchNext?4(txt, caseSensitive, wholeWord)
 eric6.QScintilla.Shell.Shell.searchPrev?4(txt, caseSensitive, wholeWord)
 eric6.QScintilla.Shell.Shell.searchStringFound?7
+eric6.QScintilla.Shell.Shell.selectHistory?4()
 eric6.QScintilla.Shell.Shell.setDebuggerUI?4(ui)
+eric6.QScintilla.Shell.Shell.showHistory?4()
 eric6.QScintilla.Shell.Shell.wheelEvent?4(evt)
-eric6.QScintilla.Shell.Shell?1(dbs, vm, parent=None)
+eric6.QScintilla.Shell.Shell?1(dbs, vm, windowedVariant, parent=None)
 eric6.QScintilla.Shell.ShellAssembly.shell?4()
 eric6.QScintilla.Shell.ShellAssembly.showFind?4(txt="")
 eric6.QScintilla.Shell.ShellAssembly?1(dbs, vm, horizontal=True, parent=None)
@@ -8152,6 +8157,11 @@
 eric6.QScintilla.ShellHistoryDialog.ShellHistoryDialog.on_historyList_itemSelectionChanged?4()
 eric6.QScintilla.ShellHistoryDialog.ShellHistoryDialog.on_reloadButton_clicked?4()
 eric6.QScintilla.ShellHistoryDialog.ShellHistoryDialog?1(history, vm, shell)
+eric6.QScintilla.ShellWindow.ShellWindow.activeWindow?4()
+eric6.QScintilla.ShellWindow.ShellWindow.closeEvent?4(event)
+eric6.QScintilla.ShellWindow.ShellWindow.getAPIsManager?4()
+eric6.QScintilla.ShellWindow.ShellWindow.quit?4()
+eric6.QScintilla.ShellWindow.ShellWindow?1(parent=None, name=None)
 eric6.QScintilla.SortOptionsDialog.SortOptionsDialog.getData?4()
 eric6.QScintilla.SortOptionsDialog.SortOptionsDialog?1(parent=None)
 eric6.QScintilla.SpellChecker.SpellChecker._getDict?5(lang, pwl="", pel="")
@@ -8796,7 +8806,7 @@
 eric6.UI.SearchWidget.SearchWidget.searchPrevious?7
 eric6.UI.SearchWidget.SearchWidget.searchStringFound?4(found)
 eric6.UI.SearchWidget.SearchWidget.showFind?4(txt="")
-eric6.UI.SearchWidget.SearchWidget?1(mainWindow, parent=None, spacer=True)
+eric6.UI.SearchWidget.SearchWidget?1(mainWindow, parent=None, spacer=True, showLine=False)
 eric6.UI.SplashScreen.NoneSplashScreen.clearMessage?4()
 eric6.UI.SplashScreen.NoneSplashScreen.finish?4(widget)
 eric6.UI.SplashScreen.NoneSplashScreen.showMessage?4(msg)
@@ -9182,6 +9192,7 @@
 eric6.Utilities.fromNativeSeparators?4(path)
 eric6.Utilities.generateDistroInfo?4(linesep='\n')
 eric6.Utilities.generatePluginsVersionInfo?4(linesep='\n')
+eric6.Utilities.generatePyQtToolPath?4(toolname)
 eric6.Utilities.generatePySideToolPath?4(toolname)
 eric6.Utilities.generateQtToolName?4(toolname)
 eric6.Utilities.generateVersionInfo?4(linesep='\n')
@@ -9205,6 +9216,7 @@
 eric6.Utilities.html_encode?4(text, pattern=_escape)
 eric6.Utilities.html_udecode?4(text, pattern=_uunescape)
 eric6.Utilities.html_uencode?4(text, pattern=_uescape)
+eric6.Utilities.isDrive?4(path)
 eric6.Utilities.isExecutable?4(exe)
 eric6.Utilities.isinpath?4(file)
 eric6.Utilities.joinext?4(prefix, ext)
@@ -10064,8 +10076,12 @@
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.GreaseMonkeyConfigurationListWidget?1(parent=None)
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationScriptInfoDialog.GreaseMonkeyConfigurationScriptInfoDialog.on_showScriptSourceButton_clicked?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationScriptInfoDialog.GreaseMonkeyConfigurationScriptInfoDialog?1(script, parent=None)
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.DownloadMainScript?7
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.DownloadRequireScript?7
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.error?7
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.finished?7
-eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader?1(url, manager)
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader.updateScript?4(fileName)
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.GreaseMonkeyDownloader?1(url, manager, mode)
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.bootstrap_js?7
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.values_js?7
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.GreaseMonkeyManager.addScript?4(script)
@@ -10094,20 +10110,21 @@
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.fullName?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.include?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isEnabled?4()
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isUpdating?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.isValid?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.name?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.nameSpace?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.noFrames?4()
-eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.script?4()
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.require?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.scriptChanged?7
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.setEnabled?4(enable)
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.startAt?4()
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updateScript?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updateUrl?4()
+eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.updatingChanged?7
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.version?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript.webScript?4()
 eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.GreaseMonkeyScript?1(manager, path)
-eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.GreaseMonkeyUrlInterceptor.interceptRequest?4(info)
-eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.GreaseMonkeyUrlInterceptor?1(manager)
 eric6.WebBrowser.History.HistoryCompleter.HistoryCompleter.pathFromIndex?4(idx)
 eric6.WebBrowser.History.HistoryCompleter.HistoryCompleter.splitPath?4(path)
 eric6.WebBrowser.History.HistoryCompleter.HistoryCompleter?1(model, parent=None)
@@ -10146,9 +10163,12 @@
 eric6.WebBrowser.History.HistoryFilterModel.HistoryFilterModel.rowCount?4(parent=None)
 eric6.WebBrowser.History.HistoryFilterModel.HistoryFilterModel.setSourceModel?4(sourceModel)
 eric6.WebBrowser.History.HistoryFilterModel.HistoryFilterModel?1(sourceModel, parent=None)
-eric6.WebBrowser.History.HistoryManager.HISTORY_VERSION?7
+eric6.WebBrowser.History.HistoryManager.HISTORY_VERSIONS?7
+eric6.WebBrowser.History.HistoryManager.HISTORY_VERSION_42?7
+eric6.WebBrowser.History.HistoryManager.HISTORY_VERSION_60?7
+eric6.WebBrowser.History.HistoryManager.HistoryEntry.isValid?4()
 eric6.WebBrowser.History.HistoryManager.HistoryEntry.userTitle?4()
-eric6.WebBrowser.History.HistoryManager.HistoryEntry?1(url=None, dateTime=None, title=None)
+eric6.WebBrowser.History.HistoryManager.HistoryEntry?1(url=None, dateTime=None, title=None, visitCount=None)
 eric6.WebBrowser.History.HistoryManager.HistoryManager.addHistoryEntry?4(view)
 eric6.WebBrowser.History.HistoryManager.HistoryManager.clear?4(period=0)
 eric6.WebBrowser.History.HistoryManager.HistoryManager.close?4()
@@ -10206,6 +10226,7 @@
 eric6.WebBrowser.History.HistoryModel.HistoryModel.TitleRole?7
 eric6.WebBrowser.History.HistoryModel.HistoryModel.UrlRole?7
 eric6.WebBrowser.History.HistoryModel.HistoryModel.UrlStringRole?7
+eric6.WebBrowser.History.HistoryModel.HistoryModel.VisitCountRole?7
 eric6.WebBrowser.History.HistoryModel.HistoryModel.columnCount?4(parent=None)
 eric6.WebBrowser.History.HistoryModel.HistoryModel.data?4(index, role=Qt.DisplayRole)
 eric6.WebBrowser.History.HistoryModel.HistoryModel.entryAdded?4()
@@ -10243,6 +10264,15 @@
 eric6.WebBrowser.JavaScript.StartPageJsObject.StartPageJsObject.providerString?4()
 eric6.WebBrowser.JavaScript.StartPageJsObject.StartPageJsObject.searchUrl?4(searchStr)
 eric6.WebBrowser.JavaScript.StartPageJsObject.StartPageJsObject?1(parent=None)
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.backButton?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.exitFullScreenButton?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.forwardButton?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.reloadButton?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.searchEdit?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar.stopButton?4()
+eric6.WebBrowser.Navigation.NavigationBar.NavigationBar?1(mainWindow, parent=None)
+eric6.WebBrowser.Navigation.NavigationContainer.NavigationContainer.addWidget?4(widget)
+eric6.WebBrowser.Navigation.NavigationContainer.NavigationContainer?1(parent=None)
 eric6.WebBrowser.Network.EricSchemeHandler.EricSchemeHandler.SupportedPages?7
 eric6.WebBrowser.Network.EricSchemeHandler.EricSchemeHandler.requestStarted?4(job)
 eric6.WebBrowser.Network.EricSchemeHandler.EricSchemeHandler?1(parent=None)
@@ -10928,7 +10958,6 @@
 eric6.WebBrowser.WebBrowserView.WebBrowserView.eventFilter?4(obj, evt)
 eric6.WebBrowser.WebBrowserView.WebBrowserView.faviconChanged?7
 eric6.WebBrowser.WebBrowserView.WebBrowserView.findNextPrev?4(txt, case, backwards, callback)
-eric6.WebBrowser.WebBrowserView.WebBrowserView.focusOutEvent?4(evt)
 eric6.WebBrowser.WebBrowserView.WebBrowserView.forward?4()
 eric6.WebBrowser.WebBrowserView.WebBrowserView.forwardAvailable?7
 eric6.WebBrowser.WebBrowserView.WebBrowserView.getPreview?4()
@@ -10974,7 +11003,7 @@
 eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget.preferencesChanged?4()
 eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget.saveSearches?4()
 eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget.search?7
-eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget?1(parent=None)
+eric6.WebBrowser.WebBrowserWebSearchWidget.WebBrowserWebSearchWidget?1(mainWindow, parent=None)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.BrowserWindows?7
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._adblockManager?8
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow._autoScroller?8
@@ -11026,9 +11055,11 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.getWindow?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.greaseMonkeyManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.helpEngine?4()
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.hideFullScreenNavigation?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.historyManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.icon?4(url)
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.imageSearchEngine?4()
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.isFullScreenNavigationVisible?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.isPrivate?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.javascriptConsole?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.keyPressEvent?4(evt)
@@ -11060,12 +11091,14 @@
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.setForwardAvailable?4(b)
 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.shutdown?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.speedDial?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.syncManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.tabManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.tabWidget?4()
+eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.toggleFullScreen?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.userAgentsManager?4()
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webBrowserClosed?7
 eric6.WebBrowser.WebBrowserWindow.WebBrowserWindow.webBrowserOpened?7
@@ -11152,6 +11185,8 @@
 eric6.eric6_qregularexpression.main?4()
 eric6.eric6_re.createMainWidget?4(argv)
 eric6.eric6_re.main?4()
+eric6.eric6_shell.createMainWidget?4(argv)
+eric6.eric6_shell.main?4()
 eric6.eric6_snap.createMainWidget?4(argv)
 eric6.eric6_snap.main?4()
 eric6.eric6_sqlbrowser.createMainWidget?4(argv)
--- a/APIs/Python3/eric6.bas	Sun Apr 09 16:52:55 2017 +0200
+++ b/APIs/Python3/eric6.bas	Sat May 06 13:43:21 2017 +0200
@@ -306,7 +306,6 @@
 GreaseMonkeyDownloader QObject
 GreaseMonkeyManager QObject
 GreaseMonkeyScript QObject
-GreaseMonkeyUrlInterceptor UrlInterceptor
 HelpAppearancePage ConfigurationPageBase Ui_HelpAppearancePage
 HelpBrowser QWebView
 HelpClearPrivateDataDialog QDialog Ui_HelpClearPrivateDataDialog
@@ -531,6 +530,8 @@
 MultiProjectWriter XMLStreamWriterBase
 MultiValueDictResolver DictResolver
 NannyNag Exception
+NavigationBar QWidget
+NavigationContainer QWidget
 NdArrayResolver BaseResolver
 NetworkAccessManager QNetworkAccessManager
 NetworkAccessManagerProxy QNetworkAccessManager
@@ -691,6 +692,7 @@
 ShellAssembly QWidget
 ShellHistoryDialog QDialog Ui_ShellHistoryDialog
 ShellPage ConfigurationPageBase Ui_ShellPage
+ShellWindow E5MainWindow
 Shelve HgExtension
 ShelveProjectBrowserHelper HgExtensionProjectBrowserHelper
 ShelveProjectHelper HgExtensionProjectHelper
--- a/Cooperation/Connection.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Cooperation/Connection.py	Sat May 06 13:43:21 2017 +0200
@@ -39,6 +39,10 @@
         arrived
     @signal participants(participants) emitted after the list of participants
         has arrived (list of strings of "host:port")
+    @signal editorCommand(hash, fn, message) emitted after an editor command
+        has arrived (string, string, string)
+    @signal rejected(message) emitted after a connection has been rejected
+        (string)
     """
     WaitingForGreeting = 0
     ReadingGreeting = 1
--- a/DebugClients/Python/DebugBase.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/DebugClients/Python/DebugBase.py	Sat May 06 13:43:21 2017 +0200
@@ -312,7 +312,7 @@
         
         if event == 'line':
             if self.stop_here(frame) or self.break_here(frame):
-                if (self.stop_everywhere and
+                if (self.stop_everywhere and frame.f_back and
                         frame.f_back.f_code.co_name == "prepareJsonCommand"):
                     # Just stepped into print statement, so skip these frames
                     self._set_stopinfo(None, frame.f_back)
@@ -578,22 +578,22 @@
         """
         # get module name from __file__
         fn = frame.f_globals.get('__file__')
-        if fn is not None:
-            try:
-                return self._fnCache[fn]
-            except KeyError:
-                absFilename = os.path.abspath(fn)
-                if absFilename.endswith(('.pyc', '.pyo')):
-                    fixedName = absFilename[:-1]
-                    if not os.path.exists(fixedName):
-                        fixedName = absFilename
-                else:
+        try:
+            return self._fnCache[fn]
+        except KeyError:
+            if fn is None:
+                return frame.f_code.co_filename
+            
+            absFilename = os.path.abspath(fn)
+            if absFilename.endswith(('.pyc', '.pyo')):
+                fixedName = absFilename[:-1]
+                if not os.path.exists(fixedName):
                     fixedName = absFilename
-                # update cache
-                self._fnCache[fn] = fixedName
-                return fixedName
-        else:
-            return frame.f_code.co_filename
+            else:
+                fixedName = absFilename
+            # update cache
+            self._fnCache[fn] = fixedName
+            return fixedName
 
     def __checkBreakInFrame(self, frame):
         """
--- a/Debugger/BreakPointModel.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Debugger/BreakPointModel.py	Sat May 06 13:43:21 2017 +0200
@@ -15,6 +15,9 @@
 class BreakPointModel(QAbstractItemModel):
     """
     Class implementing a custom model for breakpoints.
+    
+    @signal dataAboutToBeChanged(QModelIndex, QModelIndex) emitted to indicate
+        a change of the data
     """
     dataAboutToBeChanged = pyqtSignal(QModelIndex, QModelIndex)
     
--- a/Debugger/DebugServer.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Debugger/DebugServer.py	Sat May 06 13:43:21 2017 +0200
@@ -154,9 +154,12 @@
     callTraceInfo = pyqtSignal(bool, str, str, str, str, str, str)
     appendStdout = pyqtSignal(str)
     
-    def __init__(self):
+    def __init__(self, preventPassiveDebugging=False):
         """
         Constructor
+        
+        @param preventPassiveDebugging flag overriding the PassiveDbgEnabled
+            setting (boolean)
         """
         super(DebugServer, self).__init__()
         
@@ -185,7 +188,8 @@
         self.networkInterfaceName, self.networkInterfaceIndex = \
             self.__getNetworkInterfaceAndIndex(self.networkInterface)
         
-        if Preferences.getDebugger("PassiveDbgEnabled"):
+        if not preventPassiveDebugging and \
+           Preferences.getDebugger("PassiveDbgEnabled"):
             sock = Preferences.getDebugger("PassiveDbgPort")  # default: 42424
             self.listen(hostAddress, sock)
             self.passive = True
--- a/Debugger/WatchPointModel.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Debugger/WatchPointModel.py	Sat May 06 13:43:21 2017 +0200
@@ -15,6 +15,9 @@
 class WatchPointModel(QAbstractItemModel):
     """
     Class implementing a custom model for watch expressions.
+    
+    @signal dataAboutToBeChanged(QModelIndex, QModelIndex) emitted to indicate
+        a change of the data
     """
     dataAboutToBeChanged = pyqtSignal(QModelIndex, QModelIndex)
     
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Help/source.qhp	Sat May 06 13:43:21 2017 +0200
@@ -952,6 +952,7 @@
             <section title="eric6.QScintilla.SearchReplaceWidget" ref="eric6.QScintilla.SearchReplaceWidget.html" />
             <section title="eric6.QScintilla.Shell" ref="eric6.QScintilla.Shell.html" />
             <section title="eric6.QScintilla.ShellHistoryDialog" ref="eric6.QScintilla.ShellHistoryDialog.html" />
+            <section title="eric6.QScintilla.ShellWindow" ref="eric6.QScintilla.ShellWindow.html" />
             <section title="eric6.QScintilla.SortOptionsDialog" ref="eric6.QScintilla.SortOptionsDialog.html" />
             <section title="eric6.QScintilla.SpellChecker" ref="eric6.QScintilla.SpellChecker.html" />
             <section title="eric6.QScintilla.SpellCheckingDialog" ref="eric6.QScintilla.SpellCheckingDialog.html" />
@@ -1154,7 +1155,6 @@
               <section title="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.html" />
               <section title="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html" />
               <section title="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html" />
-              <section title="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html" />
             </section>
             <section title="eric6.WebBrowser.History" ref="index-eric6.WebBrowser.History.html">
               <section title="eric6.WebBrowser.History.HistoryCompleter" ref="eric6.WebBrowser.History.HistoryCompleter.html" />
@@ -1173,6 +1173,10 @@
               <section title="eric6.WebBrowser.JavaScript.PasswordManagerJsObject" ref="eric6.WebBrowser.JavaScript.PasswordManagerJsObject.html" />
               <section title="eric6.WebBrowser.JavaScript.StartPageJsObject" ref="eric6.WebBrowser.JavaScript.StartPageJsObject.html" />
             </section>
+            <section title="eric6.WebBrowser.Navigation" ref="index-eric6.WebBrowser.Navigation.html">
+              <section title="eric6.WebBrowser.Navigation.NavigationBar" ref="eric6.WebBrowser.Navigation.NavigationBar.html" />
+              <section title="eric6.WebBrowser.Navigation.NavigationContainer" ref="eric6.WebBrowser.Navigation.NavigationContainer.html" />
+            </section>
             <section title="eric6.WebBrowser.Network" ref="index-eric6.WebBrowser.Network.html">
               <section title="eric6.WebBrowser.Network.EricSchemeHandler" ref="eric6.WebBrowser.Network.EricSchemeHandler.html" />
               <section title="eric6.WebBrowser.Network.NetworkManager" ref="eric6.WebBrowser.Network.NetworkManager.html" />
@@ -1321,6 +1325,7 @@
           <section title="eric6.eric6_qregexp" ref="eric6.eric6_qregexp.html" />
           <section title="eric6.eric6_qregularexpression" ref="eric6.eric6_qregularexpression.html" />
           <section title="eric6.eric6_re" ref="eric6.eric6_re.html" />
+          <section title="eric6.eric6_shell" ref="eric6.eric6_shell.html" />
           <section title="eric6.eric6_snap" ref="eric6.eric6_snap.html" />
           <section title="eric6.eric6_sqlbrowser" ref="eric6.eric6_sqlbrowser.html" />
           <section title="eric6.eric6_tray" ref="eric6.eric6_tray.html" />
@@ -4975,7 +4980,6 @@
       <keyword name="Editor.__setAutoCompletion" id="Editor.__setAutoCompletion" ref="eric6.QScintilla.Editor.html#Editor.__setAutoCompletion" />
       <keyword name="Editor.__setCallTips" id="Editor.__setCallTips" ref="eric6.QScintilla.Editor.html#Editor.__setCallTips" />
       <keyword name="Editor.__setEolMode" id="Editor.__setEolMode" ref="eric6.QScintilla.Editor.html#Editor.__setEolMode" />
-      <keyword name="Editor.__setLineMarkerColours" id="Editor.__setLineMarkerColours" ref="eric6.QScintilla.Editor.html#Editor.__setLineMarkerColours" />
       <keyword name="Editor.__setMarginsDisplay" id="Editor.__setMarginsDisplay" ref="eric6.QScintilla.Editor.html#Editor.__setMarginsDisplay" />
       <keyword name="Editor.__setSpelling" id="Editor.__setSpelling" ref="eric6.QScintilla.Editor.html#Editor.__setSpelling" />
       <keyword name="Editor.__setSpellingLanguage" id="Editor.__setSpellingLanguage" ref="eric6.QScintilla.Editor.html#Editor.__setSpellingLanguage" />
@@ -6233,11 +6237,11 @@
       <keyword name="GreaseMonkeyDownloader (Module)" id="GreaseMonkeyDownloader (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html" />
       <keyword name="GreaseMonkeyDownloader (Module)" id="GreaseMonkeyDownloader (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html" />
       <keyword name="GreaseMonkeyDownloader.__downloadRequires" id="GreaseMonkeyDownloader.__downloadRequires" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__downloadRequires" />
-      <keyword name="GreaseMonkeyDownloader.__downloadRequires" id="GreaseMonkeyDownloader.__downloadRequires" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__downloadRequires" />
       <keyword name="GreaseMonkeyDownloader.__requireDownloaded" id="GreaseMonkeyDownloader.__requireDownloaded" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__requireDownloaded" />
       <keyword name="GreaseMonkeyDownloader.__requireDownloaded" id="GreaseMonkeyDownloader.__requireDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__requireDownloaded" />
       <keyword name="GreaseMonkeyDownloader.__scriptDownloaded" id="GreaseMonkeyDownloader.__scriptDownloaded" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__scriptDownloaded" />
       <keyword name="GreaseMonkeyDownloader.__scriptDownloaded" id="GreaseMonkeyDownloader.__scriptDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.__scriptDownloaded" />
+      <keyword name="GreaseMonkeyDownloader.updateScript" id="GreaseMonkeyDownloader.updateScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html#GreaseMonkeyDownloader.updateScript" />
       <keyword name="GreaseMonkeyJavaScript (Module)" id="GreaseMonkeyJavaScript (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyJavaScript.html" />
       <keyword name="GreaseMonkeyJavaScript (Module)" id="GreaseMonkeyJavaScript (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.html" />
       <keyword name="GreaseMonkeyManager" id="GreaseMonkeyManager" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager" />
@@ -6246,7 +6250,6 @@
       <keyword name="GreaseMonkeyManager (Constructor)" id="GreaseMonkeyManager (Constructor)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager.__init__" />
       <keyword name="GreaseMonkeyManager (Module)" id="GreaseMonkeyManager (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html" />
       <keyword name="GreaseMonkeyManager (Module)" id="GreaseMonkeyManager (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html" />
-      <keyword name="GreaseMonkeyManager.__del__" id="GreaseMonkeyManager.__del__" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager.__del__" />
       <keyword name="GreaseMonkeyManager.__downloaderFinished" id="GreaseMonkeyManager.__downloaderFinished" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager.__downloaderFinished" />
       <keyword name="GreaseMonkeyManager.__downloaderFinished" id="GreaseMonkeyManager.__downloaderFinished" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager.__downloaderFinished" />
       <keyword name="GreaseMonkeyManager.__load" id="GreaseMonkeyManager.__load" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html#GreaseMonkeyManager.__load" />
@@ -6288,8 +6291,14 @@
       <keyword name="GreaseMonkeyScript (Constructor)" id="GreaseMonkeyScript (Constructor)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__init__" />
       <keyword name="GreaseMonkeyScript (Module)" id="GreaseMonkeyScript (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html" />
       <keyword name="GreaseMonkeyScript (Module)" id="GreaseMonkeyScript (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html" />
+      <keyword name="GreaseMonkeyScript.__downloadRequires" id="GreaseMonkeyScript.__downloadRequires" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloadRequires" />
+      <keyword name="GreaseMonkeyScript.__downloaderError" id="GreaseMonkeyScript.__downloaderError" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloaderError" />
+      <keyword name="GreaseMonkeyScript.__downloaderFinished" id="GreaseMonkeyScript.__downloaderFinished" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__downloaderFinished" />
       <keyword name="GreaseMonkeyScript.__parseScript" id="GreaseMonkeyScript.__parseScript" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__parseScript" />
       <keyword name="GreaseMonkeyScript.__parseScript" id="GreaseMonkeyScript.__parseScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__parseScript" />
+      <keyword name="GreaseMonkeyScript.__reloadScript" id="GreaseMonkeyScript.__reloadScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__reloadScript" />
+      <keyword name="GreaseMonkeyScript.__requireDownloadError" id="GreaseMonkeyScript.__requireDownloadError" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__requireDownloadError" />
+      <keyword name="GreaseMonkeyScript.__requireDownloaded" id="GreaseMonkeyScript.__requireDownloaded" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__requireDownloaded" />
       <keyword name="GreaseMonkeyScript.__toJavaScriptList" id="GreaseMonkeyScript.__toJavaScriptList" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__toJavaScriptList" />
       <keyword name="GreaseMonkeyScript.__watchedFileChanged" id="GreaseMonkeyScript.__watchedFileChanged" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.__watchedFileChanged" />
       <keyword name="GreaseMonkeyScript.description" id="GreaseMonkeyScript.description" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.description" />
@@ -6306,6 +6315,7 @@
       <keyword name="GreaseMonkeyScript.include" id="GreaseMonkeyScript.include" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.include" />
       <keyword name="GreaseMonkeyScript.isEnabled" id="GreaseMonkeyScript.isEnabled" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isEnabled" />
       <keyword name="GreaseMonkeyScript.isEnabled" id="GreaseMonkeyScript.isEnabled" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isEnabled" />
+      <keyword name="GreaseMonkeyScript.isUpdating" id="GreaseMonkeyScript.isUpdating" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isUpdating" />
       <keyword name="GreaseMonkeyScript.isValid" id="GreaseMonkeyScript.isValid" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isValid" />
       <keyword name="GreaseMonkeyScript.isValid" id="GreaseMonkeyScript.isValid" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.isValid" />
       <keyword name="GreaseMonkeyScript.match" id="GreaseMonkeyScript.match" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.match" />
@@ -6314,20 +6324,17 @@
       <keyword name="GreaseMonkeyScript.nameSpace" id="GreaseMonkeyScript.nameSpace" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.nameSpace" />
       <keyword name="GreaseMonkeyScript.nameSpace" id="GreaseMonkeyScript.nameSpace" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.nameSpace" />
       <keyword name="GreaseMonkeyScript.noFrames" id="GreaseMonkeyScript.noFrames" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.noFrames" />
+      <keyword name="GreaseMonkeyScript.require" id="GreaseMonkeyScript.require" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.require" />
       <keyword name="GreaseMonkeyScript.script" id="GreaseMonkeyScript.script" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.script" />
-      <keyword name="GreaseMonkeyScript.script" id="GreaseMonkeyScript.script" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.script" />
       <keyword name="GreaseMonkeyScript.setEnabled" id="GreaseMonkeyScript.setEnabled" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.setEnabled" />
       <keyword name="GreaseMonkeyScript.setEnabled" id="GreaseMonkeyScript.setEnabled" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.setEnabled" />
       <keyword name="GreaseMonkeyScript.startAt" id="GreaseMonkeyScript.startAt" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.startAt" />
       <keyword name="GreaseMonkeyScript.startAt" id="GreaseMonkeyScript.startAt" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.startAt" />
+      <keyword name="GreaseMonkeyScript.updateScript" id="GreaseMonkeyScript.updateScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.updateScript" />
       <keyword name="GreaseMonkeyScript.updateUrl" id="GreaseMonkeyScript.updateUrl" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.updateUrl" />
       <keyword name="GreaseMonkeyScript.version" id="GreaseMonkeyScript.version" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.version" />
       <keyword name="GreaseMonkeyScript.version" id="GreaseMonkeyScript.version" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.version" />
       <keyword name="GreaseMonkeyScript.webScript" id="GreaseMonkeyScript.webScript" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html#GreaseMonkeyScript.webScript" />
-      <keyword name="GreaseMonkeyUrlInterceptor" id="GreaseMonkeyUrlInterceptor" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html#GreaseMonkeyUrlInterceptor" />
-      <keyword name="GreaseMonkeyUrlInterceptor (Constructor)" id="GreaseMonkeyUrlInterceptor (Constructor)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html#GreaseMonkeyUrlInterceptor.__init__" />
-      <keyword name="GreaseMonkeyUrlInterceptor (Module)" id="GreaseMonkeyUrlInterceptor (Module)" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html" />
-      <keyword name="GreaseMonkeyUrlInterceptor.interceptRequest" id="GreaseMonkeyUrlInterceptor.interceptRequest" ref="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html#GreaseMonkeyUrlInterceptor.interceptRequest" />
       <keyword name="GreaseMonkeyUrlMatcher" id="GreaseMonkeyUrlMatcher" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyUrlMatcher.html#GreaseMonkeyUrlMatcher" />
       <keyword name="GreaseMonkeyUrlMatcher (Constructor)" id="GreaseMonkeyUrlMatcher (Constructor)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyUrlMatcher.html#GreaseMonkeyUrlMatcher.__init__" />
       <keyword name="GreaseMonkeyUrlMatcher (Module)" id="GreaseMonkeyUrlMatcher (Module)" ref="eric6.Helpviewer.GreaseMonkey.GreaseMonkeyUrlMatcher.html" />
@@ -8279,6 +8286,7 @@
       <keyword name="HistoryEntry.__eq__" id="HistoryEntry.__eq__" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryEntry.__eq__" />
       <keyword name="HistoryEntry.__lt__" id="HistoryEntry.__lt__" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryEntry.__lt__" />
       <keyword name="HistoryEntry.__lt__" id="HistoryEntry.__lt__" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryEntry.__lt__" />
+      <keyword name="HistoryEntry.isValid" id="HistoryEntry.isValid" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryEntry.isValid" />
       <keyword name="HistoryEntry.userTitle" id="HistoryEntry.userTitle" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryEntry.userTitle" />
       <keyword name="HistoryEntry.userTitle" id="HistoryEntry.userTitle" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryEntry.userTitle" />
       <keyword name="HistoryFilterModel" id="HistoryFilterModel" ref="eric6.Helpviewer.History.HistoryFilterModel.html#HistoryFilterModel" />
@@ -8333,12 +8341,16 @@
       <keyword name="HistoryManager (Module)" id="HistoryManager (Module)" ref="eric6.WebBrowser.History.HistoryManager.html" />
       <keyword name="HistoryManager.__checkForExpired" id="HistoryManager.__checkForExpired" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager.__checkForExpired" />
       <keyword name="HistoryManager.__checkForExpired" id="HistoryManager.__checkForExpired" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__checkForExpired" />
+      <keyword name="HistoryManager.__cleanUrl" id="HistoryManager.__cleanUrl" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__cleanUrl" />
+      <keyword name="HistoryManager.__cleanUrlStr" id="HistoryManager.__cleanUrlStr" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__cleanUrlStr" />
+      <keyword name="HistoryManager.__findFirstHistoryEntry" id="HistoryManager.__findFirstHistoryEntry" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__findFirstHistoryEntry" />
       <keyword name="HistoryManager.__load" id="HistoryManager.__load" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager.__load" />
       <keyword name="HistoryManager.__load" id="HistoryManager.__load" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__load" />
       <keyword name="HistoryManager.__refreshFrequencies" id="HistoryManager.__refreshFrequencies" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager.__refreshFrequencies" />
       <keyword name="HistoryManager.__refreshFrequencies" id="HistoryManager.__refreshFrequencies" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__refreshFrequencies" />
       <keyword name="HistoryManager.__startFrequencyTimer" id="HistoryManager.__startFrequencyTimer" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager.__startFrequencyTimer" />
       <keyword name="HistoryManager.__startFrequencyTimer" id="HistoryManager.__startFrequencyTimer" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__startFrequencyTimer" />
+      <keyword name="HistoryManager.__updateVisitCount" id="HistoryManager.__updateVisitCount" ref="eric6.WebBrowser.History.HistoryManager.html#HistoryManager.__updateVisitCount" />
       <keyword name="HistoryManager._addHistoryEntry" id="HistoryManager._addHistoryEntry" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager._addHistoryEntry" />
       <keyword name="HistoryManager._removeHistoryEntry" id="HistoryManager._removeHistoryEntry" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager._removeHistoryEntry" />
       <keyword name="HistoryManager.addHistoryEntry" id="HistoryManager.addHistoryEntry" ref="eric6.Helpviewer.History.HistoryManager.html#HistoryManager.addHistoryEntry" />
@@ -9964,6 +9976,29 @@
       <keyword name="NannyNag.get_line" id="NannyNag.get_line" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_line" />
       <keyword name="NannyNag.get_lineno" id="NannyNag.get_lineno" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_lineno" />
       <keyword name="NannyNag.get_msg" id="NannyNag.get_msg" ref="eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html#NannyNag.get_msg" />
+      <keyword name="Navigation (Package)" id="Navigation (Package)" ref="index-eric6.WebBrowser.Navigation.html" />
+      <keyword name="NavigationBar" id="NavigationBar" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar" />
+      <keyword name="NavigationBar (Constructor)" id="NavigationBar (Constructor)" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__init__" />
+      <keyword name="NavigationBar (Module)" id="NavigationBar (Module)" ref="eric6.WebBrowser.Navigation.NavigationBar.html" />
+      <keyword name="NavigationBar.__clearHistory" id="NavigationBar.__clearHistory" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__clearHistory" />
+      <keyword name="NavigationBar.__goBack" id="NavigationBar.__goBack" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__goBack" />
+      <keyword name="NavigationBar.__goForward" id="NavigationBar.__goForward" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__goForward" />
+      <keyword name="NavigationBar.__goHome" id="NavigationBar.__goHome" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__goHome" />
+      <keyword name="NavigationBar.__navigationMenuActionTriggered" id="NavigationBar.__navigationMenuActionTriggered" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__navigationMenuActionTriggered" />
+      <keyword name="NavigationBar.__reload" id="NavigationBar.__reload" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__reload" />
+      <keyword name="NavigationBar.__showBackMenu" id="NavigationBar.__showBackMenu" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__showBackMenu" />
+      <keyword name="NavigationBar.__showForwardMenu" id="NavigationBar.__showForwardMenu" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__showForwardMenu" />
+      <keyword name="NavigationBar.__stopLoad" id="NavigationBar.__stopLoad" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.__stopLoad" />
+      <keyword name="NavigationBar.backButton" id="NavigationBar.backButton" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.backButton" />
+      <keyword name="NavigationBar.exitFullScreenButton" id="NavigationBar.exitFullScreenButton" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.exitFullScreenButton" />
+      <keyword name="NavigationBar.forwardButton" id="NavigationBar.forwardButton" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.forwardButton" />
+      <keyword name="NavigationBar.reloadButton" id="NavigationBar.reloadButton" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.reloadButton" />
+      <keyword name="NavigationBar.searchEdit" id="NavigationBar.searchEdit" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.searchEdit" />
+      <keyword name="NavigationBar.stopButton" id="NavigationBar.stopButton" ref="eric6.WebBrowser.Navigation.NavigationBar.html#NavigationBar.stopButton" />
+      <keyword name="NavigationContainer" id="NavigationContainer" ref="eric6.WebBrowser.Navigation.NavigationContainer.html#NavigationContainer" />
+      <keyword name="NavigationContainer (Constructor)" id="NavigationContainer (Constructor)" ref="eric6.WebBrowser.Navigation.NavigationContainer.html#NavigationContainer.__init__" />
+      <keyword name="NavigationContainer (Module)" id="NavigationContainer (Module)" ref="eric6.WebBrowser.Navigation.NavigationContainer.html" />
+      <keyword name="NavigationContainer.addWidget" id="NavigationContainer.addWidget" ref="eric6.WebBrowser.Navigation.NavigationContainer.html#NavigationContainer.addWidget" />
       <keyword name="NdArrayItemsContainer" id="NdArrayItemsContainer" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayItemsContainer" />
       <keyword name="NdArrayResolver" id="NdArrayResolver" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayResolver" />
       <keyword name="NdArrayResolver.__isNumeric" id="NdArrayResolver.__isNumeric" ref="eric6.DebugClients.Python.DebugVariables.html#NdArrayResolver.__isNumeric" />
@@ -12331,17 +12366,18 @@
       <keyword name="Shell.__QScintillaCharLeft" id="Shell.__QScintillaCharLeft" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaCharLeft" />
       <keyword name="Shell.__QScintillaCharLeftExtend" id="Shell.__QScintillaCharLeftExtend" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaCharLeftExtend" />
       <keyword name="Shell.__QScintillaCharRight" id="Shell.__QScintillaCharRight" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaCharRight" />
+      <keyword name="Shell.__QScintillaCommand" id="Shell.__QScintillaCommand" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaCommand" />
       <keyword name="Shell.__QScintillaDelete" id="Shell.__QScintillaDelete" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDelete" />
       <keyword name="Shell.__QScintillaDeleteBack" id="Shell.__QScintillaDeleteBack" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDeleteBack" />
       <keyword name="Shell.__QScintillaDeleteLineLeft" id="Shell.__QScintillaDeleteLineLeft" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDeleteLineLeft" />
       <keyword name="Shell.__QScintillaDeleteLineRight" id="Shell.__QScintillaDeleteLineRight" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDeleteLineRight" />
       <keyword name="Shell.__QScintillaDeleteWordLeft" id="Shell.__QScintillaDeleteWordLeft" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDeleteWordLeft" />
       <keyword name="Shell.__QScintillaDeleteWordRight" id="Shell.__QScintillaDeleteWordRight" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaDeleteWordRight" />
+      <keyword name="Shell.__QScintillaHistoryDown" id="Shell.__QScintillaHistoryDown" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaHistoryDown" />
+      <keyword name="Shell.__QScintillaHistoryUp" id="Shell.__QScintillaHistoryUp" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaHistoryUp" />
       <keyword name="Shell.__QScintillaLeftCommand" id="Shell.__QScintillaLeftCommand" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaLeftCommand" />
       <keyword name="Shell.__QScintillaLeftDeleteCommand" id="Shell.__QScintillaLeftDeleteCommand" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaLeftDeleteCommand" />
-      <keyword name="Shell.__QScintillaLineDown" id="Shell.__QScintillaLineDown" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaLineDown" />
       <keyword name="Shell.__QScintillaLineEnd" id="Shell.__QScintillaLineEnd" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaLineEnd" />
-      <keyword name="Shell.__QScintillaLineUp" id="Shell.__QScintillaLineUp" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaLineUp" />
       <keyword name="Shell.__QScintillaNewline" id="Shell.__QScintillaNewline" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaNewline" />
       <keyword name="Shell.__QScintillaRightCommand" id="Shell.__QScintillaRightCommand" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaRightCommand" />
       <keyword name="Shell.__QScintillaTab" id="Shell.__QScintillaTab" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaTab" />
@@ -12352,7 +12388,6 @@
       <keyword name="Shell.__QScintillaWordRight" id="Shell.__QScintillaWordRight" ref="eric6.QScintilla.Shell.html#Shell.__QScintillaWordRight" />
       <keyword name="Shell.__bindLexer" id="Shell.__bindLexer" ref="eric6.QScintilla.Shell.html#Shell.__bindLexer" />
       <keyword name="Shell.__clearCurrentLine" id="Shell.__clearCurrentLine" ref="eric6.QScintilla.Shell.html#Shell.__clearCurrentLine" />
-      <keyword name="Shell.__clearHistory" id="Shell.__clearHistory" ref="eric6.QScintilla.Shell.html#Shell.__clearHistory" />
       <keyword name="Shell.__clientCapabilities" id="Shell.__clientCapabilities" ref="eric6.QScintilla.Shell.html#Shell.__clientCapabilities" />
       <keyword name="Shell.__clientError" id="Shell.__clientError" ref="eric6.QScintilla.Shell.html#Shell.__clientError" />
       <keyword name="Shell.__clientException" id="Shell.__clientException" ref="eric6.QScintilla.Shell.html#Shell.__clientException" />
@@ -12380,14 +12415,12 @@
       <keyword name="Shell.__searchHistory" id="Shell.__searchHistory" ref="eric6.QScintilla.Shell.html#Shell.__searchHistory" />
       <keyword name="Shell.__searchNext" id="Shell.__searchNext" ref="eric6.QScintilla.Shell.html#Shell.__searchNext" />
       <keyword name="Shell.__searchPrev" id="Shell.__searchPrev" ref="eric6.QScintilla.Shell.html#Shell.__searchPrev" />
-      <keyword name="Shell.__selectHistory" id="Shell.__selectHistory" ref="eric6.QScintilla.Shell.html#Shell.__selectHistory" />
       <keyword name="Shell.__setAutoCompletion" id="Shell.__setAutoCompletion" ref="eric6.QScintilla.Shell.html#Shell.__setAutoCompletion" />
       <keyword name="Shell.__setCallTips" id="Shell.__setCallTips" ref="eric6.QScintilla.Shell.html#Shell.__setCallTips" />
       <keyword name="Shell.__setMargin0" id="Shell.__setMargin0" ref="eric6.QScintilla.Shell.html#Shell.__setMargin0" />
       <keyword name="Shell.__setMonospaced" id="Shell.__setMonospaced" ref="eric6.QScintilla.Shell.html#Shell.__setMonospaced" />
       <keyword name="Shell.__setTextDisplay" id="Shell.__setTextDisplay" ref="eric6.QScintilla.Shell.html#Shell.__setTextDisplay" />
       <keyword name="Shell.__showCompletions" id="Shell.__showCompletions" ref="eric6.QScintilla.Shell.html#Shell.__showCompletions" />
-      <keyword name="Shell.__showHistory" id="Shell.__showHistory" ref="eric6.QScintilla.Shell.html#Shell.__showHistory" />
       <keyword name="Shell.__showLanguageMenu" id="Shell.__showLanguageMenu" ref="eric6.QScintilla.Shell.html#Shell.__showLanguageMenu" />
       <keyword name="Shell.__startDebugClient" id="Shell.__startDebugClient" ref="eric6.QScintilla.Shell.html#Shell.__startDebugClient" />
       <keyword name="Shell.__useHistory" id="Shell.__useHistory" ref="eric6.QScintilla.Shell.html#Shell.__useHistory" />
@@ -12398,6 +12431,7 @@
       <keyword name="Shell.__writeStdOut" id="Shell.__writeStdOut" ref="eric6.QScintilla.Shell.html#Shell.__writeStdOut" />
       <keyword name="Shell.clear" id="Shell.clear" ref="eric6.QScintilla.Shell.html#Shell.clear" />
       <keyword name="Shell.clearAllHistories" id="Shell.clearAllHistories" ref="eric6.QScintilla.Shell.html#Shell.clearAllHistories" />
+      <keyword name="Shell.clearHistory" id="Shell.clearHistory" ref="eric6.QScintilla.Shell.html#Shell.clearHistory" />
       <keyword name="Shell.closeShell" id="Shell.closeShell" ref="eric6.QScintilla.Shell.html#Shell.closeShell" />
       <keyword name="Shell.contextMenuEvent" id="Shell.contextMenuEvent" ref="eric6.QScintilla.Shell.html#Shell.contextMenuEvent" />
       <keyword name="Shell.dragEnterEvent" id="Shell.dragEnterEvent" ref="eric6.QScintilla.Shell.html#Shell.dragEnterEvent" />
@@ -12423,7 +12457,9 @@
       <keyword name="Shell.saveHistory" id="Shell.saveHistory" ref="eric6.QScintilla.Shell.html#Shell.saveHistory" />
       <keyword name="Shell.searchNext" id="Shell.searchNext" ref="eric6.QScintilla.Shell.html#Shell.searchNext" />
       <keyword name="Shell.searchPrev" id="Shell.searchPrev" ref="eric6.QScintilla.Shell.html#Shell.searchPrev" />
+      <keyword name="Shell.selectHistory" id="Shell.selectHistory" ref="eric6.QScintilla.Shell.html#Shell.selectHistory" />
       <keyword name="Shell.setDebuggerUI" id="Shell.setDebuggerUI" ref="eric6.QScintilla.Shell.html#Shell.setDebuggerUI" />
+      <keyword name="Shell.showHistory" id="Shell.showHistory" ref="eric6.QScintilla.Shell.html#Shell.showHistory" />
       <keyword name="Shell.wheelEvent" id="Shell.wheelEvent" ref="eric6.QScintilla.Shell.html#Shell.wheelEvent" />
       <keyword name="ShellAssembly" id="ShellAssembly" ref="eric6.QScintilla.Shell.html#ShellAssembly" />
       <keyword name="ShellAssembly (Constructor)" id="ShellAssembly (Constructor)" ref="eric6.QScintilla.Shell.html#ShellAssembly.__init__" />
@@ -12446,6 +12482,41 @@
       <keyword name="ShellPage.on_monospacedFontButton_clicked" id="ShellPage.on_monospacedFontButton_clicked" ref="eric6.Preferences.ConfigurationPages.ShellPage.html#ShellPage.on_monospacedFontButton_clicked" />
       <keyword name="ShellPage.polishPage" id="ShellPage.polishPage" ref="eric6.Preferences.ConfigurationPages.ShellPage.html#ShellPage.polishPage" />
       <keyword name="ShellPage.save" id="ShellPage.save" ref="eric6.Preferences.ConfigurationPages.ShellPage.html#ShellPage.save" />
+      <keyword name="ShellWindow" id="ShellWindow" ref="eric6.QScintilla.ShellWindow.html#ShellWindow" />
+      <keyword name="ShellWindow (Constructor)" id="ShellWindow (Constructor)" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__init__" />
+      <keyword name="ShellWindow (Module)" id="ShellWindow (Module)" ref="eric6.QScintilla.ShellWindow.html" />
+      <keyword name="ShellWindow.__about" id="ShellWindow.__about" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__about" />
+      <keyword name="ShellWindow.__aboutQt" id="ShellWindow.__aboutQt" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__aboutQt" />
+      <keyword name="ShellWindow.__createActions" id="ShellWindow.__createActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createActions" />
+      <keyword name="ShellWindow.__createEditActions" id="ShellWindow.__createEditActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createEditActions" />
+      <keyword name="ShellWindow.__createFileActions" id="ShellWindow.__createFileActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createFileActions" />
+      <keyword name="ShellWindow.__createHelpActions" id="ShellWindow.__createHelpActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createHelpActions" />
+      <keyword name="ShellWindow.__createHistoryActions" id="ShellWindow.__createHistoryActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createHistoryActions" />
+      <keyword name="ShellWindow.__createMenus" id="ShellWindow.__createMenus" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createMenus" />
+      <keyword name="ShellWindow.__createSearchActions" id="ShellWindow.__createSearchActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createSearchActions" />
+      <keyword name="ShellWindow.__createStatusBar" id="ShellWindow.__createStatusBar" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createStatusBar" />
+      <keyword name="ShellWindow.__createToolBars" id="ShellWindow.__createToolBars" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createToolBars" />
+      <keyword name="ShellWindow.__createViewActions" id="ShellWindow.__createViewActions" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__createViewActions" />
+      <keyword name="ShellWindow.__doClearRestart" id="ShellWindow.__doClearRestart" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__doClearRestart" />
+      <keyword name="ShellWindow.__doRestart" id="ShellWindow.__doRestart" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__doRestart" />
+      <keyword name="ShellWindow.__newWindow" id="ShellWindow.__newWindow" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__newWindow" />
+      <keyword name="ShellWindow.__readSettings" id="ShellWindow.__readSettings" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__readSettings" />
+      <keyword name="ShellWindow.__readShortcut" id="ShellWindow.__readShortcut" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__readShortcut" />
+      <keyword name="ShellWindow.__showFind" id="ShellWindow.__showFind" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__showFind" />
+      <keyword name="ShellWindow.__showLanguageMenu" id="ShellWindow.__showLanguageMenu" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__showLanguageMenu" />
+      <keyword name="ShellWindow.__startShell" id="ShellWindow.__startShell" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__startShell" />
+      <keyword name="ShellWindow.__whatsThis" id="ShellWindow.__whatsThis" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__whatsThis" />
+      <keyword name="ShellWindow.__writeSettings" id="ShellWindow.__writeSettings" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__writeSettings" />
+      <keyword name="ShellWindow.__zoom" id="ShellWindow.__zoom" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoom" />
+      <keyword name="ShellWindow.__zoomIn" id="ShellWindow.__zoomIn" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoomIn" />
+      <keyword name="ShellWindow.__zoomOut" id="ShellWindow.__zoomOut" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoomOut" />
+      <keyword name="ShellWindow.__zoomReset" id="ShellWindow.__zoomReset" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoomReset" />
+      <keyword name="ShellWindow.__zoomTo" id="ShellWindow.__zoomTo" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoomTo" />
+      <keyword name="ShellWindow.__zoomValueChanged" id="ShellWindow.__zoomValueChanged" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.__zoomValueChanged" />
+      <keyword name="ShellWindow.activeWindow" id="ShellWindow.activeWindow" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.activeWindow" />
+      <keyword name="ShellWindow.closeEvent" id="ShellWindow.closeEvent" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.closeEvent" />
+      <keyword name="ShellWindow.getAPIsManager" id="ShellWindow.getAPIsManager" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.getAPIsManager" />
+      <keyword name="ShellWindow.quit" id="ShellWindow.quit" ref="eric6.QScintilla.ShellWindow.html#ShellWindow.quit" />
       <keyword name="Shelve" id="Shelve" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve" />
       <keyword name="Shelve (Constructor)" id="Shelve (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.__init__" />
       <keyword name="Shelve.__hgGetShelveNamesList" id="Shelve.__hgGetShelveNamesList" ref="eric6.Plugins.VcsPlugins.vcsMercurial.ShelveExtension.shelve.html#Shelve.__hgGetShelveNamesList" />
@@ -14442,6 +14513,7 @@
       <keyword name="TrayStarter.__startProc" id="TrayStarter.__startProc" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startProc" />
       <keyword name="TrayStarter.__startPyRe" id="TrayStarter.__startPyRe" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startPyRe" />
       <keyword name="TrayStarter.__startQRegExp" id="TrayStarter.__startQRegExp" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startQRegExp" />
+      <keyword name="TrayStarter.__startShell" id="TrayStarter.__startShell" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startShell" />
       <keyword name="TrayStarter.__startSnapshot" id="TrayStarter.__startSnapshot" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startSnapshot" />
       <keyword name="TrayStarter.__startSqlBrowser" id="TrayStarter.__startSqlBrowser" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startSqlBrowser" />
       <keyword name="TrayStarter.__startTRPreviewer" id="TrayStarter.__startTRPreviewer" ref="eric6.Tools.TrayStarter.html#TrayStarter.__startTRPreviewer" />
@@ -15807,7 +15879,6 @@
       <keyword name="WebBrowserView.event" id="WebBrowserView.event" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.event" />
       <keyword name="WebBrowserView.eventFilter" id="WebBrowserView.eventFilter" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.eventFilter" />
       <keyword name="WebBrowserView.findNextPrev" id="WebBrowserView.findNextPrev" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.findNextPrev" />
-      <keyword name="WebBrowserView.focusOutEvent" id="WebBrowserView.focusOutEvent" ref="eric6.WebBrowser.WebBrowserView.html#WebBrowserView.focusOutEvent" />
       <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" />
@@ -15891,6 +15962,7 @@
       <keyword name="WebBrowserWindow.__filterQtHelpDocumentation" id="WebBrowserWindow.__filterQtHelpDocumentation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__filterQtHelpDocumentation" />
       <keyword name="WebBrowserWindow.__find" id="WebBrowserWindow.__find" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__find" />
       <keyword name="WebBrowserWindow.__forward" id="WebBrowserWindow.__forward" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__forward" />
+      <keyword name="WebBrowserWindow.__hideNavigation" id="WebBrowserWindow.__hideNavigation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__hideNavigation" />
       <keyword name="WebBrowserWindow.__home" id="WebBrowserWindow.__home" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__home" />
       <keyword name="WebBrowserWindow.__indexingFinished" id="WebBrowserWindow.__indexingFinished" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__indexingFinished" />
       <keyword name="WebBrowserWindow.__indexingStarted" id="WebBrowserWindow.__indexingStarted" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__indexingStarted" />
@@ -15903,7 +15975,6 @@
       <keyword name="WebBrowserWindow.__lookForNewDocumentation" id="WebBrowserWindow.__lookForNewDocumentation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__lookForNewDocumentation" />
       <keyword name="WebBrowserWindow.__manageQtHelpDocumentation" id="WebBrowserWindow.__manageQtHelpDocumentation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__manageQtHelpDocumentation" />
       <keyword name="WebBrowserWindow.__manageQtHelpFilters" id="WebBrowserWindow.__manageQtHelpFilters" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__manageQtHelpFilters" />
-      <keyword name="WebBrowserWindow.__navigationMenuActionTriggered" id="WebBrowserWindow.__navigationMenuActionTriggered" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__navigationMenuActionTriggered" />
       <keyword name="WebBrowserWindow.__nextTab" id="WebBrowserWindow.__nextTab" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__nextTab" />
       <keyword name="WebBrowserWindow.__openFile" id="WebBrowserWindow.__openFile" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__openFile" />
       <keyword name="WebBrowserWindow.__openFileNewTab" id="WebBrowserWindow.__openFileNewTab" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__openFileNewTab" />
@@ -15923,7 +15994,6 @@
       <keyword name="WebBrowserWindow.__setupFilterCombo" id="WebBrowserWindow.__setupFilterCombo" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__setupFilterCombo" />
       <keyword name="WebBrowserWindow.__showAcceptedLanguages" id="WebBrowserWindow.__showAcceptedLanguages" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showAcceptedLanguages" />
       <keyword name="WebBrowserWindow.__showAdBlockDialog" id="WebBrowserWindow.__showAdBlockDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showAdBlockDialog" />
-      <keyword name="WebBrowserWindow.__showBackMenu" id="WebBrowserWindow.__showBackMenu" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showBackMenu" />
       <keyword name="WebBrowserWindow.__showBookmarksDialog" id="WebBrowserWindow.__showBookmarksDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showBookmarksDialog" />
       <keyword name="WebBrowserWindow.__showCertificateErrorsDialog" id="WebBrowserWindow.__showCertificateErrorsDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showCertificateErrorsDialog" />
       <keyword name="WebBrowserWindow.__showCookiesConfiguration" id="WebBrowserWindow.__showCookiesConfiguration" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showCookiesConfiguration" />
@@ -15932,7 +16002,6 @@
       <keyword name="WebBrowserWindow.__showFeaturePermissionDialog" id="WebBrowserWindow.__showFeaturePermissionDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showFeaturePermissionDialog" />
       <keyword name="WebBrowserWindow.__showFeedsManager" id="WebBrowserWindow.__showFeedsManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showFeedsManager" />
       <keyword name="WebBrowserWindow.__showFlashCookiesManagement" id="WebBrowserWindow.__showFlashCookiesManagement" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showFlashCookiesManagement" />
-      <keyword name="WebBrowserWindow.__showForwardMenu" id="WebBrowserWindow.__showForwardMenu" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showForwardMenu" />
       <keyword name="WebBrowserWindow.__showGreaseMonkeyConfigDialog" id="WebBrowserWindow.__showGreaseMonkeyConfigDialog" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showGreaseMonkeyConfigDialog" />
       <keyword name="WebBrowserWindow.__showIndexWindow" id="WebBrowserWindow.__showIndexWindow" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showIndexWindow" />
       <keyword name="WebBrowserWindow.__showInstallationError" id="WebBrowserWindow.__showInstallationError" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__showInstallationError" />
@@ -15956,7 +16025,6 @@
       <keyword name="WebBrowserWindow.__toggleJavaScriptConsole" id="WebBrowserWindow.__toggleJavaScriptConsole" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__toggleJavaScriptConsole" />
       <keyword name="WebBrowserWindow.__undo" id="WebBrowserWindow.__undo" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__undo" />
       <keyword name="WebBrowserWindow.__unselect" id="WebBrowserWindow.__unselect" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__unselect" />
-      <keyword name="WebBrowserWindow.__viewFullScreen" id="WebBrowserWindow.__viewFullScreen" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__viewFullScreen" />
       <keyword name="WebBrowserWindow.__virusTotalDomainReport" id="WebBrowserWindow.__virusTotalDomainReport" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__virusTotalDomainReport" />
       <keyword name="WebBrowserWindow.__virusTotalFileScanReport" id="WebBrowserWindow.__virusTotalFileScanReport" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__virusTotalFileScanReport" />
       <keyword name="WebBrowserWindow.__virusTotalIpAddressReport" id="WebBrowserWindow.__virusTotalIpAddressReport" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.__virusTotalIpAddressReport" />
@@ -15995,9 +16063,11 @@
       <keyword name="WebBrowserWindow.getWindow" id="WebBrowserWindow.getWindow" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.getWindow" />
       <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" />
       <keyword name="WebBrowserWindow.historyManager" id="WebBrowserWindow.historyManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.historyManager" />
       <keyword name="WebBrowserWindow.icon" id="WebBrowserWindow.icon" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.icon" />
       <keyword name="WebBrowserWindow.imageSearchEngine" id="WebBrowserWindow.imageSearchEngine" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.imageSearchEngine" />
+      <keyword name="WebBrowserWindow.isFullScreenNavigationVisible" id="WebBrowserWindow.isFullScreenNavigationVisible" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.isFullScreenNavigationVisible" />
       <keyword name="WebBrowserWindow.isPrivate" id="WebBrowserWindow.isPrivate" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.isPrivate" />
       <keyword name="WebBrowserWindow.javascriptConsole" id="WebBrowserWindow.javascriptConsole" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.javascriptConsole" />
       <keyword name="WebBrowserWindow.keyPressEvent" id="WebBrowserWindow.keyPressEvent" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.keyPressEvent" />
@@ -16029,12 +16099,14 @@
       <keyword name="WebBrowserWindow.setForwardAvailable" id="WebBrowserWindow.setForwardAvailable" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.setForwardAvailable" />
       <keyword name="WebBrowserWindow.setLoadingActions" id="WebBrowserWindow.setLoadingActions" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.setLoadingActions" />
       <keyword name="WebBrowserWindow.setUseQtHelp" id="WebBrowserWindow.setUseQtHelp" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.setUseQtHelp" />
+      <keyword name="WebBrowserWindow.showFullScreenNavigation" id="WebBrowserWindow.showFullScreenNavigation" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.showFullScreenNavigation" />
       <keyword name="WebBrowserWindow.showNotification" id="WebBrowserWindow.showNotification" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.showNotification" />
       <keyword name="WebBrowserWindow.shutdown" id="WebBrowserWindow.shutdown" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.shutdown" />
       <keyword name="WebBrowserWindow.speedDial" id="WebBrowserWindow.speedDial" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.speedDial" />
       <keyword name="WebBrowserWindow.syncManager" id="WebBrowserWindow.syncManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.syncManager" />
       <keyword name="WebBrowserWindow.tabManager" id="WebBrowserWindow.tabManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.tabManager" />
       <keyword name="WebBrowserWindow.tabWidget" id="WebBrowserWindow.tabWidget" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.tabWidget" />
+      <keyword name="WebBrowserWindow.toggleFullScreen" id="WebBrowserWindow.toggleFullScreen" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.toggleFullScreen" />
       <keyword name="WebBrowserWindow.userAgentsManager" id="WebBrowserWindow.userAgentsManager" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.userAgentsManager" />
       <keyword name="WebBrowserWindow.webProfile" id="WebBrowserWindow.webProfile" ref="eric6.WebBrowser.WebBrowserWindow.html#WebBrowserWindow.webProfile" />
       <keyword name="WebDatabasesDialog" id="WebDatabasesDialog" ref="eric6.Helpviewer.OfflineStorage.WebDatabasesDialog.html#WebDatabasesDialog" />
@@ -16468,6 +16540,7 @@
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_qregexp.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_qregularexpression.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_re.html#createMainWidget" />
+      <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_shell.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_snap.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_sqlbrowser.html#createMainWidget" />
       <keyword name="createMainWidget" id="createMainWidget" ref="eric6.eric6_tray.html#createMainWidget" />
@@ -16522,6 +16595,7 @@
       <keyword name="eric6_qregexp (Module)" id="eric6_qregexp (Module)" ref="eric6.eric6_qregexp.html" />
       <keyword name="eric6_qregularexpression (Module)" id="eric6_qregularexpression (Module)" ref="eric6.eric6_qregularexpression.html" />
       <keyword name="eric6_re (Module)" id="eric6_re (Module)" ref="eric6.eric6_re.html" />
+      <keyword name="eric6_shell (Module)" id="eric6_shell (Module)" ref="eric6.eric6_shell.html" />
       <keyword name="eric6_snap (Module)" id="eric6_snap (Module)" ref="eric6.eric6_snap.html" />
       <keyword name="eric6_sqlbrowser (Module)" id="eric6_sqlbrowser (Module)" ref="eric6.eric6_sqlbrowser.html" />
       <keyword name="eric6_tray (Module)" id="eric6_tray (Module)" ref="eric6.eric6_tray.html" />
@@ -16572,6 +16646,7 @@
       <keyword name="fromNativeSeparators" id="fromNativeSeparators" ref="eric6.Utilities.__init__.html#fromNativeSeparators" />
       <keyword name="generateDistroInfo" id="generateDistroInfo" ref="eric6.Utilities.__init__.html#generateDistroInfo" />
       <keyword name="generatePluginsVersionInfo" id="generatePluginsVersionInfo" ref="eric6.Utilities.__init__.html#generatePluginsVersionInfo" />
+      <keyword name="generatePyQtToolPath" id="generatePyQtToolPath" ref="eric6.Utilities.__init__.html#generatePyQtToolPath" />
       <keyword name="generatePySideToolPath" id="generatePySideToolPath" ref="eric6.Utilities.__init__.html#generatePySideToolPath" />
       <keyword name="generateQtToolName" id="generateQtToolName" ref="eric6.Utilities.__init__.html#generateQtToolName" />
       <keyword name="generateVersionInfo" id="generateVersionInfo" ref="eric6.Utilities.__init__.html#generateVersionInfo" />
@@ -16664,6 +16739,7 @@
       <keyword name="getProjectBrowserColour" id="getProjectBrowserColour" ref="eric6.Preferences.__init__.html#getProjectBrowserColour" />
       <keyword name="getProjectBrowserFlags" id="getProjectBrowserFlags" ref="eric6.Preferences.__init__.html#getProjectBrowserFlags" />
       <keyword name="getPyQt5ModulesDirectory" id="getPyQt5ModulesDirectory" ref="eric6.Globals.__init__.html#getPyQt5ModulesDirectory" />
+      <keyword name="getPyQtToolsPath" id="getPyQtToolsPath" ref="eric6.Globals.__init__.html#getPyQtToolsPath" />
       <keyword name="getPython" id="getPython" ref="eric6.Preferences.__init__.html#getPython" />
       <keyword name="getPythonLibPath" id="getPythonLibPath" ref="eric6.Utilities.__init__.html#getPythonLibPath" />
       <keyword name="getPythonModulesDirectory" id="getPythonModulesDirectory" ref="eric6.Globals.__init__.html#getPythonModulesDirectory" />
@@ -16731,6 +16807,7 @@
       <keyword name="html_udecode" id="html_udecode" ref="eric6.Utilities.__init__.html#html_udecode" />
       <keyword name="html_uencode" id="html_uencode" ref="eric6.Utilities.__init__.html#html_uencode" />
       <keyword name="idlclbr (Module)" id="idlclbr (Module)" ref="eric6.Utilities.ClassBrowsers.idlclbr.html" />
+      <keyword name="ignoreCode" id="ignoreCode" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html#ignoreCode" />
       <keyword name="importPreferences" id="importPreferences" ref="eric6.Preferences.__init__.html#importPreferences" />
       <keyword name="importShortcuts" id="importShortcuts" ref="eric6.Preferences.Shortcuts.html#importShortcuts" />
       <keyword name="imports_on_separate_lines" id="imports_on_separate_lines" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#imports_on_separate_lines" />
@@ -16768,6 +16845,7 @@
       <keyword name="ircTimestamp" id="ircTimestamp" ref="eric6.Network.IRC.IrcUtilities.html#ircTimestamp" />
       <keyword name="isConfigured" id="isConfigured" ref="eric6.Preferences.__init__.html#isConfigured" />
       <keyword name="isCupsAvailable" id="isCupsAvailable" ref="eric6.WebBrowser.Tools.FilePrinter.html#isCupsAvailable" />
+      <keyword name="isDrive" id="isDrive" ref="eric6.Utilities.__init__.html#isDrive" />
       <keyword name="isExecutable" id="isExecutable" ref="eric6.Utilities.__init__.html#isExecutable" />
       <keyword name="isLinuxPlatform" id="isLinuxPlatform" ref="eric6.Globals.__init__.html#isLinuxPlatform" />
       <keyword name="isMacPlatform" id="isMacPlatform" ref="eric6.Globals.__init__.html#isMacPlatform" />
@@ -16811,6 +16889,7 @@
       <keyword name="main" id="main" ref="eric6.eric6_qregexp.html#main" />
       <keyword name="main" id="main" ref="eric6.eric6_qregularexpression.html#main" />
       <keyword name="main" id="main" ref="eric6.eric6_re.html#main" />
+      <keyword name="main" id="main" ref="eric6.eric6_shell.html#main" />
       <keyword name="main" id="main" ref="eric6.eric6_snap.html#main" />
       <keyword name="main" id="main" ref="eric6.eric6_sqlbrowser.html#main" />
       <keyword name="main" id="main" ref="eric6.eric6_tray.html#main" />
@@ -17831,6 +17910,7 @@
       <file>eric6.QScintilla.SearchReplaceWidget.html</file>
       <file>eric6.QScintilla.Shell.html</file>
       <file>eric6.QScintilla.ShellHistoryDialog.html</file>
+      <file>eric6.QScintilla.ShellWindow.html</file>
       <file>eric6.QScintilla.SortOptionsDialog.html</file>
       <file>eric6.QScintilla.SpellChecker.html</file>
       <file>eric6.QScintilla.SpellCheckingDialog.html</file>
@@ -17989,7 +18069,6 @@
       <file>eric6.WebBrowser.GreaseMonkey.GreaseMonkeyJavaScript.html</file>
       <file>eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html</file>
       <file>eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html</file>
-      <file>eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html</file>
       <file>eric6.WebBrowser.History.HistoryCompleter.html</file>
       <file>eric6.WebBrowser.History.HistoryDialog.html</file>
       <file>eric6.WebBrowser.History.HistoryFilterModel.html</file>
@@ -18001,6 +18080,8 @@
       <file>eric6.WebBrowser.JavaScript.ExternalJsObject.html</file>
       <file>eric6.WebBrowser.JavaScript.PasswordManagerJsObject.html</file>
       <file>eric6.WebBrowser.JavaScript.StartPageJsObject.html</file>
+      <file>eric6.WebBrowser.Navigation.NavigationBar.html</file>
+      <file>eric6.WebBrowser.Navigation.NavigationContainer.html</file>
       <file>eric6.WebBrowser.Network.EricSchemeHandler.html</file>
       <file>eric6.WebBrowser.Network.NetworkManager.html</file>
       <file>eric6.WebBrowser.Network.NetworkUrlInterceptor.html</file>
@@ -18113,6 +18194,7 @@
       <file>eric6.eric6_qregexp.html</file>
       <file>eric6.eric6_qregularexpression.html</file>
       <file>eric6.eric6_re.html</file>
+      <file>eric6.eric6_shell.html</file>
       <file>eric6.eric6_snap.html</file>
       <file>eric6.eric6_sqlbrowser.html</file>
       <file>eric6.eric6_tray.html</file>
@@ -18249,6 +18331,7 @@
       <file>index-eric6.WebBrowser.History.html</file>
       <file>index-eric6.WebBrowser.ImageSearch.html</file>
       <file>index-eric6.WebBrowser.JavaScript.html</file>
+      <file>index-eric6.WebBrowser.Navigation.html</file>
       <file>index-eric6.WebBrowser.Network.html</file>
       <file>index-eric6.WebBrowser.OpenSearch.DefaultSearchEngines.html</file>
       <file>index-eric6.WebBrowser.OpenSearch.html</file>
--- a/Documentation/Source/eric6.Cooperation.Connection.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Cooperation.Connection.html	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,11 @@
     Class representing a peer connection.
 </p><h3>Signals</h3>
 <dl>
-<dt>getParticipants()</dt>
+<dt>editorCommand(hash, fn, message)</dt>
+<dd>
+emitted after an editor command
+        has arrived (string, string, string)
+</dd><dt>getParticipants()</dt>
 <dd>
 emitted after a get participants message has
         arrived
@@ -60,6 +64,10 @@
 </dd><dt>readyForUse()</dt>
 <dd>
 emitted when the connection is ready for use
+</dd><dt>rejected(message)</dt>
+<dd>
+emitted after a connection has been rejected
+        (string)
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.Debugger.BreakPointModel.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Debugger.BreakPointModel.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,14 @@
 <h2>BreakPointModel</h2>
 <p>
     Class implementing a custom model for breakpoints.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>dataAboutToBeChanged(QModelIndex, QModelIndex)</dt>
+<dd>
+emitted to indicate
+        a change of the data
+</dd>
+</dl>
 <h3>Derived from</h3>
 QAbstractItemModel
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Debugger.DebugServer.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Debugger.DebugServer.html	Sat May 06 13:43:21 2017 +0200
@@ -512,10 +512,16 @@
 </table>
 <a NAME="DebugServer.__init__" ID="DebugServer.__init__"></a>
 <h4>DebugServer (Constructor)</h4>
-<b>DebugServer</b>(<i></i>)
+<b>DebugServer</b>(<i>preventPassiveDebugging=False</i>)
 <p>
         Constructor
-</p><a NAME="DebugServer.__addBreakPoints" ID="DebugServer.__addBreakPoints"></a>
+</p><dl>
+<dt><i>preventPassiveDebugging</i></dt>
+<dd>
+flag overriding the PassiveDbgEnabled
+            setting (boolean)
+</dd>
+</dl><a NAME="DebugServer.__addBreakPoints" ID="DebugServer.__addBreakPoints"></a>
 <h4>DebugServer.__addBreakPoints</h4>
 <b>__addBreakPoints</b>(<i>parentIndex, start, end</i>)
 <p>
--- a/Documentation/Source/eric6.Debugger.WatchPointModel.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Debugger.WatchPointModel.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,14 @@
 <h2>WatchPointModel</h2>
 <p>
     Class implementing a custom model for watch expressions.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>dataAboutToBeChanged(QModelIndex, QModelIndex)</dt>
+<dd>
+emitted to indicate
+        a change of the data
+</dd>
+</dl>
 <h3>Derived from</h3>
 QAbstractItemModel
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.E5Gui.E5LineEdit.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5LineEdit.html	Sat May 06 13:43:21 2017 +0200
@@ -317,7 +317,13 @@
 <h2>E5LineEditSideWidget</h2>
 <p>
     Class implementing the side widgets for the line edit class.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>sizeHintChanged()</dt>
+<dd>
+emitted to indicate a change of the size hint
+</dd>
+</dl>
 <h3>Derived from</h3>
 QWidget
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.E5Gui.E5PassivePopup.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5PassivePopup.html	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,13 @@
 <p>
     Class implementing dialog-like popup that displays messages without
     interrupting the user.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>clicked</dt>
+<dd>
+emitted to indicate a mouse button click
+</dd>
+</dl>
 <h3>Derived from</h3>
 QFrame
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.E5Gui.E5PathPicker.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5PathPicker.html	Sat May 06 13:43:21 2017 +0200
@@ -53,24 +53,7 @@
 <p>
     Class implementing a path picker widget consisting of a combobox and a
     tool button to open a file dialog.
-</p><h3>Signals</h3>
-<dl>
-<dt>aboutToShowPathPickerDialog</dt>
-<dd>
-emitted before the file dialog is shown
-</dd><dt>editTextChanged(path)</dt>
-<dd>
-emitted when the entered path has changed
-</dd><dt>pathSelected(path)</dt>
-<dd>
-emitted after a path has been selected via the
-        file dialog
-</dd><dt>pickerButtonClicked</dt>
-<dd>
-emitted when the picker button was pressed and
-        the widget mode is custom
-</dd>
-</dl>
+</p>
 <h3>Derived from</h3>
 E5PathPickerBase
 <h3>Class Attributes</h3>
@@ -128,24 +111,7 @@
 <p>
     Class implementing a path picker widget consisting of a line edit and a
     tool button to open a file dialog.
-</p><h3>Signals</h3>
-<dl>
-<dt>aboutToShowPathPickerDialog</dt>
-<dd>
-emitted before the file dialog is shown
-</dd><dt>pathSelected(path)</dt>
-<dd>
-emitted after a path has been selected via the
-        file dialog
-</dd><dt>pickerButtonClicked</dt>
-<dd>
-emitted when the picker button was pressed and
-        the widget mode is custom
-</dd><dt>textChanged(path)</dt>
-<dd>
-emitted when the entered path has changed
-</dd>
-</dl>
+</p>
 <h3>Derived from</h3>
 E5PathPickerBase
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.E5Gui.E5ZoomWidget.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5ZoomWidget.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>E5ZoomWidget</h2>
 <p>
     Class implementing a zoom widget for the status bar.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>valueChanged(value)</dt>
+<dd>
+emitted to indicate the new zoom value (int)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QWidget, Ui_E5ZoomWidget
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.E5Network.E5Ftp.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.E5Network.E5Ftp.html	Sat May 06 13:43:21 2017 +0200
@@ -255,6 +255,9 @@
 <dt>Raises <b>E5FtpProxyError</b>:</dt>
 <dd>
 raised to indicate a proxy related issue
+</dd><dt>Raises <b>ftplib.error_reply</b>:</dt>
+<dd>
+raised to indicate an FTP error reply
 </dd>
 </dl><a NAME="E5Ftp.setProxy" ID="E5Ftp.setProxy"></a>
 <h4>E5Ftp.setProxy</h4>
--- a/Documentation/Source/eric6.Globals.__init__.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Globals.__init__.html	Sat May 06 13:43:21 2017 +0200
@@ -46,6 +46,9 @@
 <td><a href="#getPyQt5ModulesDirectory">getPyQt5ModulesDirectory</a></td>
 <td>Function to determine the path to PyQt5's (or PyQt4's) modules directory.</td>
 </tr><tr>
+<td><a href="#getPyQtToolsPath">getPyQtToolsPath</a></td>
+<td>Module function to get the path of the PyQt tools.</td>
+</tr><tr>
 <td><a href="#getPythonModulesDirectory">getPythonModulesDirectory</a></td>
 <td>Function to determine the path to Python's modules directory.</td>
 </tr><tr>
@@ -141,6 +144,29 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="getPyQtToolsPath" ID="getPyQtToolsPath"></a>
+<h2>getPyQtToolsPath</h2>
+<b>getPyQtToolsPath</b>(<i>version=5</i>)
+<p>
+    Module function to get the path of the PyQt tools.
+</p><dl>
+<dt><i>version</i> (int)</dt>
+<dd>
+PyQt major version
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+path to the PyQt tools
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="getPythonModulesDirectory" ID="getPythonModulesDirectory"></a>
 <h2>getPythonModulesDirectory</h2>
 <b>getPythonModulesDirectory</b>(<i></i>)
--- a/Documentation/Source/eric6.Helpviewer.AdBlock.AdBlockManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.AdBlock.AdBlockManager.html	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,11 @@
     Class implementing the AdBlock manager.
 </p><h3>Signals</h3>
 <dl>
-<dt>rulesChanged()</dt>
+<dt>requiredSubscriptionLoaded(subscription)</dt>
+<dd>
+emitted to indicate
+        loading of a required subscription is finished (AdBlockSubscription)
+</dd><dt>rulesChanged()</dt>
 <dd>
 emitted after some rule has changed
 </dd>
--- a/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,14 @@
 <h2>GreaseMonkeyConfigurationListWidget</h2>
 <p>
     Class implementing a special list widget for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>removeItemRequested(item)</dt>
+<dd>
+emitted to indicate an item removal
+        request (QListWidgetItem)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QListWidget
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyDownloader.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>GreaseMonkeyDownloader</h2>
 <p>
     Class implementing the downloader for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>finished()</dt>
+<dd>
+emitted to indicate the end of a script download
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.GreaseMonkey.GreaseMonkeyManager.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>GreaseMonkeyManager</h2>
 <p>
     Class implementing the manager for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>scriptsChanged()</dt>
+<dd>
+emitted to indicate a change of scripts
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Helpviewer.HelpWindow.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.HelpWindow.html	Sat May 06 13:43:21 2017 +0200
@@ -48,6 +48,9 @@
 <dt>helpClosed()</dt>
 <dd>
 emitted after the window was requested to close down
+</dd><dt>privacyChanged(bool)</dt>
+<dd>
+emitted to indicate a new privacy mode
 </dd><dt>zoomTextOnlyChanged(bool)</dt>
 <dd>
 emitted after the zoom text only setting
--- a/Documentation/Source/eric6.Helpviewer.Network.FollowRedirectReply.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.Network.FollowRedirectReply.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>FollowRedirectReply</h2>
 <p>
     Class implementing a network reply delegate allowing to check redirects.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>finished()</dt>
+<dd>
+emitted to indicate the end of the redirect
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Helpviewer.UrlBar.SslLabel.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.UrlBar.SslLabel.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>SslLabel</h2>
 <p>
     Class implementing the label to show some SSL info.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>clicked(pos)</dt>
+<dd>
+emitted to indicate a click of the label (QPoint)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QLabel
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Helpviewer.ZoomManager.ZoomManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Helpviewer.ZoomManager.ZoomManager.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>ZoomManager</h2>
 <p>
     Class implementing a manager for site specific zoom level settings.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>changed()</dt>
+<dd>
+emitted to indicate a change of the zoom level
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.PluginManager.PluginManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.PluginManager.PluginManager.html	Sat May 06 13:43:21 2017 +0200
@@ -243,7 +243,11 @@
             development (string)
 </dd>
 </dl><dl>
-<dt>Raises <b>PluginPathError</b>:</dt>
+<dt>Raises <b>PluginModulesError</b>:</dt>
+<dd>
+raised to indicate the absence of
+            plug-in modules
+</dd><dt>Raises <b>PluginPathError</b>:</dt>
 <dd>
 raised to indicate an invalid plug-in path
 </dd>
@@ -829,6 +833,10 @@
 <dd>
 raised to indicate an issue loading
             the plug-in
+</dd><dt>Raises <b>PluginPy2IncompatibleError</b>:</dt>
+<dd>
+raised to indicate the Python 2
+            incompatibility of a plug-in
 </dd>
 </dl><a NAME="PluginManager.preferencesChanged" ID="PluginManager.preferencesChanged"></a>
 <h4>PluginManager.preferencesChanged</h4>
--- a/Documentation/Source/eric6.PluginManager.PluginUninstallDialog.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.PluginManager.PluginUninstallDialog.html	Sat May 06 13:43:21 2017 +0200
@@ -91,7 +91,13 @@
 <h2>PluginUninstallWidget</h2>
 <p>
     Class implementing a dialog for plugin deinstallation.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>accepted()</dt>
+<dd>
+emitted to indicate the removal of a plug-in
+</dd>
+</dl>
 <h3>Derived from</h3>
 QWidget, Ui_PluginUninstallDialog
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html	Sat May 06 13:43:21 2017 +0200
@@ -49,6 +49,9 @@
 <td><a href="#extractLineFlags">extractLineFlags</a></td>
 <td>Function to extract flags starting and ending with '__' from a line comment.</td>
 </tr><tr>
+<td><a href="#ignoreCode">ignoreCode</a></td>
+<td>Function to check, if the given code should be ignored as per line flags.</td>
+</tr><tr>
 <td><a href="#initBatchService">initBatchService</a></td>
 <td>Initialize the batch service and return the entry point.</td>
 </tr><tr>
@@ -243,6 +246,22 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="ignoreCode" ID="ignoreCode"></a>
+<h2>ignoreCode</h2>
+<b>ignoreCode</b>(<i>code, lineFlags</i>)
+<p>
+    Function to check, if the given code should be ignored as per line flags.
+</p><dl>
+<dt><i>code</i> (str)</dt>
+<dd>
+error code to be checked
+</dd><dt><i>lineFlags</i> (list of str)</dt>
+<dd>
+list of line flags to check against
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="initBatchService" ID="initBatchService"></a>
 <h2>initBatchService</h2>
 <b>initBatchService</b>(<i></i>)
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDialog.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgDialog.html	Sat May 06 13:43:21 2017 +0200
@@ -104,7 +104,7 @@
 <td>Private slot to handle the password checkbox toggled.</td>
 </tr><tr>
 <td><a href="#HgDialog.on_sendButton_clicked">on_sendButton_clicked</a></td>
-<td>Private slot to send the input to the subversion process.</td>
+<td>Private slot to send the input to the Mercurial process.</td>
 </tr><tr>
 <td><a href="#HgDialog.startProcess">startProcess</a></td>
 <td>Public slot used to start the process.</td>
@@ -259,7 +259,7 @@
 <h4>HgDialog.on_sendButton_clicked</h4>
 <b>on_sendButton_clicked</b>(<i></i>)
 <p>
-        Private slot to send the input to the subversion process.
+        Private slot to send the input to the Mercurial process.
 </p><a NAME="HgDialog.startProcess" ID="HgDialog.startProcess"></a>
 <h4>HgDialog.startProcess</h4>
 <b>startProcess</b>(<i>args, workingDir=None, showArgs=True, environment=None</i>)
--- a/Documentation/Source/eric6.Project.ProjectFormsBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectFormsBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -49,10 +49,6 @@
 <dd>
 emitted after something was received from
         a QProcess on stderr
-</dd><dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
 </dd><dt>menusAboutToBeCreated()</dt>
 <dd>
 emitted when the context menus are about to
@@ -61,13 +57,6 @@
 <dd>
 emitted when a menu is about to be shown. The
         name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str)</dt>
-<dd>
-emitted to open a forms file in an editor
-</dd><dt>trpreview(list of str)</dt>
-<dd>
-emitted to preview form files in the
-        translations previewer
 </dd><dt>uipreview(str)</dt>
 <dd>
 emitted to preview a forms file
@@ -135,10 +124,10 @@
 <td>Private slot to handle the Open in Editor menu action.</td>
 </tr><tr>
 <td><a href="#ProjectFormsBrowser.__readStderr">__readStderr</a></td>
-<td>Private slot to handle the readyReadStandardError signal of the pyuic/rbuic process.</td>
+<td>Private slot to handle the readyReadStandardError signal of the pyuic4/pyuic5/pyside-uic/rbuic4 process.</td>
 </tr><tr>
 <td><a href="#ProjectFormsBrowser.__readStdout">__readStdout</a></td>
-<td>Private slot to handle the readyReadStandardOutput signal of the pyuic/rbuic process.</td>
+<td>Private slot to handle the readyReadStandardOutput signal of the pyuic4/pyuic5/pyside-uic/rbuic4 process.</td>
 </tr><tr>
 <td><a href="#ProjectFormsBrowser.__showContextMenu">__showContextMenu</a></td>
 <td>Private slot called by the menu aboutToShow signal.</td>
@@ -301,13 +290,13 @@
 <b>__readStderr</b>(<i></i>)
 <p>
         Private slot to handle the readyReadStandardError signal of the
-        pyuic/rbuic process.
+        pyuic4/pyuic5/pyside-uic/rbuic4 process.
 </p><a NAME="ProjectFormsBrowser.__readStdout" ID="ProjectFormsBrowser.__readStdout"></a>
 <h4>ProjectFormsBrowser.__readStdout</h4>
 <b>__readStdout</b>(<i></i>)
 <p>
         Private slot to handle the readyReadStandardOutput signal of the
-        pyuic/rbuic process.
+        pyuic4/pyuic5/pyside-uic/rbuic4 process.
 </p><a NAME="ProjectFormsBrowser.__showContextMenu" ID="ProjectFormsBrowser.__showContextMenu"></a>
 <h4>ProjectFormsBrowser.__showContextMenu</h4>
 <b>__showContextMenu</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.ProjectInterfacesBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectInterfacesBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -54,17 +54,10 @@
 <dd>
 emitted after something was received from
         a QProcess on stdout
-</dd><dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
 </dd><dt>showMenu(str, QMenu)</dt>
 <dd>
 emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str, int = 0)</dt>
-<dd>
-emitted to open a file
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.Project.ProjectOthersBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectOthersBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -47,29 +47,10 @@
     other categories.
 </p><h3>Signals</h3>
 <dl>
-<dt>binaryFile(str)</dt>
-<dd>
-emitted to open a file as binary
-</dd><dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
-</dd><dt>pixmapEditFile(str)</dt>
-<dd>
-emitted to edit a pixmap file
-</dd><dt>pixmapFile(str)</dt>
-<dd>
-emitted to open a pixmap file
-</dd><dt>showMenu(str, QMenu)</dt>
+<dt>showMenu(str, QMenu)</dt>
 <dd>
 emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str)</dt>
-<dd>
-emitted to open a file
-</dd><dt>svgFile(str)</dt>
-<dd>
-emitted to open a SVG file
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectResourcesBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -49,17 +49,10 @@
 <dd>
 emitted after something was received from
         a QProcess on stderr
-</dd><dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
 </dd><dt>showMenu(str, QMenu)</dt>
 <dd>
 emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str)</dt>
-<dd>
-emitted to open a resources file in an editor
 </dd>
 </dl>
 <h3>Derived from</h3>
@@ -112,10 +105,10 @@
 <td>Private slot to handle the Open menu action.</td>
 </tr><tr>
 <td><a href="#ProjectResourcesBrowser.__readStderr">__readStderr</a></td>
-<td>Private slot to handle the readyReadStandardError signal of the pyrcc4/rbrcc process.</td>
+<td>Private slot to handle the readyReadStandardError signal of the pyrcc4/pyrcc5/pyside-rcc/rbrcc process.</td>
 </tr><tr>
 <td><a href="#ProjectResourcesBrowser.__readStdout">__readStdout</a></td>
-<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc4/rbrcc process.</td>
+<td>Private slot to handle the readyReadStandardOutput signal of the pyrcc4/pyrcc5/pyside-rcc/rbrcc process.</td>
 </tr><tr>
 <td><a href="#ProjectResourcesBrowser.__showContextMenu">__showContextMenu</a></td>
 <td>Private slot called by the menu aboutToShow signal.</td>
@@ -266,13 +259,13 @@
 <b>__readStderr</b>(<i></i>)
 <p>
         Private slot to handle the readyReadStandardError signal of the
-        pyrcc4/rbrcc process.
+        pyrcc4/pyrcc5/pyside-rcc/rbrcc process.
 </p><a NAME="ProjectResourcesBrowser.__readStdout" ID="ProjectResourcesBrowser.__readStdout"></a>
 <h4>ProjectResourcesBrowser.__readStdout</h4>
 <b>__readStdout</b>(<i></i>)
 <p>
         Private slot to handle the readyReadStandardOutput signal of the
-        pyrcc4/rbrcc process.
+        pyrcc4/pyrcc5/pyside-rcc/rbrcc process.
 </p><a NAME="ProjectResourcesBrowser.__showContextMenu" ID="ProjectResourcesBrowser.__showContextMenu"></a>
 <h4>ProjectResourcesBrowser.__showContextMenu</h4>
 <b>__showContextMenu</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.ProjectSourcesBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectSourcesBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -45,29 +45,10 @@
     A class used to display the Sources part of the project.
 </p><h3>Signals</h3>
 <dl>
-<dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
-</dd><dt>showMenu(str, QMenu)</dt>
+<dt>showMenu(str, QMenu)</dt>
 <dd>
 emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str)</dt>
-<dd>
-emitted to open the given file.
-</dd><dt>sourceFile(str, int)</dt>
-<dd>
-emitted to open the given file at the given
-        line.
-</dd><dt>sourceFile(str, int, str)</dt>
-<dd>
-emitted to open the given file as the
-        given type at the given line.
-</dd><dt>sourceFile(str, list)</dt>
-<dd>
-emitted to open a Python file giving a list
-        of lines
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Project.ProjectTranslationsBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -54,25 +54,10 @@
 <dd>
 emitted after something was received from
         a QProcess on stdout
-</dd><dt>closeSourceWindow(str)</dt>
-<dd>
-emitted after a file has been
-        removed/deleted from the project
-</dd><dt>linguistFile(str)</dt>
-<dd>
-emitted to open a translation file with
-        Qt-Linguist
 </dd><dt>showMenu(str, QMenu)</dt>
 <dd>
 emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-</dd><dt>sourceFile(str)</dt>
-<dd>
-emitted to open a translation file in an editor
-</dd><dt>trpreview(list of str, bool = False)</dt>
-<dd>
-emitted to preview
-        translations in the translations previewer
 </dd>
 </dl>
 <h3>Derived from</h3>
@@ -119,7 +104,7 @@
 <td>Private method to generate selected translation files (.ts) for Qt Linguist.</td>
 </tr><tr>
 <td><a href="#ProjectTranslationsBrowser.__generateTSFile">__generateTSFile</a></td>
-<td>Private method used to run pylupdate/pylupdate4 to generate the .ts files.</td>
+<td>Private method used to run pylupdate4/pylupdate5/pyside-lupdate to generate the .ts files.</td>
 </tr><tr>
 <td><a href="#ProjectTranslationsBrowser.__generateTSFileDone">__generateTSFileDone</a></td>
 <td>Private slot to handle the finished signal of the pylupdate process.</td>
@@ -134,7 +119,7 @@
 <td>Private slot to handle the readyReadStandardError signal of the lrelease process.</td>
 </tr><tr>
 <td><a href="#ProjectTranslationsBrowser.__readStderrLupdate">__readStderrLupdate</a></td>
-<td>Private slot to handle the readyReadStandardError signal of the pylupdate process.</td>
+<td>Private slot to handle the readyReadStandardError signal of the pylupdate4/pylupdate5/pyside-lupdate process.</td>
 </tr><tr>
 <td><a href="#ProjectTranslationsBrowser.__readStdout">__readStdout</a></td>
 <td>Private method to read from a process' stdout channel.</td>
@@ -270,8 +255,8 @@
 <h4>ProjectTranslationsBrowser.__generateTSFile</h4>
 <b>__generateTSFile</b>(<i>noobsolete=False, generateAll=True</i>)
 <p>
-        Private method used to run pylupdate/pylupdate4 to generate the .ts
-        files.
+        Private method used to run pylupdate4/pylupdate5/pyside-lupdate to
+        generate the .ts files.
 </p><dl>
 <dt><i>noobsolete</i></dt>
 <dd>
@@ -324,7 +309,7 @@
 <b>__readStderrLupdate</b>(<i></i>)
 <p>
         Private slot to handle the readyReadStandardError signal of the
-        pylupdate process.
+        pylupdate4/pylupdate5/pyside-lupdate process.
 </p><a NAME="ProjectTranslationsBrowser.__readStdout" ID="ProjectTranslationsBrowser.__readStdout"></a>
 <h4>ProjectTranslationsBrowser.__readStdout</h4>
 <b>__readStdout</b>(<i>proc, ps</i>)
--- a/Documentation/Source/eric6.QScintilla.Editor.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.QScintilla.Editor.html	Sat May 06 13:43:21 2017 +0200
@@ -513,9 +513,6 @@
 <td><a href="#Editor.__setEolMode">__setEolMode</a></td>
 <td>Private method to configure the eol mode of the editor.</td>
 </tr><tr>
-<td><a href="#Editor.__setLineMarkerColours">__setLineMarkerColours</a></td>
-<td>Private method to set the line marker colours.</td>
-</tr><tr>
 <td><a href="#Editor.__setMarginsDisplay">__setMarginsDisplay</a></td>
 <td>Private method to configure margins 0 and 2.</td>
 </tr><tr>
@@ -2353,11 +2350,6 @@
 <b>__setEolMode</b>(<i></i>)
 <p>
         Private method to configure the eol mode of the editor.
-</p><a NAME="Editor.__setLineMarkerColours" ID="Editor.__setLineMarkerColours"></a>
-<h4>Editor.__setLineMarkerColours</h4>
-<b>__setLineMarkerColours</b>(<i></i>)
-<p>
-        Private method to set the line marker colours.
 </p><a NAME="Editor.__setMarginsDisplay" ID="Editor.__setMarginsDisplay"></a>
 <h4>Editor.__setMarginsDisplay</h4>
 <b>__setMarginsDisplay</b>(<i></i>)
--- a/Documentation/Source/eric6.QScintilla.Shell.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.QScintilla.Shell.html	Sat May 06 13:43:21 2017 +0200
@@ -85,6 +85,9 @@
 <td><a href="#Shell.__QScintillaCharRight">__QScintillaCharRight</a></td>
 <td>Private method to handle the Cursor Right command.</td>
 </tr><tr>
+<td><a href="#Shell.__QScintillaCommand">__QScintillaCommand</a></td>
+<td>Private method to send the command to QScintilla.</td>
+</tr><tr>
 <td><a href="#Shell.__QScintillaDelete">__QScintillaDelete</a></td>
 <td>Private method to handle the delete command.</td>
 </tr><tr>
@@ -103,21 +106,21 @@
 <td><a href="#Shell.__QScintillaDeleteWordRight">__QScintillaDeleteWordRight</a></td>
 <td>Private method to handle the Delete Word Right command.</td>
 </tr><tr>
+<td><a href="#Shell.__QScintillaHistoryDown">__QScintillaHistoryDown</a></td>
+<td>Private method to handle the Ctrl+Down key.</td>
+</tr><tr>
+<td><a href="#Shell.__QScintillaHistoryUp">__QScintillaHistoryUp</a></td>
+<td>Private method to handle the Ctrl+Up key.</td>
+</tr><tr>
 <td><a href="#Shell.__QScintillaLeftCommand">__QScintillaLeftCommand</a></td>
 <td>Private method to handle a QScintilla command working to the left.</td>
 </tr><tr>
 <td><a href="#Shell.__QScintillaLeftDeleteCommand">__QScintillaLeftDeleteCommand</a></td>
 <td>Private method to handle a QScintilla delete command working to the left.</td>
 </tr><tr>
-<td><a href="#Shell.__QScintillaLineDown">__QScintillaLineDown</a></td>
-<td>Private method to handle the Down key.</td>
-</tr><tr>
 <td><a href="#Shell.__QScintillaLineEnd">__QScintillaLineEnd</a></td>
 <td>Private method to handle the End key.</td>
 </tr><tr>
-<td><a href="#Shell.__QScintillaLineUp">__QScintillaLineUp</a></td>
-<td>Private method to handle the Up key.</td>
-</tr><tr>
 <td><a href="#Shell.__QScintillaNewline">__QScintillaNewline</a></td>
 <td>Private method to handle the Return key.</td>
 </tr><tr>
@@ -148,9 +151,6 @@
 <td><a href="#Shell.__clearCurrentLine">__clearCurrentLine</a></td>
 <td>Private method to clear the line containing the cursor.</td>
 </tr><tr>
-<td><a href="#Shell.__clearHistory">__clearHistory</a></td>
-<td>Private slot to clear the current history.</td>
-</tr><tr>
 <td><a href="#Shell.__clientCapabilities">__clientCapabilities</a></td>
 <td>Private slot to handle the reporting of the clients capabilities.</td>
 </tr><tr>
@@ -232,9 +232,6 @@
 <td><a href="#Shell.__searchPrev">__searchPrev</a></td>
 <td>Private method to search for the next occurrence.</td>
 </tr><tr>
-<td><a href="#Shell.__selectHistory">__selectHistory</a></td>
-<td>Private slot to select a history entry to execute.</td>
-</tr><tr>
 <td><a href="#Shell.__setAutoCompletion">__setAutoCompletion</a></td>
 <td>Private method to configure the autocompletion function.</td>
 </tr><tr>
@@ -253,9 +250,6 @@
 <td><a href="#Shell.__showCompletions">__showCompletions</a></td>
 <td>Private method to display the possible completions.</td>
 </tr><tr>
-<td><a href="#Shell.__showHistory">__showHistory</a></td>
-<td>Private slot to show the shell history dialog.</td>
-</tr><tr>
 <td><a href="#Shell.__showLanguageMenu">__showLanguageMenu</a></td>
 <td>Private slot to prepare the language submenu.</td>
 </tr><tr>
@@ -286,6 +280,9 @@
 <td><a href="#Shell.clearAllHistories">clearAllHistories</a></td>
 <td>Public method to clear all available histories and sync them.</td>
 </tr><tr>
+<td><a href="#Shell.clearHistory">clearHistory</a></td>
+<td>Public slot to clear the current history.</td>
+</tr><tr>
 <td><a href="#Shell.closeShell">closeShell</a></td>
 <td>Public method to shutdown the shell.</td>
 </tr><tr>
@@ -361,9 +358,15 @@
 <td><a href="#Shell.searchPrev">searchPrev</a></td>
 <td>Public method to search the previous occurrence of the given text.</td>
 </tr><tr>
+<td><a href="#Shell.selectHistory">selectHistory</a></td>
+<td>Public slot to select a history entry to execute.</td>
+</tr><tr>
 <td><a href="#Shell.setDebuggerUI">setDebuggerUI</a></td>
 <td>Public method to set the debugger UI.</td>
 </tr><tr>
+<td><a href="#Shell.showHistory">showHistory</a></td>
+<td>Public slot to show the shell history dialog.</td>
+</tr><tr>
 <td><a href="#Shell.wheelEvent">wheelEvent</a></td>
 <td>Protected method to handle wheel events.</td>
 </tr>
@@ -374,7 +377,7 @@
 </table>
 <a NAME="Shell.__init__" ID="Shell.__init__"></a>
 <h4>Shell (Constructor)</h4>
-<b>Shell</b>(<i>dbs, vm, parent=None</i>)
+<b>Shell</b>(<i>dbs, vm, windowedVariant, parent=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -384,6 +387,10 @@
 </dd><dt><i>vm</i></dt>
 <dd>
 reference to the viewmanager object
+</dd><dt><i>windowedVariant</i></dt>
+<dd>
+flag indicating the shell window variant
+            (boolean)
 </dd><dt><i>parent</i></dt>
 <dd>
 parent widget (QWidget)
@@ -413,7 +420,17 @@
 <b>__QScintillaCharRight</b>(<i></i>)
 <p>
         Private method to handle the Cursor Right command.
-</p><a NAME="Shell.__QScintillaDelete" ID="Shell.__QScintillaDelete"></a>
+</p><a NAME="Shell.__QScintillaCommand" ID="Shell.__QScintillaCommand"></a>
+<h4>Shell.__QScintillaCommand</h4>
+<b>__QScintillaCommand</b>(<i>cmd</i>)
+<p>
+        Private method to send the command to QScintilla.
+</p><dl>
+<dt><i>cmd</i></dt>
+<dd>
+QScintilla command
+</dd>
+</dl><a NAME="Shell.__QScintillaDelete" ID="Shell.__QScintillaDelete"></a>
 <h4>Shell.__QScintillaDelete</h4>
 <b>__QScintillaDelete</b>(<i></i>)
 <p>
@@ -443,7 +460,27 @@
 <b>__QScintillaDeleteWordRight</b>(<i></i>)
 <p>
         Private method to handle the Delete Word Right command.
-</p><a NAME="Shell.__QScintillaLeftCommand" ID="Shell.__QScintillaLeftCommand"></a>
+</p><a NAME="Shell.__QScintillaHistoryDown" ID="Shell.__QScintillaHistoryDown"></a>
+<h4>Shell.__QScintillaHistoryDown</h4>
+<b>__QScintillaHistoryDown</b>(<i>cmd</i>)
+<p>
+        Private method to handle the Ctrl+Down key.
+</p><dl>
+<dt><i>cmd</i></dt>
+<dd>
+QScintilla command
+</dd>
+</dl><a NAME="Shell.__QScintillaHistoryUp" ID="Shell.__QScintillaHistoryUp"></a>
+<h4>Shell.__QScintillaHistoryUp</h4>
+<b>__QScintillaHistoryUp</b>(<i>cmd</i>)
+<p>
+        Private method to handle the Ctrl+Up key.
+</p><dl>
+<dt><i>cmd</i></dt>
+<dd>
+QScintilla command
+</dd>
+</dl><a NAME="Shell.__QScintillaLeftCommand" ID="Shell.__QScintillaLeftCommand"></a>
 <h4>Shell.__QScintillaLeftCommand</h4>
 <b>__QScintillaLeftCommand</b>(<i>method, allLinesAllowed=False</i>)
 <p>
@@ -468,16 +505,6 @@
 <dd>
 shell method to execute
 </dd>
-</dl><a NAME="Shell.__QScintillaLineDown" ID="Shell.__QScintillaLineDown"></a>
-<h4>Shell.__QScintillaLineDown</h4>
-<b>__QScintillaLineDown</b>(<i>cmd</i>)
-<p>
-        Private method to handle the Down key.
-</p><dl>
-<dt><i>cmd</i></dt>
-<dd>
-QScintilla command
-</dd>
 </dl><a NAME="Shell.__QScintillaLineEnd" ID="Shell.__QScintillaLineEnd"></a>
 <h4>Shell.__QScintillaLineEnd</h4>
 <b>__QScintillaLineEnd</b>(<i>cmd</i>)
@@ -488,16 +515,6 @@
 <dd>
 QScintilla command
 </dd>
-</dl><a NAME="Shell.__QScintillaLineUp" ID="Shell.__QScintillaLineUp"></a>
-<h4>Shell.__QScintillaLineUp</h4>
-<b>__QScintillaLineUp</b>(<i>cmd</i>)
-<p>
-        Private method to handle the Up key.
-</p><dl>
-<dt><i>cmd</i></dt>
-<dd>
-QScintilla command
-</dd>
 </dl><a NAME="Shell.__QScintillaNewline" ID="Shell.__QScintillaNewline"></a>
 <h4>Shell.__QScintillaNewline</h4>
 <b>__QScintillaNewline</b>(<i>cmd</i>)
@@ -573,11 +590,6 @@
 <b>__clearCurrentLine</b>(<i></i>)
 <p>
         Private method to clear the line containing the cursor.
-</p><a NAME="Shell.__clearHistory" ID="Shell.__clearHistory"></a>
-<h4>Shell.__clearHistory</h4>
-<b>__clearHistory</b>(<i></i>)
-<p>
-        Private slot to clear the current history.
 </p><a NAME="Shell.__clientCapabilities" ID="Shell.__clientCapabilities"></a>
 <h4>Shell.__clientCapabilities</h4>
 <b>__clientCapabilities</b>(<i>cap, clType</i>)
@@ -851,11 +863,6 @@
 <b>__searchPrev</b>(<i></i>)
 <p>
         Private method to search for the next occurrence.
-</p><a NAME="Shell.__selectHistory" ID="Shell.__selectHistory"></a>
-<h4>Shell.__selectHistory</h4>
-<b>__selectHistory</b>(<i></i>)
-<p>
-        Private slot to select a history entry to execute.
 </p><a NAME="Shell.__setAutoCompletion" ID="Shell.__setAutoCompletion"></a>
 <h4>Shell.__setAutoCompletion</h4>
 <b>__setAutoCompletion</b>(<i>language='Python'</i>)
@@ -909,12 +916,7 @@
 <dd>
 text that is about to be completed (string)
 </dd>
-</dl><a NAME="Shell.__showHistory" ID="Shell.__showHistory"></a>
-<h4>Shell.__showHistory</h4>
-<b>__showHistory</b>(<i></i>)
-<p>
-        Private slot to show the shell history dialog.
-</p><a NAME="Shell.__showLanguageMenu" ID="Shell.__showLanguageMenu"></a>
+</dl><a NAME="Shell.__showLanguageMenu" ID="Shell.__showLanguageMenu"></a>
 <h4>Shell.__showLanguageMenu</h4>
 <b>__showLanguageMenu</b>(<i></i>)
 <p>
@@ -996,6 +998,11 @@
 <b>clearAllHistories</b>(<i></i>)
 <p>
         Public method to clear all available histories and sync them.
+</p><a NAME="Shell.clearHistory" ID="Shell.clearHistory"></a>
+<h4>Shell.clearHistory</h4>
+<b>clearHistory</b>(<i></i>)
+<p>
+        Public slot to clear the current history.
 </p><a NAME="Shell.closeShell" ID="Shell.closeShell"></a>
 <h4>Shell.closeShell</h4>
 <b>closeShell</b>(<i></i>)
@@ -1265,7 +1272,12 @@
 flag indicating to search for whole words
             only (boolean)
 </dd>
-</dl><a NAME="Shell.setDebuggerUI" ID="Shell.setDebuggerUI"></a>
+</dl><a NAME="Shell.selectHistory" ID="Shell.selectHistory"></a>
+<h4>Shell.selectHistory</h4>
+<b>selectHistory</b>(<i></i>)
+<p>
+        Public slot to select a history entry to execute.
+</p><a NAME="Shell.setDebuggerUI" ID="Shell.setDebuggerUI"></a>
 <h4>Shell.setDebuggerUI</h4>
 <b>setDebuggerUI</b>(<i>ui</i>)
 <p>
@@ -1275,7 +1287,12 @@
 <dd>
 reference to the debugger UI object (DebugUI)
 </dd>
-</dl><a NAME="Shell.wheelEvent" ID="Shell.wheelEvent"></a>
+</dl><a NAME="Shell.showHistory" ID="Shell.showHistory"></a>
+<h4>Shell.showHistory</h4>
+<b>showHistory</b>(<i></i>)
+<p>
+        Public slot to show the shell history dialog.
+</p><a NAME="Shell.wheelEvent" ID="Shell.wheelEvent"></a>
 <h4>Shell.wheelEvent</h4>
 <b>wheelEvent</b>(<i>evt</i>)
 <p>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.QScintilla.ShellWindow.html	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,388 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.QScintilla.ShellWindow</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.QScintilla.ShellWindow</h1>
+<p>
+Module implementing a stand alone shell window.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#ShellWindow">ShellWindow</a></td>
+<td>Class implementing a stand alone shell window.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="ShellWindow" ID="ShellWindow"></a>
+<h2>ShellWindow</h2>
+<p>
+    Class implementing a stand alone shell window.
+</p>
+<h3>Derived from</h3>
+E5MainWindow
+<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="#ShellWindow.__init__">ShellWindow</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#ShellWindow.__about">__about</a></td>
+<td>Private slot to show a little About message.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__aboutQt">__aboutQt</a></td>
+<td>Private slot to handle the About Qt dialog.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createActions">__createActions</a></td>
+<td>Private method to create the actions.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createEditActions">__createEditActions</a></td>
+<td>Private method defining the user interface actions for the edit commands.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createFileActions">__createFileActions</a></td>
+<td>Private method defining the user interface actions for the file commands.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createHelpActions">__createHelpActions</a></td>
+<td>Private method to create the Help actions.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createHistoryActions">__createHistoryActions</a></td>
+<td>Private method defining the user interface actions for the history commands.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createMenus">__createMenus</a></td>
+<td>Private method to create the menus of the menu bar.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createSearchActions">__createSearchActions</a></td>
+<td>Private method defining the user interface actions for the search commands.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createStatusBar">__createStatusBar</a></td>
+<td>Private slot to set up the status bar.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createToolBars">__createToolBars</a></td>
+<td>Private method to create the various toolbars.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__createViewActions">__createViewActions</a></td>
+<td>Private method defining the user interface actions for the view commands.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__doClearRestart">__doClearRestart</a></td>
+<td>Private slot to handle the 'restart and clear' menu entry.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__doRestart">__doRestart</a></td>
+<td>Private slot to handle the 'restart' menu entry.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__newWindow">__newWindow</a></td>
+<td>Private slot to start a new instance of eric6.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__readSettings">__readSettings</a></td>
+<td>Private method to read the settings remembered last time.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__readShortcut">__readShortcut</a></td>
+<td>Private function to read a single keyboard shortcut from the settings.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__showFind">__showFind</a></td>
+<td>Private method to display the search widget.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__showLanguageMenu">__showLanguageMenu</a></td>
+<td>Private slot to prepare the language menu.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__startShell">__startShell</a></td>
+<td>Private slot to start a shell according to the action triggered.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__whatsThis">__whatsThis</a></td>
+<td>Private slot called in to enter Whats This mode.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__writeSettings">__writeSettings</a></td>
+<td>Private method to write the settings for reuse.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoom">__zoom</a></td>
+<td>Private method to handle the zoom action.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoomIn">__zoomIn</a></td>
+<td>Private method to handle the zoom in action.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoomOut">__zoomOut</a></td>
+<td>Private method to handle the zoom out action.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoomReset">__zoomReset</a></td>
+<td>Private method to reset the zoom factor.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoomTo">__zoomTo</a></td>
+<td>Private slot to zoom to a given value.</td>
+</tr><tr>
+<td><a href="#ShellWindow.__zoomValueChanged">__zoomValueChanged</a></td>
+<td>Private slot to handle changes of the zoom value.</td>
+</tr><tr>
+<td><a href="#ShellWindow.activeWindow">activeWindow</a></td>
+<td>Public method to get a reference to the active shell.</td>
+</tr><tr>
+<td><a href="#ShellWindow.closeEvent">closeEvent</a></td>
+<td>Protected method to handle the close event.</td>
+</tr><tr>
+<td><a href="#ShellWindow.getAPIsManager">getAPIsManager</a></td>
+<td>Public method to get a reference to the APIs manager.</td>
+</tr><tr>
+<td><a href="#ShellWindow.quit">quit</a></td>
+<td>Public method to quit the application.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="ShellWindow.__init__" ID="ShellWindow.__init__"></a>
+<h4>ShellWindow (Constructor)</h4>
+<b>ShellWindow</b>(<i>parent=None, name=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd><dt><i>name</i> (str)</dt>
+<dd>
+object name of the window
+</dd>
+</dl><a NAME="ShellWindow.__about" ID="ShellWindow.__about"></a>
+<h4>ShellWindow.__about</h4>
+<b>__about</b>(<i></i>)
+<p>
+        Private slot to show a little About message.
+</p><a NAME="ShellWindow.__aboutQt" ID="ShellWindow.__aboutQt"></a>
+<h4>ShellWindow.__aboutQt</h4>
+<b>__aboutQt</b>(<i></i>)
+<p>
+        Private slot to handle the About Qt dialog.
+</p><a NAME="ShellWindow.__createActions" ID="ShellWindow.__createActions"></a>
+<h4>ShellWindow.__createActions</h4>
+<b>__createActions</b>(<i></i>)
+<p>
+        Private method to create the actions.
+</p><a NAME="ShellWindow.__createEditActions" ID="ShellWindow.__createEditActions"></a>
+<h4>ShellWindow.__createEditActions</h4>
+<b>__createEditActions</b>(<i></i>)
+<p>
+        Private method defining the user interface actions for the edit
+        commands.
+</p><a NAME="ShellWindow.__createFileActions" ID="ShellWindow.__createFileActions"></a>
+<h4>ShellWindow.__createFileActions</h4>
+<b>__createFileActions</b>(<i></i>)
+<p>
+        Private method defining the user interface actions for the file
+        commands.
+</p><a NAME="ShellWindow.__createHelpActions" ID="ShellWindow.__createHelpActions"></a>
+<h4>ShellWindow.__createHelpActions</h4>
+<b>__createHelpActions</b>(<i></i>)
+<p>
+        Private method to create the Help actions.
+</p><a NAME="ShellWindow.__createHistoryActions" ID="ShellWindow.__createHistoryActions"></a>
+<h4>ShellWindow.__createHistoryActions</h4>
+<b>__createHistoryActions</b>(<i></i>)
+<p>
+        Private method defining the user interface actions for the history
+        commands.
+</p><a NAME="ShellWindow.__createMenus" ID="ShellWindow.__createMenus"></a>
+<h4>ShellWindow.__createMenus</h4>
+<b>__createMenus</b>(<i></i>)
+<p>
+        Private method to create the menus of the menu bar.
+</p><a NAME="ShellWindow.__createSearchActions" ID="ShellWindow.__createSearchActions"></a>
+<h4>ShellWindow.__createSearchActions</h4>
+<b>__createSearchActions</b>(<i></i>)
+<p>
+        Private method defining the user interface actions for the search
+        commands.
+</p><a NAME="ShellWindow.__createStatusBar" ID="ShellWindow.__createStatusBar"></a>
+<h4>ShellWindow.__createStatusBar</h4>
+<b>__createStatusBar</b>(<i></i>)
+<p>
+        Private slot to set up the status bar.
+</p><a NAME="ShellWindow.__createToolBars" ID="ShellWindow.__createToolBars"></a>
+<h4>ShellWindow.__createToolBars</h4>
+<b>__createToolBars</b>(<i></i>)
+<p>
+        Private method to create the various toolbars.
+</p><a NAME="ShellWindow.__createViewActions" ID="ShellWindow.__createViewActions"></a>
+<h4>ShellWindow.__createViewActions</h4>
+<b>__createViewActions</b>(<i></i>)
+<p>
+        Private method defining the user interface actions for the view
+        commands.
+</p><a NAME="ShellWindow.__doClearRestart" ID="ShellWindow.__doClearRestart"></a>
+<h4>ShellWindow.__doClearRestart</h4>
+<b>__doClearRestart</b>(<i></i>)
+<p>
+        Private slot to handle the 'restart and clear' menu entry.
+</p><a NAME="ShellWindow.__doRestart" ID="ShellWindow.__doRestart"></a>
+<h4>ShellWindow.__doRestart</h4>
+<b>__doRestart</b>(<i></i>)
+<p>
+        Private slot to handle the 'restart' menu entry.
+</p><a NAME="ShellWindow.__newWindow" ID="ShellWindow.__newWindow"></a>
+<h4>ShellWindow.__newWindow</h4>
+<b>__newWindow</b>(<i></i>)
+<p>
+        Private slot to start a new instance of eric6.
+</p><a NAME="ShellWindow.__readSettings" ID="ShellWindow.__readSettings"></a>
+<h4>ShellWindow.__readSettings</h4>
+<b>__readSettings</b>(<i></i>)
+<p>
+        Private method to read the settings remembered last time.
+</p><a NAME="ShellWindow.__readShortcut" ID="ShellWindow.__readShortcut"></a>
+<h4>ShellWindow.__readShortcut</h4>
+<b>__readShortcut</b>(<i>act, category</i>)
+<p>
+        Private function to read a single keyboard shortcut from the settings.
+</p><dl>
+<dt><i>act</i> (E5Action)</dt>
+<dd>
+reference to the action object
+</dd><dt><i>category</i> (str)</dt>
+<dd>
+category the action belongs to
+</dd>
+</dl><a NAME="ShellWindow.__showFind" ID="ShellWindow.__showFind"></a>
+<h4>ShellWindow.__showFind</h4>
+<b>__showFind</b>(<i></i>)
+<p>
+        Private method to display the search widget.
+</p><a NAME="ShellWindow.__showLanguageMenu" ID="ShellWindow.__showLanguageMenu"></a>
+<h4>ShellWindow.__showLanguageMenu</h4>
+<b>__showLanguageMenu</b>(<i></i>)
+<p>
+        Private slot to prepare the language menu.
+</p><a NAME="ShellWindow.__startShell" ID="ShellWindow.__startShell"></a>
+<h4>ShellWindow.__startShell</h4>
+<b>__startShell</b>(<i>action</i>)
+<p>
+        Private slot to start a shell according to the action triggered.
+</p><dl>
+<dt><i>action</i></dt>
+<dd>
+menu action that was triggered (QAction)
+</dd>
+</dl><a NAME="ShellWindow.__whatsThis" ID="ShellWindow.__whatsThis"></a>
+<h4>ShellWindow.__whatsThis</h4>
+<b>__whatsThis</b>(<i></i>)
+<p>
+        Private slot called in to enter Whats This mode.
+</p><a NAME="ShellWindow.__writeSettings" ID="ShellWindow.__writeSettings"></a>
+<h4>ShellWindow.__writeSettings</h4>
+<b>__writeSettings</b>(<i></i>)
+<p>
+        Private method to write the settings for reuse.
+</p><a NAME="ShellWindow.__zoom" ID="ShellWindow.__zoom"></a>
+<h4>ShellWindow.__zoom</h4>
+<b>__zoom</b>(<i></i>)
+<p>
+        Private method to handle the zoom action.
+</p><a NAME="ShellWindow.__zoomIn" ID="ShellWindow.__zoomIn"></a>
+<h4>ShellWindow.__zoomIn</h4>
+<b>__zoomIn</b>(<i></i>)
+<p>
+        Private method to handle the zoom in action.
+</p><a NAME="ShellWindow.__zoomOut" ID="ShellWindow.__zoomOut"></a>
+<h4>ShellWindow.__zoomOut</h4>
+<b>__zoomOut</b>(<i></i>)
+<p>
+        Private method to handle the zoom out action.
+</p><a NAME="ShellWindow.__zoomReset" ID="ShellWindow.__zoomReset"></a>
+<h4>ShellWindow.__zoomReset</h4>
+<b>__zoomReset</b>(<i></i>)
+<p>
+        Private method to reset the zoom factor.
+</p><a NAME="ShellWindow.__zoomTo" ID="ShellWindow.__zoomTo"></a>
+<h4>ShellWindow.__zoomTo</h4>
+<b>__zoomTo</b>(<i>value</i>)
+<p>
+        Private slot to zoom to a given value.
+</p><dl>
+<dt><i>value</i> (int)</dt>
+<dd>
+zoom value to be set
+</dd>
+</dl><a NAME="ShellWindow.__zoomValueChanged" ID="ShellWindow.__zoomValueChanged"></a>
+<h4>ShellWindow.__zoomValueChanged</h4>
+<b>__zoomValueChanged</b>(<i>value</i>)
+<p>
+        Private slot to handle changes of the zoom value.
+</p><dl>
+<dt><i>value</i> (int)</dt>
+<dd>
+new zoom value
+</dd>
+</dl><a NAME="ShellWindow.activeWindow" ID="ShellWindow.activeWindow"></a>
+<h4>ShellWindow.activeWindow</h4>
+<b>activeWindow</b>(<i></i>)
+<p>
+        Public method to get a reference to the active shell.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the shell widget
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+Shell
+</dd>
+</dl><a NAME="ShellWindow.closeEvent" ID="ShellWindow.closeEvent"></a>
+<h4>ShellWindow.closeEvent</h4>
+<b>closeEvent</b>(<i>event</i>)
+<p>
+        Protected method to handle the close event.
+</p><dl>
+<dt><i>event</i> (QCloseEvent)</dt>
+<dd>
+close event
+</dd>
+</dl><a NAME="ShellWindow.getAPIsManager" ID="ShellWindow.getAPIsManager"></a>
+<h4>ShellWindow.getAPIsManager</h4>
+<b>getAPIsManager</b>(<i></i>)
+<p>
+        Public method to get a reference to the APIs manager.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+the APIs manager object (eric6.QScintilla.APIsManager)
+</dd>
+</dl><a NAME="ShellWindow.quit" ID="ShellWindow.quit"></a>
+<h4>ShellWindow.quit</h4>
+<b>quit</b>(<i></i>)
+<p>
+        Public method to quit the application.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Tools.TRPreviewer.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Tools.TRPreviewer.html	Sat May 06 13:43:21 2017 +0200
@@ -489,7 +489,10 @@
 <dl>
 <dt>lastWidgetClosed()</dt>
 <dd>
-emitted after last widget was closed
+emitted after the last widget was closed
+</dd><dt>rebuildWidgets()</dt>
+<dd>
+emitted to indicate a change of loaded widgets
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.Tools.TrayStarter.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Tools.TrayStarter.html	Sat May 06 13:43:21 2017 +0200
@@ -138,6 +138,9 @@
 <td><a href="#TrayStarter.__startQRegExp">__startQRegExp</a></td>
 <td>Private slot to start the eric6 QRegExp editor dialog.</td>
 </tr><tr>
+<td><a href="#TrayStarter.__startShell">__startShell</a></td>
+<td>Private slot to start the eric6 Shell window.</td>
+</tr><tr>
 <td><a href="#TrayStarter.__startSnapshot">__startSnapshot</a></td>
 <td>Private slot to start the eric6 snapshot dialog.</td>
 </tr><tr>
@@ -327,6 +330,11 @@
 <b>__startQRegExp</b>(<i></i>)
 <p>
         Private slot to start the eric6 QRegExp editor dialog.
+</p><a NAME="TrayStarter.__startShell" ID="TrayStarter.__startShell"></a>
+<h4>TrayStarter.__startShell</h4>
+<b>__startShell</b>(<i></i>)
+<p>
+        Private slot to start the eric6 Shell window.
 </p><a NAME="TrayStarter.__startSnapshot" ID="TrayStarter.__startSnapshot"></a>
 <h4>TrayStarter.__startSnapshot</h4>
 <b>__startSnapshot</b>(<i></i>)
--- a/Documentation/Source/eric6.UI.Browser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.UI.Browser.html	Sat May 06 13:43:21 2017 +0200
@@ -49,45 +49,60 @@
     the selected file.
 </p><h3>Signals</h3>
 <dl>
-<dt>binaryFile(str)</dt>
+<dt>binaryFile(filename)</dt>
 <dd>
-emitted to open a file as binary
-</dd><dt>designerFile(str)</dt>
+emitted to open a file as binary (str)
+</dd><dt>designerFile(filename)</dt>
+<dd>
+emitted to open a Qt-Designer file (str)
+</dd><dt>linguistFile(filename)</dt>
 <dd>
-emitted to open a Qt-Designer file
-</dd><dt>linguistFile(str)</dt>
+emitted to open a Qt-Linguist (*.ts)
+        file (str)
+</dd><dt>multiProjectFile(filename)</dt>
 <dd>
-emitted to open a Qt-Linguist (*.ts) file
-</dd><dt>multiProjectFile(str)</dt>
+emitted to open an eric multi project
+        file (str)
+</dd><dt>pixmapEditFile(filename)</dt>
 <dd>
-emitted to open an eric4/5 multi project file
-</dd><dt>pixmapEditFile(str)</dt>
+emitted to edit a pixmap file (str)
+</dd><dt>pixmapFile(filename)</dt>
 <dd>
-emitted to edit a pixmap file
-</dd><dt>pixmapFile(str)</dt>
+emitted to open a pixmap file (str)
+</dd><dt>projectFile(filename)</dt>
 <dd>
-emitted to open a pixmap file
-</dd><dt>projectFile(str)</dt>
+emitted to open an eric project file (str)
+</dd><dt>sourceFile(filename)</dt>
 <dd>
-emitted to open an eric4/5 project file
-</dd><dt>sourceFile(str, int = 0, str = "")</dt>
+emitted to open a Python file at a line (str)
+</dd><dt>sourceFile(filename, lineno)</dt>
+<dd>
+emitted to open a Python file at a
+        line (str, int)
+</dd><dt>sourceFile(filename, lineno, type)</dt>
 <dd>
 emitted to open a Python file
-        at a line
-</dd><dt>sourceFile(str, list)</dt>
+        at a line giving an explicit file type (str, int, str)
+</dd><dt>sourceFile(filename, linenos)</dt>
 <dd>
-emitted to open a Python file giving a list
-        of lines
-</dd><dt>svgFile(str)</dt>
+emitted to open a Python file giving
+        a list of lines(str, list)
+</dd><dt>svgFile(filename)</dt>
+<dd>
+emitted to open a SVG file (str)
+</dd><dt>trpreview(filenames)</dt>
 <dd>
-emitted to open a SVG file
-</dd><dt>trpreview(list of str, bool = False)</dt>
+emitted to preview Qt-Linguist (*.qm)
+        files (list of str)
+</dd><dt>trpreview(filenames, ignore)</dt>
 <dd>
-emitted to preview a
-        Qt-Linguist (*.qm) file
-</dd><dt>unittestOpen(str)</dt>
+emitted to preview Qt-Linguist (*.qm)
+        files indicating whether non-existent files shall be ignored
+        (list of str, bool)
+</dd><dt>unittestOpen(filename)</dt>
 <dd>
-emitted to open a Python file for a unittest
+emitted to open a Python file for a
+        unit test (str)
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.UI.SearchWidget.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.UI.SearchWidget.html	Sat May 06 13:43:21 2017 +0200
@@ -56,7 +56,7 @@
 </dd>
 </dl>
 <h3>Derived from</h3>
-QWidget, Ui_SearchWidget
+QWidget
 <h3>Class Attributes</h3>
 <table>
 <tr><td>None</td></tr>
@@ -105,7 +105,7 @@
 </table>
 <a NAME="SearchWidget.__init__" ID="SearchWidget.__init__"></a>
 <h4>SearchWidget (Constructor)</h4>
-<b>SearchWidget</b>(<i>mainWindow, parent=None, spacer=True</i>)
+<b>SearchWidget</b>(<i>mainWindow, parent=None, spacer=True, showLine=False</i>)
 <p>
         Constructor
 </p><dl>
@@ -119,6 +119,9 @@
 <dd>
 flag indicating to add a vertical spacer to the
             main layout (boolean)
+</dd><dt><i>showLine</i></dt>
+<dd>
+flag indicating to show all widget in one row (boolean)
 </dd>
 </dl><a NAME="SearchWidget.__findByReturnPressed" ID="SearchWidget.__findByReturnPressed"></a>
 <h4>SearchWidget.__findByReturnPressed</h4>
--- a/Documentation/Source/eric6.Utilities.BackgroundService.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Utilities.BackgroundService.html	Sat May 06 13:43:21 2017 +0200
@@ -44,7 +44,18 @@
 <h2>BackgroundService</h2>
 <p>
     Class implementing the main part of the background service.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>batchJobDone(function, language)</dt>
+<dd>
+emitted to indicate the end of
+        a batch job (str, str)
+</dd><dt>serviceNotAvailable(function, language, filename, message)</dt>
+<dd>
+        emitted to indicate the non-availability of a service function
+        (str, str, str, str)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QTcpServer
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.Utilities.__init__.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Utilities.__init__.html	Sat May 06 13:43:21 2017 +0200
@@ -103,6 +103,9 @@
 <td><a href="#generatePluginsVersionInfo">generatePluginsVersionInfo</a></td>
 <td>Module function to generate a string with plugins version infos.</td>
 </tr><tr>
+<td><a href="#generatePyQtToolPath">generatePyQtToolPath</a></td>
+<td>Module function to generate the executable path for a PyQt tool.</td>
+</tr><tr>
 <td><a href="#generatePySideToolPath">generatePySideToolPath</a></td>
 <td>Module function to generate the executable path for a PySide tool.</td>
 </tr><tr>
@@ -172,6 +175,9 @@
 <td><a href="#html_uencode">html_uencode</a></td>
 <td>Function to correctly encode a unicode text for html.</td>
 </tr><tr>
+<td><a href="#isDrive">isDrive</a></td>
+<td>Function to check, if a path is a Windows drive.</td>
+</tr><tr>
 <td><a href="#isExecutable">isExecutable</a></td>
 <td>Function to check, if a file is executable.</td>
 </tr><tr>
@@ -816,6 +822,29 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="generatePyQtToolPath" ID="generatePyQtToolPath"></a>
+<h2>generatePyQtToolPath</h2>
+<b>generatePyQtToolPath</b>(<i>toolname</i>)
+<p>
+    Module function to generate the executable path for a PyQt tool.
+</p><dl>
+<dt><i>toolname</i> (str)</dt>
+<dd>
+base name of the tool
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+executable path name of the tool
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="generatePySideToolPath" ID="generatePySideToolPath"></a>
 <h2>generatePySideToolPath</h2>
 <b>generatePySideToolPath</b>(<i>toolname</i>)
@@ -824,7 +853,7 @@
 </p><dl>
 <dt><i>toolname</i></dt>
 <dd>
-base name of the tool (string or QString)
+base name of the tool (string)
 </dd>
 </dl><dl>
 <dt>Returns:</dt>
@@ -1232,6 +1261,29 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="isDrive" ID="isDrive"></a>
+<h2>isDrive</h2>
+<b>isDrive</b>(<i>path</i>)
+<p>
+    Function to check, if a path is a Windows drive.
+</p><dl>
+<dt><i>path</i> (str)</dt>
+<dd>
+path name to be checked
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating a Windows drive
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="isExecutable" ID="isExecutable"></a>
 <h2>isExecutable</h2>
 <b>isExecutable</b>(<i>exe</i>)
--- a/Documentation/Source/eric6.Utilities.binplistlib.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.Utilities.binplistlib.html	Sat May 06 13:43:21 2017 +0200
@@ -579,6 +579,10 @@
 <dd>
 raised to indicate an invalid
             plist file
+</dd><dt>Raises <b>NotBinaryPlistException</b>:</dt>
+<dd>
+raised to indicate, that the
+            plist file is not a binary file
 </dd>
 </dl><a NAME="PlistReader.readUid" ID="PlistReader.readUid"></a>
 <h4>PlistReader.readUid</h4>
--- a/Documentation/Source/eric6.ViewManager.ViewManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.ViewManager.ViewManager.html	Sat May 06 13:43:21 2017 +0200
@@ -54,9 +54,6 @@
 </dd><dt>gotFocus()</dt>
 <dd>
 emitted when the focus is changed to this widget
-</dd><dt>returnPressed()</dt>
-<dd>
-emitted after a newline command was activated
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.WebBrowser.AdBlock.AdBlockManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.AdBlock.AdBlockManager.html	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,11 @@
     Class implementing the AdBlock manager.
 </p><h3>Signals</h3>
 <dl>
-<dt>rulesChanged()</dt>
+<dt>requiredSubscriptionLoaded(subscription)</dt>
+<dd>
+emitted to indicate
+        loading of a required subscription is finished (AdBlockSubscription)
+</dd><dt>rulesChanged()</dt>
 <dd>
 emitted after some rule has changed
 </dd>
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyConfiguration.GreaseMonkeyConfigurationListWidget.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,14 @@
 <h2>GreaseMonkeyConfigurationListWidget</h2>
 <p>
     Class implementing a special list widget for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>removeItemRequested(item)</dt>
+<dd>
+emitted to indicate an item removal
+        request (QListWidgetItem)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QListWidget
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyDownloader.html	Sat May 06 13:43:21 2017 +0200
@@ -43,12 +43,22 @@
 <h2>GreaseMonkeyDownloader</h2>
 <p>
     Class implementing the downloader for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>error()</dt>
+<dd>
+emitted to indicate a script download error
+</dd><dt>finished(fileName)</dt>
+<dd>
+emitted to indicate the end of a script download
+        (str)
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
 <table>
-<tr><td>None</td></tr>
+<tr><td>DownloadMainScript</td></tr><tr><td>DownloadRequireScript</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -60,14 +70,14 @@
 <td><a href="#GreaseMonkeyDownloader.__init__">GreaseMonkeyDownloader</a></td>
 <td>Constructor</td>
 </tr><tr>
-<td><a href="#GreaseMonkeyDownloader.__downloadRequires">__downloadRequires</a></td>
-<td>Private slot to initiate the download of required scripts.</td>
-</tr><tr>
 <td><a href="#GreaseMonkeyDownloader.__requireDownloaded">__requireDownloaded</a></td>
 <td>Private slot to handle the finished download of a required script.</td>
 </tr><tr>
 <td><a href="#GreaseMonkeyDownloader.__scriptDownloaded">__scriptDownloaded</a></td>
 <td>Private slot to handle the finished download of a script.</td>
+</tr><tr>
+<td><a href="#GreaseMonkeyDownloader.updateScript">updateScript</a></td>
+<td>Public method to set the file name for the script to be downloaded.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -76,7 +86,7 @@
 </table>
 <a NAME="GreaseMonkeyDownloader.__init__" ID="GreaseMonkeyDownloader.__init__"></a>
 <h4>GreaseMonkeyDownloader (Constructor)</h4>
-<b>GreaseMonkeyDownloader</b>(<i>url, manager</i>)
+<b>GreaseMonkeyDownloader</b>(<i>url, manager, mode</i>)
 <p>
         Constructor
 </p><dl>
@@ -86,13 +96,11 @@
 </dd><dt><i>manager</i> (GreaseMonkeyManager)</dt>
 <dd>
 reference to the GreaseMonkey manager
+</dd><dt><i>mode</i> (int (one of DownloadMainScript, DownloadRequireScript))</dt>
+<dd>
+download mode
 </dd>
-</dl><a NAME="GreaseMonkeyDownloader.__downloadRequires" ID="GreaseMonkeyDownloader.__downloadRequires"></a>
-<h4>GreaseMonkeyDownloader.__downloadRequires</h4>
-<b>__downloadRequires</b>(<i></i>)
-<p>
-        Private slot to initiate the download of required scripts.
-</p><a NAME="GreaseMonkeyDownloader.__requireDownloaded" ID="GreaseMonkeyDownloader.__requireDownloaded"></a>
+</dl><a NAME="GreaseMonkeyDownloader.__requireDownloaded" ID="GreaseMonkeyDownloader.__requireDownloaded"></a>
 <h4>GreaseMonkeyDownloader.__requireDownloaded</h4>
 <b>__requireDownloaded</b>(<i></i>)
 <p>
@@ -102,7 +110,17 @@
 <b>__scriptDownloaded</b>(<i></i>)
 <p>
         Private slot to handle the finished download of a script.
-</p>
+</p><a NAME="GreaseMonkeyDownloader.updateScript" ID="GreaseMonkeyDownloader.updateScript"></a>
+<h4>GreaseMonkeyDownloader.updateScript</h4>
+<b>updateScript</b>(<i>fileName</i>)
+<p>
+        Public method to set the file name for the script to be downloaded.
+</p><dl>
+<dt><i>fileName</i> (str)</dt>
+<dd>
+file name for the script
+</dd>
+</dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyManager.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,13 @@
 <h2>GreaseMonkeyManager</h2>
 <p>
     Class implementing the manager for GreaseMonkey scripts.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>scriptsChanged()</dt>
+<dd>
+emitted to indicate a change of scripts
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
@@ -60,9 +66,6 @@
 <td><a href="#GreaseMonkeyManager.__init__">GreaseMonkeyManager</a></td>
 <td>Constructor</td>
 </tr><tr>
-<td><a href="#GreaseMonkeyManager.__del__">__del__</a></td>
-<td>Special method called during object destruction.</td>
-</tr><tr>
 <td><a href="#GreaseMonkeyManager.__downloaderFinished">__downloaderFinished</a></td>
 <td>Private slot to handle the completion of a script download.</td>
 </tr><tr>
@@ -129,17 +132,17 @@
 <dd>
 reference to the parent object (QObject)
 </dd>
-</dl><a NAME="GreaseMonkeyManager.__del__" ID="GreaseMonkeyManager.__del__"></a>
-<h4>GreaseMonkeyManager.__del__</h4>
-<b>__del__</b>(<i></i>)
-<p>
-        Special method called during object destruction.
-</p><a NAME="GreaseMonkeyManager.__downloaderFinished" ID="GreaseMonkeyManager.__downloaderFinished"></a>
+</dl><a NAME="GreaseMonkeyManager.__downloaderFinished" ID="GreaseMonkeyManager.__downloaderFinished"></a>
 <h4>GreaseMonkeyManager.__downloaderFinished</h4>
-<b>__downloaderFinished</b>(<i></i>)
+<b>__downloaderFinished</b>(<i>fileName</i>)
 <p>
         Private slot to handle the completion of a script download.
-</p><a NAME="GreaseMonkeyManager.__load" ID="GreaseMonkeyManager.__load"></a>
+</p><dl>
+<dt><i>fileName</i> (str)</dt>
+<dd>
+name of the downloaded script
+</dd>
+</dl><a NAME="GreaseMonkeyManager.__load" ID="GreaseMonkeyManager.__load"></a>
 <h4>GreaseMonkeyManager.__load</h4>
 <b>__load</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html	Sat May 06 13:43:21 2017 +0200
@@ -43,7 +43,17 @@
 <h2>GreaseMonkeyScript</h2>
 <p>
     Class implementing the GreaseMonkey script.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>scriptChanged()</dt>
+<dd>
+emitted to indicate a script change
+</dd><dt>updatingChanged(bool)</dt>
+<dd>
+emitted to indicate a change of the
+        updating state
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
@@ -60,9 +70,27 @@
 <td><a href="#GreaseMonkeyScript.__init__">GreaseMonkeyScript</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#GreaseMonkeyScript.__downloadRequires">__downloadRequires</a></td>
+<td>Private method to download the required scripts.</td>
+</tr><tr>
+<td><a href="#GreaseMonkeyScript.__downloaderError">__downloaderError</a></td>
+<td>Private slot to handle a downloader error.</td>
+</tr><tr>
+<td><a href="#GreaseMonkeyScript.__downloaderFinished">__downloaderFinished</a></td>
+<td>Private slot to handle a finished download.</td>
+</tr><tr>
 <td><a href="#GreaseMonkeyScript.__parseScript">__parseScript</a></td>
 <td>Private method to parse the given script and populate the data structure.</td>
 </tr><tr>
+<td><a href="#GreaseMonkeyScript.__reloadScript">__reloadScript</a></td>
+<td>Private method to reload the script.</td>
+</tr><tr>
+<td><a href="#GreaseMonkeyScript.__requireDownloadError">__requireDownloadError</a></td>
+<td>Private slot to handle a downloader error.</td>
+</tr><tr>
+<td><a href="#GreaseMonkeyScript.__requireDownloaded">__requireDownloaded</a></td>
+<td>Private slot to handle a finished download of a required script.</td>
+</tr><tr>
 <td><a href="#GreaseMonkeyScript.__toJavaScriptList">__toJavaScriptList</a></td>
 <td>Private method to convert a list of str to a string containing a valid JavaScript list definition.</td>
 </tr><tr>
@@ -90,6 +118,9 @@
 <td><a href="#GreaseMonkeyScript.isEnabled">isEnabled</a></td>
 <td>Public method to check, if the script is enabled.</td>
 </tr><tr>
+<td><a href="#GreaseMonkeyScript.isUpdating">isUpdating</a></td>
+<td>Public method to get the updating flag.</td>
+</tr><tr>
 <td><a href="#GreaseMonkeyScript.isValid">isValid</a></td>
 <td>Public method to check the validity of the script.</td>
 </tr><tr>
@@ -102,8 +133,8 @@
 <td><a href="#GreaseMonkeyScript.noFrames">noFrames</a></td>
 <td>Public method to get the noFrames flag.</td>
 </tr><tr>
-<td><a href="#GreaseMonkeyScript.script">script</a></td>
-<td>Public method to get the Javascript source.</td>
+<td><a href="#GreaseMonkeyScript.require">require</a></td>
+<td>Public method to get the list of required scripts.</td>
 </tr><tr>
 <td><a href="#GreaseMonkeyScript.setEnabled">setEnabled</a></td>
 <td>Public method to enable a script.</td>
@@ -111,6 +142,9 @@
 <td><a href="#GreaseMonkeyScript.startAt">startAt</a></td>
 <td>Public method to get the start point of the script.</td>
 </tr><tr>
+<td><a href="#GreaseMonkeyScript.updateScript">updateScript</a></td>
+<td>Public method to updated the script.</td>
+</tr><tr>
 <td><a href="#GreaseMonkeyScript.updateUrl">updateUrl</a></td>
 <td>Public method to get the update URL of the script.</td>
 </tr><tr>
@@ -138,12 +172,42 @@
 <dd>
 path of the Javascript file (string)
 </dd>
-</dl><a NAME="GreaseMonkeyScript.__parseScript" ID="GreaseMonkeyScript.__parseScript"></a>
+</dl><a NAME="GreaseMonkeyScript.__downloadRequires" ID="GreaseMonkeyScript.__downloadRequires"></a>
+<h4>GreaseMonkeyScript.__downloadRequires</h4>
+<b>__downloadRequires</b>(<i></i>)
+<p>
+        Private method to download the required scripts.
+</p><a NAME="GreaseMonkeyScript.__downloaderError" ID="GreaseMonkeyScript.__downloaderError"></a>
+<h4>GreaseMonkeyScript.__downloaderError</h4>
+<b>__downloaderError</b>(<i></i>)
+<p>
+        Private slot to handle a downloader error.
+</p><a NAME="GreaseMonkeyScript.__downloaderFinished" ID="GreaseMonkeyScript.__downloaderFinished"></a>
+<h4>GreaseMonkeyScript.__downloaderFinished</h4>
+<b>__downloaderFinished</b>(<i></i>)
+<p>
+        Private slot to handle a finished download.
+</p><a NAME="GreaseMonkeyScript.__parseScript" ID="GreaseMonkeyScript.__parseScript"></a>
 <h4>GreaseMonkeyScript.__parseScript</h4>
 <b>__parseScript</b>(<i></i>)
 <p>
         Private method to parse the given script and populate the data
         structure.
+</p><a NAME="GreaseMonkeyScript.__reloadScript" ID="GreaseMonkeyScript.__reloadScript"></a>
+<h4>GreaseMonkeyScript.__reloadScript</h4>
+<b>__reloadScript</b>(<i></i>)
+<p>
+        Private method to reload the script.
+</p><a NAME="GreaseMonkeyScript.__requireDownloadError" ID="GreaseMonkeyScript.__requireDownloadError"></a>
+<h4>GreaseMonkeyScript.__requireDownloadError</h4>
+<b>__requireDownloadError</b>(<i></i>)
+<p>
+        Private slot to handle a downloader error.
+</p><a NAME="GreaseMonkeyScript.__requireDownloaded" ID="GreaseMonkeyScript.__requireDownloaded"></a>
+<h4>GreaseMonkeyScript.__requireDownloaded</h4>
+<b>__requireDownloaded</b>(<i></i>)
+<p>
+        Private slot to handle a finished download of a required script.
 </p><a NAME="GreaseMonkeyScript.__toJavaScriptList" ID="GreaseMonkeyScript.__toJavaScriptList"></a>
 <h4>GreaseMonkeyScript.__toJavaScriptList</h4>
 <b>__toJavaScriptList</b>(<i>patterns</i>)
@@ -213,7 +277,7 @@
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-path path of the Javascript file (string)
+path of the Javascript file (string)
 </dd>
 </dl><a NAME="GreaseMonkeyScript.fullName" ID="GreaseMonkeyScript.fullName"></a>
 <h4>GreaseMonkeyScript.fullName</h4>
@@ -245,6 +309,21 @@
 <dd>
 flag indicating an enabled state (boolean)
 </dd>
+</dl><a NAME="GreaseMonkeyScript.isUpdating" ID="GreaseMonkeyScript.isUpdating"></a>
+<h4>GreaseMonkeyScript.isUpdating</h4>
+<b>isUpdating</b>(<i></i>)
+<p>
+        Public method to get the updating flag.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+updating flag
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="GreaseMonkeyScript.isValid" ID="GreaseMonkeyScript.isValid"></a>
 <h4>GreaseMonkeyScript.isValid</h4>
 <b>isValid</b>(<i></i>)
@@ -290,15 +369,15 @@
 <dd>
 bool
 </dd>
-</dl><a NAME="GreaseMonkeyScript.script" ID="GreaseMonkeyScript.script"></a>
-<h4>GreaseMonkeyScript.script</h4>
-<b>script</b>(<i></i>)
+</dl><a NAME="GreaseMonkeyScript.require" ID="GreaseMonkeyScript.require"></a>
+<h4>GreaseMonkeyScript.require</h4>
+<b>require</b>(<i></i>)
 <p>
-        Public method to get the Javascript source.
+        Public method to get the list of required scripts.
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-Javascript source (string)
+list of required scripts (list of strings)
 </dd>
 </dl><a NAME="GreaseMonkeyScript.setEnabled" ID="GreaseMonkeyScript.setEnabled"></a>
 <h4>GreaseMonkeyScript.setEnabled</h4>
@@ -320,7 +399,12 @@
 <dd>
 start point of the script (DocumentStart or DocumentEnd)
 </dd>
-</dl><a NAME="GreaseMonkeyScript.updateUrl" ID="GreaseMonkeyScript.updateUrl"></a>
+</dl><a NAME="GreaseMonkeyScript.updateScript" ID="GreaseMonkeyScript.updateScript"></a>
+<h4>GreaseMonkeyScript.updateScript</h4>
+<b>updateScript</b>(<i></i>)
+<p>
+        Public method to updated the script.
+</p><a NAME="GreaseMonkeyScript.updateUrl" ID="GreaseMonkeyScript.updateUrl"></a>
 <h4>GreaseMonkeyScript.updateUrl</h4>
 <b>updateUrl</b>(<i></i>)
 <p>
--- a/Documentation/Source/eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html	Sun Apr 09 16:52:55 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,94 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor</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.GreaseMonkey.GreaseMonkeyUrlInterceptor</h1>
-<p>
-Module implementing a handler for GreaseMonkey related URLs.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#GreaseMonkeyUrlInterceptor">GreaseMonkeyUrlInterceptor</a></td>
-<td>Class implementing a handler for GreaseMonkey related URLs.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="GreaseMonkeyUrlInterceptor" ID="GreaseMonkeyUrlInterceptor"></a>
-<h2>GreaseMonkeyUrlInterceptor</h2>
-<p>
-    Class implementing a handler for GreaseMonkey related URLs.
-</p>
-<h3>Derived from</h3>
-UrlInterceptor
-<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="#GreaseMonkeyUrlInterceptor.__init__">GreaseMonkeyUrlInterceptor</a></td>
-<td>Constructor</td>
-</tr><tr>
-<td><a href="#GreaseMonkeyUrlInterceptor.interceptRequest">interceptRequest</a></td>
-<td>Public method to handle a GreaseMonkey request.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="GreaseMonkeyUrlInterceptor.__init__" ID="GreaseMonkeyUrlInterceptor.__init__"></a>
-<h4>GreaseMonkeyUrlInterceptor (Constructor)</h4>
-<b>GreaseMonkeyUrlInterceptor</b>(<i>manager</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>manager</i> (GreaseMonkeyManager)</dt>
-<dd>
-reference to the GreaseMonkey manager
-</dd>
-</dl><a NAME="GreaseMonkeyUrlInterceptor.interceptRequest" ID="GreaseMonkeyUrlInterceptor.interceptRequest"></a>
-<h4>GreaseMonkeyUrlInterceptor.interceptRequest</h4>
-<b>interceptRequest</b>(<i>info</i>)
-<p>
-        Public method to handle a GreaseMonkey request.
-</p><dl>
-<dt><i>info</i> (QWebEngineUrlRequestInfo)</dt>
-<dd>
-request info object
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.History.HistoryManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.History.HistoryManager.html	Sat May 06 13:43:21 2017 +0200
@@ -25,7 +25,7 @@
 </p>
 <h3>Global Attributes</h3>
 <table>
-<tr><td>HISTORY_VERSION</td></tr>
+<tr><td>HISTORY_VERSIONS</td></tr><tr><td>HISTORY_VERSION_42</td></tr><tr><td>HISTORY_VERSION_60</td></tr>
 </table>
 <h3>Classes</h3>
 <table>
@@ -69,6 +69,9 @@
 <td><a href="#HistoryEntry.__lt__">__lt__</a></td>
 <td>Special method determining less relation.</td>
 </tr><tr>
+<td><a href="#HistoryEntry.isValid">isValid</a></td>
+<td>Public method to determine validity.</td>
+</tr><tr>
 <td><a href="#HistoryEntry.userTitle">userTitle</a></td>
 <td>Public method to get the title of the history entry.</td>
 </tr>
@@ -79,7 +82,7 @@
 </table>
 <a NAME="HistoryEntry.__init__" ID="HistoryEntry.__init__"></a>
 <h4>HistoryEntry (Constructor)</h4>
-<b>HistoryEntry</b>(<i>url=None, dateTime=None, title=None</i>)
+<b>HistoryEntry</b>(<i>url=None, dateTime=None, title=None, visitCount=None</i>)
 <p>
         Constructor
 </p><dl>
@@ -92,6 +95,9 @@
 </dd><dt><i>title</i></dt>
 <dd>
 title string for the history entry (string)
+</dd><dt><i>visitCount</i></dt>
+<dd>
+number of visits of this URL (int)
 </dd>
 </dl><a NAME="HistoryEntry.__eq__" ID="HistoryEntry.__eq__"></a>
 <h4>HistoryEntry.__eq__</h4>
@@ -127,6 +133,21 @@
 <dd>
 flag indicating less (boolean)
 </dd>
+</dl><a NAME="HistoryEntry.isValid" ID="HistoryEntry.isValid"></a>
+<h4>HistoryEntry.isValid</h4>
+<b>isValid</b>(<i></i>)
+<p>
+        Public method to determine validity.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating validity
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="HistoryEntry.userTitle" ID="HistoryEntry.userTitle"></a>
 <h4>HistoryEntry.userTitle</h4>
 <b>userTitle</b>(<i></i>)
@@ -187,6 +208,15 @@
 <td><a href="#HistoryManager.__checkForExpired">__checkForExpired</a></td>
 <td>Private slot to check entries for expiration.</td>
 </tr><tr>
+<td><a href="#HistoryManager.__cleanUrl">__cleanUrl</a></td>
+<td>Private method to generate a clean URL usable for the history entry.</td>
+</tr><tr>
+<td><a href="#HistoryManager.__cleanUrlStr">__cleanUrlStr</a></td>
+<td>Private method to generate a clean URL usable for the history entry.</td>
+</tr><tr>
+<td><a href="#HistoryManager.__findFirstHistoryEntry">__findFirstHistoryEntry</a></td>
+<td>Private method to find the first entry for the given URL.</td>
+</tr><tr>
 <td><a href="#HistoryManager.__load">__load</a></td>
 <td>Private method to load the saved history entries from disk.</td>
 </tr><tr>
@@ -196,6 +226,9 @@
 <td><a href="#HistoryManager.__startFrequencyTimer">__startFrequencyTimer</a></td>
 <td>Private method to start the timer to recalculate the frequencies.</td>
 </tr><tr>
+<td><a href="#HistoryManager.__updateVisitCount">__updateVisitCount</a></td>
+<td>Private method to update the visit count for all entries of the given URL.</td>
+</tr><tr>
 <td><a href="#HistoryManager.addHistoryEntry">addHistoryEntry</a></td>
 <td>Public method to add a history entry.</td>
 </tr><tr>
@@ -264,7 +297,67 @@
 <b>__checkForExpired</b>(<i></i>)
 <p>
         Private slot to check entries for expiration.
-</p><a NAME="HistoryManager.__load" ID="HistoryManager.__load"></a>
+</p><a NAME="HistoryManager.__cleanUrl" ID="HistoryManager.__cleanUrl"></a>
+<h4>HistoryManager.__cleanUrl</h4>
+<b>__cleanUrl</b>(<i>url</i>)
+<p>
+        Private method to generate a clean URL usable for the history entry.
+</p><dl>
+<dt><i>url</i> (QUrl)</dt>
+<dd>
+original URL
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+cleaned URL
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QUrl
+</dd>
+</dl><a NAME="HistoryManager.__cleanUrlStr" ID="HistoryManager.__cleanUrlStr"></a>
+<h4>HistoryManager.__cleanUrlStr</h4>
+<b>__cleanUrlStr</b>(<i>url</i>)
+<p>
+        Private method to generate a clean URL usable for the history entry.
+</p><dl>
+<dt><i>url</i> (QUrl)</dt>
+<dd>
+original URL
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+cleaned URL
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl><a NAME="HistoryManager.__findFirstHistoryEntry" ID="HistoryManager.__findFirstHistoryEntry"></a>
+<h4>HistoryManager.__findFirstHistoryEntry</h4>
+<b>__findFirstHistoryEntry</b>(<i>url</i>)
+<p>
+        Private method to find the first entry for the given URL.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to search for
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+first entry for the given URL
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+HistoryEntry
+</dd>
+</dl><a NAME="HistoryManager.__load" ID="HistoryManager.__load"></a>
 <h4>HistoryManager.__load</h4>
 <b>__load</b>(<i></i>)
 <p>
@@ -279,7 +372,21 @@
 <b>__startFrequencyTimer</b>(<i></i>)
 <p>
         Private method to start the timer to recalculate the frequencies.
-</p><a NAME="HistoryManager.addHistoryEntry" ID="HistoryManager.addHistoryEntry"></a>
+</p><a NAME="HistoryManager.__updateVisitCount" ID="HistoryManager.__updateVisitCount"></a>
+<h4>HistoryManager.__updateVisitCount</h4>
+<b>__updateVisitCount</b>(<i>url, count</i>)
+<p>
+        Private method to update the visit count for all entries of the
+        given URL.
+</p><dl>
+<dt><i>url</i> (str)</dt>
+<dd>
+URL to be updated
+</dd><dt><i>count</i> (int)</dt>
+<dd>
+new visit count
+</dd>
+</dl><a NAME="HistoryManager.addHistoryEntry" ID="HistoryManager.addHistoryEntry"></a>
 <h4>HistoryManager.addHistoryEntry</h4>
 <b>addHistoryEntry</b>(<i>view</i>)
 <p>
--- a/Documentation/Source/eric6.WebBrowser.History.HistoryModel.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.History.HistoryModel.html	Sat May 06 13:43:21 2017 +0200
@@ -48,7 +48,7 @@
 QAbstractTableModel
 <h3>Class Attributes</h3>
 <table>
-<tr><td>DateRole</td></tr><tr><td>DateTimeRole</td></tr><tr><td>MaxRole</td></tr><tr><td>TitleRole</td></tr><tr><td>UrlRole</td></tr><tr><td>UrlStringRole</td></tr>
+<tr><td>DateRole</td></tr><tr><td>DateTimeRole</td></tr><tr><td>MaxRole</td></tr><tr><td>TitleRole</td></tr><tr><td>UrlRole</td></tr><tr><td>UrlStringRole</td></tr><tr><td>VisitCountRole</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.WebBrowser.Navigation.NavigationBar.html	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,270 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.Navigation.NavigationBar</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.Navigation.NavigationBar</h1>
+<p>
+Module implementing the navigation bar widget.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#NavigationBar">NavigationBar</a></td>
+<td>Class implementing the navigation bar.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="NavigationBar" ID="NavigationBar"></a>
+<h2>NavigationBar</h2>
+<p>
+    Class implementing the navigation bar.
+</p>
+<h3>Derived from</h3>
+QWidget
+<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="#NavigationBar.__init__">NavigationBar</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#NavigationBar.__clearHistory">__clearHistory</a></td>
+<td>Private slot to clear the history of the current web browser tab.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__goBack">__goBack</a></td>
+<td>Private slot called to handle the backward button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__goForward">__goForward</a></td>
+<td>Private slot called to handle the forward button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__goHome">__goHome</a></td>
+<td>Private slot called to handle the home button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__navigationMenuActionTriggered">__navigationMenuActionTriggered</a></td>
+<td>Private slot to go to the selected page.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__reload">__reload</a></td>
+<td>Private slot called to handle the reload button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__showBackMenu">__showBackMenu</a></td>
+<td>Private slot showing the backwards navigation menu.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__showForwardMenu">__showForwardMenu</a></td>
+<td>Private slot showing the forwards navigation menu.</td>
+</tr><tr>
+<td><a href="#NavigationBar.__stopLoad">__stopLoad</a></td>
+<td>Private slot called to handle loading of the current page.</td>
+</tr><tr>
+<td><a href="#NavigationBar.backButton">backButton</a></td>
+<td>Public method to get a reference to the back button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.exitFullScreenButton">exitFullScreenButton</a></td>
+<td>Public method to get a reference to the exit full screen button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.forwardButton">forwardButton</a></td>
+<td>Public method to get a reference to the forward button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.reloadButton">reloadButton</a></td>
+<td>Public method to get a reference to the reload button.</td>
+</tr><tr>
+<td><a href="#NavigationBar.searchEdit">searchEdit</a></td>
+<td>Public method to get a reference to the web search edit.</td>
+</tr><tr>
+<td><a href="#NavigationBar.stopButton">stopButton</a></td>
+<td>Public method to get a reference to the stop button.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="NavigationBar.__init__" ID="NavigationBar.__init__"></a>
+<h4>NavigationBar (Constructor)</h4>
+<b>NavigationBar</b>(<i>mainWindow, parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>mainWindow</i> (WebBrowserWindow)</dt>
+<dd>
+reference to the browser main window
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="NavigationBar.__clearHistory" ID="NavigationBar.__clearHistory"></a>
+<h4>NavigationBar.__clearHistory</h4>
+<b>__clearHistory</b>(<i></i>)
+<p>
+        Private slot to clear the history of the current web browser tab.
+</p><a NAME="NavigationBar.__goBack" ID="NavigationBar.__goBack"></a>
+<h4>NavigationBar.__goBack</h4>
+<b>__goBack</b>(<i></i>)
+<p>
+        Private slot called to handle the backward button.
+</p><a NAME="NavigationBar.__goForward" ID="NavigationBar.__goForward"></a>
+<h4>NavigationBar.__goForward</h4>
+<b>__goForward</b>(<i></i>)
+<p>
+        Private slot called to handle the forward button.
+</p><a NAME="NavigationBar.__goHome" ID="NavigationBar.__goHome"></a>
+<h4>NavigationBar.__goHome</h4>
+<b>__goHome</b>(<i></i>)
+<p>
+        Private slot called to handle the home button.
+</p><a NAME="NavigationBar.__navigationMenuActionTriggered" ID="NavigationBar.__navigationMenuActionTriggered"></a>
+<h4>NavigationBar.__navigationMenuActionTriggered</h4>
+<b>__navigationMenuActionTriggered</b>(<i>act</i>)
+<p>
+        Private slot to go to the selected page.
+</p><dl>
+<dt><i>act</i></dt>
+<dd>
+reference to the action selected in the navigation menu
+            (QAction)
+</dd>
+</dl><a NAME="NavigationBar.__reload" ID="NavigationBar.__reload"></a>
+<h4>NavigationBar.__reload</h4>
+<b>__reload</b>(<i></i>)
+<p>
+        Private slot called to handle the reload button.
+</p><a NAME="NavigationBar.__showBackMenu" ID="NavigationBar.__showBackMenu"></a>
+<h4>NavigationBar.__showBackMenu</h4>
+<b>__showBackMenu</b>(<i></i>)
+<p>
+        Private slot showing the backwards navigation menu.
+</p><a NAME="NavigationBar.__showForwardMenu" ID="NavigationBar.__showForwardMenu"></a>
+<h4>NavigationBar.__showForwardMenu</h4>
+<b>__showForwardMenu</b>(<i></i>)
+<p>
+        Private slot showing the forwards navigation menu.
+</p><a NAME="NavigationBar.__stopLoad" ID="NavigationBar.__stopLoad"></a>
+<h4>NavigationBar.__stopLoad</h4>
+<b>__stopLoad</b>(<i></i>)
+<p>
+        Private slot called to handle loading of the current page.
+</p><a NAME="NavigationBar.backButton" ID="NavigationBar.backButton"></a>
+<h4>NavigationBar.backButton</h4>
+<b>backButton</b>(<i></i>)
+<p>
+        Public method to get a reference to the back button.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the back button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QToolButton
+</dd>
+</dl><a NAME="NavigationBar.exitFullScreenButton" ID="NavigationBar.exitFullScreenButton"></a>
+<h4>NavigationBar.exitFullScreenButton</h4>
+<b>exitFullScreenButton</b>(<i></i>)
+<p>
+        Public method to get a reference to the exit full screen button.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the exit full screen button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QToolButton
+</dd>
+</dl><a NAME="NavigationBar.forwardButton" ID="NavigationBar.forwardButton"></a>
+<h4>NavigationBar.forwardButton</h4>
+<b>forwardButton</b>(<i></i>)
+<p>
+        Public method to get a reference to the forward button.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the forward button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QToolButton
+</dd>
+</dl><a NAME="NavigationBar.reloadButton" ID="NavigationBar.reloadButton"></a>
+<h4>NavigationBar.reloadButton</h4>
+<b>reloadButton</b>(<i></i>)
+<p>
+        Public method to get a reference to the reload button.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the reload button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QToolButton
+</dd>
+</dl><a NAME="NavigationBar.searchEdit" ID="NavigationBar.searchEdit"></a>
+<h4>NavigationBar.searchEdit</h4>
+<b>searchEdit</b>(<i></i>)
+<p>
+        Public method to get a reference to the web search edit.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the web search edit
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+WebBrowserWebSearchWidget
+</dd>
+</dl><a NAME="NavigationBar.stopButton" ID="NavigationBar.stopButton"></a>
+<h4>NavigationBar.stopButton</h4>
+<b>stopButton</b>(<i></i>)
+<p>
+        Public method to get a reference to the stop button.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the stop button
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+QToolButton
+</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.Navigation.NavigationContainer.html	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.Navigation.NavigationContainer</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.Navigation.NavigationContainer</h1>
+<p>
+Module implementing the navigation container widget.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#NavigationContainer">NavigationContainer</a></td>
+<td>Class implementing the navigation container widget.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="NavigationContainer" ID="NavigationContainer"></a>
+<h2>NavigationContainer</h2>
+<p>
+    Class implementing the navigation container widget.
+</p>
+<h3>Derived from</h3>
+QWidget
+<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="#NavigationContainer.__init__">NavigationContainer</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#NavigationContainer.addWidget">addWidget</a></td>
+<td>Public method to add a widget to the container.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="NavigationContainer.__init__" ID="NavigationContainer.__init__"></a>
+<h4>NavigationContainer (Constructor)</h4>
+<b>NavigationContainer</b>(<i>parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</dd>
+</dl><a NAME="NavigationContainer.addWidget" ID="NavigationContainer.addWidget"></a>
+<h4>NavigationContainer.addWidget</h4>
+<b>addWidget</b>(<i>widget</i>)
+<p>
+        Public method to add a widget to the container.
+</p><dl>
+<dt><i>widget</i> (QWidget)</dt>
+<dd>
+reference to the widget to be added
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.SpeedDial.SpeedDial.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.SpeedDial.SpeedDial.html	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,10 @@
     Class implementing the speed dial.
 </p><h3>Signals</h3>
 <dl>
-<dt>pagesChanged()</dt>
+<dt>pageTitleLoaded(url, title)</dt>
+<dd>
+emitted after a title was loaded
+</dd><dt>pagesChanged()</dt>
 <dd>
 emitted after the list of pages changed
 </dd><dt>speedDialSaved()</dt>
@@ -54,9 +57,6 @@
 </dd><dt>thumbnailLoaded(url, src)</dt>
 <dd>
 emitted after a thumbnail was loaded
-</dd><dt>titleLoaded(url, title)</dt>
-<dd>
-emitted after a title was loaded
 </dd>
 </dl>
 <h3>Derived from</h3>
--- a/Documentation/Source/eric6.WebBrowser.Tools.WebIconProvider.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.Tools.WebIconProvider.html	Sat May 06 13:43:21 2017 +0200
@@ -46,7 +46,13 @@
 <h2>WebIconProvider</h2>
 <p>
     Class implementing a web site icon storage.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>changed()</dt>
+<dd>
+emitted to indicate a change of the icons database
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserView.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserView.html	Sat May 06 13:43:21 2017 +0200
@@ -303,9 +303,6 @@
 <td><a href="#WebBrowserView.findNextPrev">findNextPrev</a></td>
 <td>Public slot to find the next occurrence of a text.</td>
 </tr><tr>
-<td><a href="#WebBrowserView.focusOutEvent">focusOutEvent</a></td>
-<td>Protected method called by a focus out event.</td>
-</tr><tr>
 <td><a href="#WebBrowserView.forward">forward</a></td>
 <td>Public slot to move forward in history.</td>
 </tr><tr>
@@ -1074,16 +1071,6 @@
 <dd>
 reference to a function with a bool parameter
 </dd>
-</dl><a NAME="WebBrowserView.focusOutEvent" ID="WebBrowserView.focusOutEvent"></a>
-<h4>WebBrowserView.focusOutEvent</h4>
-<b>focusOutEvent</b>(<i>evt</i>)
-<p>
-        Protected method called by a focus out event.
-</p><dl>
-<dt><i>evt</i></dt>
-<dd>
-reference to the focus event (QFocusEvent)
-</dd>
 </dl><a NAME="WebBrowserView.forward" ID="WebBrowserView.forward"></a>
 <h4>WebBrowserView.forward</h4>
 <b>forward</b>(<i></i>)
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserWebSearchWidget.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserWebSearchWidget.html	Sat May 06 13:43:21 2017 +0200
@@ -133,13 +133,16 @@
 </table>
 <a NAME="WebBrowserWebSearchWidget.__init__" ID="WebBrowserWebSearchWidget.__init__"></a>
 <h4>WebBrowserWebSearchWidget (Constructor)</h4>
-<b>WebBrowserWebSearchWidget</b>(<i>parent=None</i>)
+<b>WebBrowserWebSearchWidget</b>(<i>mainWindow, parent=None</i>)
 <p>
         Constructor
 </p><dl>
-<dt><i>parent</i></dt>
+<dt><i>mainWindow</i> (WebBrowserWindow)</dt>
 <dd>
-reference to the parent widget (QWidget)
+reference to the browser main window
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
 </dd>
 </dl><a NAME="WebBrowserWebSearchWidget.__addEngineFromUrl" ID="WebBrowserWebSearchWidget.__addEngineFromUrl"></a>
 <h4>WebBrowserWebSearchWidget.__addEngineFromUrl</h4>
--- a/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.WebBrowserWindow.html	Sat May 06 13:43:21 2017 +0200
@@ -238,6 +238,9 @@
 <td><a href="#WebBrowserWindow.__forward">__forward</a></td>
 <td>Private slot called to handle the forward action.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.__hideNavigation">__hideNavigation</a></td>
+<td>Private slot to hide full screen navigation by timer.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.__home">__home</a></td>
 <td>Private slot called to handle the home action.</td>
 </tr><tr>
@@ -274,9 +277,6 @@
 <td><a href="#WebBrowserWindow.__manageQtHelpFilters">__manageQtHelpFilters</a></td>
 <td>Private slot to manage the QtHelp filters.</td>
 </tr><tr>
-<td><a href="#WebBrowserWindow.__navigationMenuActionTriggered">__navigationMenuActionTriggered</a></td>
-<td>Private slot to go to the selected page.</td>
-</tr><tr>
 <td><a href="#WebBrowserWindow.__nextTab">__nextTab</a></td>
 <td>Private slot used to show the next tab.</td>
 </tr><tr>
@@ -334,9 +334,6 @@
 <td><a href="#WebBrowserWindow.__showAdBlockDialog">__showAdBlockDialog</a></td>
 <td>Private slot to show the AdBlock configuration dialog.</td>
 </tr><tr>
-<td><a href="#WebBrowserWindow.__showBackMenu">__showBackMenu</a></td>
-<td>Private slot showing the backwards navigation menu.</td>
-</tr><tr>
 <td><a href="#WebBrowserWindow.__showBookmarksDialog">__showBookmarksDialog</a></td>
 <td>Private slot to show the bookmarks dialog.</td>
 </tr><tr>
@@ -361,9 +358,6 @@
 <td><a href="#WebBrowserWindow.__showFlashCookiesManagement">__showFlashCookiesManagement</a></td>
 <td>Private slot to show the flash cookies management dialog.</td>
 </tr><tr>
-<td><a href="#WebBrowserWindow.__showForwardMenu">__showForwardMenu</a></td>
-<td>Private slot showing the forwards navigation menu.</td>
-</tr><tr>
 <td><a href="#WebBrowserWindow.__showGreaseMonkeyConfigDialog">__showGreaseMonkeyConfigDialog</a></td>
 <td>Private slot to show the GreaseMonkey scripts configuration dialog.</td>
 </tr><tr>
@@ -433,9 +427,6 @@
 <td><a href="#WebBrowserWindow.__unselect">__unselect</a></td>
 <td>Private slot to clear the selection of the current browser.</td>
 </tr><tr>
-<td><a href="#WebBrowserWindow.__viewFullScreen">__viewFullScreen</a></td>
-<td>Private slot called to toggle fullscreen mode.</td>
-</tr><tr>
 <td><a href="#WebBrowserWindow.__virusTotalDomainReport">__virusTotalDomainReport</a></td>
 <td>Private slot to retrieve a domain report.</td>
 </tr><tr>
@@ -514,6 +505,12 @@
 <td><a href="#WebBrowserWindow.getWindow">getWindow</a></td>
 <td>Public method to get a reference to the most recent active web browser window.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.hideFullScreenNavigation">hideFullScreenNavigation</a></td>
+<td>Public slot to hide full screen navigation.</td>
+</tr><tr>
+<td><a href="#WebBrowserWindow.isFullScreenNavigationVisible">isFullScreenNavigationVisible</a></td>
+<td>Public method to check, if full screen navigation is active.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.javascriptConsole">javascriptConsole</a></td>
 <td>Public method to get a reference to the JavaScript console widget.</td>
 </tr><tr>
@@ -583,11 +580,17 @@
 <td><a href="#WebBrowserWindow.setLoadingActions">setLoadingActions</a></td>
 <td>Public slot to set the loading dependent actions.</td>
 </tr><tr>
+<td><a href="#WebBrowserWindow.showFullScreenNavigation">showFullScreenNavigation</a></td>
+<td>Public slot to show full screen navigation.</td>
+</tr><tr>
 <td><a href="#WebBrowserWindow.shutdown">shutdown</a></td>
 <td>Public method to shut down the web browser.</td>
 </tr><tr>
 <td><a href="#WebBrowserWindow.tabWidget">tabWidget</a></td>
 <td>Public method to get a reference to the tab widget.</td>
+</tr><tr>
+<td><a href="#WebBrowserWindow.toggleFullScreen">toggleFullScreen</a></td>
+<td>Public slot called to toggle the full screen mode.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -1161,6 +1164,11 @@
 <b>__forward</b>(<i></i>)
 <p>
         Private slot called to handle the forward action.
+</p><a NAME="WebBrowserWindow.__hideNavigation" ID="WebBrowserWindow.__hideNavigation"></a>
+<h4>WebBrowserWindow.__hideNavigation</h4>
+<b>__hideNavigation</b>(<i></i>)
+<p>
+        Private slot to hide full screen navigation by timer.
 </p><a NAME="WebBrowserWindow.__home" ID="WebBrowserWindow.__home"></a>
 <h4>WebBrowserWindow.__home</h4>
 <b>__home</b>(<i></i>)
@@ -1227,18 +1235,7 @@
 <b>__manageQtHelpFilters</b>(<i></i>)
 <p>
         Private slot to manage the QtHelp filters.
-</p><a NAME="WebBrowserWindow.__navigationMenuActionTriggered" ID="WebBrowserWindow.__navigationMenuActionTriggered"></a>
-<h4>WebBrowserWindow.__navigationMenuActionTriggered</h4>
-<b>__navigationMenuActionTriggered</b>(<i>act</i>)
-<p>
-        Private slot to go to the selected page.
-</p><dl>
-<dt><i>act</i></dt>
-<dd>
-reference to the action selected in the navigation menu
-            (QAction)
-</dd>
-</dl><a NAME="WebBrowserWindow.__nextTab" ID="WebBrowserWindow.__nextTab"></a>
+</p><a NAME="WebBrowserWindow.__nextTab" ID="WebBrowserWindow.__nextTab"></a>
 <h4>WebBrowserWindow.__nextTab</h4>
 <b>__nextTab</b>(<i></i>)
 <p>
@@ -1356,11 +1353,6 @@
 <b>__showAdBlockDialog</b>(<i></i>)
 <p>
         Private slot to show the AdBlock configuration dialog.
-</p><a NAME="WebBrowserWindow.__showBackMenu" ID="WebBrowserWindow.__showBackMenu"></a>
-<h4>WebBrowserWindow.__showBackMenu</h4>
-<b>__showBackMenu</b>(<i></i>)
-<p>
-        Private slot showing the backwards navigation menu.
 </p><a NAME="WebBrowserWindow.__showBookmarksDialog" ID="WebBrowserWindow.__showBookmarksDialog"></a>
 <h4>WebBrowserWindow.__showBookmarksDialog</h4>
 <b>__showBookmarksDialog</b>(<i></i>)
@@ -1401,11 +1393,6 @@
 <b>__showFlashCookiesManagement</b>(<i></i>)
 <p>
         Private slot to show the flash cookies management dialog.
-</p><a NAME="WebBrowserWindow.__showForwardMenu" ID="WebBrowserWindow.__showForwardMenu"></a>
-<h4>WebBrowserWindow.__showForwardMenu</h4>
-<b>__showForwardMenu</b>(<i></i>)
-<p>
-        Private slot showing the forwards navigation menu.
 </p><a NAME="WebBrowserWindow.__showGreaseMonkeyConfigDialog" ID="WebBrowserWindow.__showGreaseMonkeyConfigDialog"></a>
 <h4>WebBrowserWindow.__showGreaseMonkeyConfigDialog</h4>
 <b>__showGreaseMonkeyConfigDialog</b>(<i></i>)
@@ -1540,11 +1527,6 @@
 <b>__unselect</b>(<i></i>)
 <p>
         Private slot to clear the selection of the current browser.
-</p><a NAME="WebBrowserWindow.__viewFullScreen" ID="WebBrowserWindow.__viewFullScreen"></a>
-<h4>WebBrowserWindow.__viewFullScreen</h4>
-<b>__viewFullScreen</b>(<i></i>)
-<p>
-        Private slot called to toggle fullscreen mode.
 </p><a NAME="WebBrowserWindow.__virusTotalDomainReport" ID="WebBrowserWindow.__virusTotalDomainReport"></a>
 <h4>WebBrowserWindow.__virusTotalDomainReport</h4>
 <b>__virusTotalDomainReport</b>(<i></i>)
@@ -1792,6 +1774,27 @@
 <dd>
 WebBrowserWindow
 </dd>
+</dl><a NAME="WebBrowserWindow.hideFullScreenNavigation" ID="WebBrowserWindow.hideFullScreenNavigation"></a>
+<h4>WebBrowserWindow.hideFullScreenNavigation</h4>
+<b>hideFullScreenNavigation</b>(<i></i>)
+<p>
+        Public slot to hide full screen navigation.
+</p><a NAME="WebBrowserWindow.isFullScreenNavigationVisible" ID="WebBrowserWindow.isFullScreenNavigationVisible"></a>
+<h4>WebBrowserWindow.isFullScreenNavigationVisible</h4>
+<b>isFullScreenNavigationVisible</b>(<i></i>)
+<p>
+        Public method to check, if full screen navigation is active.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating visibility of the navigation container in full
+            screen mode
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="WebBrowserWindow.javascriptConsole" ID="WebBrowserWindow.javascriptConsole"></a>
 <h4>WebBrowserWindow.javascriptConsole</h4>
 <b>javascriptConsole</b>(<i></i>)
@@ -2065,7 +2068,12 @@
 <dd>
 flag indicating the loading state to consider (boolean)
 </dd>
-</dl><a NAME="WebBrowserWindow.shutdown" ID="WebBrowserWindow.shutdown"></a>
+</dl><a NAME="WebBrowserWindow.showFullScreenNavigation" ID="WebBrowserWindow.showFullScreenNavigation"></a>
+<h4>WebBrowserWindow.showFullScreenNavigation</h4>
+<b>showFullScreenNavigation</b>(<i></i>)
+<p>
+        Public slot to show full screen navigation.
+</p><a NAME="WebBrowserWindow.shutdown" ID="WebBrowserWindow.shutdown"></a>
 <h4>WebBrowserWindow.shutdown</h4>
 <b>shutdown</b>(<i></i>)
 <p>
@@ -2090,7 +2098,12 @@
 <dd>
 WebBrowserTabWidget
 </dd>
-</dl>
+</dl><a NAME="WebBrowserWindow.toggleFullScreen" ID="WebBrowserWindow.toggleFullScreen"></a>
+<h4>WebBrowserWindow.toggleFullScreen</h4>
+<b>toggleFullScreen</b>(<i></i>)
+<p>
+        Public slot called to toggle the full screen mode.
+</p>
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 </body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.WebBrowser.ZoomManager.ZoomManager.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/eric6.WebBrowser.ZoomManager.ZoomManager.html	Sat May 06 13:43:21 2017 +0200
@@ -46,7 +46,13 @@
 <h2>ZoomManager</h2>
 <p>
     Class implementing a manager for site specific zoom level settings.
-</p>
+</p><h3>Signals</h3>
+<dl>
+<dt>changed()</dt>
+<dd>
+emitted to indicate a change of the zoom level
+</dd>
+</dl>
 <h3>Derived from</h3>
 QObject
 <h3>Class Attributes</h3>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.eric6_shell.html	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.eric6_shell</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.eric6_shell</h1>
+<p>
+Eric6 Shell.
+</p><p>
+This is the main Python script that performs the necessary initialization
+of the ShellWindow module and starts the Qt event loop.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#createMainWidget">createMainWidget</a></td>
+<td>Function to create the main widget.</td>
+</tr><tr>
+<td><a href="#main">main</a></td>
+<td>Main entry point into the application.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="createMainWidget" ID="createMainWidget"></a>
+<h2>createMainWidget</h2>
+<b>createMainWidget</b>(<i>argv</i>)
+<p>
+    Function to create the main widget.
+</p><dl>
+<dt><i>argv</i></dt>
+<dd>
+list of commandline parameters (list of strings)
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the main widget (QWidget)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="main" ID="main"></a>
+<h2>main</h2>
+<b>main</b>(<i></i>)
+<p>
+    Main entry point into the application.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric6.QScintilla.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/index-eric6.QScintilla.html	Sat May 06 13:43:21 2017 +0200
@@ -92,6 +92,9 @@
 <td><a href="eric6.QScintilla.ShellHistoryDialog.html">ShellHistoryDialog</a></td>
 <td>Module implementing the shell history dialog.</td>
 </tr><tr>
+<td><a href="eric6.QScintilla.ShellWindow.html">ShellWindow</a></td>
+<td>Module implementing a stand alone shell window.</td>
+</tr><tr>
 <td><a href="eric6.QScintilla.SortOptionsDialog.html">SortOptionsDialog</a></td>
 <td>Module implementing a dialog to enter the sort options for a line sort.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.WebBrowser.GreaseMonkey.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/index-eric6.WebBrowser.GreaseMonkey.html	Sat May 06 13:43:21 2017 +0200
@@ -49,9 +49,6 @@
 </tr><tr>
 <td><a href="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyScript.html">GreaseMonkeyScript</a></td>
 <td>Module implementing the GreaseMonkey script.</td>
-</tr><tr>
-<td><a href="eric6.WebBrowser.GreaseMonkey.GreaseMonkeyUrlInterceptor.html">GreaseMonkeyUrlInterceptor</a></td>
-<td>Module implementing a handler for GreaseMonkey related URLs.</td>
 </tr>
 </table>
 </body></html>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/index-eric6.WebBrowser.Navigation.html	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.WebBrowser.Navigation</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>
+<h1>eric6.WebBrowser.Navigation</h1>
+<p>
+Package containing navigation related widgets.
+</p>
+
+
+<h3>Modules</h3>
+<table>
+<tr>
+<td><a href="eric6.WebBrowser.Navigation.NavigationBar.html">NavigationBar</a></td>
+<td>Module implementing the navigation bar widget.</td>
+</tr><tr>
+<td><a href="eric6.WebBrowser.Navigation.NavigationContainer.html">NavigationContainer</a></td>
+<td>Module implementing the navigation container widget.</td>
+</tr>
+</table>
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/index-eric6.WebBrowser.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/index-eric6.WebBrowser.html	Sat May 06 13:43:21 2017 +0200
@@ -70,6 +70,9 @@
 <td><a href="index-eric6.WebBrowser.JavaScript.html">JavaScript</a></td>
 <td>Package implementing the external JavaScript objects.</td>
 </tr><tr>
+<td><a href="index-eric6.WebBrowser.Navigation.html">Navigation</a></td>
+<td>Package containing navigation related widgets.</td>
+</tr><tr>
 <td><a href="index-eric6.WebBrowser.Network.html">Network</a></td>
 <td>Package containing network related modules.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.html	Sun Apr 09 16:52:55 2017 +0200
+++ b/Documentation/Source/index-eric6.html	Sat May 06 13:43:21 2017 +0200
@@ -188,6 +188,9 @@
 <td><a href="eric6.eric6_re.html">eric6_re</a></td>
 <td>Eric6 Re.</td>
 </tr><tr>
+<td><a href="eric6.eric6_shell.html">eric6_shell</a></td>
+<td>Eric6 Shell.</td>
+</tr><tr>
 <td><a href="eric6.eric6_snap.html">eric6_snap</a></td>
 <td>Eric6 Snap.</td>
 </tr><tr>
--- a/E5Gui/E5LineEdit.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/E5Gui/E5LineEdit.py	Sat May 06 13:43:21 2017 +0200
@@ -24,6 +24,8 @@
 class E5LineEditSideWidget(QWidget):
     """
     Class implementing the side widgets for the line edit class.
+    
+    @signal sizeHintChanged() emitted to indicate a change of the size hint
     """
     sizeHintChanged = pyqtSignal()
     
--- a/E5Gui/E5PassivePopup.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/E5Gui/E5PassivePopup.py	Sat May 06 13:43:21 2017 +0200
@@ -18,6 +18,8 @@
     """
     Class implementing dialog-like popup that displays messages without
     interrupting the user.
+    
+    @signal clicked emitted to indicate a mouse button click
     """
     Boxed = 0
     Custom = 128
--- a/E5Gui/E5PathPicker.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/E5Gui/E5PathPicker.py	Sat May 06 13:43:21 2017 +0200
@@ -679,13 +679,6 @@
     """
     Class implementing a path picker widget consisting of a line edit and a
     tool button to open a file dialog.
-    
-    @signal textChanged(path) emitted when the entered path has changed
-    @signal pathSelected(path) emitted after a path has been selected via the
-        file dialog
-    @signal aboutToShowPathPickerDialog emitted before the file dialog is shown
-    @signal pickerButtonClicked emitted when the picker button was pressed and
-        the widget mode is custom
     """
     def __init__(self, parent=None):
         """
@@ -701,13 +694,6 @@
     """
     Class implementing a path picker widget consisting of a combobox and a
     tool button to open a file dialog.
-    
-    @signal editTextChanged(path) emitted when the entered path has changed
-    @signal pathSelected(path) emitted after a path has been selected via the
-        file dialog
-    @signal aboutToShowPathPickerDialog emitted before the file dialog is shown
-    @signal pickerButtonClicked emitted when the picker button was pressed and
-        the widget mode is custom
     """
     def __init__(self, parent=None):
         """
--- a/E5Gui/E5ZoomWidget.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/E5Gui/E5ZoomWidget.py	Sat May 06 13:43:21 2017 +0200
@@ -18,6 +18,8 @@
 class E5ZoomWidget(QWidget, Ui_E5ZoomWidget):
     """
     Class implementing a zoom widget for the status bar.
+    
+    @signal valueChanged(value) emitted to indicate the new zoom value (int)
     """
     valueChanged = pyqtSignal(int)
     
--- a/E5Network/E5Ftp.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/E5Network/E5Ftp.py	Sat May 06 13:43:21 2017 +0200
@@ -252,6 +252,7 @@
         @param acct accounting information for the remote host (string)
         @return response sent by the remote host (string)
         @exception E5FtpProxyError raised to indicate a proxy related issue
+        @exception ftplib.error_reply raised to indicate an FTP error reply
         """
         if not user:
             user = "anonymous"
--- a/Globals/__init__.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Globals/__init__.py	Sat May 06 13:43:21 2017 +0200
@@ -182,6 +182,40 @@
     return ""
     
 
+def getPyQtToolsPath(version=5):
+    """
+    Module function to get the path of the PyQt tools.
+    
+    @param version PyQt major version
+    @type int
+    @return path to the PyQt tools
+    @rtype str
+    """
+    import Preferences
+    
+    path = ""
+    
+    # step 1: check, if the user has configured a tools path
+    path = Preferences.getQt("PyQtToolsDir")
+    
+    # step 2: determine from used Python interpreter (pyrcc is test object)
+    if not path:
+        program = "pyrcc{0}".format(version)
+        if isWindowsPlatform():
+            program += ".exe"
+            dirName = os.path.dirname(sys.executable)
+            if os.path.exists(os.path.join(dirName, program)):
+                path = dirName
+            elif os.path.exists(os.path.join(dirName, "Scripts", program)):
+                path = os.path.join(dirName, "Scripts")
+        else:
+            dirName = os.path.dirname(sys.executable)
+            if os.path.exists(os.path.join(dirName, program)):
+                path = dirName
+    
+    return path
+
+
 def getQtBinariesPath():
     """
     Module function to get the path of the Qt binaries.
@@ -244,8 +278,8 @@
                        "C:\\Python27", "C:\\Python28"]
         posixVersionsList = ["2.5", "2.6", "2.7", "2.8"]
     else:
-        winPathList = ["C:\\Python3{0}".format(x) for x in range(5)]
-        posixVersionsList = ["3.{0}".format(x) for x in range(5)]
+        winPathList = ["C:\\Python3{0}".format(x) for x in range(11)]
+        posixVersionsList = ["3.{0}".format(x) for x in range(11)]
     posixPathList = ["/usr/bin", "/usr/local/bin"]
     
     interpreters = []
--- a/Helpviewer/AdBlock/AdBlockManager.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/AdBlock/AdBlockManager.py	Sat May 06 13:43:21 2017 +0200
@@ -25,6 +25,8 @@
     Class implementing the AdBlock manager.
     
     @signal rulesChanged() emitted after some rule has changed
+    @signal requiredSubscriptionLoaded(subscription) emitted to indicate
+        loading of a required subscription is finished (AdBlockSubscription)
     """
     rulesChanged = pyqtSignal()
     requiredSubscriptionLoaded = pyqtSignal(AdBlockSubscription)
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyConfiguration/GreaseMonkeyConfigurationListWidget.py	Sat May 06 13:43:21 2017 +0200
@@ -19,6 +19,9 @@
 class GreaseMonkeyConfigurationListWidget(QListWidget):
     """
     Class implementing a special list widget for GreaseMonkey scripts.
+    
+    @signal removeItemRequested(item) emitted to indicate an item removal
+        request (QListWidgetItem)
     """
     removeItemRequested = pyqtSignal(QListWidgetItem)
     
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyDownloader.py	Sat May 06 13:43:21 2017 +0200
@@ -24,6 +24,8 @@
 class GreaseMonkeyDownloader(QObject):
     """
     Class implementing the downloader for GreaseMonkey scripts.
+    
+    @signal finished() emitted to indicate the end of a script download
     """
     finished = pyqtSignal()
     
--- a/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/GreaseMonkey/GreaseMonkeyManager.py	Sat May 06 13:43:21 2017 +0200
@@ -22,6 +22,8 @@
 class GreaseMonkeyManager(QObject):
     """
     Class implementing the manager for GreaseMonkey scripts.
+    
+    @signal scriptsChanged() emitted to indicate a change of scripts
     """
     scriptsChanged = pyqtSignal()
     
--- a/Helpviewer/HelpWindow.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/HelpWindow.py	Sat May 06 13:43:21 2017 +0200
@@ -64,6 +64,7 @@
     @signal helpClosed() emitted after the window was requested to close down
     @signal zoomTextOnlyChanged(bool) emitted after the zoom text only setting
         was changed
+    @signal privacyChanged(bool) emitted to indicate a new privacy mode
     """
     zoomTextOnlyChanged = pyqtSignal(bool)
     helpClosed = pyqtSignal()
--- a/Helpviewer/Network/FollowRedirectReply.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/Network/FollowRedirectReply.py	Sat May 06 13:43:21 2017 +0200
@@ -16,6 +16,8 @@
 class FollowRedirectReply(QObject):
     """
     Class implementing a network reply delegate allowing to check redirects.
+    
+    @signal finished() emitted to indicate the end of the redirect
     """
     finished = pyqtSignal()
     
--- a/Helpviewer/UrlBar/SslLabel.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/UrlBar/SslLabel.py	Sat May 06 13:43:21 2017 +0200
@@ -16,6 +16,8 @@
 class SslLabel(QLabel):
     """
     Class implementing the label to show some SSL info.
+    
+    @signal clicked(pos) emitted to indicate a click of the label (QPoint)
     """
     clicked = pyqtSignal(QPoint)
     
--- a/Helpviewer/ZoomManager/ZoomManager.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Helpviewer/ZoomManager/ZoomManager.py	Sat May 06 13:43:21 2017 +0200
@@ -20,6 +20,8 @@
 class ZoomManager(QObject):
     """
     Class implementing a manager for site specific zoom level settings.
+    
+    @signal changed() emitted to indicate a change of the zoom level
     """
     changed = pyqtSignal()
     
--- a/PluginManager/PluginManager.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/PluginManager/PluginManager.py	Sat May 06 13:43:21 2017 +0200
@@ -82,6 +82,8 @@
         @keyparam develPlugin filename of a plugin to be loaded for
             development (string)
         @exception PluginPathError raised to indicate an invalid plug-in path
+        @exception PluginModulesError raised to indicate the absence of
+            plug-in modules
         """
         super(PluginManager, self).__init__(parent)
         
@@ -337,6 +339,8 @@
         @param reload_ flag indicating to reload the module (boolean)
         @exception PluginLoadError raised to indicate an issue loading
             the plug-in
+        @exception PluginPy2IncompatibleError raised to indicate the Python 2
+            incompatibility of a plug-in
         """
         try:
             fname = "{0}.py".format(os.path.join(directory, name))
--- a/PluginManager/PluginUninstallDialog.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/PluginManager/PluginUninstallDialog.py	Sat May 06 13:43:21 2017 +0200
@@ -31,6 +31,8 @@
 class PluginUninstallWidget(QWidget, Ui_PluginUninstallDialog):
     """
     Class implementing a dialog for plugin deinstallation.
+    
+    @signal accepted() emitted to indicate the removal of a plug-in
     """
     accepted = pyqtSignal()
     
--- a/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py	Sat May 06 13:43:21 2017 +0200
@@ -106,6 +106,31 @@
     return flags
 
 
+def ignoreCode(code, lineFlags):
+    """
+    Function to check, if the given code should be ignored as per line flags.
+    
+    @param code error code to be checked
+    @type str
+    @param lineFlags list of line flags to check against
+    @type list of str
+    """
+    if lineFlags:
+        
+        if "__IGNORE_WARNING__" in lineFlags:
+            # ignore all warning codes
+            return True
+        
+        for flag in lineFlags:
+            # check individual warning code
+            if flag.startswith("__IGNORE_WARNING_"):
+                ignoredCode = flag[2:-2].rsplit("_", 1)[-1]
+                if code.startswith(ignoredCode):
+                    return True
+    
+    return False
+
+
 def codeStyleCheck(filename, source, args):
     """
     Do the code style check and/ or fix found errors.
@@ -305,8 +330,7 @@
                                                   flagsLine=True)
                 except IndexError:
                     pass
-                if "__IGNORE_WARNING__" not in lineFlags and \
-                        "__IGNORE_WARNING_{0}__".format(code) not in lineFlags:
+                if not ignoreCode(code, lineFlags):
                     if fixer:
                         res, msg, id_ = fixer.fixIssue(lineno, position, text)
                         if res == -1:
--- a/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/MiscellaneousChecker.py	Sat May 06 13:43:21 2017 +0200
@@ -605,10 +605,7 @@
                 for default in node.args.defaults:
                     if any(isinstance(default, mutableType)
                            for mutableType in mutableTypes):
-                        if sys.version_info[0] == 2:
-                            typeName = default.__name__
-                        else:
-                            typeName = type(default).__name__
+                        typeName = type(default).__name__
                         if isinstance(default, ast.Call):
                             errorCode = "M822"
                         else:
--- a/Plugins/VcsPlugins/vcsMercurial/HgDialog.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgDialog.py	Sat May 06 13:43:21 2017 +0200
@@ -282,7 +282,7 @@
     @pyqtSlot()
     def on_sendButton_clicked(self):
         """
-        Private slot to send the input to the subversion process.
+        Private slot to send the input to the Mercurial process.
         """
         inputTxt = self.input.text()
         inputTxt += os.linesep
--- a/Preferences/ConfigurationPages/EditorStylesPage.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/ConfigurationPages/EditorStylesPage.py	Sat May 06 13:43:21 2017 +0200
@@ -117,10 +117,6 @@
                         Preferences.getEditorColour)
         self.initColour("SelectionBackground", self.selectionBackgroundButton,
                         Preferences.getEditorColour, hasAlpha=True)
-        self.initColour("CurrentMarker", self.currentLineMarkerButton,
-                        Preferences.getEditorColour, hasAlpha=True)
-        self.initColour("ErrorMarker", self.errorMarkerButton,
-                        Preferences.getEditorColour, hasAlpha=True)
         self.initColour("MarginsForeground", self.marginsForegroundButton,
                         Preferences.getEditorColour)
         self.initColour("MarginsBackground", self.marginsBackgroundButton,
--- a/Preferences/ConfigurationPages/EditorStylesPage.ui	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/ConfigurationPages/EditorStylesPage.ui	Sat May 06 13:43:21 2017 +0200
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>625</width>
-    <height>2312</height>
+    <width>655</width>
+    <height>2500</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_8">
@@ -705,61 +705,6 @@
     </widget>
    </item>
    <item>
-    <widget class="QGroupBox" name="groupBox_2">
-     <property name="title">
-      <string>Debugging Line Markers</string>
-     </property>
-     <layout class="QHBoxLayout" name="_8">
-      <item>
-       <widget class="QLabel" name="TextLabel3_2_2">
-        <property name="text">
-         <string>Current line marker:</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QPushButton" name="currentLineMarkerButton">
-        <property name="minimumSize">
-         <size>
-          <width>100</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="toolTip">
-         <string>Select the colour for the current line marker.</string>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QLabel" name="TextLabel4_2_2">
-        <property name="text">
-         <string>Error line marker:</string>
-        </property>
-       </widget>
-      </item>
-      <item>
-       <widget class="QPushButton" name="errorMarkerButton">
-        <property name="minimumSize">
-         <size>
-          <width>100</width>
-          <height>0</height>
-         </size>
-        </property>
-        <property name="toolTip">
-         <string>Select the colour for the error line marker.</string>
-        </property>
-        <property name="text">
-         <string/>
-        </property>
-       </widget>
-      </item>
-     </layout>
-    </widget>
-   </item>
-   <item>
     <widget class="QGroupBox" name="groupBox_6">
      <property name="title">
       <string>Braces</string>
@@ -1915,8 +1860,6 @@
   <tabstop>caretWidthSpinBox</tabstop>
   <tabstop>caretForegroundButton</tabstop>
   <tabstop>caretlineBackgroundButton</tabstop>
-  <tabstop>currentLineMarkerButton</tabstop>
-  <tabstop>errorMarkerButton</tabstop>
   <tabstop>bracehighlightingCheckBox</tabstop>
   <tabstop>matchingBracesButton</tabstop>
   <tabstop>matchingBracesBackButton</tabstop>
--- a/Preferences/ConfigurationPages/QtPage.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/ConfigurationPages/QtPage.py	Sat May 06 13:43:21 2017 +0200
@@ -33,6 +33,8 @@
         
         self.qt4TransPicker.setMode(E5PathPickerModes.DirectoryMode)
         self.qtToolsDirPicker.setMode(E5PathPickerModes.DirectoryShowFilesMode)
+        self.pyqtToolsDirPicker.setMode(
+            E5PathPickerModes.DirectoryShowFilesMode)
         
         # set initial values
         if qVersion() < "5.0.0":
@@ -45,6 +47,7 @@
         self.qt4PrefixEdit.setText(Preferences.getQt("QtToolsPrefix4"))
         self.qt4PostfixEdit.setText(Preferences.getQt("QtToolsPostfix4"))
         self.__updateQt4Sample()
+        self.pyqtToolsDirPicker.setText(Preferences.getQt("PyQtToolsDir"))
         self.pyuicIndentSpinBox.setValue(Preferences.getQt("PyuicIndent"))
         self.pyuicImportsCheckBox.setChecked(
             Preferences.getQt("PyuicFromImports"))
@@ -60,6 +63,7 @@
         Preferences.setQt("QtToolsDir", self.qtToolsDirPicker.text())
         Preferences.setQt("QtToolsPrefix4", self.qt4PrefixEdit.text())
         Preferences.setQt("QtToolsPostfix4", self.qt4PostfixEdit.text())
+        Preferences.setQt("PyQtToolsDir", self.pyqtToolsDirPicker.text())
         Preferences.setQt("PyuicIndent", self.pyuicIndentSpinBox.value())
         Preferences.setQt("PyuicFromImports",
                           self.pyuicImportsCheckBox.isChecked())
@@ -69,8 +73,8 @@
         Private slot to update the Qt4 tools sample label.
         """
         self.qt4SampleLabel.setText(
-            "Sample: {0}designer{1}".format(self.qt4PrefixEdit.text(),
-                                            self.qt4PostfixEdit.text()))
+            self.tr("Sample: {0}designer{1}").format(
+                self.qt4PrefixEdit.text(), self.qt4PostfixEdit.text()))
     
     @pyqtSlot(str)
     def on_qt4PrefixEdit_textChanged(self, txt):
--- a/Preferences/ConfigurationPages/QtPage.ui	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/ConfigurationPages/QtPage.ui	Sat May 06 13:43:21 2017 +0200
@@ -173,6 +173,38 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>PyQt Tools</string>
+     </property>
+     <layout class="QHBoxLayout" name="horizontalLayout_3">
+      <item>
+       <widget class="QLabel" name="label_6">
+        <property name="text">
+         <string>Tools Directory:</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="E5PathPicker" name="pyqtToolsDirPicker" native="true">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="focusPolicy">
+         <enum>Qt::StrongFocus</enum>
+        </property>
+        <property name="toolTip">
+         <string>Enter the path of the PyQt tools directory, if they are not found.</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <widget class="QGroupBox" name="groupBox">
      <property name="title">
       <string>pyuic / pyside-uic Options</string>
@@ -255,6 +287,7 @@
   <tabstop>qtToolsDirPicker</tabstop>
   <tabstop>qt4PrefixEdit</tabstop>
   <tabstop>qt4PostfixEdit</tabstop>
+  <tabstop>pyqtToolsDirPicker</tabstop>
   <tabstop>pyuicIndentSpinBox</tabstop>
   <tabstop>pyuicImportsCheckBox</tabstop>
  </tabstops>
--- a/Preferences/ProgramsDialog.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/ProgramsDialog.py	Sat May 06 13:43:21 2017 +0200
@@ -134,41 +134,38 @@
             self.tr("Qt Assistant"), exe, version=version)
         
         # 2. do the PyQt programs
-        # 2a. Translation Extractor PyQt4
+        # 2.1 do the PyQt4 programs
+        # 2.1a. Translation Extractor PyQt4
         self.__createProgramEntry(
             self.tr("Translation Extractor (Python, PyQt4)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pylupdate4") or "pylupdate4",
+            Utilities.generatePyQtToolPath("pylupdate4"),
             '-version', 'pylupdate', -1)
-        # 2b. Forms Compiler PyQt4
+        # 2.1b. Forms Compiler PyQt4
         self.__createProgramEntry(
             self.tr("Forms Compiler (Python, PyQt4)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pyuic4") or "pyuic4",
+            Utilities.generatePyQtToolPath("pyuic4"),
             '--version', 'Python User', 4)
-        # 2c. Resource Compiler PyQt4
+        # 2.1c. Resource Compiler PyQt4
         self.__createProgramEntry(
             self.tr("Resource Compiler (Python, PyQt4)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pyrcc4") or "pyrcc4",
+            Utilities.generatePyQtToolPath("pyrcc4"),
             '-version', 'Resource Compiler', -1)
-        # 2d. Translation Extractor PyQt5
+        
+        # 2.2 do the PyQt5 programs
+        # 2.2a. Translation Extractor PyQt5
         self.__createProgramEntry(
             self.tr("Translation Extractor (Python, PyQt5)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pylupdate5") or "pylupdate5",
+            Utilities.generatePyQtToolPath("pylupdate5"),
             '-version', 'pylupdate', -1)
-        # 2e. Forms Compiler PyQt5
+        # 2.2b. Forms Compiler PyQt5
         self.__createProgramEntry(
             self.tr("Forms Compiler (Python, PyQt5)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pyuic5") or "pyuic5",
+            Utilities.generatePyQtToolPath("pyuic5"),
             '--version', 'Python User', 4)
-        # 2f. Resource Compiler PyQt5
+        # 2.2c. Resource Compiler PyQt5
         self.__createProgramEntry(
             self.tr("Resource Compiler (Python, PyQt5)"),
-            Utilities.isWindowsPlatform() and
-            Utilities.getWindowsExecutablePath("pyrcc5") or "pyrcc5",
+            Utilities.generatePyQtToolPath("pyrcc5"),
             '-version', '', -1, versionRe='Resource Compiler|pyrcc5')
         
         # 3. do the PySide programs
--- a/Preferences/__init__.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Preferences/__init__.py	Sat May 06 13:43:21 2017 +0200
@@ -607,8 +607,6 @@
         editorDefaults["CallTipsPosition"] = 0
     
     editorColourDefaults = {
-        "CurrentMarker": QColor(Qt.yellow),
-        "ErrorMarker": QColor(Qt.red),
         "MatchingBrace": QColor(Qt.green),
         "MatchingBraceBack": QColor(Qt.white),
         "NonmatchingBrace": QColor(Qt.red),
@@ -1221,6 +1219,7 @@
         "QtToolsPostfix4": "",
         "PyuicIndent": 4,
         "PyuicFromImports": False,
+        "PyQtToolsDir": "",
     }
     
     # defaults for corba related stuff
--- a/Project/ProjectFormsBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectFormsBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -43,12 +43,7 @@
     
     @signal appendStderr(str) emitted after something was received from
         a QProcess on stderr
-    @signal sourceFile(str) emitted to open a forms file in an editor
     @signal uipreview(str) emitted to preview a forms file
-    @signal trpreview(list of str) emitted to preview form files in the
-        translations previewer
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The
         name of the menu and a reference to the menu are given.
     @signal menusAboutToBeCreated() emitted when the context menus are about to
@@ -642,7 +637,7 @@
     def __readStdout(self):
         """
         Private slot to handle the readyReadStandardOutput signal of the
-        pyuic/rbuic process.
+        pyuic4/pyuic5/pyside-uic/rbuic4 process.
         """
         if self.compileProc is None:
             return
@@ -655,7 +650,7 @@
     def __readStderr(self):
         """
         Private slot to handle the readyReadStandardError signal of the
-        pyuic/rbuic process.
+        pyuic4/pyuic5/pyside-uic/rbuic4 process.
         """
         if self.compileProc is None:
             return
@@ -750,38 +745,25 @@
         if self.project.getProjectLanguage() in \
                 ["Python", "Python2", "Python3"]:
             if self.project.getProjectType() in ["Qt4", ]:
-                self.uicompiler = 'pyuic4'
-                if Utilities.isWindowsPlatform():
-                    uic = Utilities.getWindowsExecutablePath(self.uicompiler)
-                else:
-                    uic = self.uicompiler
+                self.uicompiler = Utilities.generatePyQtToolPath('pyuic4')
             elif self.project.getProjectType() in ["PyQt5"]:
-                self.uicompiler = 'pyuic5'
-                if Utilities.isWindowsPlatform():
-                    uic = Utilities.getWindowsExecutablePath(self.uicompiler)
-                else:
-                    uic = self.uicompiler
+                self.uicompiler = Utilities.generatePyQtToolPath('pyuic5')
             elif self.project.getProjectType() in ["E6Plugin"]:
                 if PYQT_VERSION < 0x050000:
-                    self.uicompiler = 'pyuic4'
+                    self.uicompiler = Utilities.generatePyQtToolPath('pyuic4')
                 else:
-                    self.uicompiler = 'pyuic5'
-                if Utilities.isWindowsPlatform():
-                    uic = Utilities.getWindowsExecutablePath(self.uicompiler)
-                else:
-                    uic = self.uicompiler
+                    self.uicompiler = Utilities.generatePyQtToolPath('pyuic5')
             elif self.project.getProjectType() == "PySide":
-                self.uicompiler = 'pyside-uic'
-                uic = Utilities.generatePySideToolPath(self.uicompiler)
+                self.uicompiler = \
+                    Utilities.generatePySideToolPath('pyside-uic')
             else:
                 return None
         elif self.project.getProjectLanguage() == "Ruby":
             if self.project.getProjectType() == "Qt4":
                 self.uicompiler = 'rbuic4'
                 if Utilities.isWindowsPlatform():
-                    uic = Utilities.getWindowsExecutablePath(self.uicompiler)
-                else:
-                    uic = self.uicompiler
+                    self.uicompiler = \
+                        Utilities.getWindowsExecutablePath(self.uicompiler)
             else:
                 return None
         else:
@@ -810,7 +792,7 @@
         self.compileProc.readyReadStandardError.connect(self.__readStderr)
         
         self.noDialog = noDialog
-        self.compileProc.start(uic, args)
+        self.compileProc.start(self.uicompiler, args)
         procStarted = self.compileProc.waitForStarted(5000)
         if procStarted:
             self.compileRunning = True
--- a/Project/ProjectInterfacesBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectInterfacesBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -41,9 +41,6 @@
     """
     A class used to display the interfaces (IDL) part of the project.
     
-    @signal sourceFile(str, int = 0) emitted to open a file
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
     @signal appendStdout(str) emitted after something was received from
         a QProcess on stdout
     @signal appendStderr(str) emitted after something was received from
--- a/Project/ProjectOthersBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectOthersBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -30,13 +30,6 @@
     A class used to display the parts of the project, that don't fit the
     other categories.
     
-    @signal sourceFile(str) emitted to open a file
-    @signal pixmapFile(str) emitted to open a pixmap file
-    @signal pixmapEditFile(str) emitted to edit a pixmap file
-    @signal svgFile(str) emitted to open a SVG file
-    @signal binaryFile(str) emitted to open a file as binary
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
     """
--- a/Project/ProjectResourcesBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectResourcesBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -39,9 +39,6 @@
     
     @signal appendStderr(str) emitted after something was received from
         a QProcess on stderr
-    @signal sourceFile(str) emitted to open a resources file in an editor
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
     """
@@ -530,7 +527,7 @@
     def __readStdout(self):
         """
         Private slot to handle the readyReadStandardOutput signal of the
-        pyrcc4/rbrcc process.
+        pyrcc4/pyrcc5/pyside-rcc/rbrcc process.
         """
         if self.compileProc is None:
             return
@@ -544,7 +541,7 @@
     def __readStderr(self):
         """
         Private slot to handle the readyReadStandardError signal of the
-        pyrcc4/rbrcc process.
+        pyrcc4/pyrcc5/pyside-rcc/rbrcc process.
         """
         if self.compileProc is None:
             return
@@ -633,10 +630,7 @@
         if self.project.getProjectLanguage() in \
                 ["Python", "Python2", "Python3"]:
             if self.project.getProjectType() in ["Qt4", "Qt4C"]:
-                self.rccCompiler = 'pyrcc4'
-                if Utilities.isWindowsPlatform():
-                    self.rccCompiler = \
-                        Utilities.getWindowsExecutablePath(self.rccCompiler)
+                self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc4')
                 if PYQT_VERSION >= 0x040500:
                     if self.project.getProjectLanguage() in \
                             ["Python", "Python2"]:
@@ -644,23 +638,17 @@
                     else:
                         args.append("-py3")
             elif self.project.getProjectType() in ["PyQt5", "PyQt5C"]:
-                self.rccCompiler = 'pyrcc5'
-                if Utilities.isWindowsPlatform():
-                    self.rccCompiler = \
-                        Utilities.getWindowsExecutablePath(self.rccCompiler)
+                self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc5')
             elif self.project.getProjectType() in ["E6Plugin"]:
                 if PYQT_VERSION < 0x050000:
-                    self.rccCompiler = 'pyrcc4'
+                    self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc4')
                     if self.project.getProjectLanguage() in \
                             ["Python", "Python2"]:
                         args.append("-py2")
                     else:
                         args.append("-py3")
                 else:
-                    self.rccCompiler = 'pyrcc5'
-                if Utilities.isWindowsPlatform():
-                    self.rccCompiler = \
-                        Utilities.getWindowsExecutablePath(self.rccCompiler)
+                    self.rccCompiler = Utilities.generatePyQtToolPath('pyrcc5')
             elif self.project.getProjectType() in ["PySide", "PySideC"]:
                 self.rccCompiler = Utilities.generatePySideToolPath(
                     'pyside-rcc')
--- a/Project/ProjectSourcesBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectSourcesBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -32,17 +32,8 @@
     """
     A class used to display the Sources part of the project.
     
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
-    @signal sourceFile(str) emitted to open the given file.
-    @signal sourceFile(str, int) emitted to open the given file at the given
-        line.
-    @signal sourceFile(str, int, str) emitted to open the given file as the
-        given type at the given line.
-    @signal sourceFile(str, list) emitted to open a Python file giving a list
-        of lines
     """
     showMenu = pyqtSignal(str, QMenu)
     
--- a/Project/ProjectTranslationsBrowser.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/Project/ProjectTranslationsBrowser.py	Sat May 06 13:43:21 2017 +0200
@@ -39,17 +39,10 @@
     """
     A class used to display the translations part of the project.
     
-    @signal linguistFile(str) emitted to open a translation file with
-        Qt-Linguist
     @signal appendStdout(str) emitted after something was received from
         a QProcess on stdout
     @signal appendStderr(str) emitted after something was received from
         a QProcess on stderr
-    @signal sourceFile(str) emitted to open a translation file in an editor
-    @signal closeSourceWindow(str) emitted after a file has been
-        removed/deleted from the project
-    @signal trpreview(list of str, bool = False) emitted to preview
-        translations in the translations previewer
     @signal showMenu(str, QMenu) emitted when a menu is about to be shown.
         The name of the menu and a reference to the menu are given.
     """
@@ -888,7 +881,7 @@
     def __readStderrLupdate(self):
         """
         Private slot to handle the readyReadStandardError signal of the
-        pylupdate process.
+        pylupdate4/pylupdate5/pyside-lupdate process.
         """
         proc = self.sender()
         if proc is not None:
@@ -986,8 +979,8 @@
         
     def __generateTSFile(self, noobsolete=False, generateAll=True):
         """
-        Private method used to run pylupdate/pylupdate4 to generate the .ts
-        files.
+        Private method used to run pylupdate4/pylupdate5/pyside-lupdate to
+        generate the .ts files.
         
         @param noobsolete flag indicating whether obsolete entries should be
             kept (boolean)
@@ -1036,23 +1029,14 @@
             return
         
         if self.project.getProjectType() in ["Qt4", "Qt4C"]:
-            self.pylupdate = 'pylupdate4'
-            if Utilities.isWindowsPlatform():
-                self.pylupdate = \
-                    Utilities.getWindowsExecutablePath(self.pylupdate)
+            self.pylupdate = Utilities.generatePyQtToolPath('pylupdate4')
         elif self.project.getProjectType() in ["PyQt5", "PyQt5C"]:
-            self.pylupdate = 'pylupdate5'
-            if Utilities.isWindowsPlatform():
-                self.pylupdate = \
-                    Utilities.getWindowsExecutablePath(self.pylupdate)
+            self.pylupdate = Utilities.generatePyQtToolPath('pylupdate5')
         elif self.project.getProjectType() in ["E6Plugin"]:
             if PYQT_VERSION < 0x050000:
-                self.pylupdate = 'pylupdate4'
+                self.pylupdate = Utilities.generatePyQtToolPath('pylupdate4')
             else:
-                self.pylupdate = 'pylupdate5'
-            if Utilities.isWindowsPlatform():
-                self.pylupdate = \
-                    Utilities.getWindowsExecutablePath(self.pylupdate)
+                self.pylupdate = Utilities.generatePyQtToolPath('pylupdate5')
         elif self.project.getProjectType() in ["PySide", "PySideC"]:
             self.pylupdate = Utilities.generatePySideToolPath('pyside-lupdate')
         else:
--- a/QScintilla/Editor.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/QScintilla/Editor.py	Sat May 06 13:43:21 2017 +0200
@@ -271,31 +271,32 @@
         self.__changeMarkerUnsaved = self.markerDefine(
             self.__createChangeMarkerPixmap(
                 "OnlineChangeTraceMarkerUnsaved"))
-        self.breakpoint = \
-            self.markerDefine(UI.PixmapCache.getPixmap("break.png"))
-        self.cbreakpoint = \
-            self.markerDefine(UI.PixmapCache.getPixmap("cBreak.png"))
-        self.tbreakpoint = \
-            self.markerDefine(UI.PixmapCache.getPixmap("tBreak.png"))
-        self.tcbreakpoint = \
-            self.markerDefine(UI.PixmapCache.getPixmap("tCBreak.png"))
-        self.dbreakpoint = \
-            self.markerDefine(UI.PixmapCache.getPixmap("breakDisabled.png"))
-        self.bookmark = \
-            self.markerDefine(UI.PixmapCache.getPixmap("bookmark16.png"))
-        self.syntaxerror = \
-            self.markerDefine(UI.PixmapCache.getPixmap("syntaxError.png"))
-        self.notcovered = \
-            self.markerDefine(UI.PixmapCache.getPixmap("notcovered.png"))
-        self.taskmarker = \
-            self.markerDefine(UI.PixmapCache.getPixmap("task.png"))
-        self.warning = \
-            self.markerDefine(UI.PixmapCache.getPixmap("warning.png"))
+        self.breakpoint = self.markerDefine(
+            UI.PixmapCache.getPixmap("break.png"))
+        self.cbreakpoint = self.markerDefine(
+            UI.PixmapCache.getPixmap("cBreak.png"))
+        self.tbreakpoint = self.markerDefine(
+            UI.PixmapCache.getPixmap("tBreak.png"))
+        self.tcbreakpoint = self.markerDefine(
+            UI.PixmapCache.getPixmap("tCBreak.png"))
+        self.dbreakpoint = self.markerDefine(
+            UI.PixmapCache.getPixmap("breakDisabled.png"))
+        self.bookmark = self.markerDefine(
+            UI.PixmapCache.getPixmap("bookmark16.png"))
+        self.syntaxerror = self.markerDefine(
+            UI.PixmapCache.getPixmap("syntaxError.png"))
+        self.notcovered = self.markerDefine(
+            UI.PixmapCache.getPixmap("notcovered.png"))
+        self.taskmarker = self.markerDefine(
+            UI.PixmapCache.getPixmap("task.png"))
+        self.warning = self.markerDefine(
+            UI.PixmapCache.getPixmap("warning.png"))
         
         # define the line markers
-        self.currentline = self.markerDefine(QsciScintilla.Background)
-        self.errorline = self.markerDefine(QsciScintilla.Background)
-        self.__setLineMarkerColours()
+        self.currentline = self.markerDefine(
+            UI.PixmapCache.getPixmap("currentLineMarker.png"))
+        self.errorline = self.markerDefine(
+            UI.PixmapCache.getPixmap("errorLineMarker.png"))
         
         self.breakpointMask = (1 << self.breakpoint) | \
                               (1 << self.cbreakpoint) | \
@@ -4007,9 +4008,6 @@
         if QSCINTILLA_VERSION() >= 0x020301:
             self.__unifiedMargins = Preferences.getEditor("UnifiedMargins")
         
-        # set the line marker colours
-        self.__setLineMarkerColours()
-        
         # set the text display
         self.__setTextDisplay()
         
@@ -4069,19 +4067,6 @@
         
         self.settingsRead.emit()
     
-    def __setLineMarkerColours(self):
-        """
-        Private method to set the line marker colours.
-        """
-        self.setMarkerForegroundColor(
-            Preferences.getEditorColour("CurrentMarker"), self.currentline)
-        self.setMarkerBackgroundColor(
-            Preferences.getEditorColour("CurrentMarker"), self.currentline)
-        self.setMarkerForegroundColor(
-            Preferences.getEditorColour("ErrorMarker"), self.errorline)
-        self.setMarkerBackgroundColor(
-            Preferences.getEditorColour("ErrorMarker"), self.errorline)
-        
     def __setMarginsDisplay(self):
         """
         Private method to configure margins 0 and 2.
@@ -4139,9 +4124,7 @@
                            (1 << self.cbreakpoint) | \
                            (1 << self.tbreakpoint) | \
                            (1 << self.tcbreakpoint) | \
-                           (1 << self.dbreakpoint) | \
-                           (1 << self.currentline) | \
-                           (1 << self.errorline)
+                           (1 << self.dbreakpoint)
             self.setMarginWidth(self.__bpMargin, 16)
             self.setMarginSensitivity(self.__bpMargin, True)
             self.setMarginMarkerMask(self.__bpMargin, marginBpMask)
@@ -4151,7 +4134,9 @@
                               (1 << self.taskmarker) | \
                               (1 << self.warning) | \
                               (1 << self.__changeMarkerUnsaved) | \
-                              (1 << self.__changeMarkerSaved)
+                              (1 << self.__changeMarkerSaved) | \
+                              (1 << self.currentline) | \
+                              (1 << self.errorline)
             self.setMarginWidth(self.__indicMargin, 16)
             self.setMarginSensitivity(self.__indicMargin, True)
             self.setMarginMarkerMask(self.__indicMargin, marginIndicMask)
--- a/QScintilla/Shell.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/QScintilla/Shell.py	Sat May 06 13:43:21 2017 +0200
@@ -47,7 +47,7 @@
         """
         super(ShellAssembly, self).__init__(parent)
         
-        self.__shell = Shell(dbs, vm, self)
+        self.__shell = Shell(dbs, vm, False, self)
         
         from UI.SearchWidget import SearchWidget
         self.__searchWidget = SearchWidget(self.__shell, self, horizontal)
@@ -95,12 +95,14 @@
     """
     searchStringFound = pyqtSignal(bool)
     
-    def __init__(self, dbs, vm, parent=None):
+    def __init__(self, dbs, vm, windowedVariant, parent=None):
         """
         Constructor
         
         @param dbs reference to the debug server object
         @param vm reference to the viewmanager object
+        @param windowedVariant flag indicating the shell window variant
+            (boolean)
         @param parent parent widget (QWidget)
         """
         super(Shell, self).__init__(parent)
@@ -109,47 +111,75 @@
         self.vm = vm
         self.__mainWindow = parent
         self.__lastSearch = ()
+        self.__windowed = windowedVariant
         
         self.linesepRegExp = r"\r\n|\n|\r"
         
-        self.passive = Preferences.getDebugger("PassiveDbgEnabled")
+        self.passive = ((not self.__windowed) and
+                        Preferences.getDebugger("PassiveDbgEnabled"))
         if self.passive:
             self.setWindowTitle(self.tr('Shell - Passive'))
         else:
             self.setWindowTitle(self.tr('Shell'))
         
-        self.setWhatsThis(self.tr(
-            """<b>The Shell Window</b>"""
-            """<p>This is simply an interpreter running in a window. The"""
-            """ interpreter is the one that is used to run the program"""
-            """ being debugged. This means that you can execute any command"""
-            """ while the program being debugged is running.</p>"""
-            """<p>You can use the cursor keys while entering commands. There"""
-            """ is also a history of commands that can be recalled using the"""
-            """ up and down cursor keys. Pressing the up or down key after"""
-            """ some text has been entered will start an incremental search."""
-            """</p>"""
-            """<p>The shell has some special commands. 'reset' kills the"""
-            """ shell and starts a new one. 'clear' clears the display of"""
-            """ the shell window. 'start' is used to switch the shell"""
-            """ language and must be followed by a supported language."""
-            """ Supported languages are listed by the 'languages' command."""
-            """ These commands (except 'languages') are available through"""
-            """ the context menu as well.</p>"""
-            """<p>Pressing the Tab key after some text has been entered will"""
-            """ show a list of possible commandline completions. The"""
-            """ relevant entry may be selected from this list. If only one"""
-            """ entry is available, this will inserted automatically.</p>"""
-            """<p>In passive debugging mode the shell is only available"""
-            """ after the program to be debugged has connected to the IDE"""
-            """ until it has finished. This is indicated by a different"""
-            """ prompt and by an indication in the window caption.</p>"""
-        ))
+        if self.__windowed:
+            self.setWhatsThis(self.tr(
+                """<b>The Shell Window</b>"""
+                """<p>You can use the cursor keys while entering commands."""
+                """ There is also a history of commands that can be recalled"""
+                """ using the up and down cursor keys. Pressing the up or"""
+                """ down key after some text has been entered will start an"""
+                """ incremental search.</p>"""
+                """<p>The shell has some special commands. 'reset' kills the"""
+                """ shell and starts a new one. 'clear' clears the display"""
+                """ of the shell window. 'start' is used to switch the shell"""
+                """ language and must be followed by a supported language."""
+                """ Supported languages are listed by the 'languages'"""
+                """ command. 'quit' is used to exit the application.These"""
+                """ commands (except 'languages') are available through the"""
+                """ window menus as well.</p>"""
+                """<p>Pressing the Tab key after some text has been entered"""
+                """ will show a list of possible completions. The relevant"""
+                """ entry may be selected from this list. If only one entry"""
+                """ is available, this will be inserted automatically.</p>"""
+            ))
+        else:
+            self.setWhatsThis(self.tr(
+                """<b>The Shell Window</b>"""
+                """<p>This is simply an interpreter running in a window. The"""
+                """ interpreter is the one that is used to run the program"""
+                """ being debugged. This means that you can execute any"""
+                """ command while the program being debugged is running.</p>"""
+                """<p>You can use the cursor keys while entering commands."""
+                """ There is also a history of commands that can be recalled"""
+                """ using the up and down cursor keys. Pressing the up or"""
+                """ down key after some text has been entered will start an"""
+                """ incremental search.</p>"""
+                """<p>The shell has some special commands. 'reset' kills the"""
+                """ shell and starts a new one. 'clear' clears the display"""
+                """ of the shell window. 'start' is used to switch the shell"""
+                """ language and must be followed by a supported language."""
+                """ Supported languages are listed by the 'languages'"""
+                """ command. These commands (except 'languages') are"""
+                """ available through the context menu as well.</p>"""
+                """<p>Pressing the Tab key after some text has been entered"""
+                """ will show a list of possible completions. The relevant"""
+                """ entry may be selected from this list. If only one entry"""
+                """ is available, this will be inserted automatically.</p>"""
+                """<p>In passive debugging mode the shell is only available"""
+                """ after the program to be debugged has connected to the"""
+                """ IDE until it has finished. This is indicated by a"""
+                """ different prompt and by an indication in the window"""
+                """ caption.</p>"""
+            ))
         
         self.userListActivated.connect(self.__completionListSelected)
         self.linesChanged.connect(self.__resizeLinenoMargin)
         
-        self.__showStdOutErr = Preferences.getShell("ShowStdOutErr")
+        if self.__windowed:
+            self.__showStdOutErr = True
+        else:
+            self.__showStdOutErr = Preferences.getShell("ShowStdOutErr")
         if self.__showStdOutErr:
             dbs.clientProcessStdout.connect(self.__writeStdOut)
             dbs.clientProcessStderr.connect(self.__writeStdErr)
@@ -206,34 +236,35 @@
         if self.passive:
             self.__getBanner()
         
-        # Create a little language context menu
-        self.lmenu = QMenu(self.tr('Start'))
-        self.lmenu.aboutToShow.connect(self.__showLanguageMenu)
-        self.lmenu.triggered.connect(self.__startDebugClient)
-        
-        # Create the history context menu
-        self.hmenu = QMenu(self.tr('History'))
-        self.hmenu.addAction(self.tr('Select entry'), self.__selectHistory)
-        self.hmenu.addAction(self.tr('Show'), self.__showHistory)
-        self.hmenu.addAction(self.tr('Clear'), self.__clearHistory)
-        
-        # Create a little context menu
-        self.menu = QMenu(self)
-        self.menu.addAction(self.tr('Cut'), self.cut)
-        self.menu.addAction(self.tr('Copy'), self.copy)
-        self.menu.addAction(self.tr('Paste'), self.paste)
-        self.menu.addMenu(self.hmenu)
-        self.menu.addSeparator()
-        self.menu.addAction(self.tr('Find'), self.__find)
-        self.menu.addSeparator()
-        self.menu.addAction(self.tr('Clear'), self.clear)
-        self.menu.addAction(self.tr('Reset'), self.__reset)
-        self.menu.addAction(
-            self.tr('Reset and Clear'), self.__resetAndClear)
-        self.menu.addSeparator()
-        self.menu.addMenu(self.lmenu)
-        self.menu.addSeparator()
-        self.menu.addAction(self.tr("Configure..."), self.__configure)
+        if not self.__windowed:
+            # Create a little language context menu
+            self.lmenu = QMenu(self.tr('Start'))
+            self.lmenu.aboutToShow.connect(self.__showLanguageMenu)
+            self.lmenu.triggered.connect(self.__startDebugClient)
+            
+            # Create the history context menu
+            self.hmenu = QMenu(self.tr('History'))
+            self.hmenu.addAction(self.tr('Select entry'), self.selectHistory)
+            self.hmenu.addAction(self.tr('Show'), self.showHistory)
+            self.hmenu.addAction(self.tr('Clear'), self.clearHistory)
+            
+            # Create a little context menu
+            self.menu = QMenu(self)
+            self.menu.addAction(self.tr('Cut'), self.cut)
+            self.menu.addAction(self.tr('Copy'), self.copy)
+            self.menu.addAction(self.tr('Paste'), self.paste)
+            self.menu.addMenu(self.hmenu)
+            self.menu.addSeparator()
+            self.menu.addAction(self.tr('Find'), self.__find)
+            self.menu.addSeparator()
+            self.menu.addAction(self.tr('Clear'), self.clear)
+            self.menu.addAction(self.tr('Reset'), self.__reset)
+            self.menu.addAction(
+                self.tr('Reset and Clear'), self.__resetAndClear)
+            self.menu.addSeparator()
+            self.menu.addMenu(self.lmenu)
+            self.menu.addSeparator()
+            self.menu.addAction(self.tr("Configure..."), self.__configure)
         
         self.__bindLexer()
         self.__setTextDisplay()
@@ -266,8 +297,10 @@
             QsciScintilla.SCI_WORDRIGHT: self.__QScintillaWordRight,
             QsciScintilla.SCI_VCHOME: self.__QScintillaVCHome,
             QsciScintilla.SCI_LINEEND: self.__QScintillaLineEnd,
-            QsciScintilla.SCI_LINEUP: self.__QScintillaLineUp,
-            QsciScintilla.SCI_LINEDOWN: self.__QScintillaLineDown,
+            QsciScintilla.SCI_LINEUP: self.__QScintillaCommand,
+            QsciScintilla.SCI_LINEDOWN: self.__QScintillaCommand,
+            QsciScintilla.SCI_LINESCROLLUP: self.__QScintillaHistoryUp,
+            QsciScintilla.SCI_LINESCROLLDOWN: self.__QScintillaHistoryDown,
             
             QsciScintilla.SCI_PAGEUP: self.__QScintillaAutoCompletionCommand,
             QsciScintilla.SCI_PAGEDOWN: self.__QScintillaAutoCompletionCommand,
@@ -577,9 +610,9 @@
         else:
             return []
         
-    def __clearHistory(self):
+    def clearHistory(self):
         """
-        Private slot to clear the current history.
+        Public slot to clear the current history.
         """
         if self.clientType:
             self.historyLists[self.clientType] = []
@@ -588,9 +621,9 @@
             self.history = []
         self.histidx = -1
         
-    def __selectHistory(self):
+    def selectHistory(self):
         """
-        Private slot to select a history entry to execute.
+        Public slot to select a history entry to execute.
         """
         cmd, ok = QInputDialog.getItem(
             self,
@@ -602,9 +635,9 @@
         if ok:
             self.__insertHistory(cmd)
         
-    def __showHistory(self):
+    def showHistory(self):
         """
-        Private slot to show the shell history dialog.
+        Public slot to show the shell history dialog.
         """
         from .ShellHistoryDialog import ShellHistoryDialog
         dlg = ShellHistoryDialog(self.history, self.vm, self)
@@ -623,7 +656,7 @@
             self.saveHistory(clientType)
         Preferences.Prefs.settings.endGroup()
         
-        self.__clearHistory()
+        self.clearHistory()
         
     def getClientType(self):
         """
@@ -674,6 +707,9 @@
         Private method to write the prompt.
         """
         self.__write(self.inContinue and sys.ps2 or sys.ps1)
+        # little trick to get the cursor position registered within QScintilla
+        self.SendScintilla(QsciScintilla.SCI_CHARLEFT)
+        self.SendScintilla(QsciScintilla.SCI_CHARRIGHT)
         
     def __clientStatement(self, more):
         """
@@ -696,7 +732,8 @@
         """
         self .__clientError()
         
-        if Preferences.getDebugger("ShowExceptionInShell"):
+        if not self.__windowed and \
+           Preferences.getDebugger("ShowExceptionInShell"):
             if exceptionType:
                 if stackTrace:
                     self.__write(
@@ -729,7 +766,8 @@
         """
         self .__clientError()
         
-        if Preferences.getDebugger("ShowExceptionInShell"):
+        if not self.__windowed and \
+           Preferences.getDebugger("ShowExceptionInShell"):
             if message is None:
                 self.__write(self.tr("Unspecified syntax error.\n"))
             else:
@@ -1058,6 +1096,14 @@
         else:
             ev.ignore()
         
+    def __QScintillaCommand(self, cmd):
+        """
+        Private method to send the command to QScintilla.
+        
+        @param cmd QScintilla command
+        """
+        self.SendScintilla(cmd)
+        
     def __QScintillaTab(self, cmd):
         """
         Private method to handle the Tab key.
@@ -1177,6 +1223,22 @@
                     buf = buf.replace(sys.ps2, "")
                 self.insert('\n')
                 self.__executeCommand(buf)
+        else:
+            txt = ""
+            line, col = self.getCursorPosition()
+            if self.hasSelectedText():
+                lineFrom, indexFrom, lineTo, indexTo = self.getSelection()
+                if line == lineFrom:
+                    txt = self.text(line)[indexFrom:].rstrip()
+                elif line == lineTo:
+                    txt = self.text(line)[:indexTo]
+            else:
+                txt = self.text(line)[col:].rstrip()
+            
+            if txt:
+                line, col = self.__getEndPos()
+                self.setCursorPosition(line, col)
+                self.insert(txt)
         
     def __QScintillaLeftCommand(self, method, allLinesAllowed=False):
         """
@@ -1196,6 +1258,8 @@
                     method()
             elif col > 0:
                 method()
+        else:
+            method()
         
     def __QScintillaCharLeft(self):
         """
@@ -1217,6 +1281,8 @@
         """
         if self.__isCursorOnLastLine():
             method()
+        else:
+            method()
         
     def __QScintillaCharRight(self):
         """
@@ -1271,73 +1337,67 @@
         elif self.__isCursorOnLastLine():
             self.moveCursorToEOL()
         
-    def __QScintillaLineUp(self, cmd):
+    def __QScintillaHistoryUp(self, cmd):
         """
-        Private method to handle the Up key.
+        Private method to handle the Ctrl+Up key.
         
         @param cmd QScintilla command
         """
-        if self.isListActive():
-            self.SendScintilla(cmd)
+        line, col = self.__getEndPos()
+        buf = self.text(line)
+        if buf.startswith(sys.ps1):
+            buf = buf.replace(sys.ps1, "")
+        if buf.startswith(sys.ps2):
+            buf = buf.replace(sys.ps2, "")
+        if buf and self.incrementalSearchActive:
+            if self.incrementalSearchString:
+                idx = self.__rsearchHistory(self.incrementalSearchString,
+                                            self.histidx)
+                if idx >= 0:
+                    self.histidx = idx
+                    self.__useHistory()
+            else:
+                idx = self.__rsearchHistory(buf)
+                if idx >= 0:
+                    self.histidx = idx
+                    self.incrementalSearchString = buf
+                    self.__useHistory()
         else:
-            line, col = self.__getEndPos()
-            buf = self.text(line)
-            if buf.startswith(sys.ps1):
-                buf = buf.replace(sys.ps1, "")
-            if buf.startswith(sys.ps2):
-                buf = buf.replace(sys.ps2, "")
-            if buf and self.incrementalSearchActive:
-                if self.incrementalSearchString:
-                    idx = self.__rsearchHistory(self.incrementalSearchString,
-                                                self.histidx)
-                    if idx >= 0:
-                        self.histidx = idx
-                        self.__useHistory()
-                else:
-                    idx = self.__rsearchHistory(buf)
-                    if idx >= 0:
-                        self.histidx = idx
-                        self.incrementalSearchString = buf
-                        self.__useHistory()
-            else:
-                if self.histidx < 0:
-                    self.histidx = len(self.history)
-                if self.histidx > 0:
-                    self.histidx = self.histidx - 1
-                    self.__useHistory()
+            if self.histidx < 0:
+                self.histidx = len(self.history)
+            if self.histidx > 0:
+                self.histidx = self.histidx - 1
+                self.__useHistory()
         
-    def __QScintillaLineDown(self, cmd):
+    def __QScintillaHistoryDown(self, cmd):
         """
-        Private method to handle the Down key.
+        Private method to handle the Ctrl+Down key.
         
         @param cmd QScintilla command
         """
-        if self.isListActive():
-            self.SendScintilla(cmd)
+        line, col = self.__getEndPos()
+        buf = self.text(line)
+        if buf.startswith(sys.ps1):
+            buf = buf.replace(sys.ps1, "")
+        if buf.startswith(sys.ps2):
+            buf = buf.replace(sys.ps2, "")
+        if buf and self.incrementalSearchActive:
+            if self.incrementalSearchString:
+                idx = self.__searchHistory(
+                    self.incrementalSearchString, self.histidx)
+                if idx >= 0:
+                    self.histidx = idx
+                    self.__useHistory()
+            else:
+                idx = self.__searchHistory(buf)
+                if idx >= 0:
+                    self.histidx = idx
+                    self.incrementalSearchString = buf
+                    self.__useHistory()
         else:
-            line, col = self.__getEndPos()
-            buf = self.text(line)
-            if buf.startswith(sys.ps1):
-                buf = buf.replace(sys.ps1, "")
-            if buf.startswith(sys.ps2):
-                buf = buf.replace(sys.ps2, "")
-            if buf and self.incrementalSearchActive:
-                if self.incrementalSearchString:
-                    idx = self.__searchHistory(
-                        self.incrementalSearchString, self.histidx)
-                    if idx >= 0:
-                        self.histidx = idx
-                        self.__useHistory()
-                else:
-                    idx = self.__searchHistory(buf)
-                    if idx >= 0:
-                        self.histidx = idx
-                        self.incrementalSearchString = buf
-                        self.__useHistory()
-            else:
-                if self.histidx >= 0 and self.histidx < len(self.history):
-                    self.histidx += 1
-                    self.__useHistory()
+            if self.histidx >= 0 and self.histidx < len(self.history):
+                self.histidx += 1
+                self.__useHistory()
         
     def __QScintillaCharLeftExtend(self):
         """
@@ -1436,6 +1496,10 @@
                     return
                 else:
                     cmd = ''
+            elif cmd in ["quit", "quit()"] and self.__windowed:
+                # call main window quit()
+                self.vm.quit()
+                return
             
             self.dbs.remoteStatement(cmd)
             while self.inCommandExecution:
@@ -1534,8 +1598,9 @@
         
         @param ev context menu event (QContextMenuEvent)
         """
-        self.menu.popup(ev.globalPos())
-        ev.accept()
+        if not self.__windowed:
+            self.menu.popup(ev.globalPos())
+            ev.accept()
         
     def clear(self):
         """
@@ -1680,7 +1745,7 @@
         
         @param event the drop event (QDropEvent)
         """
-        if event.mimeData().hasUrls():
+        if event.mimeData().hasUrls() and not self.__windowed:
             for url in event.mimeData().urls():
                 fname = url.toLocalFile()
                 if fname:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QScintilla/ShellWindow.py	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,1237 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a stand alone shell window.
+"""
+
+from __future__ import unicode_literals
+
+import sys
+import os
+
+from PyQt5.QtCore import Qt, QCoreApplication, QPoint, QSize, QSignalMapper, \
+    QProcess
+from PyQt5.QtGui import QKeySequence
+from PyQt5.QtWidgets import QWidget, QVBoxLayout, QApplication, QAction, \
+    QWhatsThis, QDialog
+from PyQt5.Qsci import QsciScintilla
+
+from E5Gui.E5MainWindow import E5MainWindow
+from E5Gui.E5Action import E5Action, createActionGroup
+from E5Gui.E5Application import e5App
+from E5Gui.E5ZoomWidget import E5ZoomWidget
+from E5Gui import E5MessageBox
+
+import UI.Config
+import UI.PixmapCache
+import Preferences
+
+from Globals import isMacPlatform
+
+from .Shell import Shell
+from .APIsManager import APIsManager
+
+from Debugger.DebugServer import DebugServer
+from UI.SearchWidget import SearchWidget
+
+from eric6config import getConfig
+
+
+class ShellWindow(E5MainWindow):
+    """
+    Class implementing a stand alone shell window.
+    """
+    def __init__(self, parent=None, name=None):
+        """
+        Constructor
+        
+        @param parent reference to the parent widget
+        @type QWidget
+        @param name object name of the window
+        @type str
+        """
+        super(ShellWindow, self).__init__(parent)
+        if name is not None:
+            self.setObjectName(name)
+        self.setWindowIcon(UI.PixmapCache.getIcon("shell.png"))
+        
+        self.setStyle(Preferences.getUI("Style"),
+                      Preferences.getUI("StyleSheet"))
+        
+        # initialize the APIs manager
+        self.__apisManager = APIsManager(parent=self)
+        
+        # initialize the debug server and shell widgets
+        self.__debugServer = DebugServer(preventPassiveDebugging=True)
+        self.__shell = Shell(self.__debugServer, self, True, self)
+        self.__searchWidget = SearchWidget(self.__shell, self, showLine=True)
+        
+        centralWidget = QWidget()
+        layout = QVBoxLayout()
+        layout.setContentsMargins(1, 1, 1, 1)
+        layout.addWidget(self.__shell)
+        layout.addWidget(self.__searchWidget)
+        centralWidget.setLayout(layout)
+        self.setCentralWidget(centralWidget)
+        self.__searchWidget.hide()
+        
+        self.__searchWidget.searchNext.connect(self.__shell.searchNext)
+        self.__searchWidget.searchPrevious.connect(self.__shell.searchPrev)
+        self.__shell.searchStringFound.connect(
+            self.__searchWidget.searchStringFound)
+        
+        self.__shell.zoomValueChanged.connect(self.__zoomValueChanged)
+        
+        self.__createActions()
+        self.__createMenus()
+        self.__createToolBars()
+        self.__createStatusBar()
+        
+        self.__readSettings()
+        
+        # now start the debug client
+        self.__debugServer.startClient(False)
+        
+        # set the keyboard input interval
+        interval = Preferences.getUI("KeyboardInputInterval")
+        if interval > 0:
+            QApplication.setKeyboardInputInterval(interval)
+
+    def closeEvent(self, event):
+        """
+        Protected method to handle the close event.
+        
+        @param event close event
+        @type QCloseEvent
+        """
+        self.__writeSettings()
+        self.__debugServer.shutdownServer()
+        self.__shell.closeShell()
+        Preferences.syncPreferences()
+        
+        event.accept()
+    
+    ##################################################################
+    ## Below are API handling methods
+    ##################################################################
+    
+    def getAPIsManager(self):
+        """
+        Public method to get a reference to the APIs manager.
+
+        @return the APIs manager object (eric6.QScintilla.APIsManager)
+        """
+        return self.__apisManager
+    
+    ##################################################################
+    ## Below are action related methods
+    ##################################################################
+    
+    def __readShortcut(self, act, category):
+        """
+        Private function to read a single keyboard shortcut from the settings.
+        
+        @param act reference to the action object
+        @type E5Action
+        @param category category the action belongs to
+        @type str
+        """
+        if act.objectName():
+            accel = Preferences.Prefs.settings.value(
+                "Shortcuts/{0}/{1}/Accel".format(category, act.objectName()))
+            if accel is not None:
+                act.setShortcut(QKeySequence(accel))
+            accel = Preferences.Prefs.settings.value(
+                "Shortcuts/{0}/{1}/AltAccel".format(
+                    category, act.objectName()))
+            if accel is not None:
+                act.setAlternateShortcut(QKeySequence(accel), removeEmpty=True)
+    
+    def __createActions(self):
+        """
+        Private method to create the actions.
+        """
+        self.fileActions = []
+        self.editActions = []
+        self.searchActions = []
+        self.viewActions = []
+        self.helpActions = []
+        
+        self.viewActGrp = createActionGroup(self)
+        
+        self.__createFileActions()
+        self.__createEditActions()
+        self.__createSearchActions()
+        self.__createViewActions()
+        self.__createHelpActions()
+        self.__createHistoryActions()
+        
+        # read the keyboard shortcuts and make them identical to the main
+        # eric6 shortcuts
+        for act in self.helpActions:
+            self.__readShortcut(act, "General")
+        for act in self.editActions:
+            self.__readShortcut(act, "Edit")
+        for act in self.fileActions:
+            self.__readShortcut(act, "View")
+        for act in self.searchActions:
+            self.__readShortcut(act, "Search")
+    
+    def __createFileActions(self):
+        """
+        Private method defining the user interface actions for the file
+        commands.
+        """
+        self.exitAct = E5Action(
+            self.tr('Quit'),
+            UI.PixmapCache.getIcon("exit.png"),
+            self.tr('&Quit'),
+            QKeySequence(self.tr("Ctrl+Q", "File|Quit")),
+            0, self, 'quit')
+        self.exitAct.setStatusTip(self.tr('Quit the Shell'))
+        self.exitAct.setWhatsThis(self.tr(
+            """<b>Quit the Shell</b>"""
+            """<p>This quits the Shell window.</p>"""
+        ))
+        self.exitAct.triggered.connect(self.quit)
+        self.exitAct.setMenuRole(QAction.QuitRole)
+        self.fileActions.append(self.exitAct)
+
+        self.newWindowAct = E5Action(
+            self.tr('New Window'),
+            UI.PixmapCache.getIcon("newWindow.png"),
+            self.tr('New &Window'),
+            QKeySequence(self.tr("Ctrl+Shift+N", "File|New Window")),
+            0, self, 'new_window')
+        self.newWindowAct.setStatusTip(self.tr(
+            'Open a new Shell window'))
+        self.newWindowAct.setWhatsThis(self.tr(
+            """<b>New Window</b>"""
+            """<p>This opens a new instance of the Shell window.</p>"""
+        ))
+        self.newWindowAct.triggered.connect(self.__newWindow)
+        self.fileActions.append(self.newWindowAct)
+
+        self.restartAct = E5Action(
+            self.tr('Restart'),
+            UI.PixmapCache.getIcon("restart.png"),
+            self.tr('Restart'),
+            0, 0, self, 'shell_restart')
+        self.restartAct.setStatusTip(self.tr(
+            'Restart the shell'))
+        self.restartAct.setWhatsThis(self.tr(
+            """<b>Restart</b>"""
+            """<p>Restart the shell for the currently selected language.</p>"""
+        ))
+        self.restartAct.triggered.connect(self.__doRestart)
+        self.fileActions.append(self.restartAct)
+
+        self.clearRestartAct = E5Action(
+            self.tr('Restart and Clear'),
+            UI.PixmapCache.getIcon("restartDelete.png"),
+            self.tr('Restart and Clear'),
+            Qt.Key_F4, 0, self, 'shell_clear_restart')
+        self.clearRestartAct.setStatusTip(self.tr(
+            'Clear the window and restart the shell'))
+        self.clearRestartAct.setWhatsThis(self.tr(
+            """<b>Restart and Clear</b>"""
+            """<p>Clear the shell window and restart the shell for the"""
+            """ currently selected language.</p>"""
+        ))
+        self.clearRestartAct.triggered.connect(self.__doClearRestart)
+        self.fileActions.append(self.clearRestartAct)
+    
+    def __createEditActions(self):
+        """
+        Private method defining the user interface actions for the edit
+        commands.
+        """
+        self.editActGrp = createActionGroup(self)
+        self.copyActGrp = createActionGroup(self.editActGrp)
+        
+        self.cutAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Cut'),
+            UI.PixmapCache.getIcon("editCut.png"),
+            QCoreApplication.translate('ViewManager', 'Cu&t'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+X", "Edit|Cut")),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Shift+Del", "Edit|Cut")),
+            self.copyActGrp, 'vm_edit_cut')
+        self.cutAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Cut the selection'))
+        self.cutAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Cut</b>"""
+            """<p>Cut the selected text of the current editor to the"""
+            """ clipboard.</p>"""
+        ))
+        self.cutAct.triggered.connect(self.__shell.cut)
+        self.editActions.append(self.cutAct)
+        
+        self.copyAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Copy'),
+            UI.PixmapCache.getIcon("editCopy.png"),
+            QCoreApplication.translate('ViewManager', '&Copy'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+C", "Edit|Copy")),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+Ins", "Edit|Copy")),
+            self.copyActGrp, 'vm_edit_copy')
+        self.copyAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Copy the selection'))
+        self.copyAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Copy</b>"""
+            """<p>Copy the selected text of the current editor to the"""
+            """ clipboard.</p>"""
+        ))
+        self.copyAct.triggered.connect(self.__shell.copy)
+        self.editActions.append(self.copyAct)
+        
+        self.pasteAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Paste'),
+            UI.PixmapCache.getIcon("editPaste.png"),
+            QCoreApplication.translate('ViewManager', '&Paste'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+V", "Edit|Paste")),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Shift+Ins", "Edit|Paste")),
+            self.copyActGrp, 'vm_edit_paste')
+        self.pasteAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Paste the last cut/copied text'))
+        self.pasteAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Paste</b>"""
+            """<p>Paste the last cut/copied text from the clipboard to"""
+            """ the current editor.</p>"""
+        ))
+        self.pasteAct.triggered.connect(self.__shell.paste)
+        self.editActions.append(self.pasteAct)
+        
+        self.clearAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Clear'),
+            UI.PixmapCache.getIcon("editDelete.png"),
+            QCoreApplication.translate('ViewManager', 'Clear'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Alt+Shift+C", "Edit|Clear")),
+            0,
+            self.copyActGrp, 'vm_edit_clear')
+        self.clearAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Clear all text'))
+        self.clearAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Clear</b>"""
+            """<p>Delete all text of the current editor.</p>"""
+        ))
+        self.clearAct.triggered.connect(self.__shell.clear)
+        self.editActions.append(self.clearAct)
+        
+        self.cutAct.setEnabled(False)
+        self.copyAct.setEnabled(False)
+        self.__shell.copyAvailable.connect(self.cutAct.setEnabled)
+        self.__shell.copyAvailable.connect(self.copyAct.setEnabled)
+        
+        ####################################################################
+        ## Below follow the actions for QScintilla standard commands.
+        ####################################################################
+        
+        self.esm = QSignalMapper(self)
+        self.esm.mapped[int].connect(self.__shell.editorCommand)
+        
+        self.editorActGrp = createActionGroup(self)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Delete current line'),
+            QCoreApplication.translate('ViewManager', 'Delete current line'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', 'Ctrl+Shift+L')),
+            0,
+            self.editorActGrp, 'vm_edit_delete_current_line')
+        self.esm.setMapping(act, QsciScintilla.SCI_LINEDELETE)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Indent one level'),
+            QCoreApplication.translate('ViewManager', 'Indent one level'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Tab')), 0,
+            self.editorActGrp, 'vm_edit_indent_one_level')
+        self.esm.setMapping(act, QsciScintilla.SCI_TAB)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Insert new line'),
+            QCoreApplication.translate('ViewManager', 'Insert new line'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Return')),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Enter')),
+            self.editorActGrp, 'vm_edit_insert_line')
+        self.esm.setMapping(act, QsciScintilla.SCI_NEWLINE)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager',
+                                       'Delete previous character'),
+            QCoreApplication.translate('ViewManager',
+                                       'Delete previous character'),
+            QKeySequence(QCoreApplication.translate('ViewManager',
+                                                    'Backspace')),
+            0, self.editorActGrp, 'vm_edit_delete_previous_char')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+H')))
+        else:
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Shift+Backspace')))
+        self.esm.setMapping(act, QsciScintilla.SCI_DELETEBACK)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager',
+                                       'Delete current character'),
+            QCoreApplication.translate('ViewManager',
+                                       'Delete current character'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Del')),
+            0, self.editorActGrp, 'vm_edit_delete_current_char')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+D')))
+        self.esm.setMapping(act, QsciScintilla.SCI_CLEAR)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Delete word to left'),
+            QCoreApplication.translate('ViewManager', 'Delete word to left'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', 'Ctrl+Backspace')),
+            0,
+            self.editorActGrp, 'vm_edit_delete_word_left')
+        self.esm.setMapping(act, QsciScintilla.SCI_DELWORDLEFT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Delete word to right'),
+            QCoreApplication.translate('ViewManager', 'Delete word to right'),
+            QKeySequence(QCoreApplication.translate('ViewManager',
+                                                    'Ctrl+Del')),
+            0, self.editorActGrp, 'vm_edit_delete_word_right')
+        self.esm.setMapping(act, QsciScintilla.SCI_DELWORDRIGHT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Delete line to left'),
+            QCoreApplication.translate('ViewManager', 'Delete line to left'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', 'Ctrl+Shift+Backspace')),
+            0,
+            self.editorActGrp, 'vm_edit_delete_line_left')
+        self.esm.setMapping(act, QsciScintilla.SCI_DELLINELEFT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Delete line to right'),
+            QCoreApplication.translate('ViewManager', 'Delete line to right'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_delete_line_right')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+K')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Ctrl+Shift+Del')))
+        self.esm.setMapping(act, QsciScintilla.SCI_DELLINERIGHT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager',
+                                       'Move left one character'),
+            QCoreApplication.translate('ViewManager',
+                                       'Move left one character'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Left')), 0,
+            self.editorActGrp, 'vm_edit_move_left_char')
+        self.esm.setMapping(act, QsciScintilla.SCI_CHARLEFT)
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+B')))
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager',
+                                       'Move right one character'),
+            QCoreApplication.translate('ViewManager',
+                                       'Move right one character'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Right')),
+            0, self.editorActGrp, 'vm_edit_move_right_char')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+F')))
+        self.esm.setMapping(act, QsciScintilla.SCI_CHARRIGHT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move left one word'),
+            QCoreApplication.translate('ViewManager', 'Move left one word'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_move_left_word')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Alt+Left')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Ctrl+Left')))
+        self.esm.setMapping(act, QsciScintilla.SCI_WORDLEFT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move right one word'),
+            QCoreApplication.translate('ViewManager', 'Move right one word'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_move_right_word')
+        if not isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Ctrl+Right')))
+        self.esm.setMapping(act, QsciScintilla.SCI_WORDRIGHT)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager',
+                'Move to first visible character in document line'),
+            QCoreApplication.translate(
+                'ViewManager',
+                'Move to first visible character in document line'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_move_first_visible_char')
+        if not isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Home')))
+        self.esm.setMapping(act, QsciScintilla.SCI_VCHOME)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Move to end of document line'),
+            QCoreApplication.translate(
+                'ViewManager', 'Move to end of document line'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_move_end_line')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+E')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'End')))
+        self.esm.setMapping(act, QsciScintilla.SCI_LINEEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move up one line'),
+            QCoreApplication.translate('ViewManager', 'Move up one line'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Up')), 0,
+            self.editorActGrp, 'vm_edit_move_up_line')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+P')))
+        self.esm.setMapping(act, QsciScintilla.SCI_LINEUP)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move down one line'),
+            QCoreApplication.translate('ViewManager', 'Move down one line'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Down')), 0,
+            self.editorActGrp, 'vm_edit_move_down_line')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+N')))
+        self.esm.setMapping(act, QsciScintilla.SCI_LINEDOWN)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            self.tr('Move forward one history entry'),
+            self.tr('Move forward one history entry'),
+            QKeySequence(QCoreApplication.translate('ViewManager',
+                                                    'Ctrl+Down')),
+            0, self.editorActGrp, 'vm_edit_scroll_down_line')
+        self.esm.setMapping(act, QsciScintilla.SCI_LINESCROLLDOWN)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            self.tr('Move back one history entry'),
+            self.tr('Move back one history entry'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Ctrl+Up')),
+            0, self.editorActGrp, 'vm_edit_scroll_up_line')
+        self.esm.setMapping(act, QsciScintilla.SCI_LINESCROLLUP)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move up one page'),
+            QCoreApplication.translate('ViewManager', 'Move up one page'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'PgUp')), 0,
+            self.editorActGrp, 'vm_edit_move_up_page')
+        self.esm.setMapping(act, QsciScintilla.SCI_PAGEUP)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Move down one page'),
+            QCoreApplication.translate('ViewManager', 'Move down one page'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'PgDown')),
+            0, self.editorActGrp, 'vm_edit_move_down_page')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+V')))
+        self.esm.setMapping(act, QsciScintilla.SCI_PAGEDOWN)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate('ViewManager', 'Escape'),
+            QCoreApplication.translate('ViewManager', 'Escape'),
+            QKeySequence(QCoreApplication.translate('ViewManager', 'Esc')), 0,
+            self.editorActGrp, 'vm_edit_escape')
+        self.esm.setMapping(act, QsciScintilla.SCI_CANCEL)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection left one character'),
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection left one character'),
+            QKeySequence(QCoreApplication.translate('ViewManager',
+                                                    'Shift+Left')),
+            0, self.editorActGrp, 'vm_edit_extend_selection_left_char')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+Shift+B')))
+        self.esm.setMapping(act, QsciScintilla.SCI_CHARLEFTEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection right one character'),
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection right one character'),
+            QKeySequence(QCoreApplication.translate('ViewManager',
+                                                    'Shift+Right')),
+            0, self.editorActGrp, 'vm_edit_extend_selection_right_char')
+        if isMacPlatform():
+            act.setAlternateShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+Shift+F')))
+        self.esm.setMapping(act, QsciScintilla.SCI_CHARRIGHTEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection left one word'),
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection left one word'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_extend_selection_left_word')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Alt+Shift+Left')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Ctrl+Shift+Left')))
+        self.esm.setMapping(act, QsciScintilla.SCI_WORDLEFTEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection right one word'),
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection right one word'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_extend_selection_right_word')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Alt+Shift+Right')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Ctrl+Shift+Right')))
+        self.esm.setMapping(act, QsciScintilla.SCI_WORDRIGHTEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager',
+                'Extend selection to first visible character in document'
+                ' line'),
+            QCoreApplication.translate(
+                'ViewManager',
+                'Extend selection to first visible character in document'
+                ' line'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_extend_selection_first_visible_char')
+        if not isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Shift+Home')))
+        self.esm.setMapping(act, QsciScintilla.SCI_VCHOMEEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+        
+        act = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection to end of document line'),
+            QCoreApplication.translate(
+                'ViewManager', 'Extend selection to end of document line'),
+            0, 0,
+            self.editorActGrp, 'vm_edit_extend_selection_end_line')
+        if isMacPlatform():
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Meta+Shift+E')))
+        else:
+            act.setShortcut(QKeySequence(
+                QCoreApplication.translate('ViewManager', 'Shift+End')))
+        self.esm.setMapping(act, QsciScintilla.SCI_LINEENDEXTEND)
+        act.triggered.connect(self.esm.map)
+        self.editActions.append(act)
+    
+    def __createSearchActions(self):
+        """
+        Private method defining the user interface actions for the search
+        commands.
+        """
+        self.searchActGrp = createActionGroup(self)
+        
+        self.searchAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Search'),
+            UI.PixmapCache.getIcon("find.png"),
+            QCoreApplication.translate('ViewManager', '&Search...'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+F", "Search|Search")),
+            0,
+            self, 'vm_search')
+        self.searchAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Search for a text'))
+        self.searchAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Search</b>"""
+            """<p>Search for some text in the current editor. A"""
+            """ dialog is shown to enter the searchtext and options"""
+            """ for the search.</p>"""
+        ))
+        self.searchAct.triggered.connect(self.__showFind)
+        self.searchActions.append(self.searchAct)
+        
+        self.searchNextAct = E5Action(
+            QCoreApplication.translate(
+                'ViewManager', 'Search next'),
+            UI.PixmapCache.getIcon("findNext.png"),
+            QCoreApplication.translate('ViewManager', 'Search &next'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "F3", "Search|Search next")),
+            0,
+            self, 'vm_search_next')
+        self.searchNextAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Search next occurrence of text'))
+        self.searchNextAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Search next</b>"""
+            """<p>Search the next occurrence of some text in the current"""
+            """ editor. The previously entered searchtext and options are"""
+            """ reused.</p>"""
+        ))
+        self.searchNextAct.triggered.connect(
+            self.__searchWidget.on_findNextButton_clicked)
+        self.searchActions.append(self.searchNextAct)
+        
+        self.searchPrevAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Search previous'),
+            UI.PixmapCache.getIcon("findPrev.png"),
+            QCoreApplication.translate('ViewManager', 'Search &previous'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Shift+F3", "Search|Search previous")),
+            0,
+            self, 'vm_search_previous')
+        self.searchPrevAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Search previous occurrence of text'))
+        self.searchPrevAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Search previous</b>"""
+            """<p>Search the previous occurrence of some text in the current"""
+            """ editor. The previously entered searchtext and options are"""
+            """ reused.</p>"""
+        ))
+        self.searchPrevAct.triggered.connect(
+            self.__searchWidget.on_findPrevButton_clicked)
+        self.searchActions.append(self.searchPrevAct)
+    
+    def __createViewActions(self):
+        """
+        Private method defining the user interface actions for the view
+        commands.
+        """
+        self.viewActGrp = createActionGroup(self)
+        
+        self.zoomInAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Zoom in'),
+            UI.PixmapCache.getIcon("zoomIn.png"),
+            QCoreApplication.translate('ViewManager', 'Zoom &in'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl++", "View|Zoom in")),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Zoom In", "View|Zoom in")),
+            self.viewActGrp, 'vm_view_zoom_in')
+        self.zoomInAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Zoom in on the text'))
+        self.zoomInAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Zoom in</b>"""
+            """<p>Zoom in on the text. This makes the text bigger.</p>"""
+        ))
+        self.zoomInAct.triggered.connect(self.__zoomIn)
+        self.viewActions.append(self.zoomInAct)
+        
+        self.zoomOutAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Zoom out'),
+            UI.PixmapCache.getIcon("zoomOut.png"),
+            QCoreApplication.translate('ViewManager', 'Zoom &out'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+-", "View|Zoom out")),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Zoom Out", "View|Zoom out")),
+            self.viewActGrp, 'vm_view_zoom_out')
+        self.zoomOutAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Zoom out on the text'))
+        self.zoomOutAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Zoom out</b>"""
+            """<p>Zoom out on the text. This makes the text smaller.</p>"""
+        ))
+        self.zoomOutAct.triggered.connect(self.__zoomOut)
+        self.viewActions.append(self.zoomOutAct)
+        
+        self.zoomResetAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Zoom reset'),
+            UI.PixmapCache.getIcon("zoomReset.png"),
+            QCoreApplication.translate('ViewManager', 'Zoom &reset'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+0", "View|Zoom reset")),
+            0,
+            self.viewActGrp, 'vm_view_zoom_reset')
+        self.zoomResetAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Reset the zoom of the text'))
+        self.zoomResetAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Zoom reset</b>"""
+            """<p>Reset the zoom of the text. """
+            """This sets the zoom factor to 100%.</p>"""
+        ))
+        self.zoomResetAct.triggered.connect(self.__zoomReset)
+        self.viewActions.append(self.zoomResetAct)
+        
+        self.zoomToAct = E5Action(
+            QCoreApplication.translate('ViewManager', 'Zoom'),
+            UI.PixmapCache.getIcon("zoomTo.png"),
+            QCoreApplication.translate('ViewManager', '&Zoom'),
+            QKeySequence(QCoreApplication.translate(
+                'ViewManager', "Ctrl+#", "View|Zoom")),
+            0,
+            self.viewActGrp, 'vm_view_zoom')
+        self.zoomToAct.setStatusTip(QCoreApplication.translate(
+            'ViewManager', 'Zoom the text'))
+        self.zoomToAct.setWhatsThis(QCoreApplication.translate(
+            'ViewManager',
+            """<b>Zoom</b>"""
+            """<p>Zoom the text. This opens a dialog where the"""
+            """ desired size can be entered.</p>"""
+        ))
+        self.zoomToAct.triggered.connect(self.__zoom)
+        self.viewActions.append(self.zoomToAct)
+    
+    def __createHistoryActions(self):
+        """
+        Private method defining the user interface actions for the history
+        commands.
+        """
+        self.showHistoryAct = E5Action(
+            self.tr('Show History'),
+            UI.PixmapCache.getIcon("history.png"),
+            self.tr('&Show History...'),
+            0, 0,
+            self, 'shell_show_history')
+        self.showHistoryAct.setStatusTip(self.tr(
+            "Show the shell history in a dialog"))
+        self.showHistoryAct.triggered.connect(self.__shell.showHistory)
+        
+        self.clearHistoryAct = E5Action(
+            self.tr('Clear History'),
+            UI.PixmapCache.getIcon("historyClear.png"),
+            self.tr('&Clear History...'),
+            0, 0,
+            self, 'shell_clear_history')
+        self.clearHistoryAct.setStatusTip(self.tr(
+            "Clear the shell history"))
+        self.clearHistoryAct.triggered.connect(self.__shell.clearHistory)
+        
+        self.selectHistoryAct = E5Action(
+            self.tr('Select History Entry'),
+            self.tr('Select History &Entry'),
+            0, 0,
+            self, 'shell_select_history')
+        self.selectHistoryAct.setStatusTip(self.tr(
+            "Select an entry of the shell history"))
+        self.selectHistoryAct.triggered.connect(self.__shell.selectHistory)
+    
+    def __createHelpActions(self):
+        """
+        Private method to create the Help actions.
+        """
+        self.aboutAct = E5Action(
+            self.tr('About'),
+            self.tr('&About'),
+            0, 0, self, 'about_eric')
+        self.aboutAct.setStatusTip(self.tr(
+            'Display information about this software'))
+        self.aboutAct.setWhatsThis(self.tr(
+            """<b>About</b>"""
+            """<p>Display some information about this software.</p>"""))
+        self.aboutAct.triggered.connect(self.__about)
+        self.helpActions.append(self.aboutAct)
+        
+        self.aboutQtAct = E5Action(
+            self.tr('About Qt'),
+            self.tr('About &Qt'),
+            0, 0, self, 'about_qt')
+        self.aboutQtAct.setStatusTip(
+            self.tr('Display information about the Qt toolkit'))
+        self.aboutQtAct.setWhatsThis(self.tr(
+            """<b>About Qt</b>"""
+            """<p>Display some information about the Qt toolkit.</p>"""
+        ))
+        self.aboutQtAct.triggered.connect(self.__aboutQt)
+        self.helpActions.append(self.aboutQtAct)
+        
+        self.whatsThisAct = E5Action(
+            self.tr('What\'s This?'),
+            UI.PixmapCache.getIcon("whatsThis.png"),
+            self.tr('&What\'s This?'),
+            QKeySequence(self.tr("Shift+F1", "Help|What's This?'")),
+            0, self, 'help_help_whats_this')
+        self.whatsThisAct.setStatusTip(self.tr('Context sensitive help'))
+        self.whatsThisAct.setWhatsThis(self.tr(
+            """<b>Display context sensitive help</b>"""
+            """<p>In What's This? mode, the mouse cursor shows an arrow"""
+            """ with a question mark, and you can click on the interface"""
+            """ elements to get a short description of what they do and"""
+            """ how to use them. In dialogs, this feature can be"""
+            """ accessed using the context help button in the titlebar."""
+            """</p>"""
+        ))
+        self.whatsThisAct.triggered.connect(self.__whatsThis)
+        self.helpActions.append(self.whatsThisAct)
+    
+    def __showFind(self):
+        """
+        Private method to display the search widget.
+        """
+        txt = self.__shell.selectedText()
+        self.__searchWidget.showFind(txt)
+    
+    def activeWindow(self):
+        """
+        Public method to get a reference to the active shell.
+        
+        @return reference to the shell widget
+        @rtype Shell
+        """
+        return self.__shell
+    
+    def __readSettings(self):
+        """
+        Private method to read the settings remembered last time.
+        """
+        settings = Preferences.Prefs.settings
+        pos = settings.value("ShellWindow/Position", QPoint(0, 0))
+        size = settings.value("ShellWindow/Size", QSize(800, 600))
+        self.resize(size)
+        self.move(pos)
+    
+    def __writeSettings(self):
+        """
+        Private method to write the settings for reuse.
+        """
+        settings = Preferences.Prefs.settings
+        settings.setValue("ShellWindow/Position", self.pos())
+        settings.setValue("ShellWindow/Size", self.size())
+        
+    def quit(self):
+        """
+        Public method to quit the application.
+        """
+        e5App().closeAllWindows()
+    
+    def __doRestart(self):
+        """
+        Private slot to handle the 'restart' menu entry.
+        """
+        self.__debugServer.startClient(False)
+    
+    def __doClearRestart(self):
+        """
+        Private slot to handle the 'restart and clear' menu entry.
+        """
+        self.__doRestart()
+        self.__shell.clear()
+    
+    def __newWindow(self):
+        """
+        Private slot to start a new instance of eric6.
+        """
+        program = sys.executable
+        eric6 = os.path.join(getConfig("ericDir"), "eric6_shell.py")
+        args = [eric6]
+        QProcess.startDetached(program, args)
+    
+    ##################################################################
+    ## Below are the action methods for the view menu
+    ##################################################################
+    
+    def __zoomIn(self):
+        """
+        Private method to handle the zoom in action.
+        """
+        self.__shell.zoomIn()
+        self.__sbZoom.setValue(self.__shell.getZoom())
+        
+    def __zoomOut(self):
+        """
+        Private method to handle the zoom out action.
+        """
+        self.__shell.zoomOut()
+        self.__sbZoom.setValue(self.__shell.getZoom())
+        
+    def __zoomReset(self):
+        """
+        Private method to reset the zoom factor.
+        """
+        self.__shell.zoomTo(0)
+        self.__sbZoom.setValue(self.__shell.getZoom())
+        
+    def __zoom(self):
+        """
+        Private method to handle the zoom action.
+        """
+        from QScintilla.ZoomDialog import ZoomDialog
+        dlg = ZoomDialog(self.__shell.getZoom(), self, None, True)
+        if dlg.exec_() == QDialog.Accepted:
+            value = dlg.getZoomSize()
+            self.__zoomTo(value)
+        
+    def __zoomTo(self, value):
+        """
+        Private slot to zoom to a given value.
+        
+        @param value zoom value to be set
+        @type int
+        """
+        self.__shell.zoomTo(value)
+        self.__sbZoom.setValue(self.__shell.getZoom())
+        
+    def __zoomValueChanged(self, value):
+        """
+        Private slot to handle changes of the zoom value.
+        
+        @param value new zoom value
+        @type int
+        """
+        self.__sbZoom.setValue(value)
+    
+    ##################################################################
+    ## Below are the action methods for the help menu
+    ##################################################################
+    
+    def __about(self):
+        """
+        Private slot to show a little About message.
+        """
+        E5MessageBox.about(
+            self,
+            self.tr("About eric6 Shell Window"),
+            self.tr(
+                "The eric6 Shell is a standalone shell window."
+                " It uses the same backend as the debugger of"
+                " the full IDE, but is executed independently."))
+    
+    def __aboutQt(self):
+        """
+        Private slot to handle the About Qt dialog.
+        """
+        E5MessageBox.aboutQt(self, "eric6 Shell Window")
+    
+    def __whatsThis(self):
+        """
+        Private slot called in to enter Whats This mode.
+        """
+        QWhatsThis.enterWhatsThisMode()
+    
+    ##################################################################
+    ## Below are the main menu handling methods
+    ##################################################################
+    
+    def __createMenus(self):
+        """
+        Private method to create the menus of the menu bar.
+        """
+        self.__fileMenu = self.menuBar().addMenu(self.tr("&File"))
+        self.__fileMenu.setTearOffEnabled(True)
+        self.__fileMenu.addAction(self.newWindowAct)
+        self.__fileMenu.addSeparator()
+        self.__fileMenu.addAction(self.restartAct)
+        self.__fileMenu.addAction(self.clearRestartAct)
+        self.__fileMenu.addSeparator()
+        self.__fileMenu.addAction(self.exitAct)
+        
+        self.__editMenu = self.menuBar().addMenu(self.tr("&Edit"))
+        self.__editMenu.setTearOffEnabled(True)
+        self.__editMenu.addAction(self.cutAct)
+        self.__editMenu.addAction(self.copyAct)
+        self.__editMenu.addAction(self.pasteAct)
+        self.__editMenu.addAction(self.clearAct)
+        self.__editMenu.addSeparator()
+        self.__editMenu.addAction(self.searchAct)
+        self.__editMenu.addAction(self.searchNextAct)
+        self.__editMenu.addAction(self.searchPrevAct)
+        
+        self.__viewMenu = self.menuBar().addMenu(self.tr("&View"))
+        self.__viewMenu.setTearOffEnabled(True)
+        self.__viewMenu.addAction(self.zoomInAct)
+        self.__viewMenu.addAction(self.zoomOutAct)
+        self.__viewMenu.addAction(self.zoomResetAct)
+        self.__viewMenu.addAction(self.zoomToAct)
+        
+        self.__historyMenu = self.menuBar().addMenu(self.tr("Histor&y"))
+        self.__historyMenu.setTearOffEnabled(True)
+        self.__historyMenu.addAction(self.selectHistoryAct)
+        self.__historyMenu.addAction(self.showHistoryAct)
+        self.__historyMenu.addAction(self.clearHistoryAct)
+        
+        self.__startMenu = self.menuBar().addMenu(self.tr("&Start"))
+        self.__startMenu.aboutToShow.connect(self.__showLanguageMenu)
+        self.__startMenu.triggered.connect(self.__startShell)
+        
+        self.menuBar().addSeparator()
+        
+        self.__helpMenu = self.menuBar().addMenu(self.tr("&Help"))
+        self.__helpMenu.setTearOffEnabled(True)
+        self.__helpMenu.addAction(self.aboutAct)
+        self.__helpMenu.addAction(self.aboutQtAct)
+        self.__helpMenu.addSeparator()
+        self.__helpMenu.addAction(self.whatsThisAct)
+    
+    def __showLanguageMenu(self):
+        """
+        Private slot to prepare the language menu.
+        """
+        self.__startMenu.clear()
+        clientLanguages = self.__debugServer.getSupportedLanguages(
+            shellOnly=True)
+        for language in sorted(clientLanguages):
+            act = self.__startMenu.addAction(language)
+            act.setData(language)
+    
+    def __startShell(self, action):
+        """
+        Private slot to start a shell according to the action triggered.
+        
+        @param action menu action that was triggered (QAction)
+        """
+        language = action.data()
+        self.__debugServer.startClient(False, language)
+    
+    ##################################################################
+    ## Below are the toolbar handling methods
+    ##################################################################
+    
+    def __createToolBars(self):
+        """
+        Private method to create the various toolbars.
+        """
+        filetb = self.addToolBar(self.tr("File"))
+        filetb.setIconSize(UI.Config.ToolBarIconSize)
+        filetb.addAction(self.newWindowAct)
+        filetb.addSeparator()
+        filetb.addAction(self.restartAct)
+        filetb.addAction(self.clearRestartAct)
+        filetb.addSeparator()
+        filetb.addAction(self.exitAct)
+        
+        edittb = self.addToolBar(self.tr("Edit"))
+        edittb.setIconSize(UI.Config.ToolBarIconSize)
+        edittb.addAction(self.cutAct)
+        edittb.addAction(self.copyAct)
+        edittb.addAction(self.pasteAct)
+        edittb.addAction(self.clearAct)
+        
+        findtb = self.addToolBar(self.tr("Find"))
+        findtb.setIconSize(UI.Config.ToolBarIconSize)
+        findtb.addAction(self.searchAct)
+        findtb.addAction(self.searchNextAct)
+        findtb.addAction(self.searchPrevAct)
+        
+        viewtb = self.addToolBar(self.tr("View"))
+        viewtb.setIconSize(UI.Config.ToolBarIconSize)
+        viewtb.addAction(self.zoomInAct)
+        viewtb.addAction(self.zoomOutAct)
+        viewtb.addAction(self.zoomResetAct)
+        viewtb.addAction(self.zoomToAct)
+        
+        historytb = self.addToolBar(self.tr("History"))
+        historytb.setIconSize(UI.Config.ToolBarIconSize)
+        historytb.addAction(self.showHistoryAct)
+        historytb.addAction(self.clearHistoryAct)
+        
+        helptb = self.addToolBar(self.tr("Help"))
+        helptb.setIconSize(UI.Config.ToolBarIconSize)
+        helptb.addAction(self.whatsThisAct)
+    
+    ##################################################################
+    ## Below are the status bar handling methods
+    ##################################################################
+    
+    def __createStatusBar(self):
+        """
+        Private slot to set up the status bar.
+        """
+        self.__statusBar = self.statusBar()
+        self.__statusBar.setSizeGripEnabled(True)
+
+        self.__sbZoom = E5ZoomWidget(
+            UI.PixmapCache.getPixmap("zoomOut.png"),
+            UI.PixmapCache.getPixmap("zoomIn.png"),
+            UI.PixmapCache.getPixmap("zoomReset.png"),
+            self.__statusBar)
+        self.__statusBar.addPermanentWidget(self.__sbZoom)
+        self.__sbZoom.setWhatsThis(self.tr(
+            """<p>This part of the status bar allows zooming the  shell.</p>"""
+        ))
+        
+        self.__sbZoom.valueChanged.connect(self.__zoomTo)
+        self.__sbZoom.setValue(0)
--- a/ThirdParty/CharDet/README.rst	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/README.rst	Sat May 06 13:43:21 2017 +0200
@@ -1,19 +1,41 @@
 Chardet: The Universal Character Encoding Detector
 --------------------------------------------------
 
+.. image:: https://img.shields.io/travis/chardet/chardet/stable.svg
+   :alt: Build status
+   :target: https://travis-ci.org/chardet/chardet
+
+.. image:: https://img.shields.io/coveralls/chardet/chardet/stable.svg
+    :target: https://coveralls.io/r/chardet/chardet
+
+.. image:: https://img.shields.io/pypi/dm/chardet.svg
+   :target: https://warehouse.python.org/project/chardet/
+   :alt: PyPI downloads
+
+.. image:: https://img.shields.io/pypi/v/chardet.svg
+   :target: https://warehouse.python.org/project/chardet/
+   :alt: Latest version on PyPI
+
+.. image:: https://img.shields.io/pypi/l/chardet.svg
+   :alt: License
+
+
 Detects
  - ASCII, UTF-8, UTF-16 (2 variants), UTF-32 (4 variants)
  - Big5, GB2312, EUC-TW, HZ-GB-2312, ISO-2022-CN (Traditional and Simplified Chinese)
  - EUC-JP, SHIFT_JIS, CP932, ISO-2022-JP (Japanese)
  - EUC-KR, ISO-2022-KR (Korean)
  - KOI8-R, MacCyrillic, IBM855, IBM866, ISO-8859-5, windows-1251 (Cyrillic)
- - ISO-8859-2, windows-1250 (Hungarian)
  - ISO-8859-5, windows-1251 (Bulgarian)
- - windows-1252 (English)
+ - ISO-8859-1, windows-1252 (Western European languages)
  - ISO-8859-7, windows-1253 (Greek)
  - ISO-8859-8, windows-1255 (Visual and Logical Hebrew)
  - TIS-620 (Thai)
 
+.. note::
+   Our ISO-8859-2 and windows-1250 (Hungarian) probers have been temporarily
+   disabled until we can retrain the models.
+
 Requires Python 2.6 or later
 
 Installation
@@ -23,6 +45,10 @@
 
     pip install chardet
 
+Documentation
+-------------
+
+For users, docs are now available at http://chardet.readthedocs.org.
 
 Command-line Tool
 -----------------
--- a/ThirdParty/CharDet/chardet/__init__.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/__init__.py	Sat May 06 13:43:21 2017 +0200
@@ -15,18 +15,25 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-__version__ = "2.3.0"
-from sys import version_info
+
+from .compat import PY2, PY3
+from .universaldetector import UniversalDetector
+from .version import __version__, VERSION
 
 
-def detect(aBuf):
-    if ((version_info < (3, 0) and isinstance(aBuf, unicode)) or
-            (version_info >= (3, 0) and not isinstance(aBuf, bytes))):
-        raise ValueError('Expected a bytes object, not a unicode object')
+def detect(byte_str):
+    """
+    Detect the encoding of the given byte string.
 
-    from . import universaldetector
-    u = universaldetector.UniversalDetector()
-    u.reset()
-    u.feed(aBuf)
-    u.close()
-    return u.result
+    :param byte_str:     The byte sequence to examine.
+    :type byte_str:      ``bytes`` or ``bytearray``
+    """
+    if not isinstance(byte_str, bytearray):
+        if not isinstance(byte_str, bytes):
+            raise TypeError('Expected object of type bytes or bytearray, got: '
+                            '{0}'.format(type(byte_str)))
+        else:
+            byte_str = bytearray(byte_str)
+    detector = UniversalDetector()
+    detector.feed(byte_str)
+    return detector.close()
--- a/ThirdParty/CharDet/chardet/big5freq.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/big5freq.py	Sat May 06 13:43:21 2017 +0200
@@ -45,7 +45,7 @@
 #Char to FreqOrder table
 BIG5_TABLE_SIZE = 5376
 
-Big5CharToFreqOrder = (
+BIG5_CHAR_TO_FREQ_ORDER = (
    1,1801,1506, 255,1431, 198,   9,  82,   6,5008, 177, 202,3681,1256,2821, 110, #   16
 3814,  33,3274, 261,  76,  44,2114,  16,2946,2187,1176, 659,3971,  26,3451,2653, #   32
 1198,3972,3350,4202, 410,2215, 302, 590, 361,1964,   8, 204,  58,4510,5009,1932, #   48
@@ -381,545 +381,6 @@
  938,3941, 553,2680, 116,5783,3942,3667,5784,3545,2681,2783,3438,3344,2820,5785, # 5328
 3668,2943,4160,1747,2944,2983,5786,5787, 207,5788,4809,5789,4810,2521,5790,3033, # 5344
  890,3669,3943,5791,1878,3798,3439,5792,2186,2358,3440,1652,5793,5794,5795, 941, # 5360
-2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376  #last 512
-#Everything below is of no interest for detection purpose
-2522,1613,4812,5799,3345,3945,2523,5800,4162,5801,1637,4163,2471,4813,3946,5802, # 5392
-2500,3034,3800,5803,5804,2195,4814,5805,2163,5806,5807,5808,5809,5810,5811,5812, # 5408
-5813,5814,5815,5816,5817,5818,5819,5820,5821,5822,5823,5824,5825,5826,5827,5828, # 5424
-5829,5830,5831,5832,5833,5834,5835,5836,5837,5838,5839,5840,5841,5842,5843,5844, # 5440
-5845,5846,5847,5848,5849,5850,5851,5852,5853,5854,5855,5856,5857,5858,5859,5860, # 5456
-5861,5862,5863,5864,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876, # 5472
-5877,5878,5879,5880,5881,5882,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892, # 5488
-5893,5894,5895,5896,5897,5898,5899,5900,5901,5902,5903,5904,5905,5906,5907,5908, # 5504
-5909,5910,5911,5912,5913,5914,5915,5916,5917,5918,5919,5920,5921,5922,5923,5924, # 5520
-5925,5926,5927,5928,5929,5930,5931,5932,5933,5934,5935,5936,5937,5938,5939,5940, # 5536
-5941,5942,5943,5944,5945,5946,5947,5948,5949,5950,5951,5952,5953,5954,5955,5956, # 5552
-5957,5958,5959,5960,5961,5962,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972, # 5568
-5973,5974,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988, # 5584
-5989,5990,5991,5992,5993,5994,5995,5996,5997,5998,5999,6000,6001,6002,6003,6004, # 5600
-6005,6006,6007,6008,6009,6010,6011,6012,6013,6014,6015,6016,6017,6018,6019,6020, # 5616
-6021,6022,6023,6024,6025,6026,6027,6028,6029,6030,6031,6032,6033,6034,6035,6036, # 5632
-6037,6038,6039,6040,6041,6042,6043,6044,6045,6046,6047,6048,6049,6050,6051,6052, # 5648
-6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6065,6066,6067,6068, # 5664
-6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080,6081,6082,6083,6084, # 5680
-6085,6086,6087,6088,6089,6090,6091,6092,6093,6094,6095,6096,6097,6098,6099,6100, # 5696
-6101,6102,6103,6104,6105,6106,6107,6108,6109,6110,6111,6112,6113,6114,6115,6116, # 5712
-6117,6118,6119,6120,6121,6122,6123,6124,6125,6126,6127,6128,6129,6130,6131,6132, # 5728
-6133,6134,6135,6136,6137,6138,6139,6140,6141,6142,6143,6144,6145,6146,6147,6148, # 5744
-6149,6150,6151,6152,6153,6154,6155,6156,6157,6158,6159,6160,6161,6162,6163,6164, # 5760
-6165,6166,6167,6168,6169,6170,6171,6172,6173,6174,6175,6176,6177,6178,6179,6180, # 5776
-6181,6182,6183,6184,6185,6186,6187,6188,6189,6190,6191,6192,6193,6194,6195,6196, # 5792
-6197,6198,6199,6200,6201,6202,6203,6204,6205,6206,6207,6208,6209,6210,6211,6212, # 5808
-6213,6214,6215,6216,6217,6218,6219,6220,6221,6222,6223,3670,6224,6225,6226,6227, # 5824
-6228,6229,6230,6231,6232,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243, # 5840
-6244,6245,6246,6247,6248,6249,6250,6251,6252,6253,6254,6255,6256,6257,6258,6259, # 5856
-6260,6261,6262,6263,6264,6265,6266,6267,6268,6269,6270,6271,6272,6273,6274,6275, # 5872
-6276,6277,6278,6279,6280,6281,6282,6283,6284,6285,4815,6286,6287,6288,6289,6290, # 5888
-6291,6292,4816,6293,6294,6295,6296,6297,6298,6299,6300,6301,6302,6303,6304,6305, # 5904
-6306,6307,6308,6309,6310,6311,4817,4818,6312,6313,6314,6315,6316,6317,6318,4819, # 5920
-6319,6320,6321,6322,6323,6324,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334, # 5936
-6335,6336,6337,4820,6338,6339,6340,6341,6342,6343,6344,6345,6346,6347,6348,6349, # 5952
-6350,6351,6352,6353,6354,6355,6356,6357,6358,6359,6360,6361,6362,6363,6364,6365, # 5968
-6366,6367,6368,6369,6370,6371,6372,6373,6374,6375,6376,6377,6378,6379,6380,6381, # 5984
-6382,6383,6384,6385,6386,6387,6388,6389,6390,6391,6392,6393,6394,6395,6396,6397, # 6000
-6398,6399,6400,6401,6402,6403,6404,6405,6406,6407,6408,6409,6410,3441,6411,6412, # 6016
-6413,6414,6415,6416,6417,6418,6419,6420,6421,6422,6423,6424,6425,4440,6426,6427, # 6032
-6428,6429,6430,6431,6432,6433,6434,6435,6436,6437,6438,6439,6440,6441,6442,6443, # 6048
-6444,6445,6446,6447,6448,6449,6450,6451,6452,6453,6454,4821,6455,6456,6457,6458, # 6064
-6459,6460,6461,6462,6463,6464,6465,6466,6467,6468,6469,6470,6471,6472,6473,6474, # 6080
-6475,6476,6477,3947,3948,6478,6479,6480,6481,3272,4441,6482,6483,6484,6485,4442, # 6096
-6486,6487,6488,6489,6490,6491,6492,6493,6494,6495,6496,4822,6497,6498,6499,6500, # 6112
-6501,6502,6503,6504,6505,6506,6507,6508,6509,6510,6511,6512,6513,6514,6515,6516, # 6128
-6517,6518,6519,6520,6521,6522,6523,6524,6525,6526,6527,6528,6529,6530,6531,6532, # 6144
-6533,6534,6535,6536,6537,6538,6539,6540,6541,6542,6543,6544,6545,6546,6547,6548, # 6160
-6549,6550,6551,6552,6553,6554,6555,6556,2784,6557,4823,6558,6559,6560,6561,6562, # 6176
-6563,6564,6565,6566,6567,6568,6569,3949,6570,6571,6572,4824,6573,6574,6575,6576, # 6192
-6577,6578,6579,6580,6581,6582,6583,4825,6584,6585,6586,3950,2785,6587,6588,6589, # 6208
-6590,6591,6592,6593,6594,6595,6596,6597,6598,6599,6600,6601,6602,6603,6604,6605, # 6224
-6606,6607,6608,6609,6610,6611,6612,4826,6613,6614,6615,4827,6616,6617,6618,6619, # 6240
-6620,6621,6622,6623,6624,6625,4164,6626,6627,6628,6629,6630,6631,6632,6633,6634, # 6256
-3547,6635,4828,6636,6637,6638,6639,6640,6641,6642,3951,2984,6643,6644,6645,6646, # 6272
-6647,6648,6649,4165,6650,4829,6651,6652,4830,6653,6654,6655,6656,6657,6658,6659, # 6288
-6660,6661,6662,4831,6663,6664,6665,6666,6667,6668,6669,6670,6671,4166,6672,4832, # 6304
-3952,6673,6674,6675,6676,4833,6677,6678,6679,4167,6680,6681,6682,3198,6683,6684, # 6320
-6685,6686,6687,6688,6689,6690,6691,6692,6693,6694,6695,6696,6697,4834,6698,6699, # 6336
-6700,6701,6702,6703,6704,6705,6706,6707,6708,6709,6710,6711,6712,6713,6714,6715, # 6352
-6716,6717,6718,6719,6720,6721,6722,6723,6724,6725,6726,6727,6728,6729,6730,6731, # 6368
-6732,6733,6734,4443,6735,6736,6737,6738,6739,6740,6741,6742,6743,6744,6745,4444, # 6384
-6746,6747,6748,6749,6750,6751,6752,6753,6754,6755,6756,6757,6758,6759,6760,6761, # 6400
-6762,6763,6764,6765,6766,6767,6768,6769,6770,6771,6772,6773,6774,6775,6776,6777, # 6416
-6778,6779,6780,6781,4168,6782,6783,3442,6784,6785,6786,6787,6788,6789,6790,6791, # 6432
-4169,6792,6793,6794,6795,6796,6797,6798,6799,6800,6801,6802,6803,6804,6805,6806, # 6448
-6807,6808,6809,6810,6811,4835,6812,6813,6814,4445,6815,6816,4446,6817,6818,6819, # 6464
-6820,6821,6822,6823,6824,6825,6826,6827,6828,6829,6830,6831,6832,6833,6834,6835, # 6480
-3548,6836,6837,6838,6839,6840,6841,6842,6843,6844,6845,6846,4836,6847,6848,6849, # 6496
-6850,6851,6852,6853,6854,3953,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864, # 6512
-6865,6866,6867,6868,6869,6870,6871,6872,6873,6874,6875,6876,6877,3199,6878,6879, # 6528
-6880,6881,6882,4447,6883,6884,6885,6886,6887,6888,6889,6890,6891,6892,6893,6894, # 6544
-6895,6896,6897,6898,6899,6900,6901,6902,6903,6904,4170,6905,6906,6907,6908,6909, # 6560
-6910,6911,6912,6913,6914,6915,6916,6917,6918,6919,6920,6921,6922,6923,6924,6925, # 6576
-6926,6927,4837,6928,6929,6930,6931,6932,6933,6934,6935,6936,3346,6937,6938,4838, # 6592
-6939,6940,6941,4448,6942,6943,6944,6945,6946,4449,6947,6948,6949,6950,6951,6952, # 6608
-6953,6954,6955,6956,6957,6958,6959,6960,6961,6962,6963,6964,6965,6966,6967,6968, # 6624
-6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6979,6980,6981,6982,6983,6984, # 6640
-6985,6986,6987,6988,6989,6990,6991,6992,6993,6994,3671,6995,6996,6997,6998,4839, # 6656
-6999,7000,7001,7002,3549,7003,7004,7005,7006,7007,7008,7009,7010,7011,7012,7013, # 6672
-7014,7015,7016,7017,7018,7019,7020,7021,7022,7023,7024,7025,7026,7027,7028,7029, # 6688
-7030,4840,7031,7032,7033,7034,7035,7036,7037,7038,4841,7039,7040,7041,7042,7043, # 6704
-7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058,7059, # 6720
-7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,2985,7071,7072,7073,7074, # 6736
-7075,7076,7077,7078,7079,7080,4842,7081,7082,7083,7084,7085,7086,7087,7088,7089, # 6752
-7090,7091,7092,7093,7094,7095,7096,7097,7098,7099,7100,7101,7102,7103,7104,7105, # 6768
-7106,7107,7108,7109,7110,7111,7112,7113,7114,7115,7116,7117,7118,4450,7119,7120, # 6784
-7121,7122,7123,7124,7125,7126,7127,7128,7129,7130,7131,7132,7133,7134,7135,7136, # 6800
-7137,7138,7139,7140,7141,7142,7143,4843,7144,7145,7146,7147,7148,7149,7150,7151, # 6816
-7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7163,7164,7165,7166,7167, # 6832
-7168,7169,7170,7171,7172,7173,7174,7175,7176,7177,7178,7179,7180,7181,7182,7183, # 6848
-7184,7185,7186,7187,7188,4171,4172,7189,7190,7191,7192,7193,7194,7195,7196,7197, # 6864
-7198,7199,7200,7201,7202,7203,7204,7205,7206,7207,7208,7209,7210,7211,7212,7213, # 6880
-7214,7215,7216,7217,7218,7219,7220,7221,7222,7223,7224,7225,7226,7227,7228,7229, # 6896
-7230,7231,7232,7233,7234,7235,7236,7237,7238,7239,7240,7241,7242,7243,7244,7245, # 6912
-7246,7247,7248,7249,7250,7251,7252,7253,7254,7255,7256,7257,7258,7259,7260,7261, # 6928
-7262,7263,7264,7265,7266,7267,7268,7269,7270,7271,7272,7273,7274,7275,7276,7277, # 6944
-7278,7279,7280,7281,7282,7283,7284,7285,7286,7287,7288,7289,7290,7291,7292,7293, # 6960
-7294,7295,7296,4844,7297,7298,7299,7300,7301,7302,7303,7304,7305,7306,7307,7308, # 6976
-7309,7310,7311,7312,7313,7314,7315,7316,4451,7317,7318,7319,7320,7321,7322,7323, # 6992
-7324,7325,7326,7327,7328,7329,7330,7331,7332,7333,7334,7335,7336,7337,7338,7339, # 7008
-7340,7341,7342,7343,7344,7345,7346,7347,7348,7349,7350,7351,7352,7353,4173,7354, # 7024
-7355,4845,7356,7357,7358,7359,7360,7361,7362,7363,7364,7365,7366,7367,7368,7369, # 7040
-7370,7371,7372,7373,7374,7375,7376,7377,7378,7379,7380,7381,7382,7383,7384,7385, # 7056
-7386,7387,7388,4846,7389,7390,7391,7392,7393,7394,7395,7396,7397,7398,7399,7400, # 7072
-7401,7402,7403,7404,7405,3672,7406,7407,7408,7409,7410,7411,7412,7413,7414,7415, # 7088
-7416,7417,7418,7419,7420,7421,7422,7423,7424,7425,7426,7427,7428,7429,7430,7431, # 7104
-7432,7433,7434,7435,7436,7437,7438,7439,7440,7441,7442,7443,7444,7445,7446,7447, # 7120
-7448,7449,7450,7451,7452,7453,4452,7454,3200,7455,7456,7457,7458,7459,7460,7461, # 7136
-7462,7463,7464,7465,7466,7467,7468,7469,7470,7471,7472,7473,7474,4847,7475,7476, # 7152
-7477,3133,7478,7479,7480,7481,7482,7483,7484,7485,7486,7487,7488,7489,7490,7491, # 7168
-7492,7493,7494,7495,7496,7497,7498,7499,7500,7501,7502,3347,7503,7504,7505,7506, # 7184
-7507,7508,7509,7510,7511,7512,7513,7514,7515,7516,7517,7518,7519,7520,7521,4848, # 7200
-7522,7523,7524,7525,7526,7527,7528,7529,7530,7531,7532,7533,7534,7535,7536,7537, # 7216
-7538,7539,7540,7541,7542,7543,7544,7545,7546,7547,7548,7549,3801,4849,7550,7551, # 7232
-7552,7553,7554,7555,7556,7557,7558,7559,7560,7561,7562,7563,7564,7565,7566,7567, # 7248
-7568,7569,3035,7570,7571,7572,7573,7574,7575,7576,7577,7578,7579,7580,7581,7582, # 7264
-7583,7584,7585,7586,7587,7588,7589,7590,7591,7592,7593,7594,7595,7596,7597,7598, # 7280
-7599,7600,7601,7602,7603,7604,7605,7606,7607,7608,7609,7610,7611,7612,7613,7614, # 7296
-7615,7616,4850,7617,7618,3802,7619,7620,7621,7622,7623,7624,7625,7626,7627,7628, # 7312
-7629,7630,7631,7632,4851,7633,7634,7635,7636,7637,7638,7639,7640,7641,7642,7643, # 7328
-7644,7645,7646,7647,7648,7649,7650,7651,7652,7653,7654,7655,7656,7657,7658,7659, # 7344
-7660,7661,7662,7663,7664,7665,7666,7667,7668,7669,7670,4453,7671,7672,7673,7674, # 7360
-7675,7676,7677,7678,7679,7680,7681,7682,7683,7684,7685,7686,7687,7688,7689,7690, # 7376
-7691,7692,7693,7694,7695,7696,7697,3443,7698,7699,7700,7701,7702,4454,7703,7704, # 7392
-7705,7706,7707,7708,7709,7710,7711,7712,7713,2472,7714,7715,7716,7717,7718,7719, # 7408
-7720,7721,7722,7723,7724,7725,7726,7727,7728,7729,7730,7731,3954,7732,7733,7734, # 7424
-7735,7736,7737,7738,7739,7740,7741,7742,7743,7744,7745,7746,7747,7748,7749,7750, # 7440
-3134,7751,7752,4852,7753,7754,7755,4853,7756,7757,7758,7759,7760,4174,7761,7762, # 7456
-7763,7764,7765,7766,7767,7768,7769,7770,7771,7772,7773,7774,7775,7776,7777,7778, # 7472
-7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7791,7792,7793,7794, # 7488
-7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,4854,7806,7807,7808,7809, # 7504
-7810,7811,7812,7813,7814,7815,7816,7817,7818,7819,7820,7821,7822,7823,7824,7825, # 7520
-4855,7826,7827,7828,7829,7830,7831,7832,7833,7834,7835,7836,7837,7838,7839,7840, # 7536
-7841,7842,7843,7844,7845,7846,7847,3955,7848,7849,7850,7851,7852,7853,7854,7855, # 7552
-7856,7857,7858,7859,7860,3444,7861,7862,7863,7864,7865,7866,7867,7868,7869,7870, # 7568
-7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886, # 7584
-7887,7888,7889,7890,7891,4175,7892,7893,7894,7895,7896,4856,4857,7897,7898,7899, # 7600
-7900,2598,7901,7902,7903,7904,7905,7906,7907,7908,4455,7909,7910,7911,7912,7913, # 7616
-7914,3201,7915,7916,7917,7918,7919,7920,7921,4858,7922,7923,7924,7925,7926,7927, # 7632
-7928,7929,7930,7931,7932,7933,7934,7935,7936,7937,7938,7939,7940,7941,7942,7943, # 7648
-7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959, # 7664
-7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975, # 7680
-7976,7977,7978,7979,7980,7981,4859,7982,7983,7984,7985,7986,7987,7988,7989,7990, # 7696
-7991,7992,7993,7994,7995,7996,4860,7997,7998,7999,8000,8001,8002,8003,8004,8005, # 7712
-8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,4176,8017,8018,8019,8020, # 7728
-8021,8022,8023,4861,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035, # 7744
-8036,4862,4456,8037,8038,8039,8040,4863,8041,8042,8043,8044,8045,8046,8047,8048, # 7760
-8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064, # 7776
-8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080, # 7792
-8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096, # 7808
-8097,8098,8099,4864,4177,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110, # 7824
-8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,4178,8121,8122,8123,8124,8125, # 7840
-8126,8127,8128,8129,8130,8131,8132,8133,8134,8135,8136,8137,8138,8139,8140,8141, # 7856
-8142,8143,8144,8145,4865,4866,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155, # 7872
-8156,8157,8158,8159,8160,8161,8162,8163,8164,8165,4179,8166,8167,8168,8169,8170, # 7888
-8171,8172,8173,8174,8175,8176,8177,8178,8179,8180,8181,4457,8182,8183,8184,8185, # 7904
-8186,8187,8188,8189,8190,8191,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201, # 7920
-8202,8203,8204,8205,8206,8207,8208,8209,8210,8211,8212,8213,8214,8215,8216,8217, # 7936
-8218,8219,8220,8221,8222,8223,8224,8225,8226,8227,8228,8229,8230,8231,8232,8233, # 7952
-8234,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249, # 7968
-8250,8251,8252,8253,8254,8255,8256,3445,8257,8258,8259,8260,8261,8262,4458,8263, # 7984
-8264,8265,8266,8267,8268,8269,8270,8271,8272,4459,8273,8274,8275,8276,3550,8277, # 8000
-8278,8279,8280,8281,8282,8283,8284,8285,8286,8287,8288,8289,4460,8290,8291,8292, # 8016
-8293,8294,8295,8296,8297,8298,8299,8300,8301,8302,8303,8304,8305,8306,8307,4867, # 8032
-8308,8309,8310,8311,8312,3551,8313,8314,8315,8316,8317,8318,8319,8320,8321,8322, # 8048
-8323,8324,8325,8326,4868,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337, # 8064
-8338,8339,8340,8341,8342,8343,8344,8345,8346,8347,8348,8349,8350,8351,8352,8353, # 8080
-8354,8355,8356,8357,8358,8359,8360,8361,8362,8363,4869,4461,8364,8365,8366,8367, # 8096
-8368,8369,8370,4870,8371,8372,8373,8374,8375,8376,8377,8378,8379,8380,8381,8382, # 8112
-8383,8384,8385,8386,8387,8388,8389,8390,8391,8392,8393,8394,8395,8396,8397,8398, # 8128
-8399,8400,8401,8402,8403,8404,8405,8406,8407,8408,8409,8410,4871,8411,8412,8413, # 8144
-8414,8415,8416,8417,8418,8419,8420,8421,8422,4462,8423,8424,8425,8426,8427,8428, # 8160
-8429,8430,8431,8432,8433,2986,8434,8435,8436,8437,8438,8439,8440,8441,8442,8443, # 8176
-8444,8445,8446,8447,8448,8449,8450,8451,8452,8453,8454,8455,8456,8457,8458,8459, # 8192
-8460,8461,8462,8463,8464,8465,8466,8467,8468,8469,8470,8471,8472,8473,8474,8475, # 8208
-8476,8477,8478,4180,8479,8480,8481,8482,8483,8484,8485,8486,8487,8488,8489,8490, # 8224
-8491,8492,8493,8494,8495,8496,8497,8498,8499,8500,8501,8502,8503,8504,8505,8506, # 8240
-8507,8508,8509,8510,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522, # 8256
-8523,8524,8525,8526,8527,8528,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538, # 8272
-8539,8540,8541,8542,8543,8544,8545,8546,8547,8548,8549,8550,8551,8552,8553,8554, # 8288
-8555,8556,8557,8558,8559,8560,8561,8562,8563,8564,4872,8565,8566,8567,8568,8569, # 8304
-8570,8571,8572,8573,4873,8574,8575,8576,8577,8578,8579,8580,8581,8582,8583,8584, # 8320
-8585,8586,8587,8588,8589,8590,8591,8592,8593,8594,8595,8596,8597,8598,8599,8600, # 8336
-8601,8602,8603,8604,8605,3803,8606,8607,8608,8609,8610,8611,8612,8613,4874,3804, # 8352
-8614,8615,8616,8617,8618,8619,8620,8621,3956,8622,8623,8624,8625,8626,8627,8628, # 8368
-8629,8630,8631,8632,8633,8634,8635,8636,8637,8638,2865,8639,8640,8641,8642,8643, # 8384
-8644,8645,8646,8647,8648,8649,8650,8651,8652,8653,8654,8655,8656,4463,8657,8658, # 8400
-8659,4875,4876,8660,8661,8662,8663,8664,8665,8666,8667,8668,8669,8670,8671,8672, # 8416
-8673,8674,8675,8676,8677,8678,8679,8680,8681,4464,8682,8683,8684,8685,8686,8687, # 8432
-8688,8689,8690,8691,8692,8693,8694,8695,8696,8697,8698,8699,8700,8701,8702,8703, # 8448
-8704,8705,8706,8707,8708,8709,2261,8710,8711,8712,8713,8714,8715,8716,8717,8718, # 8464
-8719,8720,8721,8722,8723,8724,8725,8726,8727,8728,8729,8730,8731,8732,8733,4181, # 8480
-8734,8735,8736,8737,8738,8739,8740,8741,8742,8743,8744,8745,8746,8747,8748,8749, # 8496
-8750,8751,8752,8753,8754,8755,8756,8757,8758,8759,8760,8761,8762,8763,4877,8764, # 8512
-8765,8766,8767,8768,8769,8770,8771,8772,8773,8774,8775,8776,8777,8778,8779,8780, # 8528
-8781,8782,8783,8784,8785,8786,8787,8788,4878,8789,4879,8790,8791,8792,4880,8793, # 8544
-8794,8795,8796,8797,8798,8799,8800,8801,4881,8802,8803,8804,8805,8806,8807,8808, # 8560
-8809,8810,8811,8812,8813,8814,8815,3957,8816,8817,8818,8819,8820,8821,8822,8823, # 8576
-8824,8825,8826,8827,8828,8829,8830,8831,8832,8833,8834,8835,8836,8837,8838,8839, # 8592
-8840,8841,8842,8843,8844,8845,8846,8847,4882,8848,8849,8850,8851,8852,8853,8854, # 8608
-8855,8856,8857,8858,8859,8860,8861,8862,8863,8864,8865,8866,8867,8868,8869,8870, # 8624
-8871,8872,8873,8874,8875,8876,8877,8878,8879,8880,8881,8882,8883,8884,3202,8885, # 8640
-8886,8887,8888,8889,8890,8891,8892,8893,8894,8895,8896,8897,8898,8899,8900,8901, # 8656
-8902,8903,8904,8905,8906,8907,8908,8909,8910,8911,8912,8913,8914,8915,8916,8917, # 8672
-8918,8919,8920,8921,8922,8923,8924,4465,8925,8926,8927,8928,8929,8930,8931,8932, # 8688
-4883,8933,8934,8935,8936,8937,8938,8939,8940,8941,8942,8943,2214,8944,8945,8946, # 8704
-8947,8948,8949,8950,8951,8952,8953,8954,8955,8956,8957,8958,8959,8960,8961,8962, # 8720
-8963,8964,8965,4884,8966,8967,8968,8969,8970,8971,8972,8973,8974,8975,8976,8977, # 8736
-8978,8979,8980,8981,8982,8983,8984,8985,8986,8987,8988,8989,8990,8991,8992,4885, # 8752
-8993,8994,8995,8996,8997,8998,8999,9000,9001,9002,9003,9004,9005,9006,9007,9008, # 8768
-9009,9010,9011,9012,9013,9014,9015,9016,9017,9018,9019,9020,9021,4182,9022,9023, # 8784
-9024,9025,9026,9027,9028,9029,9030,9031,9032,9033,9034,9035,9036,9037,9038,9039, # 8800
-9040,9041,9042,9043,9044,9045,9046,9047,9048,9049,9050,9051,9052,9053,9054,9055, # 8816
-9056,9057,9058,9059,9060,9061,9062,9063,4886,9064,9065,9066,9067,9068,9069,4887, # 8832
-9070,9071,9072,9073,9074,9075,9076,9077,9078,9079,9080,9081,9082,9083,9084,9085, # 8848
-9086,9087,9088,9089,9090,9091,9092,9093,9094,9095,9096,9097,9098,9099,9100,9101, # 8864
-9102,9103,9104,9105,9106,9107,9108,9109,9110,9111,9112,9113,9114,9115,9116,9117, # 8880
-9118,9119,9120,9121,9122,9123,9124,9125,9126,9127,9128,9129,9130,9131,9132,9133, # 8896
-9134,9135,9136,9137,9138,9139,9140,9141,3958,9142,9143,9144,9145,9146,9147,9148, # 8912
-9149,9150,9151,4888,9152,9153,9154,9155,9156,9157,9158,9159,9160,9161,9162,9163, # 8928
-9164,9165,9166,9167,9168,9169,9170,9171,9172,9173,9174,9175,4889,9176,9177,9178, # 8944
-9179,9180,9181,9182,9183,9184,9185,9186,9187,9188,9189,9190,9191,9192,9193,9194, # 8960
-9195,9196,9197,9198,9199,9200,9201,9202,9203,4890,9204,9205,9206,9207,9208,9209, # 8976
-9210,9211,9212,9213,9214,9215,9216,9217,9218,9219,9220,9221,9222,4466,9223,9224, # 8992
-9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,9239,9240, # 9008
-9241,9242,9243,9244,9245,4891,9246,9247,9248,9249,9250,9251,9252,9253,9254,9255, # 9024
-9256,9257,4892,9258,9259,9260,9261,4893,4894,9262,9263,9264,9265,9266,9267,9268, # 9040
-9269,9270,9271,9272,9273,4467,9274,9275,9276,9277,9278,9279,9280,9281,9282,9283, # 9056
-9284,9285,3673,9286,9287,9288,9289,9290,9291,9292,9293,9294,9295,9296,9297,9298, # 9072
-9299,9300,9301,9302,9303,9304,9305,9306,9307,9308,9309,9310,9311,9312,9313,9314, # 9088
-9315,9316,9317,9318,9319,9320,9321,9322,4895,9323,9324,9325,9326,9327,9328,9329, # 9104
-9330,9331,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345, # 9120
-9346,9347,4468,9348,9349,9350,9351,9352,9353,9354,9355,9356,9357,9358,9359,9360, # 9136
-9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9371,9372,9373,4896,9374,4469, # 9152
-9375,9376,9377,9378,9379,4897,9380,9381,9382,9383,9384,9385,9386,9387,9388,9389, # 9168
-9390,9391,9392,9393,9394,9395,9396,9397,9398,9399,9400,9401,9402,9403,9404,9405, # 9184
-9406,4470,9407,2751,9408,9409,3674,3552,9410,9411,9412,9413,9414,9415,9416,9417, # 9200
-9418,9419,9420,9421,4898,9422,9423,9424,9425,9426,9427,9428,9429,3959,9430,9431, # 9216
-9432,9433,9434,9435,9436,4471,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446, # 9232
-9447,9448,9449,9450,3348,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461, # 9248
-9462,9463,9464,9465,9466,9467,9468,9469,9470,9471,9472,4899,9473,9474,9475,9476, # 9264
-9477,4900,9478,9479,9480,9481,9482,9483,9484,9485,9486,9487,9488,3349,9489,9490, # 9280
-9491,9492,9493,9494,9495,9496,9497,9498,9499,9500,9501,9502,9503,9504,9505,9506, # 9296
-9507,9508,9509,9510,9511,9512,9513,9514,9515,9516,9517,9518,9519,9520,4901,9521, # 9312
-9522,9523,9524,9525,9526,4902,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536, # 9328
-9537,9538,9539,9540,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552, # 9344
-9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568, # 9360
-9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584, # 9376
-3805,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599, # 9392
-9600,9601,9602,4903,9603,9604,9605,9606,9607,4904,9608,9609,9610,9611,9612,9613, # 9408
-9614,4905,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628, # 9424
-9629,9630,9631,9632,4906,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643, # 9440
-4907,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658, # 9456
-9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,4183,9673, # 9472
-9674,9675,9676,9677,4908,9678,9679,9680,9681,4909,9682,9683,9684,9685,9686,9687, # 9488
-9688,9689,9690,4910,9691,9692,9693,3675,9694,9695,9696,2945,9697,9698,9699,9700, # 9504
-9701,9702,9703,9704,9705,4911,9706,9707,9708,9709,9710,9711,9712,9713,9714,9715, # 9520
-9716,9717,9718,9719,9720,9721,9722,9723,9724,9725,9726,9727,9728,9729,9730,9731, # 9536
-9732,9733,9734,9735,4912,9736,9737,9738,9739,9740,4913,9741,9742,9743,9744,9745, # 9552
-9746,9747,9748,9749,9750,9751,9752,9753,9754,9755,9756,9757,9758,4914,9759,9760, # 9568
-9761,9762,9763,9764,9765,9766,9767,9768,9769,9770,9771,9772,9773,9774,9775,9776, # 9584
-9777,9778,9779,9780,9781,9782,4915,9783,9784,9785,9786,9787,9788,9789,9790,9791, # 9600
-9792,9793,4916,9794,9795,9796,9797,9798,9799,9800,9801,9802,9803,9804,9805,9806, # 9616
-9807,9808,9809,9810,9811,9812,9813,9814,9815,9816,9817,9818,9819,9820,9821,9822, # 9632
-9823,9824,9825,9826,9827,9828,9829,9830,9831,9832,9833,9834,9835,9836,9837,9838, # 9648
-9839,9840,9841,9842,9843,9844,9845,9846,9847,9848,9849,9850,9851,9852,9853,9854, # 9664
-9855,9856,9857,9858,9859,9860,9861,9862,9863,9864,9865,9866,9867,9868,4917,9869, # 9680
-9870,9871,9872,9873,9874,9875,9876,9877,9878,9879,9880,9881,9882,9883,9884,9885, # 9696
-9886,9887,9888,9889,9890,9891,9892,4472,9893,9894,9895,9896,9897,3806,9898,9899, # 9712
-9900,9901,9902,9903,9904,9905,9906,9907,9908,9909,9910,9911,9912,9913,9914,4918, # 9728
-9915,9916,9917,4919,9918,9919,9920,9921,4184,9922,9923,9924,9925,9926,9927,9928, # 9744
-9929,9930,9931,9932,9933,9934,9935,9936,9937,9938,9939,9940,9941,9942,9943,9944, # 9760
-9945,9946,4920,9947,9948,9949,9950,9951,9952,9953,9954,9955,4185,9956,9957,9958, # 9776
-9959,9960,9961,9962,9963,9964,9965,4921,9966,9967,9968,4473,9969,9970,9971,9972, # 9792
-9973,9974,9975,9976,9977,4474,9978,9979,9980,9981,9982,9983,9984,9985,9986,9987, # 9808
-9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,9999,10000,10001,10002,10003, # 9824
-10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10015,10016,10017,10018,10019, # 9840
-10020,10021,4922,10022,4923,10023,10024,10025,10026,10027,10028,10029,10030,10031,10032,10033, # 9856
-10034,10035,10036,10037,10038,10039,10040,10041,10042,10043,10044,10045,10046,10047,10048,4924, # 9872
-10049,10050,10051,10052,10053,10054,10055,10056,10057,10058,10059,10060,10061,10062,10063,10064, # 9888
-10065,10066,10067,10068,10069,10070,10071,10072,10073,10074,10075,10076,10077,10078,10079,10080, # 9904
-10081,10082,10083,10084,10085,10086,10087,4475,10088,10089,10090,10091,10092,10093,10094,10095, # 9920
-10096,10097,4476,10098,10099,10100,10101,10102,10103,10104,10105,10106,10107,10108,10109,10110, # 9936
-10111,2174,10112,10113,10114,10115,10116,10117,10118,10119,10120,10121,10122,10123,10124,10125, # 9952
-10126,10127,10128,10129,10130,10131,10132,10133,10134,10135,10136,10137,10138,10139,10140,3807, # 9968
-4186,4925,10141,10142,10143,10144,10145,10146,10147,4477,4187,10148,10149,10150,10151,10152, # 9984
-10153,4188,10154,10155,10156,10157,10158,10159,10160,10161,4926,10162,10163,10164,10165,10166, #10000
-10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182, #10016
-10183,10184,10185,10186,10187,10188,10189,10190,10191,10192,3203,10193,10194,10195,10196,10197, #10032
-10198,10199,10200,4478,10201,10202,10203,10204,4479,10205,10206,10207,10208,10209,10210,10211, #10048
-10212,10213,10214,10215,10216,10217,10218,10219,10220,10221,10222,10223,10224,10225,10226,10227, #10064
-10228,10229,10230,10231,10232,10233,10234,4927,10235,10236,10237,10238,10239,10240,10241,10242, #10080
-10243,10244,10245,10246,10247,10248,10249,10250,10251,10252,10253,10254,10255,10256,10257,10258, #10096
-10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,4480, #10112
-4928,4929,10274,10275,10276,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287, #10128
-10288,10289,10290,10291,10292,10293,10294,10295,10296,10297,10298,10299,10300,10301,10302,10303, #10144
-10304,10305,10306,10307,10308,10309,10310,10311,10312,10313,10314,10315,10316,10317,10318,10319, #10160
-10320,10321,10322,10323,10324,10325,10326,10327,10328,10329,10330,10331,10332,10333,10334,4930, #10176
-10335,10336,10337,10338,10339,10340,10341,10342,4931,10343,10344,10345,10346,10347,10348,10349, #10192
-10350,10351,10352,10353,10354,10355,3088,10356,2786,10357,10358,10359,10360,4189,10361,10362, #10208
-10363,10364,10365,10366,10367,10368,10369,10370,10371,10372,10373,10374,10375,4932,10376,10377, #10224
-10378,10379,10380,10381,10382,10383,10384,10385,10386,10387,10388,10389,10390,10391,10392,4933, #10240
-10393,10394,10395,4934,10396,10397,10398,10399,10400,10401,10402,10403,10404,10405,10406,10407, #10256
-10408,10409,10410,10411,10412,3446,10413,10414,10415,10416,10417,10418,10419,10420,10421,10422, #10272
-10423,4935,10424,10425,10426,10427,10428,10429,10430,4936,10431,10432,10433,10434,10435,10436, #10288
-10437,10438,10439,10440,10441,10442,10443,4937,10444,10445,10446,10447,4481,10448,10449,10450, #10304
-10451,10452,10453,10454,10455,10456,10457,10458,10459,10460,10461,10462,10463,10464,10465,10466, #10320
-10467,10468,10469,10470,10471,10472,10473,10474,10475,10476,10477,10478,10479,10480,10481,10482, #10336
-10483,10484,10485,10486,10487,10488,10489,10490,10491,10492,10493,10494,10495,10496,10497,10498, #10352
-10499,10500,10501,10502,10503,10504,10505,4938,10506,10507,10508,10509,10510,2552,10511,10512, #10368
-10513,10514,10515,10516,3447,10517,10518,10519,10520,10521,10522,10523,10524,10525,10526,10527, #10384
-10528,10529,10530,10531,10532,10533,10534,10535,10536,10537,10538,10539,10540,10541,10542,10543, #10400
-4482,10544,4939,10545,10546,10547,10548,10549,10550,10551,10552,10553,10554,10555,10556,10557, #10416
-10558,10559,10560,10561,10562,10563,10564,10565,10566,10567,3676,4483,10568,10569,10570,10571, #10432
-10572,3448,10573,10574,10575,10576,10577,10578,10579,10580,10581,10582,10583,10584,10585,10586, #10448
-10587,10588,10589,10590,10591,10592,10593,10594,10595,10596,10597,10598,10599,10600,10601,10602, #10464
-10603,10604,10605,10606,10607,10608,10609,10610,10611,10612,10613,10614,10615,10616,10617,10618, #10480
-10619,10620,10621,10622,10623,10624,10625,10626,10627,4484,10628,10629,10630,10631,10632,4940, #10496
-10633,10634,10635,10636,10637,10638,10639,10640,10641,10642,10643,10644,10645,10646,10647,10648, #10512
-10649,10650,10651,10652,10653,10654,10655,10656,4941,10657,10658,10659,2599,10660,10661,10662, #10528
-10663,10664,10665,10666,3089,10667,10668,10669,10670,10671,10672,10673,10674,10675,10676,10677, #10544
-10678,10679,10680,4942,10681,10682,10683,10684,10685,10686,10687,10688,10689,10690,10691,10692, #10560
-10693,10694,10695,10696,10697,4485,10698,10699,10700,10701,10702,10703,10704,4943,10705,3677, #10576
-10706,10707,10708,10709,10710,10711,10712,4944,10713,10714,10715,10716,10717,10718,10719,10720, #10592
-10721,10722,10723,10724,10725,10726,10727,10728,4945,10729,10730,10731,10732,10733,10734,10735, #10608
-10736,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10751, #10624
-10752,10753,10754,10755,10756,10757,10758,10759,10760,10761,4946,10762,10763,10764,10765,10766, #10640
-10767,4947,4948,10768,10769,10770,10771,10772,10773,10774,10775,10776,10777,10778,10779,10780, #10656
-10781,10782,10783,10784,10785,10786,10787,10788,10789,10790,10791,10792,10793,10794,10795,10796, #10672
-10797,10798,10799,10800,10801,10802,10803,10804,10805,10806,10807,10808,10809,10810,10811,10812, #10688
-10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10827,10828, #10704
-10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10843,10844, #10720
-10845,10846,10847,10848,10849,10850,10851,10852,10853,10854,10855,10856,10857,10858,10859,10860, #10736
-10861,10862,10863,10864,10865,10866,10867,10868,10869,10870,10871,10872,10873,10874,10875,10876, #10752
-10877,10878,4486,10879,10880,10881,10882,10883,10884,10885,4949,10886,10887,10888,10889,10890, #10768
-10891,10892,10893,10894,10895,10896,10897,10898,10899,10900,10901,10902,10903,10904,10905,10906, #10784
-10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918,10919,4487,10920,10921, #10800
-10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,4950,10933,10934,10935,10936, #10816
-10937,10938,10939,10940,10941,10942,10943,10944,10945,10946,10947,10948,10949,4488,10950,10951, #10832
-10952,10953,10954,10955,10956,10957,10958,10959,4190,10960,10961,10962,10963,10964,10965,10966, #10848
-10967,10968,10969,10970,10971,10972,10973,10974,10975,10976,10977,10978,10979,10980,10981,10982, #10864
-10983,10984,10985,10986,10987,10988,10989,10990,10991,10992,10993,10994,10995,10996,10997,10998, #10880
-10999,11000,11001,11002,11003,11004,11005,11006,3960,11007,11008,11009,11010,11011,11012,11013, #10896
-11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11027,11028,11029, #10912
-11030,11031,11032,4951,11033,11034,11035,11036,11037,11038,11039,11040,11041,11042,11043,11044, #10928
-11045,11046,11047,4489,11048,11049,11050,11051,4952,11052,11053,11054,11055,11056,11057,11058, #10944
-4953,11059,11060,11061,11062,11063,11064,11065,11066,11067,11068,11069,11070,11071,4954,11072, #10960
-11073,11074,11075,11076,11077,11078,11079,11080,11081,11082,11083,11084,11085,11086,11087,11088, #10976
-11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11103,11104, #10992
-11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,3808,11116,11117,11118,11119, #11008
-11120,11121,11122,11123,11124,11125,11126,11127,11128,11129,11130,11131,11132,11133,11134,4955, #11024
-11135,11136,11137,11138,11139,11140,11141,11142,11143,11144,11145,11146,11147,11148,11149,11150, #11040
-11151,11152,11153,11154,11155,11156,11157,11158,11159,11160,11161,4956,11162,11163,11164,11165, #11056
-11166,11167,11168,11169,11170,11171,11172,11173,11174,11175,11176,11177,11178,11179,11180,4957, #11072
-11181,11182,11183,11184,11185,11186,4958,11187,11188,11189,11190,11191,11192,11193,11194,11195, #11088
-11196,11197,11198,11199,11200,3678,11201,11202,11203,11204,11205,11206,4191,11207,11208,11209, #11104
-11210,11211,11212,11213,11214,11215,11216,11217,11218,11219,11220,11221,11222,11223,11224,11225, #11120
-11226,11227,11228,11229,11230,11231,11232,11233,11234,11235,11236,11237,11238,11239,11240,11241, #11136
-11242,11243,11244,11245,11246,11247,11248,11249,11250,11251,4959,11252,11253,11254,11255,11256, #11152
-11257,11258,11259,11260,11261,11262,11263,11264,11265,11266,11267,11268,11269,11270,11271,11272, #11168
-11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11287,11288, #11184
-11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11303,11304, #11200
-11305,11306,11307,11308,11309,11310,11311,11312,11313,11314,3679,11315,11316,11317,11318,4490, #11216
-11319,11320,11321,11322,11323,11324,11325,11326,11327,11328,11329,11330,11331,11332,11333,11334, #11232
-11335,11336,11337,11338,11339,11340,11341,11342,11343,11344,11345,11346,11347,4960,11348,11349, #11248
-11350,11351,11352,11353,11354,11355,11356,11357,11358,11359,11360,11361,11362,11363,11364,11365, #11264
-11366,11367,11368,11369,11370,11371,11372,11373,11374,11375,11376,11377,3961,4961,11378,11379, #11280
-11380,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11395, #11296
-11396,11397,4192,11398,11399,11400,11401,11402,11403,11404,11405,11406,11407,11408,11409,11410, #11312
-11411,4962,11412,11413,11414,11415,11416,11417,11418,11419,11420,11421,11422,11423,11424,11425, #11328
-11426,11427,11428,11429,11430,11431,11432,11433,11434,11435,11436,11437,11438,11439,11440,11441, #11344
-11442,11443,11444,11445,11446,11447,11448,11449,11450,11451,11452,11453,11454,11455,11456,11457, #11360
-11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,4963,11470,11471,4491, #11376
-11472,11473,11474,11475,4964,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486, #11392
-11487,11488,11489,11490,11491,11492,4965,11493,11494,11495,11496,11497,11498,11499,11500,11501, #11408
-11502,11503,11504,11505,11506,11507,11508,11509,11510,11511,11512,11513,11514,11515,11516,11517, #11424
-11518,11519,11520,11521,11522,11523,11524,11525,11526,11527,11528,11529,3962,11530,11531,11532, #11440
-11533,11534,11535,11536,11537,11538,11539,11540,11541,11542,11543,11544,11545,11546,11547,11548, #11456
-11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11563,11564, #11472
-4193,4194,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578, #11488
-11579,11580,11581,11582,11583,11584,11585,11586,11587,11588,11589,11590,11591,4966,4195,11592, #11504
-11593,11594,11595,11596,11597,11598,11599,11600,11601,11602,11603,11604,3090,11605,11606,11607, #11520
-11608,11609,11610,4967,11611,11612,11613,11614,11615,11616,11617,11618,11619,11620,11621,11622, #11536
-11623,11624,11625,11626,11627,11628,11629,11630,11631,11632,11633,11634,11635,11636,11637,11638, #11552
-11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654, #11568
-11655,11656,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670, #11584
-11671,11672,11673,11674,4968,11675,11676,11677,11678,11679,11680,11681,11682,11683,11684,11685, #11600
-11686,11687,11688,11689,11690,11691,11692,11693,3809,11694,11695,11696,11697,11698,11699,11700, #11616
-11701,11702,11703,11704,11705,11706,11707,11708,11709,11710,11711,11712,11713,11714,11715,11716, #11632
-11717,11718,3553,11719,11720,11721,11722,11723,11724,11725,11726,11727,11728,11729,11730,4969, #11648
-11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,4492,11741,11742,11743,11744,11745, #11664
-11746,11747,11748,11749,11750,11751,11752,4970,11753,11754,11755,11756,11757,11758,11759,11760, #11680
-11761,11762,11763,11764,11765,11766,11767,11768,11769,11770,11771,11772,11773,11774,11775,11776, #11696
-11777,11778,11779,11780,11781,11782,11783,11784,11785,11786,11787,11788,11789,11790,4971,11791, #11712
-11792,11793,11794,11795,11796,11797,4972,11798,11799,11800,11801,11802,11803,11804,11805,11806, #11728
-11807,11808,11809,11810,4973,11811,11812,11813,11814,11815,11816,11817,11818,11819,11820,11821, #11744
-11822,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,3680,3810,11835, #11760
-11836,4974,11837,11838,11839,11840,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850, #11776
-11851,11852,11853,11854,11855,11856,11857,11858,11859,11860,11861,11862,11863,11864,11865,11866, #11792
-11867,11868,11869,11870,11871,11872,11873,11874,11875,11876,11877,11878,11879,11880,11881,11882, #11808
-11883,11884,4493,11885,11886,11887,11888,11889,11890,11891,11892,11893,11894,11895,11896,11897, #11824
-11898,11899,11900,11901,11902,11903,11904,11905,11906,11907,11908,11909,11910,11911,11912,11913, #11840
-11914,11915,4975,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928, #11856
-11929,11930,11931,11932,11933,11934,11935,11936,11937,11938,11939,11940,11941,11942,11943,11944, #11872
-11945,11946,11947,11948,11949,4976,11950,11951,11952,11953,11954,11955,11956,11957,11958,11959, #11888
-11960,11961,11962,11963,11964,11965,11966,11967,11968,11969,11970,11971,11972,11973,11974,11975, #11904
-11976,11977,11978,11979,11980,11981,11982,11983,11984,11985,11986,11987,4196,11988,11989,11990, #11920
-11991,11992,4977,11993,11994,11995,11996,11997,11998,11999,12000,12001,12002,12003,12004,12005, #11936
-12006,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021, #11952
-12022,12023,12024,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037, #11968
-12038,12039,12040,12041,12042,12043,12044,12045,12046,12047,12048,12049,12050,12051,12052,12053, #11984
-12054,12055,12056,12057,12058,12059,12060,12061,4978,12062,12063,12064,12065,12066,12067,12068, #12000
-12069,12070,12071,12072,12073,12074,12075,12076,12077,12078,12079,12080,12081,12082,12083,12084, #12016
-12085,12086,12087,12088,12089,12090,12091,12092,12093,12094,12095,12096,12097,12098,12099,12100, #12032
-12101,12102,12103,12104,12105,12106,12107,12108,12109,12110,12111,12112,12113,12114,12115,12116, #12048
-12117,12118,12119,12120,12121,12122,12123,4979,12124,12125,12126,12127,12128,4197,12129,12130, #12064
-12131,12132,12133,12134,12135,12136,12137,12138,12139,12140,12141,12142,12143,12144,12145,12146, #12080
-12147,12148,12149,12150,12151,12152,12153,12154,4980,12155,12156,12157,12158,12159,12160,4494, #12096
-12161,12162,12163,12164,3811,12165,12166,12167,12168,12169,4495,12170,12171,4496,12172,12173, #12112
-12174,12175,12176,3812,12177,12178,12179,12180,12181,12182,12183,12184,12185,12186,12187,12188, #12128
-12189,12190,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204, #12144
-12205,12206,12207,12208,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220, #12160
-12221,4981,12222,12223,12224,12225,12226,12227,12228,12229,12230,12231,12232,12233,12234,12235, #12176
-4982,12236,12237,12238,12239,12240,12241,12242,12243,12244,12245,4983,12246,12247,12248,12249, #12192
-4984,12250,12251,12252,12253,12254,12255,12256,12257,12258,12259,12260,12261,12262,12263,12264, #12208
-4985,12265,4497,12266,12267,12268,12269,12270,12271,12272,12273,12274,12275,12276,12277,12278, #12224
-12279,12280,12281,12282,12283,12284,12285,12286,12287,4986,12288,12289,12290,12291,12292,12293, #12240
-12294,12295,12296,2473,12297,12298,12299,12300,12301,12302,12303,12304,12305,12306,12307,12308, #12256
-12309,12310,12311,12312,12313,12314,12315,12316,12317,12318,12319,3963,12320,12321,12322,12323, #12272
-12324,12325,12326,12327,12328,12329,12330,12331,12332,4987,12333,12334,12335,12336,12337,12338, #12288
-12339,12340,12341,12342,12343,12344,12345,12346,12347,12348,12349,12350,12351,12352,12353,12354, #12304
-12355,12356,12357,12358,12359,3964,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369, #12320
-12370,3965,12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384, #12336
-12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,12400, #12352
-12401,12402,12403,12404,12405,12406,12407,12408,4988,12409,12410,12411,12412,12413,12414,12415, #12368
-12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,12431, #12384
-12432,12433,12434,12435,12436,12437,12438,3554,12439,12440,12441,12442,12443,12444,12445,12446, #12400
-12447,12448,12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462, #12416
-12463,12464,4989,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477, #12432
-12478,12479,12480,4990,12481,12482,12483,12484,12485,12486,12487,12488,12489,4498,12490,12491, #12448
-12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507, #12464
-12508,12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,12523, #12480
-12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,12535,12536,12537,12538,12539, #12496
-12540,12541,12542,12543,12544,12545,12546,12547,12548,12549,12550,12551,4991,12552,12553,12554, #12512
-12555,12556,12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570, #12528
-12571,12572,12573,12574,12575,12576,12577,12578,3036,12579,12580,12581,12582,12583,3966,12584, #12544
-12585,12586,12587,12588,12589,12590,12591,12592,12593,12594,12595,12596,12597,12598,12599,12600, #12560
-12601,12602,12603,12604,12605,12606,12607,12608,12609,12610,12611,12612,12613,12614,12615,12616, #12576
-12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632, #12592
-12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,4499,12647, #12608
-12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663, #12624
-12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679, #12640
-12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695, #12656
-12696,12697,12698,4992,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710, #12672
-12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726, #12688
-12727,12728,12729,12730,12731,12732,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742, #12704
-12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758, #12720
-12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774, #12736
-12775,12776,12777,12778,4993,2175,12779,12780,12781,12782,12783,12784,12785,12786,4500,12787, #12752
-12788,12789,12790,12791,12792,12793,12794,12795,12796,12797,12798,12799,12800,12801,12802,12803, #12768
-12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819, #12784
-12820,12821,12822,12823,12824,12825,12826,4198,3967,12827,12828,12829,12830,12831,12832,12833, #12800
-12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849, #12816
-12850,12851,12852,12853,12854,12855,12856,12857,12858,12859,12860,12861,4199,12862,12863,12864, #12832
-12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880, #12848
-12881,12882,12883,12884,12885,12886,12887,4501,12888,12889,12890,12891,12892,12893,12894,12895, #12864
-12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911, #12880
-12912,4994,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926, #12896
-12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942, #12912
-12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,1772,12957, #12928
-12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973, #12944
-12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989, #12960
-12990,12991,12992,12993,12994,12995,12996,12997,4502,12998,4503,12999,13000,13001,13002,13003, #12976
-4504,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018, #12992
-13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,3449,13030,13031,13032,13033, #13008
-13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049, #13024
-13050,13051,13052,13053,13054,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065, #13040
-13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081, #13056
-13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097, #13072
-13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,13109,13110,13111,13112,13113, #13088
-13114,13115,13116,13117,13118,3968,13119,4995,13120,13121,13122,13123,13124,13125,13126,13127, #13104
-4505,13128,13129,13130,13131,13132,13133,13134,4996,4506,13135,13136,13137,13138,13139,4997, #13120
-13140,13141,13142,13143,13144,13145,13146,13147,13148,13149,13150,13151,13152,13153,13154,13155, #13136
-13156,13157,13158,13159,4998,13160,13161,13162,13163,13164,13165,13166,13167,13168,13169,13170, #13152
-13171,13172,13173,13174,13175,13176,4999,13177,13178,13179,13180,13181,13182,13183,13184,13185, #13168
-13186,13187,13188,13189,13190,13191,13192,13193,13194,13195,13196,13197,13198,13199,13200,13201, #13184
-13202,13203,13204,13205,13206,5000,13207,13208,13209,13210,13211,13212,13213,13214,13215,13216, #13200
-13217,13218,13219,13220,13221,13222,13223,13224,13225,13226,13227,4200,5001,13228,13229,13230, #13216
-13231,13232,13233,13234,13235,13236,13237,13238,13239,13240,3969,13241,13242,13243,13244,3970, #13232
-13245,13246,13247,13248,13249,13250,13251,13252,13253,13254,13255,13256,13257,13258,13259,13260, #13248
-13261,13262,13263,13264,13265,13266,13267,13268,3450,13269,13270,13271,13272,13273,13274,13275, #13264
-13276,5002,13277,13278,13279,13280,13281,13282,13283,13284,13285,13286,13287,13288,13289,13290, #13280
-13291,13292,13293,13294,13295,13296,13297,13298,13299,13300,13301,13302,3813,13303,13304,13305, #13296
-13306,13307,13308,13309,13310,13311,13312,13313,13314,13315,13316,13317,13318,13319,13320,13321, #13312
-13322,13323,13324,13325,13326,13327,13328,4507,13329,13330,13331,13332,13333,13334,13335,13336, #13328
-13337,13338,13339,13340,13341,5003,13342,13343,13344,13345,13346,13347,13348,13349,13350,13351, #13344
-13352,13353,13354,13355,13356,13357,13358,13359,13360,13361,13362,13363,13364,13365,13366,13367, #13360
-5004,13368,13369,13370,13371,13372,13373,13374,13375,13376,13377,13378,13379,13380,13381,13382, #13376
-13383,13384,13385,13386,13387,13388,13389,13390,13391,13392,13393,13394,13395,13396,13397,13398, #13392
-13399,13400,13401,13402,13403,13404,13405,13406,13407,13408,13409,13410,13411,13412,13413,13414, #13408
-13415,13416,13417,13418,13419,13420,13421,13422,13423,13424,13425,13426,13427,13428,13429,13430, #13424
-13431,13432,4508,13433,13434,13435,4201,13436,13437,13438,13439,13440,13441,13442,13443,13444, #13440
-13445,13446,13447,13448,13449,13450,13451,13452,13453,13454,13455,13456,13457,5005,13458,13459, #13456
-13460,13461,13462,13463,13464,13465,13466,13467,13468,13469,13470,4509,13471,13472,13473,13474, #13472
-13475,13476,13477,13478,13479,13480,13481,13482,13483,13484,13485,13486,13487,13488,13489,13490, #13488
-13491,13492,13493,13494,13495,13496,13497,13498,13499,13500,13501,13502,13503,13504,13505,13506, #13504
-13507,13508,13509,13510,13511,13512,13513,13514,13515,13516,13517,13518,13519,13520,13521,13522, #13520
-13523,13524,13525,13526,13527,13528,13529,13530,13531,13532,13533,13534,13535,13536,13537,13538, #13536
-13539,13540,13541,13542,13543,13544,13545,13546,13547,13548,13549,13550,13551,13552,13553,13554, #13552
-13555,13556,13557,13558,13559,13560,13561,13562,13563,13564,13565,13566,13567,13568,13569,13570, #13568
-13571,13572,13573,13574,13575,13576,13577,13578,13579,13580,13581,13582,13583,13584,13585,13586, #13584
-13587,13588,13589,13590,13591,13592,13593,13594,13595,13596,13597,13598,13599,13600,13601,13602, #13600
-13603,13604,13605,13606,13607,13608,13609,13610,13611,13612,13613,13614,13615,13616,13617,13618, #13616
-13619,13620,13621,13622,13623,13624,13625,13626,13627,13628,13629,13630,13631,13632,13633,13634, #13632
-13635,13636,13637,13638,13639,13640,13641,13642,5006,13643,13644,13645,13646,13647,13648,13649, #13648
-13650,13651,5007,13652,13653,13654,13655,13656,13657,13658,13659,13660,13661,13662,13663,13664, #13664
-13665,13666,13667,13668,13669,13670,13671,13672,13673,13674,13675,13676,13677,13678,13679,13680, #13680
-13681,13682,13683,13684,13685,13686,13687,13688,13689,13690,13691,13692,13693,13694,13695,13696, #13696
-13697,13698,13699,13700,13701,13702,13703,13704,13705,13706,13707,13708,13709,13710,13711,13712, #13712
-13713,13714,13715,13716,13717,13718,13719,13720,13721,13722,13723,13724,13725,13726,13727,13728, #13728
-13729,13730,13731,13732,13733,13734,13735,13736,13737,13738,13739,13740,13741,13742,13743,13744, #13744
-13745,13746,13747,13748,13749,13750,13751,13752,13753,13754,13755,13756,13757,13758,13759,13760, #13760
-13761,13762,13763,13764,13765,13766,13767,13768,13769,13770,13771,13772,13773,13774,3273,13775, #13776
-13776,13777,13778,13779,13780,13781,13782,13783,13784,13785,13786,13787,13788,13789,13790,13791, #13792
-13792,13793,13794,13795,13796,13797,13798,13799,13800,13801,13802,13803,13804,13805,13806,13807, #13808
-13808,13809,13810,13811,13812,13813,13814,13815,13816,13817,13818,13819,13820,13821,13822,13823, #13824
-13824,13825,13826,13827,13828,13829,13830,13831,13832,13833,13834,13835,13836,13837,13838,13839, #13840
-13840,13841,13842,13843,13844,13845,13846,13847,13848,13849,13850,13851,13852,13853,13854,13855, #13856
-13856,13857,13858,13859,13860,13861,13862,13863,13864,13865,13866,13867,13868,13869,13870,13871, #13872
-13872,13873,13874,13875,13876,13877,13878,13879,13880,13881,13882,13883,13884,13885,13886,13887, #13888
-13888,13889,13890,13891,13892,13893,13894,13895,13896,13897,13898,13899,13900,13901,13902,13903, #13904
-13904,13905,13906,13907,13908,13909,13910,13911,13912,13913,13914,13915,13916,13917,13918,13919, #13920
-13920,13921,13922,13923,13924,13925,13926,13927,13928,13929,13930,13931,13932,13933,13934,13935, #13936
-13936,13937,13938,13939,13940,13941,13942,13943,13944,13945,13946,13947,13948,13949,13950,13951, #13952
-13952,13953,13954,13955,13956,13957,13958,13959,13960,13961,13962,13963,13964,13965,13966,13967, #13968
-13968,13969,13970,13971,13972) #13973
+2299, 208,3546,4161,2020, 330,4438,3944,2906,2499,3799,4439,4811,5796,5797,5798, # 5376
+)
 
-# flake8: noqa
--- a/ThirdParty/CharDet/chardet/big5prober.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/big5prober.py	Sat May 06 13:43:21 2017 +0200
@@ -28,15 +28,20 @@
 from .mbcharsetprober import MultiByteCharSetProber
 from .codingstatemachine import CodingStateMachine
 from .chardistribution import Big5DistributionAnalysis
-from .mbcssm import Big5SMModel
+from .mbcssm import BIG5_SM_MODEL
 
 
 class Big5Prober(MultiByteCharSetProber):
     def __init__(self):
-        MultiByteCharSetProber.__init__(self)
-        self._mCodingSM = CodingStateMachine(Big5SMModel)
-        self._mDistributionAnalyzer = Big5DistributionAnalysis()
+        super(Big5Prober, self).__init__()
+        self.coding_sm = CodingStateMachine(BIG5_SM_MODEL)
+        self.distribution_analyzer = Big5DistributionAnalysis()
         self.reset()
 
-    def get_charset_name(self):
+    @property
+    def charset_name(self):
         return "Big5"
+
+    @property
+    def language(self):
+        return "Chinese"
--- a/ThirdParty/CharDet/chardet/chardetect.py	Sun Apr 09 16:52:55 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-"""
-Script which takes one or more file paths and reports on their detected
-encodings
-
-Example::
-
-    % chardetect somefile someotherfile
-    somefile: windows-1252 with confidence 0.5
-    someotherfile: ascii with confidence 1.0
-
-If no paths are provided, it takes its input from stdin.
-
-"""
-
-from __future__ import absolute_import, print_function, unicode_literals
-
-import argparse
-import sys
-from io import open
-
-from chardet import __version__
-from chardet.universaldetector import UniversalDetector
-
-
-def description_of(lines, name='stdin'):
-    """
-    Return a string describing the probable encoding of a file or
-    list of strings.
-
-    :param lines: The lines to get the encoding of.
-    :type lines: Iterable of bytes
-    :param name: Name of file or collection of lines
-    :type name: str
-    """
-    u = UniversalDetector()
-    for line in lines:
-        u.feed(line)
-    u.close()
-    result = u.result
-    if result['encoding']:
-        return '{0}: {1} with confidence {2}'.format(name, result['encoding'],
-                                                     result['confidence'])
-    else:
-        return '{0}: no result'.format(name)
-
-
-def main(argv=None):
-    '''
-    Handles command line arguments and gets things started.
-
-    :param argv: List of arguments, as if specified on the command-line.
-                 If None, ``sys.argv[1:]`` is used instead.
-    :type argv: list of str
-    '''
-    # Get command line arguments
-    parser = argparse.ArgumentParser(
-        description="Takes one or more file paths and reports their detected \
-                     encodings",
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-        conflict_handler='resolve')
-    parser.add_argument('input',
-                        help='File whose encoding we would like to determine.',
-                        type=argparse.FileType('rb'), nargs='*',
-                        default=[sys.stdin])
-    parser.add_argument('--version', action='version',
-                        version='%(prog)s {0}'.format(__version__))
-    args = parser.parse_args(argv)
-
-    for f in args.input:
-        if f.isatty():
-            print("You are running chardetect interactively. Press " +
-                  "CTRL-D twice at the start of a blank line to signal the " +
-                  "end of your input. If you want help, run chardetect " +
-                  "--help\n", file=sys.stderr)
-        print(description_of(f, f.name))
-
-
-if __name__ == '__main__':
-    main()
--- a/ThirdParty/CharDet/chardet/chardistribution.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/chardistribution.py	Sat May 06 13:43:21 2017 +0200
@@ -25,82 +25,84 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from .euctwfreq import (EUCTWCharToFreqOrder, EUCTW_TABLE_SIZE,
+from .euctwfreq import (EUCTW_CHAR_TO_FREQ_ORDER, EUCTW_TABLE_SIZE,
                         EUCTW_TYPICAL_DISTRIBUTION_RATIO)
-from .euckrfreq import (EUCKRCharToFreqOrder, EUCKR_TABLE_SIZE,
+from .euckrfreq import (EUCKR_CHAR_TO_FREQ_ORDER, EUCKR_TABLE_SIZE,
                         EUCKR_TYPICAL_DISTRIBUTION_RATIO)
-from .gb2312freq import (GB2312CharToFreqOrder, GB2312_TABLE_SIZE,
+from .gb2312freq import (GB2312_CHAR_TO_FREQ_ORDER, GB2312_TABLE_SIZE,
                          GB2312_TYPICAL_DISTRIBUTION_RATIO)
-from .big5freq import (Big5CharToFreqOrder, BIG5_TABLE_SIZE,
+from .big5freq import (BIG5_CHAR_TO_FREQ_ORDER, BIG5_TABLE_SIZE,
                        BIG5_TYPICAL_DISTRIBUTION_RATIO)
-from .jisfreq import (JISCharToFreqOrder, JIS_TABLE_SIZE,
+from .jisfreq import (JIS_CHAR_TO_FREQ_ORDER, JIS_TABLE_SIZE,
                       JIS_TYPICAL_DISTRIBUTION_RATIO)
-from .compat import wrap_ord
-
-ENOUGH_DATA_THRESHOLD = 1024
-SURE_YES = 0.99
-SURE_NO = 0.01
-MINIMUM_DATA_THRESHOLD = 3
 
 
-class CharDistributionAnalysis:
+class CharDistributionAnalysis(object):
+    ENOUGH_DATA_THRESHOLD = 1024
+    SURE_YES = 0.99
+    SURE_NO = 0.01
+    MINIMUM_DATA_THRESHOLD = 3
+
     def __init__(self):
         # Mapping table to get frequency order from char order (get from
         # GetOrder())
-        self._mCharToFreqOrder = None
-        self._mTableSize = None  # Size of above table
+        self._char_to_freq_order = None
+        self._table_size = None  # Size of above table
         # This is a constant value which varies from language to language,
         # used in calculating confidence.  See
         # http://www.mozilla.org/projects/intl/UniversalCharsetDetection.html
         # for further detail.
-        self._mTypicalDistributionRatio = None
+        self.typical_distribution_ratio = None
+        self._done = None
+        self._total_chars = None
+        self._freq_chars = None
         self.reset()
 
     def reset(self):
         """reset analyser, clear any state"""
         # If this flag is set to True, detection is done and conclusion has
         # been made
-        self._mDone = False
-        self._mTotalChars = 0  # Total characters encountered
+        self._done = False
+        self._total_chars = 0  # Total characters encountered
         # The number of characters whose frequency order is less than 512
-        self._mFreqChars = 0
+        self._freq_chars = 0
 
-    def feed(self, aBuf, aCharLen):
+    def feed(self, char, char_len):
         """feed a character with known length"""
-        if aCharLen == 2:
+        if char_len == 2:
             # we only care about 2-bytes character in our distribution analysis
-            order = self.get_order(aBuf)
+            order = self.get_order(char)
         else:
             order = -1
         if order >= 0:
-            self._mTotalChars += 1
+            self._total_chars += 1
             # order is valid
-            if order < self._mTableSize:
-                if 512 > self._mCharToFreqOrder[order]:
-                    self._mFreqChars += 1
+            if order < self._table_size:
+                if 512 > self._char_to_freq_order[order]:
+                    self._freq_chars += 1
 
     def get_confidence(self):
         """return confidence based on existing data"""
         # if we didn't receive any character in our consideration range,
         # return negative answer
-        if self._mTotalChars <= 0 or self._mFreqChars <= MINIMUM_DATA_THRESHOLD:
-            return SURE_NO
+        if self._total_chars <= 0 or self._freq_chars <= self.MINIMUM_DATA_THRESHOLD:
+            return self.SURE_NO
 
-        if self._mTotalChars != self._mFreqChars:
-            r = (self._mFreqChars / ((self._mTotalChars - self._mFreqChars)
-                 * self._mTypicalDistributionRatio))
-            if r < SURE_YES:
+        if self._total_chars != self._freq_chars:
+            r = (self._freq_chars / ((self._total_chars - self._freq_chars)
+                 * self.typical_distribution_ratio))
+            if r < self.SURE_YES:
                 return r
 
         # normalize confidence (we don't want to be 100% sure)
-        return SURE_YES
+        return self.SURE_YES
 
     def got_enough_data(self):
         # It is not necessary to receive all data to draw conclusion.
         # For charset detection, certain amount of data is enough
-        return self._mTotalChars > ENOUGH_DATA_THRESHOLD
+        return self._total_chars > self.ENOUGH_DATA_THRESHOLD
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # We do not handle characters based on the original encoding string,
         # but convert this encoding string to a number, here called order.
         # This allows multiple encodings of a language to share one frequency
@@ -110,55 +112,55 @@
 
 class EUCTWDistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = EUCTWCharToFreqOrder
-        self._mTableSize = EUCTW_TABLE_SIZE
-        self._mTypicalDistributionRatio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
+        super(EUCTWDistributionAnalysis, self).__init__()
+        self._char_to_freq_order = EUCTW_CHAR_TO_FREQ_ORDER
+        self._table_size = EUCTW_TABLE_SIZE
+        self.typical_distribution_ratio = EUCTW_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for euc-TW encoding, we are interested
         #   first  byte range: 0xc4 -- 0xfe
         #   second byte range: 0xa1 -- 0xfe
         # no validation needed here. State machine has done that
-        first_char = wrap_ord(aBuf[0])
+        first_char = byte_str[0]
         if first_char >= 0xC4:
-            return 94 * (first_char - 0xC4) + wrap_ord(aBuf[1]) - 0xA1
+            return 94 * (first_char - 0xC4) + byte_str[1] - 0xA1
         else:
             return -1
 
 
 class EUCKRDistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = EUCKRCharToFreqOrder
-        self._mTableSize = EUCKR_TABLE_SIZE
-        self._mTypicalDistributionRatio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
+        super(EUCKRDistributionAnalysis, self).__init__()
+        self._char_to_freq_order = EUCKR_CHAR_TO_FREQ_ORDER
+        self._table_size = EUCKR_TABLE_SIZE
+        self.typical_distribution_ratio = EUCKR_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for euc-KR encoding, we are interested
         #   first  byte range: 0xb0 -- 0xfe
         #   second byte range: 0xa1 -- 0xfe
         # no validation needed here. State machine has done that
-        first_char = wrap_ord(aBuf[0])
+        first_char = byte_str[0]
         if first_char >= 0xB0:
-            return 94 * (first_char - 0xB0) + wrap_ord(aBuf[1]) - 0xA1
+            return 94 * (first_char - 0xB0) + byte_str[1] - 0xA1
         else:
             return -1
 
 
 class GB2312DistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = GB2312CharToFreqOrder
-        self._mTableSize = GB2312_TABLE_SIZE
-        self._mTypicalDistributionRatio = GB2312_TYPICAL_DISTRIBUTION_RATIO
+        super(GB2312DistributionAnalysis, self).__init__()
+        self._char_to_freq_order = GB2312_CHAR_TO_FREQ_ORDER
+        self._table_size = GB2312_TABLE_SIZE
+        self.typical_distribution_ratio = GB2312_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for GB2312 encoding, we are interested
         #  first  byte range: 0xb0 -- 0xfe
         #  second byte range: 0xa1 -- 0xfe
         # no validation needed here. State machine has done that
-        first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+        first_char, second_char = byte_str[0], byte_str[1]
         if (first_char >= 0xB0) and (second_char >= 0xA1):
             return 94 * (first_char - 0xB0) + second_char - 0xA1
         else:
@@ -167,17 +169,17 @@
 
 class Big5DistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = Big5CharToFreqOrder
-        self._mTableSize = BIG5_TABLE_SIZE
-        self._mTypicalDistributionRatio = BIG5_TYPICAL_DISTRIBUTION_RATIO
+        super(Big5DistributionAnalysis, self).__init__()
+        self._char_to_freq_order = BIG5_CHAR_TO_FREQ_ORDER
+        self._table_size = BIG5_TABLE_SIZE
+        self.typical_distribution_ratio = BIG5_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for big5 encoding, we are interested
         #   first  byte range: 0xa4 -- 0xfe
         #   second byte range: 0x40 -- 0x7e , 0xa1 -- 0xfe
         # no validation needed here. State machine has done that
-        first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+        first_char, second_char = byte_str[0], byte_str[1]
         if first_char >= 0xA4:
             if second_char >= 0xA1:
                 return 157 * (first_char - 0xA4) + second_char - 0xA1 + 63
@@ -189,17 +191,17 @@
 
 class SJISDistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = JISCharToFreqOrder
-        self._mTableSize = JIS_TABLE_SIZE
-        self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
+        super(SJISDistributionAnalysis, self).__init__()
+        self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER
+        self._table_size = JIS_TABLE_SIZE
+        self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for sjis encoding, we are interested
         #   first  byte range: 0x81 -- 0x9f , 0xe0 -- 0xfe
         #   second byte range: 0x40 -- 0x7e,  0x81 -- oxfe
         # no validation needed here. State machine has done that
-        first_char, second_char = wrap_ord(aBuf[0]), wrap_ord(aBuf[1])
+        first_char, second_char = byte_str[0], byte_str[1]
         if (first_char >= 0x81) and (first_char <= 0x9F):
             order = 188 * (first_char - 0x81)
         elif (first_char >= 0xE0) and (first_char <= 0xEF):
@@ -214,18 +216,18 @@
 
 class EUCJPDistributionAnalysis(CharDistributionAnalysis):
     def __init__(self):
-        CharDistributionAnalysis.__init__(self)
-        self._mCharToFreqOrder = JISCharToFreqOrder
-        self._mTableSize = JIS_TABLE_SIZE
-        self._mTypicalDistributionRatio = JIS_TYPICAL_DISTRIBUTION_RATIO
+        super(EUCJPDistributionAnalysis, self).__init__()
+        self._char_to_freq_order = JIS_CHAR_TO_FREQ_ORDER
+        self._table_size = JIS_TABLE_SIZE
+        self.typical_distribution_ratio = JIS_TYPICAL_DISTRIBUTION_RATIO
 
-    def get_order(self, aBuf):
+    def get_order(self, byte_str):
         # for euc-JP encoding, we are interested
         #   first  byte range: 0xa0 -- 0xfe
         #   second byte range: 0xa1 -- 0xfe
         # no validation needed here. State machine has done that
-        char = wrap_ord(aBuf[0])
+        char = byte_str[0]
         if char >= 0xA0:
-            return 94 * (char - 0xA1) + wrap_ord(aBuf[1]) - 0xa1
+            return 94 * (char - 0xA1) + byte_str[1] - 0xa1
         else:
             return -1
--- a/ThirdParty/CharDet/chardet/charsetgroupprober.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/charsetgroupprober.py	Sat May 06 13:43:21 2017 +0200
@@ -1,11 +1,11 @@
 ######################## BEGIN LICENSE BLOCK ########################
 # The Original Code is Mozilla Communicator client code.
-# 
+#
 # The Initial Developer of the Original Code is
 # Netscape Communications Corporation.
 # Portions created by the Initial Developer are Copyright (C) 1998
 # the Initial Developer. All Rights Reserved.
-# 
+#
 # Contributor(s):
 #   Mark Pilgrim - port to Python
 #
@@ -13,94 +13,94 @@
 # modify it under the terms of the GNU Lesser General Public
 # License as published by the Free Software Foundation; either
 # version 2.1 of the License, or (at your option) any later version.
-# 
+#
 # This library is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 # Lesser General Public License for more details.
-# 
+#
 # You should have received a copy of the GNU Lesser General Public
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from . import constants
-import sys
+from .enums import ProbingState
 from .charsetprober import CharSetProber
 
 
 class CharSetGroupProber(CharSetProber):
-    def __init__(self):
-        CharSetProber.__init__(self)
-        self._mActiveNum = 0
-        self._mProbers = []
-        self._mBestGuessProber = None
+    def __init__(self, lang_filter=None):
+        super(CharSetGroupProber, self).__init__(lang_filter=lang_filter)
+        self._active_num = 0
+        self.probers = []
+        self._best_guess_prober = None
 
     def reset(self):
-        CharSetProber.reset(self)
-        self._mActiveNum = 0
-        for prober in self._mProbers:
+        super(CharSetGroupProber, self).reset()
+        self._active_num = 0
+        for prober in self.probers:
             if prober:
                 prober.reset()
                 prober.active = True
-                self._mActiveNum += 1
-        self._mBestGuessProber = None
+                self._active_num += 1
+        self._best_guess_prober = None
 
-    def get_charset_name(self):
-        if not self._mBestGuessProber:
+    @property
+    def charset_name(self):
+        if not self._best_guess_prober:
             self.get_confidence()
-            if not self._mBestGuessProber:
+            if not self._best_guess_prober:
                 return None
-#                self._mBestGuessProber = self._mProbers[0]
-        return self._mBestGuessProber.get_charset_name()
+        return self._best_guess_prober.charset_name
 
-    def feed(self, aBuf):
-        for prober in self._mProbers:
+    @property
+    def language(self):
+        if not self._best_guess_prober:
+            self.get_confidence()
+            if not self._best_guess_prober:
+                return None
+        return self._best_guess_prober.language
+
+    def feed(self, byte_str):
+        for prober in self.probers:
             if not prober:
                 continue
             if not prober.active:
                 continue
-            st = prober.feed(aBuf)
-            if not st:
+            state = prober.feed(byte_str)
+            if not state:
                 continue
-            if st == constants.eFoundIt:
-                self._mBestGuessProber = prober
-                return self.get_state()
-            elif st == constants.eNotMe:
+            if state == ProbingState.FOUND_IT:
+                self._best_guess_prober = prober
+                return self.state
+            elif state == ProbingState.NOT_ME:
                 prober.active = False
-                self._mActiveNum -= 1
-                if self._mActiveNum <= 0:
-                    self._mState = constants.eNotMe
-                    return self.get_state()
-        return self.get_state()
+                self._active_num -= 1
+                if self._active_num <= 0:
+                    self._state = ProbingState.NOT_ME
+                    return self.state
+        return self.state
 
     def get_confidence(self):
-        st = self.get_state()
-        if st == constants.eFoundIt:
+        state = self.state
+        if state == ProbingState.FOUND_IT:
             return 0.99
-        elif st == constants.eNotMe:
+        elif state == ProbingState.NOT_ME:
             return 0.01
-        bestConf = 0.0
-        self._mBestGuessProber = None
-        for prober in self._mProbers:
+        best_conf = 0.0
+        self._best_guess_prober = None
+        for prober in self.probers:
             if not prober:
                 continue
             if not prober.active:
-                if constants._debug:
-                    sys.stderr.write(prober.get_charset_name()
-                                     + ' not active\n')
+                self.logger.debug('%s not active', prober.charset_name)
                 continue
-            cf = prober.get_confidence()
-            if constants._debug:
-                sys.stderr.write('%s confidence = %s\n' %
-                                 (prober.get_charset_name(), cf))
-            if bestConf < cf:
-                bestConf = cf
-                self._mBestGuessProber = prober
-        if not self._mBestGuessProber:
+            conf = prober.get_confidence()
+            self.logger.debug('%s %s confidence = %s', prober.charset_name, prober.language, conf)
+            if best_conf < conf:
+                best_conf = conf
+                self._best_guess_prober = prober
+        if not self._best_guess_prober:
             return 0.0
-        return bestConf
-#        else:
-#            self._mBestGuessProber = self._mProbers[0]
-#            return self._mBestGuessProber.get_confidence()
+        return best_conf
--- a/ThirdParty/CharDet/chardet/charsetprober.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/charsetprober.py	Sat May 06 13:43:21 2017 +0200
@@ -26,37 +26,120 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from . import constants
+import logging
 import re
 
+from .enums import ProbingState
+
 
-class CharSetProber:
-    def __init__(self):
-        pass
+class CharSetProber(object):
+
+    SHORTCUT_THRESHOLD = 0.95
+
+    def __init__(self, lang_filter=None):
+        self._state = None
+        self.lang_filter = lang_filter
+        self.logger = logging.getLogger(__name__)
 
     def reset(self):
-        self._mState = constants.eDetecting
+        self._state = ProbingState.DETECTING
 
-    def get_charset_name(self):
+    @property
+    def charset_name(self):
         return None
 
-    def feed(self, aBuf):
+    def feed(self, buf):
         pass
 
-    def get_state(self):
-        return self._mState
+    @property
+    def state(self):
+        return self._state
 
     def get_confidence(self):
         return 0.0
 
-    def filter_high_bit_only(self, aBuf):
-        aBuf = re.sub(b'([\x00-\x7F])+', b' ', aBuf)
-        return aBuf
+    @staticmethod
+    def filter_high_byte_only(buf):
+        buf = re.sub(b'([\x00-\x7F])+', b' ', buf)
+        return buf
+
+    @staticmethod
+    def filter_international_words(buf):
+        """
+        We define three types of bytes:
+        alphabet: english alphabets [a-zA-Z]
+        international: international characters [\x80-\xFF]
+        marker: everything else [^a-zA-Z\x80-\xFF]
+
+        The input buffer can be thought to contain a series of words delimited
+        by markers. This function works to filter all words that contain at
+        least one international character. All contiguous sequences of markers
+        are replaced by a single space ascii character.
+
+        This filter applies to all scripts which do not use English characters.
+        """
+        filtered = bytearray()
+
+        # This regex expression filters out only words that have at-least one
+        # international character. The word may include one marker character at
+        # the end.
+        words = re.findall(b'[a-zA-Z]*[\x80-\xFF]+[a-zA-Z]*[^a-zA-Z\x80-\xFF]?',
+                           buf)
+
+        for word in words:
+            filtered.extend(word[:-1])
+
+            # If the last character in the word is a marker, replace it with a
+            # space as markers shouldn't affect our analysis (they are used
+            # similarly across all languages and may thus have similar
+            # frequencies).
+            last_char = word[-1:]
+            if not last_char.isalpha() and last_char < b'\x80':
+                last_char = b' '
+            filtered.extend(last_char)
+
+        return filtered
 
-    def filter_without_english_letters(self, aBuf):
-        aBuf = re.sub(b'([A-Za-z])+', b' ', aBuf)
-        return aBuf
+    @staticmethod
+    def filter_with_english_letters(buf):
+        """
+        Returns a copy of ``buf`` that retains only the sequences of English
+        alphabet and high byte characters that are not between <> characters.
+        Also retains English alphabet and high byte characters immediately
+        before occurrences of >.
+
+        This filter can be applied to all scripts which contain both English
+        characters and extended ASCII characters, but is currently only used by
+        ``Latin1Prober``.
+        """
+        filtered = bytearray()
+        in_tag = False
+        prev = 0
 
-    def filter_with_english_letters(self, aBuf):
-        # TODO
-        return aBuf
+        for curr in range(len(buf)):
+            # Slice here to get bytes instead of an int with Python 3
+            buf_char = buf[curr:curr + 1]
+            # Check if we're coming out of or entering an HTML tag
+            if buf_char == b'>':
+                in_tag = False
+            elif buf_char == b'<':
+                in_tag = True
+
+            # If current character is not extended-ASCII and not alphabetic...
+            if buf_char < b'\x80' and not buf_char.isalpha():
+                # ...and we're not in a tag
+                if curr > prev and not in_tag:
+                    # Keep everything after last non-extended-ASCII,
+                    # non-alphabetic character
+                    filtered.extend(buf[prev:curr])
+                    # Output a space to delimit stretch we kept
+                    filtered.extend(b' ')
+                prev = curr + 1
+
+        # If we're not in a tag...
+        if not in_tag:
+            # Keep everything after last non-extended-ASCII, non-alphabetic
+            # character
+            filtered.extend(buf[prev:])
+
+        return filtered
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ThirdParty/CharDet/chardet/cli/__init__.py	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,1 @@
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ThirdParty/CharDet/chardet/cli/chardetect.py	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,80 @@
+#!/usr/bin/env python
+"""
+Script which takes one or more file paths and reports on their detected
+encodings
+
+Example::
+
+    % chardetect somefile someotherfile
+    somefile: windows-1252 with confidence 0.5
+    someotherfile: ascii with confidence 1.0
+
+If no paths are provided, it takes its input from stdin.
+
+"""
+
+from __future__ import absolute_import, print_function, unicode_literals
+
+import argparse
+import sys
+from io import open
+
+from chardet import __version__
+from chardet.universaldetector import UniversalDetector
+
+
+def description_of(lines, name='stdin'):
+    """
+    Return a string describing the probable encoding of a file or
+    list of strings.
+
+    :param lines: The lines to get the encoding of.
+    :type lines: Iterable of bytes
+    :param name: Name of file or collection of lines
+    :type name: str
+    """
+    u = UniversalDetector()
+    for line in lines:
+        u.feed(line)
+    u.close()
+    result = u.result
+    if result['encoding']:
+        return '{0}: {1} with confidence {2}'.format(name, result['encoding'],
+                                                     result['confidence'])
+    else:
+        return '{0}: no result'.format(name)
+
+
+def main(argv=None):
+    '''
+    Handles command line arguments and gets things started.
+
+    :param argv: List of arguments, as if specified on the command-line.
+                 If None, ``sys.argv[1:]`` is used instead.
+    :type argv: list of str
+    '''
+    # Get command line arguments
+    parser = argparse.ArgumentParser(
+        description="Takes one or more file paths and reports their detected \
+                     encodings",
+        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
+        conflict_handler='resolve')
+    parser.add_argument('input',
+                        help='File whose encoding we would like to determine.',
+                        type=argparse.FileType('rb'), nargs='*',
+                        default=[sys.stdin])
+    parser.add_argument('--version', action='version',
+                        version='%(prog)s {0}'.format(__version__))
+    args = parser.parse_args(argv)
+
+    for f in args.input:
+        if f.isatty():
+            print("You are running chardetect interactively. Press " +
+                  "CTRL-D twice at the start of a blank line to signal the " +
+                  "end of your input. If you want help, run chardetect " +
+                  "--help\n", file=sys.stderr)
+        print(description_of(f, f.name))
+
+
+if __name__ == '__main__':
+    main()
--- a/ThirdParty/CharDet/chardet/codingstatemachine.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/codingstatemachine.py	Sat May 06 13:43:21 2017 +0200
@@ -25,37 +25,64 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from .constants import eStart
-from .compat import wrap_ord
+import logging
+
+from .enums import MachineState
 
 
-class CodingStateMachine:
+class CodingStateMachine(object):
+    """
+    A state machine to verify a byte sequence for a particular encoding. For
+    each byte the detector receives, it will feed that byte to every active
+    state machine available, one byte at a time. The state machine changes its
+    state based on its previous state and the byte it receives. There are 3
+    states in a state machine that are of interest to an auto-detector:
+
+    START state: This is the state to start with, or a legal byte sequence
+                 (i.e. a valid code point) for character has been identified.
+
+    ME state:  This indicates that the state machine identified a byte sequence
+               that is specific to the charset it is designed for and that
+               there is no other possible encoding which can contain this byte
+               sequence. This will to lead to an immediate positive answer for
+               the detector.
+
+    ERROR state: This indicates the state machine identified an illegal byte
+                 sequence for that encoding. This will lead to an immediate
+                 negative answer for this encoding. Detector will exclude this
+                 encoding from consideration from here on.
+    """
     def __init__(self, sm):
-        self._mModel = sm
-        self._mCurrentBytePos = 0
-        self._mCurrentCharLen = 0
+        self._model = sm
+        self._curr_byte_pos = 0
+        self._curr_char_len = 0
+        self._curr_state = None
+        self.logger = logging.getLogger(__name__)
         self.reset()
 
     def reset(self):
-        self._mCurrentState = eStart
+        self._curr_state = MachineState.START
 
     def next_state(self, c):
         # for each byte we get its class
         # if it is first byte, we also get byte length
-        # PY3K: aBuf is a byte stream, so c is an int, not a byte
-        byteCls = self._mModel['classTable'][wrap_ord(c)]
-        if self._mCurrentState == eStart:
-            self._mCurrentBytePos = 0
-            self._mCurrentCharLen = self._mModel['charLenTable'][byteCls]
-        # from byte's class and stateTable, we get its next state
-        curr_state = (self._mCurrentState * self._mModel['classFactor']
-                      + byteCls)
-        self._mCurrentState = self._mModel['stateTable'][curr_state]
-        self._mCurrentBytePos += 1
-        return self._mCurrentState
+        byte_class = self._model['class_table'][c]
+        if self._curr_state == MachineState.START:
+            self._curr_byte_pos = 0
+            self._curr_char_len = self._model['char_len_table'][byte_class]
+        # from byte's class and state_table, we get its next state
+        curr_state = (self._curr_state * self._model['class_factor']
+                      + byte_class)
+        self._curr_state = self._model['state_table'][curr_state]
+        self._curr_byte_pos += 1
+        return self._curr_state
 
     def get_current_charlen(self):
-        return self._mCurrentCharLen
+        return self._curr_char_len
 
     def get_coding_state_machine(self):
-        return self._mModel['name']
+        return self._model['name']
+
+    @property
+    def language(self):
+        return self._model['language']
--- a/ThirdParty/CharDet/chardet/compat.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/compat.py	Sat May 06 13:43:21 2017 +0200
@@ -1,6 +1,7 @@
 ######################## BEGIN LICENSE BLOCK ########################
 # Contributor(s):
-#   Ian Cordasco - port to Python
+#   Dan Blanchard
+#   Ian Cordasco
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
@@ -22,13 +23,12 @@
 
 
 if sys.version_info < (3, 0):
+    PY2 = True
+    PY3 = False
     base_str = (str, unicode)
+    text_type = unicode
 else:
+    PY2 = False
+    PY3 = True
     base_str = (bytes, str)
-
-
-def wrap_ord(a):
-    if sys.version_info < (3, 0) and isinstance(a, base_str):
-        return ord(a)
-    else:
-        return a
+    text_type = str
--- a/ThirdParty/CharDet/chardet/constants.py	Sun Apr 09 16:52:55 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-######################## BEGIN LICENSE BLOCK ########################
-# The Original Code is Mozilla Universal charset detector code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 2001
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#   Mark Pilgrim - port to Python
-#   Shy Shalom - original C code
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-# 
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# Lesser General Public License for more details.
-# 
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
-# 02110-1301  USA
-######################### END LICENSE BLOCK #########################
-
-_debug = 0
-
-eDetecting = 0
-eFoundIt = 1
-eNotMe = 2
-
-eStart = 0
-eError = 1
-eItsMe = 2
-
-SHORTCUT_THRESHOLD = 0.95
--- a/ThirdParty/CharDet/chardet/cp949prober.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/cp949prober.py	Sat May 06 13:43:21 2017 +0200
@@ -25,20 +25,25 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from .mbcharsetprober import MultiByteCharSetProber
+from .chardistribution import EUCKRDistributionAnalysis
 from .codingstatemachine import CodingStateMachine
-from .chardistribution import EUCKRDistributionAnalysis
-from .mbcssm import CP949SMModel
+from .mbcharsetprober import MultiByteCharSetProber
+from .mbcssm import CP949_SM_MODEL
 
 
 class CP949Prober(MultiByteCharSetProber):
     def __init__(self):
-        MultiByteCharSetProber.__init__(self)
-        self._mCodingSM = CodingStateMachine(CP949SMModel)
+        super(CP949Prober, self).__init__()
+        self.coding_sm = CodingStateMachine(CP949_SM_MODEL)
         # NOTE: CP949 is a superset of EUC-KR, so the distribution should be
         #       not different.
-        self._mDistributionAnalyzer = EUCKRDistributionAnalysis()
+        self.distribution_analyzer = EUCKRDistributionAnalysis()
         self.reset()
 
-    def get_charset_name(self):
+    @property
+    def charset_name(self):
         return "CP949"
+
+    @property
+    def language(self):
+        return "Korean"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ThirdParty/CharDet/chardet/enums.py	Sat May 06 13:43:21 2017 +0200
@@ -0,0 +1,76 @@
+"""
+All of the Enums that are used throughout the chardet package.
+
+:author: Dan Blanchard (dan.blanchard@gmail.com)
+"""
+
+
+class InputState(object):
+    """
+    This enum represents the different states a universal detector can be in.
+    """
+    PURE_ASCII = 0
+    ESC_ASCII = 1
+    HIGH_BYTE = 2
+
+
+class LanguageFilter(object):
+    """
+    This enum represents the different language filters we can apply to a
+    ``UniversalDetector``.
+    """
+    CHINESE_SIMPLIFIED = 0x01
+    CHINESE_TRADITIONAL = 0x02
+    JAPANESE = 0x04
+    KOREAN = 0x08
+    NON_CJK = 0x10
+    ALL = 0x1F
+    CHINESE = CHINESE_SIMPLIFIED | CHINESE_TRADITIONAL
+    CJK = CHINESE | JAPANESE | KOREAN
+
+
+class ProbingState(object):
+    """
+    This enum represents the different states a prober can be in.
+    """
+    DETECTING = 0
+    FOUND_IT = 1
+    NOT_ME = 2
+
+
+class MachineState(object):
+    """
+    This enum represents the different states a state machine can be in.
+    """
+    START = 0
+    ERROR = 1
+    ITS_ME = 2
+
+
+class SequenceLikelihood(object):
+    """
+    This enum represents the likelihood of a character following the previous one.
+    """
+    NEGATIVE = 0
+    UNLIKELY = 1
+    LIKELY = 2
+    POSITIVE = 3
+
+    @classmethod
+    def get_num_categories(cls):
+        """:returns: The number of likelihood categories in the enum."""
+        return 4
+
+
+class CharacterCategory(object):
+    """
+    This enum represents the different categories language models for
+    ``SingleByteCharsetProber`` put characters into.
+
+    Anything less than CONTROL is considered a letter.
+    """
+    UNDEFINED = 255
+    LINE_BREAK = 254
+    SYMBOL = 253
+    DIGIT = 252
+    CONTROL = 251
--- a/ThirdParty/CharDet/chardet/escprober.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/escprober.py	Sat May 06 13:43:21 2017 +0200
@@ -25,62 +25,77 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from . import constants
-from .escsm import (HZSMModel, ISO2022CNSMModel, ISO2022JPSMModel,
-                    ISO2022KRSMModel)
 from .charsetprober import CharSetProber
 from .codingstatemachine import CodingStateMachine
-from .compat import wrap_ord
+from .enums import LanguageFilter, ProbingState, MachineState
+from .escsm import (HZ_SM_MODEL, ISO2022CN_SM_MODEL, ISO2022JP_SM_MODEL,
+                    ISO2022KR_SM_MODEL)
 
 
 class EscCharSetProber(CharSetProber):
-    def __init__(self):
-        CharSetProber.__init__(self)
-        self._mCodingSM = [
-            CodingStateMachine(HZSMModel),
-            CodingStateMachine(ISO2022CNSMModel),
-            CodingStateMachine(ISO2022JPSMModel),
-            CodingStateMachine(ISO2022KRSMModel)
-        ]
+    """
+    This CharSetProber uses a "code scheme" approach for detecting encodings,
+    whereby easily recognizable escape or shift sequences are relied on to
+    identify these encodings.
+    """
+
+    def __init__(self, lang_filter=None):
+        super(EscCharSetProber, self).__init__(lang_filter=lang_filter)
+        self.coding_sm = []
+        if self.lang_filter & LanguageFilter.CHINESE_SIMPLIFIED:
+            self.coding_sm.append(CodingStateMachine(HZ_SM_MODEL))
+            self.coding_sm.append(CodingStateMachine(ISO2022CN_SM_MODEL))
+        if self.lang_filter & LanguageFilter.JAPANESE:
+            self.coding_sm.append(CodingStateMachine(ISO2022JP_SM_MODEL))
+        if self.lang_filter & LanguageFilter.KOREAN:
+            self.coding_sm.append(CodingStateMachine(ISO2022KR_SM_MODEL))
+        self.active_sm_count = None
+        self._detected_charset = None
+        self._detected_language = None
+        self._state = None
         self.reset()
 
     def reset(self):
-        CharSetProber.reset(self)
-        for codingSM in self._mCodingSM:
-            if not codingSM:
+        super(EscCharSetProber, self).reset()
+        for coding_sm in self.coding_sm:
+            if not coding_sm:
                 continue
-            codingSM.active = True
-            codingSM.reset()
-        self._mActiveSM = len(self._mCodingSM)
-        self._mDetectedCharset = None
+            coding_sm.active = True
+            coding_sm.reset()
+        self.active_sm_count = len(self.coding_sm)
+        self._detected_charset = None
+        self._detected_language = None
 
-    def get_charset_name(self):
-        return self._mDetectedCharset
+    @property
+    def charset_name(self):
+        return self._detected_charset
+
+    @property
+    def language(self):
+        return self._detected_language
 
     def get_confidence(self):
-        if self._mDetectedCharset:
+        if self._detected_charset:
             return 0.99
         else:
             return 0.00
 
-    def feed(self, aBuf):
-        for c in aBuf:
-            # PY3K: aBuf is a byte array, so c is an int, not a byte
-            for codingSM in self._mCodingSM:
-                if not codingSM:
-                    continue
-                if not codingSM.active:
+    def feed(self, byte_str):
+        for c in byte_str:
+            for coding_sm in self.coding_sm:
+                if not coding_sm or not coding_sm.active:
                     continue
-                codingState = codingSM.next_state(wrap_ord(c))
-                if codingState == constants.eError:
-                    codingSM.active = False
-                    self._mActiveSM -= 1
-                    if self._mActiveSM <= 0:
-                        self._mState = constants.eNotMe
-                        return self.get_state()
-                elif codingState == constants.eItsMe:
-                    self._mState = constants.eFoundIt
-                    self._mDetectedCharset = codingSM.get_coding_state_machine()  # nopep8
-                    return self.get_state()
+                coding_state = coding_sm.next_state(c)
+                if coding_state == MachineState.ERROR:
+                    coding_sm.active = False
+                    self.active_sm_count -= 1
+                    if self.active_sm_count <= 0:
+                        self._state = ProbingState.NOT_ME
+                        return self.state
+                elif coding_state == MachineState.ITS_ME:
+                    self._state = ProbingState.FOUND_IT
+                    self._detected_charset = coding_sm.get_coding_state_machine()
+                    self._detected_language = coding_sm.language
+                    return self.state
 
-        return self.get_state()
+        return self.state
--- a/ThirdParty/CharDet/chardet/escsm.py	Sun Apr 09 16:52:55 2017 +0200
+++ b/ThirdParty/CharDet/chardet/escsm.py	Sat May 06 13:43:21 2017 +0200
@@ -25,9 +25,9 @@
 # 02110-1301  USA
 ######################### END LICENSE BLOCK #########################
 
-from .constants import eStart, eError, eItsMe
+from .enums import MachineState
 
-HZ_cls = (
+HZ_CLS = (
 1,0,0,0,0,0,0,0,  # 00 - 07
 0,0,0,0,0,0,0,0,  # 08 - 0f
 0,0,0,0,0,0,0,0,  # 10 - 17
@@ -62,24 +62,25 @@
 1,1,1,1,1,1,1,1,  # f8 - ff
 )
 
-HZ_st = (
-eStart,eError,     3,eStart,eStart,eStart,eError,eError,# 00-07
-eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 08-0f
-eItsMe,eItsMe,eError,eError,eStart,eStart,     4,eError,# 10-17
-     5,eError,     6,eError,     5,     5,     4,eError,# 18-1f
-     4,eError,     4,     4,     4,eError,     4,eError,# 20-27
-     4,eItsMe,eStart,eStart,eStart,eStart,eStart,eStart,# 28-2f
+HZ_ST = (
+MachineState.START,MachineState.ERROR,     3,MachineState.START,MachineState.START,MachineState.START,MachineState.ERROR,MachineState.ERROR,# 00-07
+MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 08-0f
+MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.START,MachineState.START,     4,MachineState.ERROR,# 10-17
+     5,MachineState.ERROR,     6,MachineState.ERROR,     5,     5,     4,MachineState.ERROR,# 18-1f
+     4,MachineState.ERROR,     4,     4,     4,MachineState.ERROR,     4,MachineState.ERROR,# 20-27
+     4,MachineState.ITS_ME,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 28-2f
 )
 
-HZCharLenTable = (0, 0, 0, 0, 0, 0)
+HZ_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0)
 
-HZSMModel = {'classTable': HZ_cls,
-             'classFactor': 6,
-             'stateTable': HZ_st,
-             'charLenTable': HZCharLenTable,
-             'name': "HZ-GB-2312"}
+HZ_SM_MODEL = {'class_table': HZ_CLS,
+               'class_factor': 6,
+               'state_table': HZ_ST,
+               'char_len_table': HZ_CHAR_LEN_TABLE,
+               'name': "HZ-GB-2312",
+               'language': 'Chinese'}
 
-ISO2022CN_cls = (
+ISO2022CN_CLS = (
 2,0,0,0,0,0,0,0,  # 00 - 07
 0,0,0,0,0,0,0,0,  # 08 - 0f
 0,0,0,0,0,0,0,0,  # 10 - 17
@@ -114,26 +115,27 @@
 2,2,2,2,2,2,2,2,  # f8 - ff
 )
 
-ISO2022CN_st = (
-eStart,     3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
-eStart,eError,eError,eError,eError,eError,eError,eError,# 08-0f
-eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
-eItsMe,eItsMe,eItsMe,eError,eError,eError,     4,eError,# 18-1f
-eError,eError,eError,eItsMe,eError,eError,eError,eError,# 20-27
-     5,     6,eError,eError,eError,eError,eError,eError,# 28-2f
-eError,eError,eError,eItsMe,eError,eError,eError,eError,# 30-37
-eError,eError,eError,eError,eError,eItsMe,eError,eStart,# 38-3f
+ISO2022CN_ST = (
+MachineState.START,     3,MachineState.ERROR,MachineState.START,MachineState.START,MachineState.START,MachineState.START,MachineState.START,# 00-07
+MachineState.START,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 08-0f
+MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,# 10-17
+MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,     4,MachineState.ERROR,# 18-1f
+MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 20-27
+     5,     6,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 28-2f
+MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,# 30-37
+MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ERROR,MachineState.ITS_ME,MachineState.ERROR,MachineState.START,# 38-3f
 )
 
-ISO2022CNCharLenTable = (0, 0, 0, 0, 0, 0, 0, 0, 0)
+ISO2022CN_CHAR_LEN_TABLE = (0, 0, 0, 0, 0, 0, 0, 0, 0)
 
-ISO2022CNSMModel = {'classTable': ISO2022CN_cls,
-                    'classFactor': 9,
-                    'stateTable': ISO2022CN_st,
-                    'charLenTable': ISO2022CNCharLenTable,
-                    'name': "ISO-2022-CN"}
+ISO2022CN_SM_MODEL = {'class_table': ISO2022CN_CLS,
+                      'class_factor': 9,
+                      'state_table': ISO2022CN_ST,
+                      'char_len_table': ISO2022CN_CHAR_LEN_TABLE,
+                      'name': "ISO-2022-CN",
+                      'language': 'Chinese'}
 
-ISO2022JP_cls = (
+ISO2022JP_CLS = (
 2,0,0,0,0,0,0,0,  # 00 - 07
 0,0,0,0,0,0,2,2,  # 08 - 0f
 0,0,0,0,0,0,0,0,  # 10 - 17
@@ -168,27 +170,28 @@
 2,2,2,2,2,2,2,2,  # f8 - ff
 )
 
-ISO2022JP_st = (
-eStart,     3,eError,eStart,eStart,eStart,eStart,eStart,# 00-07
-eStart,eStart,eError,eError,eError,eError,eError,eError,# 08-0f
-eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,# 10-17
-eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,# 18-1f
-eError,     5,eError,eError,eError,