Merged with default branch to prepare the 17.07 release. maintenance

Wed, 28 Jun 2017 19:14:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 28 Jun 2017 19:14:32 +0200
branch
maintenance
changeset 5773
899700885725
parent 5756
1dffdf872fdb (current diff)
parent 5772
b5ef56fa3a48 (diff)
child 5776
49ba4a9f0421

Merged with default branch to prepare the 17.07 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.Templates.TemplateHelpDialog.html file | annotate | diff | comparison | revisions
Preferences/__init__.py file | annotate | diff | comparison | revisions
Templates/TemplateHelpDialog.py file | annotate | diff | comparison | revisions
Templates/TemplateHelpDialog.ui file | annotate | diff | comparison | revisions
UI/UserInterface.py file | annotate | diff | comparison | revisions
changelog file | annotate | diff | comparison | revisions
--- a/APIs/Python3/eric6.api	Tue Jun 06 19:52:41 2017 +0200
+++ b/APIs/Python3/eric6.api	Wed Jun 28 19:14:32 2017 +0200
@@ -947,6 +947,7 @@
 eric6.E5Gui.E5GenericDiffHighlighter.E5GenericDiffHighlighter.generateRules?4()
 eric6.E5Gui.E5GenericDiffHighlighter.E5GenericDiffHighlighter.highlightBlock?4(text)
 eric6.E5Gui.E5GenericDiffHighlighter.E5GenericDiffHighlighter.makeFormat?4(fg=None, bg=None, bold=False)
+eric6.E5Gui.E5GenericDiffHighlighter.E5GenericDiffHighlighter.regenerateRules?4()
 eric6.E5Gui.E5GenericDiffHighlighter.E5GenericDiffHighlighter?1(doc)
 eric6.E5Gui.E5GenericDiffHighlighter.TERMINAL?4(pattern)
 eric6.E5Gui.E5GenericDiffHighlighter._REGEX_CACHE?8
@@ -1242,6 +1243,7 @@
 eric6.E5Gui.E5SideBar.E5SideBar.tabWhatsThis?4(index)
 eric6.E5Gui.E5SideBar.E5SideBar.widget?4(index)
 eric6.E5Gui.E5SideBar.E5SideBar?1(orientation=None, delay=200, parent=None)
+eric6.E5Gui.E5SimpleHelpDialog.E5SimpleHelpDialog?1(title="", label="", help="", parent=None)
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationClient.processArgs?4(args)
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationClient?1()
 eric6.E5Gui.E5SingleApplication.E5SingleApplicationServer.handleCommand?4(cmd, params)
@@ -1432,6 +1434,14 @@
 eric6.E5Network.E5Ftp.E5FtpProxyType.Site?7
 eric6.E5Network.E5Ftp.E5FtpProxyType.UserAtProxyuserAtServer?7
 eric6.E5Network.E5Ftp.E5FtpProxyType.UserAtServer?7
+eric6.E5Network.E5GoogleMail.APPLICATION_NAME?7
+eric6.E5Network.E5GoogleMail.CLIENT_SECRET_FILE?7
+eric6.E5Network.E5GoogleMail.GoogleMailHelp?4()
+eric6.E5Network.E5GoogleMail.GoogleMailSendMessage?4(message)
+eric6.E5Network.E5GoogleMail.SCOPES?7
+eric6.E5Network.E5GoogleMail._prepareMessage_v2?5(message)
+eric6.E5Network.E5GoogleMail._prepareMessage_v3?5(message)
+eric6.E5Network.E5GoogleMail.getCredentials?4()
 eric6.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog.setData?4(name, value)
 eric6.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog?1(parent=None)
 eric6.E5Network.E5NetworkIcon.E5NetworkIcon.isOnline?4()
@@ -3936,7 +3946,7 @@
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleAddBuiltinIgnoreDialog.CodeStyleAddBuiltinIgnoreDialog?1(parent=None)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.CodeStyleCheckerReport.error_args?4(line_number, offset, code, check, *args)
 eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.CodeStyleCheckerReport?1(options)
-eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.codeStyleBatchCheck?4(argumentsList, send, fx, cancelled)
+eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.codeStyleBatchCheck?4(argumentsList, send, fx, cancelled, maxProcesses=0)
 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)
@@ -4203,7 +4213,7 @@
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.initBatchService?4()
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.initService?4()
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.normalizeCode?4(codestring)
-eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.syntaxAndPyflakesBatchCheck?4(argumentsList, send, fx, cancelled)
+eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.syntaxAndPyflakesBatchCheck?4(argumentsList, send, fx, cancelled, maxProcesses=0)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.syntaxAndPyflakesCheck?4(filename, codestring, checkFlakes=True, ignoreStarImportWarnings=False)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.worker?4(inputQueue, outputQueue)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckService.SyntaxCheckService.addLanguage?4(lang, env, path, module, getArgs, getExt, callback, onError)
@@ -4237,7 +4247,7 @@
 eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheckerDialog.SyntaxCheckerDialog?1(parent=None)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.initBatchService?4()
 eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.initService?4()
-eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.jsSyntaxBatchCheck?4(argumentsList, send, fx, cancelled)
+eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.jsSyntaxBatchCheck?4(argumentsList, send, fx, cancelled, maxProcesses=0)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.jsSyntaxCheck?4(file, codestring)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.normalizeCode?4(codestring)
 eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.worker?4(inputQueue, outputQueue)
@@ -4252,7 +4262,7 @@
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace.not_equal_witness?4(other)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace.not_less_witness?4(other)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.Whitespace?1(ws)
-eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.batchCheck?4(argumentsList, send, fx, cancelled)
+eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.batchCheck?4(argumentsList, send, fx, cancelled, maxProcesses=0)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.check?4(file, text="")
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.format_witnesses?4(w)
 eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.initBatchService?4()
@@ -6288,6 +6298,9 @@
 eric6.Preferences.ConfigurationPages.DebuggerPythonPage.DebuggerPythonPage.save?4()
 eric6.Preferences.ConfigurationPages.DebuggerPythonPage.DebuggerPythonPage?1()
 eric6.Preferences.ConfigurationPages.DebuggerPythonPage.create?4(dlg)
+eric6.Preferences.ConfigurationPages.DiffColoursPage.DiffColoursPage.save?4()
+eric6.Preferences.ConfigurationPages.DiffColoursPage.DiffColoursPage?1()
+eric6.Preferences.ConfigurationPages.DiffColoursPage.create?4(dlg)
 eric6.Preferences.ConfigurationPages.EditorAPIsPage.EditorAPIsPage.on_addApiFileButton_clicked?4()
 eric6.Preferences.ConfigurationPages.EditorAPIsPage.EditorAPIsPage.on_addInstalledApiFileButton_clicked?4()
 eric6.Preferences.ConfigurationPages.EditorAPIsPage.EditorAPIsPage.on_addPluginApiFileButton_clicked?4()
@@ -6593,6 +6606,7 @@
 eric6.Preferences.Prefs.cooperationDefaults?7
 eric6.Preferences.Prefs.corbaDefaults?7
 eric6.Preferences.Prefs.debuggerDefaults?7
+eric6.Preferences.Prefs.diffColourDefaults?7
 eric6.Preferences.Prefs.editorColourDefaults?7
 eric6.Preferences.Prefs.editorDefaults?7
 eric6.Preferences.Prefs.editorExporterDefaults?7
@@ -6688,6 +6702,7 @@
 eric6.Preferences.getCooperation?4(key, prefClass=Prefs)
 eric6.Preferences.getCorba?4(key, prefClass=Prefs)
 eric6.Preferences.getDebugger?4(key, prefClass=Prefs)
+eric6.Preferences.getDiffColour?4(key, prefClass=Prefs)
 eric6.Preferences.getEditor?4(key, prefClass=Prefs)
 eric6.Preferences.getEditorAPI?4(language, projectType="", prefClass=Prefs)
 eric6.Preferences.getEditorColour?4(key, prefClass=Prefs)
@@ -6741,6 +6756,7 @@
 eric6.Preferences.setCooperation?4(key, value, prefClass=Prefs)
 eric6.Preferences.setCorba?4(key, value, prefClass=Prefs)
 eric6.Preferences.setDebugger?4(key, value, prefClass=Prefs)
+eric6.Preferences.setDiffColour?4(key, value, prefClass=Prefs)
 eric6.Preferences.setEditor?4(key, value, prefClass=Prefs)
 eric6.Preferences.setEditorAPI?4(language, projectType, apilist, prefClass=Prefs)
 eric6.Preferences.setEditorColour?4(key, value, prefClass=Prefs)
@@ -8381,7 +8397,6 @@
 eric6.Tasks.TaskViewer.TaskViewer.setProjectOpen?4(o=False)
 eric6.Tasks.TaskViewer.TaskViewer.stopProjectTaskExtraction?4()
 eric6.Tasks.TaskViewer.TaskViewer?1(parent, project)
-eric6.Templates.TemplateHelpDialog.TemplateHelpDialog?1(parent=None)
 eric6.Templates.TemplateMultipleVariablesDialog.TemplateMultipleVariablesDialog.getVariables?4()
 eric6.Templates.TemplateMultipleVariablesDialog.TemplateMultipleVariablesDialog?1(variables, parent=None)
 eric6.Templates.TemplatePropertiesDialog.TemplatePropertiesDialog.getData?4()
@@ -8698,6 +8713,7 @@
 eric6.UI.EmailDialog.EmailDialog.on_buttonBox_clicked?4(button)
 eric6.UI.EmailDialog.EmailDialog.on_buttonBox_rejected?4()
 eric6.UI.EmailDialog.EmailDialog.on_deleteButton_clicked?4()
+eric6.UI.EmailDialog.EmailDialog.on_googleHelpButton_clicked?4()
 eric6.UI.EmailDialog.EmailDialog.on_message_textChanged?4()
 eric6.UI.EmailDialog.EmailDialog.on_sendButton_clicked?4()
 eric6.UI.EmailDialog.EmailDialog.on_subject_textChanged?4(txt)
@@ -8933,7 +8949,7 @@
 eric6.Utilities.AutoSaver.AutoSaver?1(parent, save)
 eric6.Utilities.BackgroundClient.BackgroundClient.backgroundClient?7
 eric6.Utilities.BackgroundClient.BackgroundClient.run?4()
-eric6.Utilities.BackgroundClient.BackgroundClient?1(host, port)
+eric6.Utilities.BackgroundClient.BackgroundClient?1(host, port, maxProcs)
 eric6.Utilities.BackgroundService.BackgroundService.batchJobDone?7
 eric6.Utilities.BackgroundService.BackgroundService.enqueueRequest?4(fx, lang, fn, data)
 eric6.Utilities.BackgroundService.BackgroundService.on_disconnectSocket?4(lang)
--- a/APIs/Python3/eric6.bas	Tue Jun 06 19:52:41 2017 +0200
+++ b/APIs/Python3/eric6.bas	Wed Jun 28 19:14:32 2017 +0200
@@ -129,6 +129,7 @@
 DelayedFileWatcher QFileSystemWatcher
 DeleteFilesConfirmationDialog QDialog Ui_DeleteFilesConfirmationDialog
 DictResolver BaseResolver
+DiffColoursPage ConfigurationPageBase Ui_DiffColoursPage
 DiffDialog QWidget Ui_DiffDialog
 DiffHighlighter E5GenericDiffHighlighter
 DiffReport StandardReport
@@ -188,6 +189,7 @@
 E5ProgressDialog QProgressDialog
 E5RequestModel QAbstractTableModel
 E5SideBar QWidget
+E5SimpleHelpDialog QDialog Ui_E5SimpleHelpDialog
 E5SingleApplicationClient SingleApplicationClient
 E5SingleApplicationServer SingleApplicationServer
 E5SqueezeLabel QLabel
@@ -800,7 +802,6 @@
 TasksWriter XMLStreamWriterBase
 TemplateEntry QTreeWidgetItem
 TemplateGroup QTreeWidgetItem
-TemplateHelpDialog QDialog Ui_TemplateHelpDialog
 TemplateMultipleVariablesDialog QDialog
 TemplatePropertiesDialog QDialog Ui_TemplatePropertiesDialog
 TemplateSingleVariableDialog QDialog Ui_TemplateSingleVariableDialog
--- a/DebugClients/Python/DebugBase.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/DebugClients/Python/DebugBase.py	Wed Jun 28 19:14:32 2017 +0200
@@ -796,7 +796,9 @@
         """
         exctype, excval, exctb = excinfo
         
-        if exctype in [GeneratorExit, StopIteration, SystemExit]:
+        if ((exctype in [GeneratorExit, StopIteration] and
+             unhandled is False) or
+                exctype == SystemExit):
             # ignore these
             return
         
Binary file Documentation/Help/source.qch has changed
--- a/Documentation/Help/source.qhp	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Help/source.qhp	Wed Jun 28 19:14:32 2017 +0200
@@ -107,6 +107,7 @@
             <section title="eric6.E5Gui.E5PathPicker" ref="eric6.E5Gui.E5PathPicker.html" />
             <section title="eric6.E5Gui.E5ProgressDialog" ref="eric6.E5Gui.E5ProgressDialog.html" />
             <section title="eric6.E5Gui.E5SideBar" ref="eric6.E5Gui.E5SideBar.html" />
+            <section title="eric6.E5Gui.E5SimpleHelpDialog" ref="eric6.E5Gui.E5SimpleHelpDialog.html" />
             <section title="eric6.E5Gui.E5SingleApplication" ref="eric6.E5Gui.E5SingleApplication.html" />
             <section title="eric6.E5Gui.E5SqueezeLabels" ref="eric6.E5Gui.E5SqueezeLabels.html" />
             <section title="eric6.E5Gui.E5StringListEditWidget" ref="eric6.E5Gui.E5StringListEditWidget.html" />
@@ -127,6 +128,7 @@
             <section title="eric6.E5Network.data" ref="index-eric6.E5Network.data.html">
             </section>
             <section title="eric6.E5Network.E5Ftp" ref="eric6.E5Network.E5Ftp.html" />
+            <section title="eric6.E5Network.E5GoogleMail" ref="eric6.E5Network.E5GoogleMail.html" />
             <section title="eric6.E5Network.E5NetworkHeaderDetailsDialog" ref="eric6.E5Network.E5NetworkHeaderDetailsDialog.html" />
             <section title="eric6.E5Network.E5NetworkIcon" ref="eric6.E5Network.E5NetworkIcon.html" />
             <section title="eric6.E5Network.E5NetworkMonitor" ref="eric6.E5Network.E5NetworkMonitor.html" />
@@ -774,6 +776,7 @@
               <section title="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html" />
               <section title="eric6.Preferences.ConfigurationPages.DebuggerPython3Page" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html" />
               <section title="eric6.Preferences.ConfigurationPages.DebuggerPythonPage" ref="eric6.Preferences.ConfigurationPages.DebuggerPythonPage.html" />
+              <section title="eric6.Preferences.ConfigurationPages.DiffColoursPage" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html" />
               <section title="eric6.Preferences.ConfigurationPages.EditorAPIsPage" ref="eric6.Preferences.ConfigurationPages.EditorAPIsPage.html" />
               <section title="eric6.Preferences.ConfigurationPages.EditorAutocompletionPage" ref="eric6.Preferences.ConfigurationPages.EditorAutocompletionPage.html" />
               <section title="eric6.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage" ref="eric6.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html" />
@@ -981,7 +984,6 @@
             <section title="eric6.Tasks.TaskViewer" ref="eric6.Tasks.TaskViewer.html" />
           </section>
           <section title="eric6.Templates" ref="index-eric6.Templates.html">
-            <section title="eric6.Templates.TemplateHelpDialog" ref="eric6.Templates.TemplateHelpDialog.html" />
             <section title="eric6.Templates.TemplateMultipleVariablesDialog" ref="eric6.Templates.TemplateMultipleVariablesDialog.html" />
             <section title="eric6.Templates.TemplatePropertiesDialog" ref="eric6.Templates.TemplatePropertiesDialog.html" />
             <section title="eric6.Templates.TemplateSingleVariableDialog" ref="eric6.Templates.TemplateSingleVariableDialog.html" />
@@ -2947,6 +2949,7 @@
       <keyword name="CompareDialog.__appendText" id="CompareDialog.__appendText" ref="eric6.UI.CompareDialog.html#CompareDialog.__appendText" />
       <keyword name="CompareDialog.__compare" id="CompareDialog.__compare" ref="eric6.UI.CompareDialog.html#CompareDialog.__compare" />
       <keyword name="CompareDialog.__fileChanged" id="CompareDialog.__fileChanged" ref="eric6.UI.CompareDialog.html#CompareDialog.__fileChanged" />
+      <keyword name="CompareDialog.__generateFormats" id="CompareDialog.__generateFormats" ref="eric6.UI.CompareDialog.html#CompareDialog.__generateFormats" />
       <keyword name="CompareDialog.__moveTextToCurrentDiffPos" id="CompareDialog.__moveTextToCurrentDiffPos" ref="eric6.UI.CompareDialog.html#CompareDialog.__moveTextToCurrentDiffPos" />
       <keyword name="CompareDialog.__scrollBarMoved" id="CompareDialog.__scrollBarMoved" ref="eric6.UI.CompareDialog.html#CompareDialog.__scrollBarMoved" />
       <keyword name="CompareDialog.compare" id="CompareDialog.compare" ref="eric6.UI.CompareDialog.html#CompareDialog.compare" />
@@ -3809,6 +3812,15 @@
       <keyword name="DictResolver.getDictionary" id="DictResolver.getDictionary" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.getDictionary" />
       <keyword name="DictResolver.keyToStr" id="DictResolver.keyToStr" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.keyToStr" />
       <keyword name="DictResolver.resolve" id="DictResolver.resolve" ref="eric6.DebugClients.Python.DebugVariables.html#DictResolver.resolve" />
+      <keyword name="DiffColoursPage" id="DiffColoursPage" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage" />
+      <keyword name="DiffColoursPage (Constructor)" id="DiffColoursPage (Constructor)" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__init__" />
+      <keyword name="DiffColoursPage (Module)" id="DiffColoursPage (Module)" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html" />
+      <keyword name="DiffColoursPage.__initColour" id="DiffColoursPage.__initColour" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__initColour" />
+      <keyword name="DiffColoursPage.__selectBackgroundColour" id="DiffColoursPage.__selectBackgroundColour" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__selectBackgroundColour" />
+      <keyword name="DiffColoursPage.__selectTextColour" id="DiffColoursPage.__selectTextColour" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__selectTextColour" />
+      <keyword name="DiffColoursPage.__updateSampleBackgroundColour" id="DiffColoursPage.__updateSampleBackgroundColour" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__updateSampleBackgroundColour" />
+      <keyword name="DiffColoursPage.__updateSampleTextColour" id="DiffColoursPage.__updateSampleTextColour" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.__updateSampleTextColour" />
+      <keyword name="DiffColoursPage.save" id="DiffColoursPage.save" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#DiffColoursPage.save" />
       <keyword name="DiffDialog" id="DiffDialog" ref="eric6.UI.DiffDialog.html#DiffDialog" />
       <keyword name="DiffDialog (Constructor)" id="DiffDialog (Constructor)" ref="eric6.UI.DiffDialog.html#DiffDialog.__init__" />
       <keyword name="DiffDialog (Module)" id="DiffDialog (Module)" ref="eric6.UI.DiffDialog.html" />
@@ -4185,11 +4197,14 @@
       <keyword name="E5GenericDiffHighlighter" id="E5GenericDiffHighlighter" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter" />
       <keyword name="E5GenericDiffHighlighter (Constructor)" id="E5GenericDiffHighlighter (Constructor)" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.__init__" />
       <keyword name="E5GenericDiffHighlighter (Module)" id="E5GenericDiffHighlighter (Module)" ref="eric6.E5Gui.E5GenericDiffHighlighter.html" />
+      <keyword name="E5GenericDiffHighlighter.__initColours" id="E5GenericDiffHighlighter.__initColours" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.__initColours" />
       <keyword name="E5GenericDiffHighlighter.createRules" id="E5GenericDiffHighlighter.createRules" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.createRules" />
       <keyword name="E5GenericDiffHighlighter.formats" id="E5GenericDiffHighlighter.formats" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.formats" />
       <keyword name="E5GenericDiffHighlighter.generateRules" id="E5GenericDiffHighlighter.generateRules" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.generateRules" />
       <keyword name="E5GenericDiffHighlighter.highlightBlock" id="E5GenericDiffHighlighter.highlightBlock" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.highlightBlock" />
       <keyword name="E5GenericDiffHighlighter.makeFormat" id="E5GenericDiffHighlighter.makeFormat" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.makeFormat" />
+      <keyword name="E5GenericDiffHighlighter.regenerateRules" id="E5GenericDiffHighlighter.regenerateRules" ref="eric6.E5Gui.E5GenericDiffHighlighter.html#E5GenericDiffHighlighter.regenerateRules" />
+      <keyword name="E5GoogleMail (Module)" id="E5GoogleMail (Module)" ref="eric6.E5Network.E5GoogleMail.html" />
       <keyword name="E5Graphics (Package)" id="E5Graphics (Package)" ref="index-eric6.E5Graphics.html" />
       <keyword name="E5GraphicsView" id="E5GraphicsView" ref="eric6.E5Graphics.E5GraphicsView.html#E5GraphicsView" />
       <keyword name="E5GraphicsView (Constructor)" id="E5GraphicsView (Constructor)" ref="eric6.E5Graphics.E5GraphicsView.html#E5GraphicsView.__init__" />
@@ -4544,6 +4559,9 @@
       <keyword name="E5SideBar.tabToolTip" id="E5SideBar.tabToolTip" ref="eric6.E5Gui.E5SideBar.html#E5SideBar.tabToolTip" />
       <keyword name="E5SideBar.tabWhatsThis" id="E5SideBar.tabWhatsThis" ref="eric6.E5Gui.E5SideBar.html#E5SideBar.tabWhatsThis" />
       <keyword name="E5SideBar.widget" id="E5SideBar.widget" ref="eric6.E5Gui.E5SideBar.html#E5SideBar.widget" />
+      <keyword name="E5SimpleHelpDialog" id="E5SimpleHelpDialog" ref="eric6.E5Gui.E5SimpleHelpDialog.html#E5SimpleHelpDialog" />
+      <keyword name="E5SimpleHelpDialog (Constructor)" id="E5SimpleHelpDialog (Constructor)" ref="eric6.E5Gui.E5SimpleHelpDialog.html#E5SimpleHelpDialog.__init__" />
+      <keyword name="E5SimpleHelpDialog (Module)" id="E5SimpleHelpDialog (Module)" ref="eric6.E5Gui.E5SimpleHelpDialog.html" />
       <keyword name="E5SingleApplication (Module)" id="E5SingleApplication (Module)" ref="eric6.E5Gui.E5SingleApplication.html" />
       <keyword name="E5SingleApplicationClient" id="E5SingleApplicationClient" ref="eric6.E5Gui.E5SingleApplication.html#E5SingleApplicationClient" />
       <keyword name="E5SingleApplicationClient (Constructor)" id="E5SingleApplicationClient (Constructor)" ref="eric6.E5Gui.E5SingleApplication.html#E5SingleApplicationClient.__init__" />
@@ -5411,12 +5429,14 @@
       <keyword name="EmailDialog.__encodedHeader" id="EmailDialog.__encodedHeader" ref="eric6.UI.EmailDialog.html#EmailDialog.__encodedHeader" />
       <keyword name="EmailDialog.__encodedText" id="EmailDialog.__encodedText" ref="eric6.UI.EmailDialog.html#EmailDialog.__encodedText" />
       <keyword name="EmailDialog.__sendmail" id="EmailDialog.__sendmail" ref="eric6.UI.EmailDialog.html#EmailDialog.__sendmail" />
+      <keyword name="EmailDialog.__sendmailGoogle" id="EmailDialog.__sendmailGoogle" ref="eric6.UI.EmailDialog.html#EmailDialog.__sendmailGoogle" />
       <keyword name="EmailDialog.attachFile" id="EmailDialog.attachFile" ref="eric6.UI.EmailDialog.html#EmailDialog.attachFile" />
       <keyword name="EmailDialog.keyPressEvent" id="EmailDialog.keyPressEvent" ref="eric6.UI.EmailDialog.html#EmailDialog.keyPressEvent" />
       <keyword name="EmailDialog.on_addButton_clicked" id="EmailDialog.on_addButton_clicked" ref="eric6.UI.EmailDialog.html#EmailDialog.on_addButton_clicked" />
       <keyword name="EmailDialog.on_buttonBox_clicked" id="EmailDialog.on_buttonBox_clicked" ref="eric6.UI.EmailDialog.html#EmailDialog.on_buttonBox_clicked" />
       <keyword name="EmailDialog.on_buttonBox_rejected" id="EmailDialog.on_buttonBox_rejected" ref="eric6.UI.EmailDialog.html#EmailDialog.on_buttonBox_rejected" />
       <keyword name="EmailDialog.on_deleteButton_clicked" id="EmailDialog.on_deleteButton_clicked" ref="eric6.UI.EmailDialog.html#EmailDialog.on_deleteButton_clicked" />
+      <keyword name="EmailDialog.on_googleHelpButton_clicked" id="EmailDialog.on_googleHelpButton_clicked" ref="eric6.UI.EmailDialog.html#EmailDialog.on_googleHelpButton_clicked" />
       <keyword name="EmailDialog.on_message_textChanged" id="EmailDialog.on_message_textChanged" ref="eric6.UI.EmailDialog.html#EmailDialog.on_message_textChanged" />
       <keyword name="EmailDialog.on_sendButton_clicked" id="EmailDialog.on_sendButton_clicked" ref="eric6.UI.EmailDialog.html#EmailDialog.on_sendButton_clicked" />
       <keyword name="EmailDialog.on_subject_textChanged" id="EmailDialog.on_subject_textChanged" ref="eric6.UI.EmailDialog.html#EmailDialog.on_subject_textChanged" />
@@ -6156,6 +6176,8 @@
       <keyword name="Function.addDescription" id="Function.addDescription" ref="eric6.Utilities.ModuleParser.html#Function.addDescription" />
       <keyword name="Function.setEndLine" id="Function.setEndLine" ref="eric6.Utilities.ModuleParser.html#Function.setEndLine" />
       <keyword name="Globals (Package)" id="Globals (Package)" ref="index-eric6.Globals.html" />
+      <keyword name="GoogleMailHelp" id="GoogleMailHelp" ref="eric6.E5Network.E5GoogleMail.html#GoogleMailHelp" />
+      <keyword name="GoogleMailSendMessage" id="GoogleMailSendMessage" ref="eric6.E5Network.E5GoogleMail.html#GoogleMailSendMessage" />
       <keyword name="GotoDialog" id="GotoDialog" ref="eric6.QScintilla.GotoDialog.html#GotoDialog" />
       <keyword name="GotoDialog (Constructor)" id="GotoDialog (Constructor)" ref="eric6.QScintilla.GotoDialog.html#GotoDialog.__init__" />
       <keyword name="GotoDialog (Module)" id="GotoDialog (Module)" ref="eric6.QScintilla.GotoDialog.html" />
@@ -14364,9 +14386,6 @@
       <keyword name="TemplateGroup.removeEntry" id="TemplateGroup.removeEntry" ref="eric6.Templates.TemplateViewer.html#TemplateGroup.removeEntry" />
       <keyword name="TemplateGroup.setLanguage" id="TemplateGroup.setLanguage" ref="eric6.Templates.TemplateViewer.html#TemplateGroup.setLanguage" />
       <keyword name="TemplateGroup.setName" id="TemplateGroup.setName" ref="eric6.Templates.TemplateViewer.html#TemplateGroup.setName" />
-      <keyword name="TemplateHelpDialog" id="TemplateHelpDialog" ref="eric6.Templates.TemplateHelpDialog.html#TemplateHelpDialog" />
-      <keyword name="TemplateHelpDialog (Constructor)" id="TemplateHelpDialog (Constructor)" ref="eric6.Templates.TemplateHelpDialog.html#TemplateHelpDialog.__init__" />
-      <keyword name="TemplateHelpDialog (Module)" id="TemplateHelpDialog (Module)" ref="eric6.Templates.TemplateHelpDialog.html" />
       <keyword name="TemplateMultipleVariablesDialog" id="TemplateMultipleVariablesDialog" ref="eric6.Templates.TemplateMultipleVariablesDialog.html#TemplateMultipleVariablesDialog" />
       <keyword name="TemplateMultipleVariablesDialog (Constructor)" id="TemplateMultipleVariablesDialog (Constructor)" ref="eric6.Templates.TemplateMultipleVariablesDialog.html#TemplateMultipleVariablesDialog.__init__" />
       <keyword name="TemplateMultipleVariablesDialog (Module)" id="TemplateMultipleVariablesDialog (Module)" ref="eric6.Templates.TemplateMultipleVariablesDialog.html" />
@@ -16465,6 +16484,8 @@
       <keyword name="_main" id="_main" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_main" />
       <keyword name="_parse_multi_options" id="_parse_multi_options" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#_parse_multi_options" />
       <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric6.Utilities.__init__.html#_percentReplacementFunc" />
+      <keyword name="_prepareMessage_v2" id="_prepareMessage_v2" ref="eric6.E5Network.E5GoogleMail.html#_prepareMessage_v2" />
+      <keyword name="_prepareMessage_v3" id="_prepareMessage_v3" ref="eric6.E5Network.E5GoogleMail.html#_prepareMessage_v3" />
       <keyword name="absolutePath" id="absolutePath" ref="eric6.Utilities.__init__.html#absolutePath" />
       <keyword name="absoluteUniversalPath" id="absoluteUniversalPath" ref="eric6.Utilities.__init__.html#absoluteUniversalPath" />
       <keyword name="addActions" id="addActions" ref="eric6.E5Gui.E5Action.html#addActions" />
@@ -16520,6 +16541,7 @@
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html#create" />
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html#create" />
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DebuggerPythonPage.html#create" />
+      <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.DiffColoursPage.html#create" />
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.EditorAPIsPage.html#create" />
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.EditorAutocompletionPage.html#create" />
       <keyword name="create" id="create" ref="eric6.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html#create" />
@@ -16727,9 +16749,11 @@
       <keyword name="getConfigPath" id="getConfigPath" ref="eric6.Plugins.VcsPlugins.vcsSubversion.SvnUtilities.html#getConfigPath" />
       <keyword name="getCooperation" id="getCooperation" ref="eric6.Preferences.__init__.html#getCooperation" />
       <keyword name="getCorba" id="getCorba" ref="eric6.Preferences.__init__.html#getCorba" />
+      <keyword name="getCredentials" id="getCredentials" ref="eric6.E5Network.E5GoogleMail.html#getCredentials" />
       <keyword name="getDebugger" id="getDebugger" ref="eric6.Preferences.__init__.html#getDebugger" />
       <keyword name="getDefaultLexerAssociations" id="getDefaultLexerAssociations" ref="eric6.QScintilla.Lexers.__init__.html#getDefaultLexerAssociations" />
       <keyword name="getDefaults" id="getDefaults" ref="eric6.Plugins.VcsPlugins.vcsMercurial.LargefilesExtension.__init__.html#getDefaults" />
+      <keyword name="getDiffColour" id="getDiffColour" ref="eric6.Preferences.__init__.html#getDiffColour" />
       <keyword name="getDirs" id="getDirs" ref="eric6.Utilities.__init__.html#getDirs" />
       <keyword name="getEditor" id="getEditor" ref="eric6.Preferences.__init__.html#getEditor" />
       <keyword name="getEditorAPI" id="getEditorAPI" ref="eric6.Preferences.__init__.html#getEditorAPI" />
@@ -17090,6 +17114,7 @@
       <keyword name="setCorba" id="setCorba" ref="eric6.Preferences.__init__.html#setCorba" />
       <keyword name="setCss" id="setCss" ref="eric6.WebBrowser.Tools.Scripts.html#setCss" />
       <keyword name="setDebugger" id="setDebugger" ref="eric6.Preferences.__init__.html#setDebugger" />
+      <keyword name="setDiffColour" id="setDiffColour" ref="eric6.Preferences.__init__.html#setDiffColour" />
       <keyword name="setEditor" id="setEditor" ref="eric6.Preferences.__init__.html#setEditor" />
       <keyword name="setEditorAPI" id="setEditorAPI" ref="eric6.Preferences.__init__.html#setEditorAPI" />
       <keyword name="setEditorColour" id="setEditorColour" ref="eric6.Preferences.__init__.html#setEditorColour" />
@@ -17304,6 +17329,7 @@
       <file>eric6.E5Gui.E5PathPicker.html</file>
       <file>eric6.E5Gui.E5ProgressDialog.html</file>
       <file>eric6.E5Gui.E5SideBar.html</file>
+      <file>eric6.E5Gui.E5SimpleHelpDialog.html</file>
       <file>eric6.E5Gui.E5SingleApplication.html</file>
       <file>eric6.E5Gui.E5SqueezeLabels.html</file>
       <file>eric6.E5Gui.E5StringListEditWidget.html</file>
@@ -17320,6 +17346,7 @@
       <file>eric6.E5Gui.E5TreeWidget.html</file>
       <file>eric6.E5Gui.E5ZoomWidget.html</file>
       <file>eric6.E5Network.E5Ftp.html</file>
+      <file>eric6.E5Network.E5GoogleMail.html</file>
       <file>eric6.E5Network.E5NetworkHeaderDetailsDialog.html</file>
       <file>eric6.E5Network.E5NetworkIcon.html</file>
       <file>eric6.E5Network.E5NetworkMonitor.html</file>
@@ -17813,6 +17840,7 @@
       <file>eric6.Preferences.ConfigurationPages.DebuggerGeneralPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.DebuggerPython3Page.html</file>
       <file>eric6.Preferences.ConfigurationPages.DebuggerPythonPage.html</file>
+      <file>eric6.Preferences.ConfigurationPages.DiffColoursPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.EditorAPIsPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.EditorAutocompletionPage.html</file>
       <file>eric6.Preferences.ConfigurationPages.EditorAutocompletionQScintillaPage.html</file>
@@ -17996,7 +18024,6 @@
       <file>eric6.Tasks.TaskFilterConfigDialog.html</file>
       <file>eric6.Tasks.TaskPropertiesDialog.html</file>
       <file>eric6.Tasks.TaskViewer.html</file>
-      <file>eric6.Templates.TemplateHelpDialog.html</file>
       <file>eric6.Templates.TemplateMultipleVariablesDialog.html</file>
       <file>eric6.Templates.TemplatePropertiesDialog.html</file>
       <file>eric6.Templates.TemplateSingleVariableDialog.html</file>
--- a/Documentation/Source/eric6.E5Gui.E5GenericDiffHighlighter.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.E5Gui.E5GenericDiffHighlighter.html	Wed Jun 28 19:14:32 2017 +0200
@@ -63,6 +63,9 @@
 <td><a href="#E5GenericDiffHighlighter.__init__">E5GenericDiffHighlighter</a></td>
 <td>Constructor</td>
 </tr><tr>
+<td><a href="#E5GenericDiffHighlighter.__initColours">__initColours</a></td>
+<td>Private method to initialize the highlighter colours.</td>
+</tr><tr>
 <td><a href="#E5GenericDiffHighlighter.createRules">createRules</a></td>
 <td>Public method to create the highlighting rules.</td>
 </tr><tr>
@@ -77,6 +80,9 @@
 </tr><tr>
 <td><a href="#E5GenericDiffHighlighter.makeFormat">makeFormat</a></td>
 <td>Public method to generate a format definition.</td>
+</tr><tr>
+<td><a href="#E5GenericDiffHighlighter.regenerateRules">regenerateRules</a></td>
+<td>Public method to initialize or regenerate the syntax highlighter rules.</td>
 </tr>
 </table>
 <h3>Static Methods</h3>
@@ -93,7 +99,12 @@
 <dd>
 reference to the text document (QTextDocument)
 </dd>
-</dl><a NAME="E5GenericDiffHighlighter.createRules" ID="E5GenericDiffHighlighter.createRules"></a>
+</dl><a NAME="E5GenericDiffHighlighter.__initColours" ID="E5GenericDiffHighlighter.__initColours"></a>
+<h4>E5GenericDiffHighlighter.__initColours</h4>
+<b>__initColours</b>(<i></i>)
+<p>
+        Private method to initialize the highlighter colours.
+</p><a NAME="E5GenericDiffHighlighter.createRules" ID="E5GenericDiffHighlighter.createRules"></a>
 <h4>E5GenericDiffHighlighter.createRules</h4>
 <b>createRules</b>(<i>*rules</i>)
 <p>
@@ -160,7 +171,12 @@
 <dd>
 format definiton (QTextCharFormat)
 </dd>
-</dl>
+</dl><a NAME="E5GenericDiffHighlighter.regenerateRules" ID="E5GenericDiffHighlighter.regenerateRules"></a>
+<h4>E5GenericDiffHighlighter.regenerateRules</h4>
+<b>regenerateRules</b>(<i></i>)
+<p>
+        Public method to initialize or regenerate the syntax highlighter rules.
+</p>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
 <a NAME="TERMINAL" ID="TERMINAL"></a>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.E5Gui.E5SimpleHelpDialog.html	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.E5Gui.E5SimpleHelpDialog</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.E5Gui.E5SimpleHelpDialog</h1>
+<p>
+Module implementing a dialog to show some help text.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#E5SimpleHelpDialog">E5SimpleHelpDialog</a></td>
+<td>Class implementing a dialog to show some help text.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr /><hr />
+<a NAME="E5SimpleHelpDialog" ID="E5SimpleHelpDialog"></a>
+<h2>E5SimpleHelpDialog</h2>
+<p>
+    Class implementing a dialog to show some help text.
+</p>
+<h3>Derived from</h3>
+QDialog, Ui_E5SimpleHelpDialog
+<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="#E5SimpleHelpDialog.__init__">E5SimpleHelpDialog</a></td>
+<td>Constructor</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="E5SimpleHelpDialog.__init__" ID="E5SimpleHelpDialog.__init__"></a>
+<h4>E5SimpleHelpDialog (Constructor)</h4>
+<b>E5SimpleHelpDialog</b>(<i>title="", label="", help="", parent=None</i>)
+<p>
+        Constructor
+</p><dl>
+<dt><i>title</i> (str)</dt>
+<dd>
+title of the window
+</dd><dt><i>label</i> (str)</dt>
+<dd>
+label for the help
+</dd><dt><i>help</i> (str)</dt>
+<dd>
+HTML help text
+</dd><dt><i>parent</i> (QWidget)</dt>
+<dd>
+reference to the parent widget
+</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.E5Network.E5GoogleMail.html	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,155 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.E5Network.E5GoogleMail</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.E5Network.E5GoogleMail</h1>
+<p>
+Module implementing a dialog to send bug reports.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>APPLICATION_NAME</td></tr><tr><td>CLIENT_SECRET_FILE</td></tr><tr><td>SCOPES</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#GoogleMailHelp">GoogleMailHelp</a></td>
+<td>Module function to get some help about how to enable the Google Mail OAuth2 service.</td>
+</tr><tr>
+<td><a href="#GoogleMailSendMessage">GoogleMailSendMessage</a></td>
+<td>Module function to send an email message via Google Mail.</td>
+</tr><tr>
+<td><a href="#_prepareMessage_v2">_prepareMessage_v2</a></td>
+<td>Module function to prepare the message for sending (Python2 Variant).</td>
+</tr><tr>
+<td><a href="#_prepareMessage_v3">_prepareMessage_v3</a></td>
+<td>Module function to prepare the message for sending (Python2 Variant).</td>
+</tr><tr>
+<td><a href="#getCredentials">getCredentials</a></td>
+<td>Module function to get the Google credentials.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="GoogleMailHelp" ID="GoogleMailHelp"></a>
+<h2>GoogleMailHelp</h2>
+<b>GoogleMailHelp</b>(<i></i>)
+<p>
+    Module function to get some help about how to enable the Google Mail
+    OAuth2 service.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+help text
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="GoogleMailSendMessage" ID="GoogleMailSendMessage"></a>
+<h2>GoogleMailSendMessage</h2>
+<b>GoogleMailSendMessage</b>(<i>message</i>)
+<p>
+    Module function to send an email message via Google Mail.
+</p><dl>
+<dt><i>message</i> (email.mime.text.MIMEBase)</dt>
+<dd>
+email message to be sent
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+tuple containing a success flag and a result or error message
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+tuple of (bool, str)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="_prepareMessage_v2" ID="_prepareMessage_v2"></a>
+<h2>_prepareMessage_v2</h2>
+<b>_prepareMessage_v2</b>(<i>message</i>)
+<p>
+    Module function to prepare the message for sending (Python2 Variant).
+</p><dl>
+<dt><i>message</i> (email.mime.text.MIMEBase)</dt>
+<dd>
+message to be prepared
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+prepared message dictionary
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+dict
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="_prepareMessage_v3" ID="_prepareMessage_v3"></a>
+<h2>_prepareMessage_v3</h2>
+<b>_prepareMessage_v3</b>(<i>message</i>)
+<p>
+    Module function to prepare the message for sending (Python2 Variant).
+</p><dl>
+<dt><i>message</i> (email.mime.text.MIMEBase)</dt>
+<dd>
+message to be prepared
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+prepared message dictionary
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+dict
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="getCredentials" ID="getCredentials"></a>
+<h2>getCredentials</h2>
+<b>getCredentials</b>(<i></i>)
+<p>
+    Module function to get the Google credentials.
+</p><dl>
+<dt>Returns:</dt>
+<dd>
+Google Mail credentials
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.CodeStyleChecker.CodeStyleChecker.html	Wed Jun 28 19:14:32 2017 +0200
@@ -167,23 +167,25 @@
 <hr /><hr />
 <a NAME="codeStyleBatchCheck" ID="codeStyleBatchCheck"></a>
 <h2>codeStyleBatchCheck</h2>
-<b>codeStyleBatchCheck</b>(<i>argumentsList, send, fx, cancelled</i>)
+<b>codeStyleBatchCheck</b>(<i>argumentsList, send, fx, cancelled, maxProcesses=0</i>)
 <p>
     Module function to check code style for a batch of files.
 </p><dl>
-<dt><i>argumentsList</i></dt>
+<dt><i>argumentsList</i> (list)</dt>
 <dd>
 list of arguments tuples as given for codeStyleCheck
-</dd><dt><i>send</i></dt>
+</dd><dt><i>send</i> (func)</dt>
 <dd>
-reference to send function (function)
-</dd><dt><i>fx</i></dt>
+reference to send function
+</dd><dt><i>fx</i> (str)</dt>
 <dd>
-registered service name (string)
-</dd><dt><i>cancelled</i></dt>
+registered service name
+</dd><dt><i>cancelled</i> (func)</dt>
 <dd>
 reference to function checking for a cancellation
-        (function)
+</dd><dt><i>maxProcesses</i> (int)</dt>
+<dd>
+number of processes to be used
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.SyntaxCheck.html	Wed Jun 28 19:14:32 2017 +0200
@@ -166,24 +166,26 @@
 <hr /><hr />
 <a NAME="syntaxAndPyflakesBatchCheck" ID="syntaxAndPyflakesBatchCheck"></a>
 <h2>syntaxAndPyflakesBatchCheck</h2>
-<b>syntaxAndPyflakesBatchCheck</b>(<i>argumentsList, send, fx, cancelled</i>)
+<b>syntaxAndPyflakesBatchCheck</b>(<i>argumentsList, send, fx, cancelled, maxProcesses=0</i>)
 <p>
     Module function to check syntax for a batch of files.
 </p><dl>
-<dt><i>argumentsList</i></dt>
+<dt><i>argumentsList</i> (list)</dt>
 <dd>
 list of arguments tuples as given for
         syntaxAndPyflakesCheck
-</dd><dt><i>send</i></dt>
+</dd><dt><i>send</i> (func)</dt>
 <dd>
-reference to send function (function)
-</dd><dt><i>fx</i></dt>
+reference to send function
+</dd><dt><i>fx</i> (str)</dt>
 <dd>
-registered service name (string)
-</dd><dt><i>cancelled</i></dt>
+registered service name
+</dd><dt><i>cancelled</i> (func)</dt>
 <dd>
 reference to function checking for a cancellation
-        (function)
+</dd><dt><i>maxProcesses</i> (int)</dt>
+<dd>
+number of processes to be used
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html	Wed Jun 28 19:14:32 2017 +0200
@@ -109,24 +109,25 @@
 <hr /><hr />
 <a NAME="jsSyntaxBatchCheck" ID="jsSyntaxBatchCheck"></a>
 <h2>jsSyntaxBatchCheck</h2>
-<b>jsSyntaxBatchCheck</b>(<i>argumentsList, send, fx, cancelled</i>)
+<b>jsSyntaxBatchCheck</b>(<i>argumentsList, send, fx, cancelled, maxProcesses=0</i>)
 <p>
     Module function to check syntax for a batch of files.
 </p><dl>
-<dt><i>argumentsList</i></dt>
+<dt><i>argumentsList</i> (list)</dt>
 <dd>
-list of arguments tuples as given for
-        syntaxAndPyflakesCheck
-</dd><dt><i>send</i></dt>
+list of arguments tuples as given for jsSyntaxCheck
+</dd><dt><i>send</i> (func)</dt>
 <dd>
-reference to send function (function)
-</dd><dt><i>fx</i></dt>
+reference to send function
+</dd><dt><i>fx</i> (str)</dt>
 <dd>
-registered service name (string)
-</dd><dt><i>cancelled</i></dt>
+registered service name
+</dd><dt><i>cancelled</i> (func)</dt>
 <dd>
 reference to function checking for a cancellation
-        (function)
+</dd><dt><i>maxProcesses</i> (int)</dt>
+<dd>
+number of processes to be used
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- a/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Plugins.CheckerPlugins.Tabnanny.Tabnanny.html	Wed Jun 28 19:14:32 2017 +0200
@@ -351,23 +351,25 @@
 <hr /><hr />
 <a NAME="batchCheck" ID="batchCheck"></a>
 <h2>batchCheck</h2>
-<b>batchCheck</b>(<i>argumentsList, send, fx, cancelled</i>)
+<b>batchCheck</b>(<i>argumentsList, send, fx, cancelled, maxProcesses=0</i>)
 <p>
     Module function to check a batch of files for whitespace related problems.
 </p><dl>
-<dt><i>argumentsList</i></dt>
+<dt><i>argumentsList</i> (list)</dt>
 <dd>
 list of arguments tuples as given for check
-</dd><dt><i>send</i></dt>
+</dd><dt><i>send</i> (func)</dt>
 <dd>
-reference to send function (function)
-</dd><dt><i>fx</i></dt>
+reference to send function
+</dd><dt><i>fx</i> (str)</dt>
 <dd>
-registered service name (string)
-</dd><dt><i>cancelled</i></dt>
+registered service name
+</dd><dt><i>cancelled</i> (func)</dt>
 <dd>
 reference to function checking for a cancellation
-        (function)
+</dd><dt><i>maxProcesses</i> (int)</dt>
+<dd>
+number of processes to be used
 </dd>
 </dl>
 <div align="right"><a href="#top">Up</a></div>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Documentation/Source/eric6.Preferences.ConfigurationPages.DiffColoursPage.html	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,172 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric6.Preferences.ConfigurationPages.DiffColoursPage</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.Preferences.ConfigurationPages.DiffColoursPage</h1>
+<p>
+Module implementing the Diff colours configuration page.
+</p>
+<h3>Global Attributes</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+<table>
+<tr>
+<td><a href="#DiffColoursPage">DiffColoursPage</a></td>
+<td>Class implementing the Diff colours configuration page.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+<table>
+<tr>
+<td><a href="#create">create</a></td>
+<td>Module function to create the configuration page.</td>
+</tr>
+</table>
+<hr /><hr />
+<a NAME="DiffColoursPage" ID="DiffColoursPage"></a>
+<h2>DiffColoursPage</h2>
+<p>
+    Class implementing the Diff colours configuration page.
+</p>
+<h3>Derived from</h3>
+ConfigurationPageBase, Ui_DiffColoursPage
+<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="#DiffColoursPage.__init__">DiffColoursPage</a></td>
+<td>Constructor</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.__initColour">__initColour</a></td>
+<td>Private method to initialize a colour selection button.</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.__selectBackgroundColour">__selectBackgroundColour</a></td>
+<td>Private slot to select a background colour.</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.__selectTextColour">__selectTextColour</a></td>
+<td>Private slot to select the text colour.</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.__updateSampleBackgroundColour">__updateSampleBackgroundColour</a></td>
+<td>Private slot to update the background colour of a sample.</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.__updateSampleTextColour">__updateSampleTextColour</a></td>
+<td>Private slot to update the text colour of all samples.</td>
+</tr><tr>
+<td><a href="#DiffColoursPage.save">save</a></td>
+<td>Public slot to save the Diff colours configuration.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+<table>
+<tr><td>None</td></tr>
+</table>
+<a NAME="DiffColoursPage.__init__" ID="DiffColoursPage.__init__"></a>
+<h4>DiffColoursPage (Constructor)</h4>
+<b>DiffColoursPage</b>(<i></i>)
+<p>
+        Constructor
+</p><a NAME="DiffColoursPage.__initColour" ID="DiffColoursPage.__initColour"></a>
+<h4>DiffColoursPage.__initColour</h4>
+<b>__initColour</b>(<i>colourKey, button, initSlot, selectSlot, sampleWidget</i>)
+<p>
+        Private method to initialize a colour selection button.
+</p><dl>
+<dt><i>colourKey</i> (str)</dt>
+<dd>
+key of the diff colour
+</dd><dt><i>button</i> (QPushButton)</dt>
+<dd>
+reference to the button
+</dd><dt><i>initSlot</i> (func)</dt>
+<dd>
+slot to be called to initialize the sample
+</dd><dt><i>selectSlot</i> (func)</dt>
+<dd>
+slot to be called to select the colour
+</dd><dt><i>sampleWidget</i> (QLineEdit)</dt>
+<dd>
+reference to the sample widget
+</dd>
+</dl><a NAME="DiffColoursPage.__selectBackgroundColour" ID="DiffColoursPage.__selectBackgroundColour"></a>
+<h4>DiffColoursPage.__selectBackgroundColour</h4>
+<b>__selectBackgroundColour</b>(<i></i>)
+<p>
+        Private slot to select a background colour.
+</p><a NAME="DiffColoursPage.__selectTextColour" ID="DiffColoursPage.__selectTextColour"></a>
+<h4>DiffColoursPage.__selectTextColour</h4>
+<b>__selectTextColour</b>(<i></i>)
+<p>
+        Private slot to select the text colour.
+</p><a NAME="DiffColoursPage.__updateSampleBackgroundColour" ID="DiffColoursPage.__updateSampleBackgroundColour"></a>
+<h4>DiffColoursPage.__updateSampleBackgroundColour</h4>
+<b>__updateSampleBackgroundColour</b>(<i>colourKey</i>)
+<p>
+        Private slot to update the background colour of a sample.
+</p><dl>
+<dt><i>colourKey</i> (str)</dt>
+<dd>
+key of the diff colour
+</dd>
+</dl><a NAME="DiffColoursPage.__updateSampleTextColour" ID="DiffColoursPage.__updateSampleTextColour"></a>
+<h4>DiffColoursPage.__updateSampleTextColour</h4>
+<b>__updateSampleTextColour</b>(<i>colourKey</i>)
+<p>
+        Private slot to update the text colour of all samples.
+</p><dl>
+<dt><i>colourKey</i> (str)</dt>
+<dd>
+key of the diff colour
+</dd>
+</dl><a NAME="DiffColoursPage.save" ID="DiffColoursPage.save"></a>
+<h4>DiffColoursPage.save</h4>
+<b>save</b>(<i></i>)
+<p>
+        Public slot to save the Diff colours configuration.
+</p>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
+<a NAME="create" ID="create"></a>
+<h2>create</h2>
+<b>create</b>(<i>dlg</i>)
+<p>
+    Module function to create the configuration page.
+</p><dl>
+<dt><i>dlg</i></dt>
+<dd>
+reference to the configuration dialog
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+reference to the instantiated page (ConfigurationPageBase)
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.Preferences.__init__.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Preferences.__init__.html	Wed Jun 28 19:14:32 2017 +0200
@@ -61,6 +61,9 @@
 <td><a href="#getDebugger">getDebugger</a></td>
 <td>Module function to retrieve the debugger settings.</td>
 </tr><tr>
+<td><a href="#getDiffColour">getDiffColour</a></td>
+<td>Module function to retrieve the colours for the diff highlighter.</td>
+</tr><tr>
 <td><a href="#getEditor">getEditor</a></td>
 <td>Module function to retrieve the various editor settings.</td>
 </tr><tr>
@@ -220,6 +223,9 @@
 <td><a href="#setDebugger">setDebugger</a></td>
 <td>Module function to store the debugger settings.</td>
 </tr><tr>
+<td><a href="#setDiffColour">setDiffColour</a></td>
+<td>Module function to store the diff highlighter colours.</td>
+</tr><tr>
 <td><a href="#setEditor">setEditor</a></td>
 <td>Module function to store the various editor settings.</td>
 </tr><tr>
@@ -363,7 +369,7 @@
 object
 <h3>Class Attributes</h3>
 <table>
-<tr><td>cooperationDefaults</td></tr><tr><td>corbaDefaults</td></tr><tr><td>debuggerDefaults</td></tr><tr><td>editorColourDefaults</td></tr><tr><td>editorDefaults</td></tr><tr><td>editorExporterDefaults</td></tr><tr><td>editorOtherFontsDefaults</td></tr><tr><td>editorTypingDefaults</td></tr><tr><td>geometryDefaults</td></tr><tr><td>graphicsDefaults</td></tr><tr><td>helpDefaults</td></tr><tr><td>hexEditorDefaults</td></tr><tr><td>iconEditorDefaults</td></tr><tr><td>iconsDefaults</td></tr><tr><td>ircDefaults</td></tr><tr><td>multiProjectDefaults</td></tr><tr><td>pluginManagerDefaults</td></tr><tr><td>printerDefaults</td></tr><tr><td>projectBrowserColourDefaults</td></tr><tr><td>projectBrowserFlagsDefaults</td></tr><tr><td>projectDefaults</td></tr><tr><td>pyflakesDefaults</td></tr><tr><td>qtDefaults</td></tr><tr><td>resetLayout</td></tr><tr><td>shellDefaults</td></tr><tr><td>sysDefaults</td></tr><tr><td>tasksDefaults</td></tr><tr><td>templatesDefaults</td></tr><tr><td>trayStarterDefaults</td></tr><tr><td>uiDefaults</td></tr><tr><td>userDefaults</td></tr><tr><td>varDefaults</td></tr><tr><td>vcsDefaults</td></tr><tr><td>webBrowserDefaults</td></tr><tr><td>webEngineSettingsIntitialized</td></tr><tr><td>webSettingsIntitialized</td></tr>
+<tr><td>cooperationDefaults</td></tr><tr><td>corbaDefaults</td></tr><tr><td>debuggerDefaults</td></tr><tr><td>diffColourDefaults</td></tr><tr><td>editorColourDefaults</td></tr><tr><td>editorDefaults</td></tr><tr><td>editorExporterDefaults</td></tr><tr><td>editorOtherFontsDefaults</td></tr><tr><td>editorTypingDefaults</td></tr><tr><td>geometryDefaults</td></tr><tr><td>graphicsDefaults</td></tr><tr><td>helpDefaults</td></tr><tr><td>hexEditorDefaults</td></tr><tr><td>iconEditorDefaults</td></tr><tr><td>iconsDefaults</td></tr><tr><td>ircDefaults</td></tr><tr><td>multiProjectDefaults</td></tr><tr><td>pluginManagerDefaults</td></tr><tr><td>printerDefaults</td></tr><tr><td>projectBrowserColourDefaults</td></tr><tr><td>projectBrowserFlagsDefaults</td></tr><tr><td>projectDefaults</td></tr><tr><td>pyflakesDefaults</td></tr><tr><td>qtDefaults</td></tr><tr><td>resetLayout</td></tr><tr><td>shellDefaults</td></tr><tr><td>sysDefaults</td></tr><tr><td>tasksDefaults</td></tr><tr><td>templatesDefaults</td></tr><tr><td>trayStarterDefaults</td></tr><tr><td>uiDefaults</td></tr><tr><td>userDefaults</td></tr><tr><td>varDefaults</td></tr><tr><td>vcsDefaults</td></tr><tr><td>webBrowserDefaults</td></tr><tr><td>webEngineSettingsIntitialized</td></tr><tr><td>webSettingsIntitialized</td></tr>
 </table>
 <h3>Class Methods</h3>
 <table>
@@ -491,6 +497,27 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="getDiffColour" ID="getDiffColour"></a>
+<h2>getDiffColour</h2>
+<b>getDiffColour</b>(<i>key, prefClass=Prefs</i>)
+<p>
+    Module function to retrieve the colours for the diff highlighter.
+</p><dl>
+<dt><i>key</i></dt>
+<dd>
+the key of the value to get
+</dd><dt><i>prefClass</i></dt>
+<dd>
+preferences class used as the storage area
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+the requested editor colour
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="getEditor" ID="getEditor"></a>
 <h2>getEditor</h2>
 <b>getEditor</b>(<i>key, prefClass=Prefs</i>)
@@ -1528,6 +1555,25 @@
 </dl>
 <div align="right"><a href="#top">Up</a></div>
 <hr /><hr />
+<a NAME="setDiffColour" ID="setDiffColour"></a>
+<h2>setDiffColour</h2>
+<b>setDiffColour</b>(<i>key, value, prefClass=Prefs</i>)
+<p>
+    Module function to store the diff highlighter colours.
+</p><dl>
+<dt><i>key</i></dt>
+<dd>
+the key of the colour to be set
+</dd><dt><i>value</i></dt>
+<dd>
+the colour to be set
+</dd><dt><i>prefClass</i></dt>
+<dd>
+preferences class used as the storage area
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr /><hr />
 <a NAME="setEditor" ID="setEditor"></a>
 <h2>setEditor</h2>
 <b>setEditor</b>(<i>key, value, prefClass=Prefs</i>)
--- a/Documentation/Source/eric6.Templates.TemplateHelpDialog.html	Tue Jun 06 19:52:41 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric6.Templates.TemplateHelpDialog</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.Templates.TemplateHelpDialog</h1>
-<p>
-Module implementing a dialog to show some template help.
-</p>
-<h3>Global Attributes</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-<table>
-<tr>
-<td><a href="#TemplateHelpDialog">TemplateHelpDialog</a></td>
-<td>Class implementing a dialog to show some template help.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr /><hr />
-<a NAME="TemplateHelpDialog" ID="TemplateHelpDialog"></a>
-<h2>TemplateHelpDialog</h2>
-<p>
-    Class implementing a dialog to show some template help.
-</p>
-<h3>Derived from</h3>
-QDialog, Ui_TemplateHelpDialog
-<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="#TemplateHelpDialog.__init__">TemplateHelpDialog</a></td>
-<td>Constructor</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-<table>
-<tr><td>None</td></tr>
-</table>
-<a NAME="TemplateHelpDialog.__init__" ID="TemplateHelpDialog.__init__"></a>
-<h4>TemplateHelpDialog (Constructor)</h4>
-<b>TemplateHelpDialog</b>(<i>parent=None</i>)
-<p>
-        Constructor
-</p><dl>
-<dt><i>parent</i> (QWidget)</dt>
-<dd>
-reference to the parent widget
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-</body></html>
\ No newline at end of file
--- a/Documentation/Source/eric6.UI.CompareDialog.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.UI.CompareDialog.html	Wed Jun 28 19:14:32 2017 +0200
@@ -80,6 +80,9 @@
 <td><a href="#CompareDialog.__fileChanged">__fileChanged</a></td>
 <td>Private slot to enable/disable the Compare button.</td>
 </tr><tr>
+<td><a href="#CompareDialog.__generateFormats">__generateFormats</a></td>
+<td>Private method to generate the various text formats.</td>
+</tr><tr>
 <td><a href="#CompareDialog.__moveTextToCurrentDiffPos">__moveTextToCurrentDiffPos</a></td>
 <td>Private slot to move the text display to the current diff position.</td>
 </tr><tr>
@@ -172,6 +175,11 @@
 <b>__fileChanged</b>(<i></i>)
 <p>
         Private slot to enable/disable the Compare button.
+</p><a NAME="CompareDialog.__generateFormats" ID="CompareDialog.__generateFormats"></a>
+<h4>CompareDialog.__generateFormats</h4>
+<b>__generateFormats</b>(<i></i>)
+<p>
+        Private method to generate the various text formats.
 </p><a NAME="CompareDialog.__moveTextToCurrentDiffPos" ID="CompareDialog.__moveTextToCurrentDiffPos"></a>
 <h4>CompareDialog.__moveTextToCurrentDiffPos</h4>
 <b>__moveTextToCurrentDiffPos</b>(<i></i>)
--- a/Documentation/Source/eric6.UI.EmailDialog.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.UI.EmailDialog.html	Wed Jun 28 19:14:32 2017 +0200
@@ -21,7 +21,7 @@
 <body><a NAME="top" ID="top"></a>
 <h1>eric6.UI.EmailDialog</h1>
 <p>
-Module implementing a dialog to send bug reports.
+Module implementing a dialog to send bug reports or feature requests.
 </p>
 <h3>Global Attributes</h3>
 <table>
@@ -31,7 +31,7 @@
 <table>
 <tr>
 <td><a href="#EmailDialog">EmailDialog</a></td>
-<td>Class implementing a dialog to send bug reports.</td>
+<td>Class implementing a dialog to send bug reports or feature requests.</td>
 </tr>
 </table>
 <h3>Functions</h3>
@@ -45,7 +45,7 @@
 <a NAME="EmailDialog" ID="EmailDialog"></a>
 <h2>EmailDialog</h2>
 <p>
-    Class implementing a dialog to send bug reports.
+    Class implementing a dialog to send bug reports or feature requests.
 </p>
 <h3>Derived from</h3>
 QDialog, Ui_EmailDialog
@@ -78,6 +78,9 @@
 <td><a href="#EmailDialog.__sendmail">__sendmail</a></td>
 <td>Private method to actually send the message.</td>
 </tr><tr>
+<td><a href="#EmailDialog.__sendmailGoogle">__sendmailGoogle</a></td>
+<td>Private method to actually send the message via Google Mail.</td>
+</tr><tr>
 <td><a href="#EmailDialog.attachFile">attachFile</a></td>
 <td>Public method to add an attachment.</td>
 </tr><tr>
@@ -96,6 +99,9 @@
 <td><a href="#EmailDialog.on_deleteButton_clicked">on_deleteButton_clicked</a></td>
 <td>Private slot to handle the Delete button.</td>
 </tr><tr>
+<td><a href="#EmailDialog.on_googleHelpButton_clicked">on_googleHelpButton_clicked</a></td>
+<td>Private slot to show some help text "how to turn on the Gmail API".</td>
+</tr><tr>
 <td><a href="#EmailDialog.on_message_textChanged">on_message_textChanged</a></td>
 <td>Private slot to handle the textChanged signal of the message edit.</td>
 </tr><tr>
@@ -131,7 +137,12 @@
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-string containing the mail message
+prepared mail message
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+email.mime.text.MIMEMultipart
 </dd>
 </dl><a NAME="EmailDialog.__createSimpleMail" ID="EmailDialog.__createSimpleMail"></a>
 <h4>EmailDialog.__createSimpleMail</h4>
@@ -141,7 +152,12 @@
 </p><dl>
 <dt>Returns:</dt>
 <dd>
-string containing the mail message
+prepared mail message
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+email.mime.text.MIMEText
 </dd>
 </dl><a NAME="EmailDialog.__encodedHeader" ID="EmailDialog.__encodedHeader"></a>
 <h4>EmailDialog.__encodedHeader</h4>
@@ -188,6 +204,26 @@
 <dd>
 flag indicating success (boolean)
 </dd>
+</dl><a NAME="EmailDialog.__sendmailGoogle" ID="EmailDialog.__sendmailGoogle"></a>
+<h4>EmailDialog.__sendmailGoogle</h4>
+<b>__sendmailGoogle</b>(<i>msg</i>)
+<p>
+        Private method to actually send the message via Google Mail.
+</p><dl>
+<dt><i>message</i> (email.mime.text.MIMEBase)</dt>
+<dd>
+email message to be sent
+</dd>
+</dl><dl>
+<dt>Returns:</dt>
+<dd>
+flag indicating success
+</dd>
+</dl><dl>
+<dt>Return Type:</dt>
+<dd>
+bool
+</dd>
 </dl><a NAME="EmailDialog.attachFile" ID="EmailDialog.attachFile"></a>
 <h4>EmailDialog.attachFile</h4>
 <b>attachFile</b>(<i>fname, deleteFile</i>)
@@ -237,6 +273,11 @@
 <b>on_deleteButton_clicked</b>(<i></i>)
 <p>
         Private slot to handle the Delete button.
+</p><a NAME="EmailDialog.on_googleHelpButton_clicked" ID="EmailDialog.on_googleHelpButton_clicked"></a>
+<h4>EmailDialog.on_googleHelpButton_clicked</h4>
+<b>on_googleHelpButton_clicked</b>(<i></i>)
+<p>
+        Private slot to show some help text "how to turn on the Gmail API".
 </p><a NAME="EmailDialog.on_message_textChanged" ID="EmailDialog.on_message_textChanged"></a>
 <h4>EmailDialog.on_message_textChanged</h4>
 <b>on_message_textChanged</b>(<i></i>)
--- a/Documentation/Source/eric6.Utilities.BackgroundClient.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/eric6.Utilities.BackgroundClient.html	Wed Jun 28 19:14:32 2017 +0200
@@ -86,16 +86,20 @@
 </table>
 <a NAME="BackgroundClient.__init__" ID="BackgroundClient.__init__"></a>
 <h4>BackgroundClient (Constructor)</h4>
-<b>BackgroundClient</b>(<i>host, port</i>)
+<b>BackgroundClient</b>(<i>host, port, maxProcs</i>)
 <p>
         Constructor of the BackgroundClient class.
 </p><dl>
-<dt><i>host</i></dt>
+<dt><i>host</i> (str)</dt>
 <dd>
 ip address the background service is listening
-</dd><dt><i>port</i></dt>
+</dd><dt><i>port</i> (int)</dt>
 <dd>
 port of the background service
+</dd><dt><i>maxProcs</i> (int)</dt>
+<dd>
+maximum number of CPUs (processes) to use
+            (0 = determined automatically)
 </dd>
 </dl><a NAME="BackgroundClient.__cancelled" ID="BackgroundClient.__cancelled"></a>
 <h4>BackgroundClient.__cancelled</h4>
--- a/Documentation/Source/index-eric6.E5Gui.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/index-eric6.E5Gui.html	Wed Jun 28 19:14:32 2017 +0200
@@ -105,6 +105,9 @@
 <td><a href="eric6.E5Gui.E5SideBar.html">E5SideBar</a></td>
 <td>Module implementing a sidebar class.</td>
 </tr><tr>
+<td><a href="eric6.E5Gui.E5SimpleHelpDialog.html">E5SimpleHelpDialog</a></td>
+<td>Module implementing a dialog to show some help text.</td>
+</tr><tr>
 <td><a href="eric6.E5Gui.E5SingleApplication.html">E5SingleApplication</a></td>
 <td>Module implementing the single application server and client.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.E5Network.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/index-eric6.E5Network.html	Wed Jun 28 19:14:32 2017 +0200
@@ -38,6 +38,9 @@
 <td><a href="eric6.E5Network.E5Ftp.html">E5Ftp</a></td>
 <td>Module implementing an extension to the Python FTP class to support FTP proxies.</td>
 </tr><tr>
+<td><a href="eric6.E5Network.E5GoogleMail.html">E5GoogleMail</a></td>
+<td>Module implementing a dialog to send bug reports.</td>
+</tr><tr>
 <td><a href="eric6.E5Network.E5NetworkHeaderDetailsDialog.html">E5NetworkHeaderDetailsDialog</a></td>
 <td>Module implementing a dialog to show the data of a response or reply header.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Preferences.ConfigurationPages.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/index-eric6.Preferences.ConfigurationPages.html	Wed Jun 28 19:14:32 2017 +0200
@@ -49,6 +49,9 @@
 <td><a href="eric6.Preferences.ConfigurationPages.DebuggerPythonPage.html">DebuggerPythonPage</a></td>
 <td>Module implementing the Debugger Python configuration page.</td>
 </tr><tr>
+<td><a href="eric6.Preferences.ConfigurationPages.DiffColoursPage.html">DiffColoursPage</a></td>
+<td>Module implementing the Diff colours configuration page.</td>
+</tr><tr>
 <td><a href="eric6.Preferences.ConfigurationPages.EditorAPIsPage.html">EditorAPIsPage</a></td>
 <td>Module implementing the Editor APIs configuration page.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.Templates.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/index-eric6.Templates.html	Wed Jun 28 19:14:32 2017 +0200
@@ -28,9 +28,6 @@
 <h3>Modules</h3>
 <table>
 <tr>
-<td><a href="eric6.Templates.TemplateHelpDialog.html">TemplateHelpDialog</a></td>
-<td>Module implementing a dialog to show some template help.</td>
-</tr><tr>
 <td><a href="eric6.Templates.TemplateMultipleVariablesDialog.html">TemplateMultipleVariablesDialog</a></td>
 <td>Module implementing a dialog for entering multiple template variables.</td>
 </tr><tr>
--- a/Documentation/Source/index-eric6.UI.html	Tue Jun 06 19:52:41 2017 +0200
+++ b/Documentation/Source/index-eric6.UI.html	Wed Jun 28 19:14:32 2017 +0200
@@ -69,7 +69,7 @@
 <td>Module implementing a syntax highlighter for unified and context diff outputs.</td>
 </tr><tr>
 <td><a href="eric6.UI.EmailDialog.html">EmailDialog</a></td>
-<td>Module implementing a dialog to send bug reports.</td>
+<td>Module implementing a dialog to send bug reports or feature requests.</td>
 </tr><tr>
 <td><a href="eric6.UI.ErrorLogDialog.html">ErrorLogDialog</a></td>
 <td>Module implementing a dialog to display an error log.</td>
--- a/E5Gui/E5Application.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/E5Gui/E5Application.py	Wed Jun 28 19:14:32 2017 +0200
@@ -9,7 +9,7 @@
 
 from __future__ import unicode_literals
 
-from PyQt5.QtCore import QCoreApplication
+from PyQt5.QtCore import Qt, QCoreApplication
 from PyQt5.QtWidgets import QApplication
 
 
@@ -25,6 +25,8 @@
         """
         super(E5Application, self).__init__(argv)
         
+        QCoreApplication.setAttribute(Qt.AA_DontCreateNativeWidgetSiblings)
+        
         self.__objectRegistry = {}
         self.__pluginObjectRegistry = {}
         
--- a/E5Gui/E5GenericDiffHighlighter.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/E5Gui/E5GenericDiffHighlighter.py	Wed Jun 28 19:14:32 2017 +0200
@@ -11,7 +11,7 @@
 
 import re
 
-from PyQt5.QtGui import QSyntaxHighlighter, QColor, QTextCharFormat, QFont
+from PyQt5.QtGui import QSyntaxHighlighter, QTextCharFormat, QFont
 
 import Preferences
 
@@ -41,26 +41,19 @@
         """
         super(E5GenericDiffHighlighter, self).__init__(doc)
         
-        self.textColor = QColor(0, 0, 0)
-        self.addedColor = QColor(190, 237, 190)
-        self.removedColor = QColor(237, 190, 190)
-        self.replacedColor = QColor(190, 190, 237)
-        self.contextColor = QColor(255, 220, 168)
-        self.headerColor = QColor(237, 237, 190)
-        
-        self.normalFormat = self.makeFormat()
-        
-        self._rules = []
-        self.generateRules()
+        self.regenerateRules()
     
-    def generateRules(self):
+    def __initColours(self):
+        """
+        Private method to initialize the highlighter colours.
         """
-        Public method to generate the rule set.
-        
-        Note: This method must me implemented by derived syntax
-        highlighters.
-        """
-        pass
+        self.textColor = Preferences.getDiffColour("TextColor")
+        self.addedColor = Preferences.getDiffColour("AddedColor")
+        self.removedColor = Preferences.getDiffColour("RemovedColor")
+        self.replacedColor = Preferences.getDiffColour("ReplacedColor")
+        self.contextColor = Preferences.getDiffColour("ContextColor")
+        self.headerColor = Preferences.getDiffColour("HeaderColor")
+        self.whitespaceColor = Preferences.getDiffColour("BadWhitespaceColor")
     
     def createRules(self, *rules):
         """
@@ -159,3 +152,23 @@
                     self.setFormat(start, start + length,
                                    formatStr[groupIndex])
                 start += length
+    
+    def regenerateRules(self):
+        """
+        Public method to initialize or regenerate the syntax highlighter rules.
+        """
+        self.normalFormat = self.makeFormat()
+        
+        self.__initColours()
+        
+        self._rules = []
+        self.generateRules()
+    
+    def generateRules(self):
+        """
+        Public method to generate the rule set.
+        
+        Note: This method must me implemented by derived syntax
+        highlighters.
+        """
+        pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/E5Gui/E5SimpleHelpDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2015 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to show some help text.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import Qt
+from PyQt5.QtWidgets import QDialog
+
+from .Ui_E5SimpleHelpDialog import Ui_E5SimpleHelpDialog
+
+
+class E5SimpleHelpDialog(QDialog, Ui_E5SimpleHelpDialog):
+    """
+    Class implementing a dialog to show some help text.
+    """
+    def __init__(self, title="", label="", help="", parent=None):
+        """
+        Constructor
+        
+        @param title title of the window
+        @type str
+        @param label label for the help
+        @type str
+        @param help HTML help text
+        @type str
+        @param parent reference to the parent widget
+        @type QWidget
+        """
+        super(E5SimpleHelpDialog, self).__init__(parent)
+        self.setupUi(self)
+        self.setWindowFlags(Qt.Window)
+        
+        self.setWindowTitle(title)
+        if label:
+            self.helpLabel.setText(label)
+        else:
+            self.helpLabel.hide()
+        self.helpEdit.setHtml(help)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/E5Gui/E5SimpleHelpDialog.ui	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>E5SimpleHelpDialog</class>
+ <widget class="QDialog" name="E5SimpleHelpDialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>500</width>
+    <height>600</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string/>
+  </property>
+  <property name="sizeGripEnabled">
+   <bool>true</bool>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="helpLabel"/>
+   </item>
+   <item>
+    <widget class="QTextBrowser" name="helpEdit">
+     <property name="tabChangesFocus">
+      <bool>true</bool>
+     </property>
+     <property name="readOnly">
+      <bool>true</bool>
+     </property>
+     <property name="textInteractionFlags">
+      <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
+     </property>
+     <property name="openExternalLinks">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Close</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>E5SimpleHelpDialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>E5SimpleHelpDialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/E5Network/E5GoogleMail.py	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,143 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to send bug reports.
+"""
+
+from __future__ import unicode_literals
+try:
+    str = unicode       # __IGNORE_EXCEPTION__
+except NameError:
+    pass
+
+import os
+import sys
+import base64
+
+import httplib2
+
+import oauth2client.file
+from oauth2client import client, tools
+
+from googleapiclient import discovery
+
+import Globals
+
+
+SCOPES = 'https://www.googleapis.com/auth/gmail.send'
+CLIENT_SECRET_FILE = 'eric_client_secret.json'
+APPLICATION_NAME = 'Eric Python Send Email'
+
+
+def getCredentials():
+    """
+    Module function to get the Google credentials.
+    
+    @return Google Mail credentials
+    """
+    homeDir = os.path.expanduser('~')
+    credentialDir = os.path.join(homeDir, '.credentials')
+    if not os.path.exists(credentialDir):
+        os.makedirs(credentialDir)
+    credentialPath = os.path.join(credentialDir,
+                                  'eric-python-email-send.json')
+    store = oauth2client.file.Storage(credentialPath)
+    credentials = store.get()
+    if not credentials or credentials.invalid:
+        flow = client.flow_from_clientsecrets(
+            os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE),
+            SCOPES)
+        flow.user_agent = APPLICATION_NAME
+        credentials = tools.run_flow(flow, store)
+    return credentials
+
+
+def GoogleMailSendMessage(message):
+    """
+    Module function to send an email message via Google Mail.
+    
+    @param message email message to be sent
+    @type email.mime.text.MIMEBase
+    @return tuple containing a success flag and a result or error message
+    @rtype tuple of (bool, str)
+    """
+    try:
+        credentials = getCredentials()
+        http = credentials.authorize(httplib2.Http())
+        service = discovery.build('gmail', 'v1', http=http)
+        if sys.version_info[0] == 2:
+            message1 = _prepareMessage_v2(message)
+        else:
+            message1 = _prepareMessage_v3(message)
+        result = service.users().messages()\
+            .send(userId="me", body=message1).execute()
+
+        return True, result
+    except Exception as error:
+        return False, str(error)
+
+
+def _prepareMessage_v2(message):
+    """
+    Module function to prepare the message for sending (Python2 Variant).
+    
+    @param message message to be prepared
+    @type email.mime.text.MIMEBase
+    @return prepared message dictionary
+    @rtype dict
+    """
+    raw = base64.urlsafe_b64encode(message.as_string())
+    return {'raw': raw}
+
+
+def _prepareMessage_v3(message):
+    """
+    Module function to prepare the message for sending (Python2 Variant).
+    
+    @param message message to be prepared
+    @type email.mime.text.MIMEBase
+    @return prepared message dictionary
+    @rtype dict
+    """
+    messageAsBase64 = base64.urlsafe_b64encode(message.as_bytes())
+    raw = messageAsBase64.decode()
+    return {'raw': raw}
+
+
+def GoogleMailHelp():
+    """
+    Module function to get some help about how to enable the Google Mail
+    OAuth2 service.
+    
+    @return help text
+    @rtype str
+    """
+    return (
+        "<h2>Steps to turn on the Gmail API</h2>"
+        "<ol>"
+        "<li>Use <a href='{0}'>this wizard</a> to create or select a project"
+        " in the Google Developers Console and automatically turn on the API."
+        " Click <b>Continue</b>, then <b>Go to credentials</b>.</li>"
+        "<li>At the top of the page, select the <b>OAuth consent screen</b>"
+        " tab. Select an <b>Email address</b>, enter a <b>Product name</b> if"
+        " not already set, and click the <b>Save</b> button.</li>"
+        "<li>Select the <b>Credentials</b> tab, click the <b>Add credentials"
+        "</b> button and select <b>OAuth 2.0 client ID</b>.</li>"
+        "<li>Select the application type <b>Other</b>, enter the name &quot;"
+        "{1}&quot;, and click the <b>Create</b>"
+        " button.</li>"
+        "<li>Click <b>OK</b> to dismiss the resulting dialog.</li>"
+        "<li>Click the (Download JSON) button to the right of the client ID."
+        "</li>"
+        "<li>Move this file to the eric configuration directory"
+        " <code>{2}</code> and rename it <code>{3}</code>.</li>"
+        "</ol>".format(
+            "https://console.developers.google.com/start/api?id=gmail",
+            APPLICATION_NAME,
+            Globals.getConfigDir(),
+            CLIENT_SECRET_FILE
+        )
+    )
--- a/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleChecker.py	Wed Jun 28 19:14:32 2017 +0200
@@ -151,22 +151,31 @@
     return __checkCodeStyle(filename, source, args)
 
 
-def codeStyleBatchCheck(argumentsList, send, fx, cancelled):
+def codeStyleBatchCheck(argumentsList, send, fx, cancelled, maxProcesses=0):
     """
     Module function to check code style for a batch of files.
     
     @param argumentsList list of arguments tuples as given for codeStyleCheck
-    @param send reference to send function (function)
-    @param fx registered service name (string)
+    @type list
+    @param send reference to send function
+    @type func
+    @param fx registered service name
+    @type str
     @param cancelled reference to function checking for a cancellation
-        (function)
+    @type func
+    @param maxProcesses number of processes to be used
+    @type int
     """
-    try:
-        NumberOfProcesses = multiprocessing.cpu_count()
-        if NumberOfProcesses >= 1:
-            NumberOfProcesses -= 1
-    except NotImplementedError:
-        NumberOfProcesses = 1
+    if maxProcesses == 0:
+        # determine based on CPU count
+        try:
+            NumberOfProcesses = multiprocessing.cpu_count()
+            if NumberOfProcesses >= 1:
+                NumberOfProcesses -= 1
+        except NotImplementedError:
+            NumberOfProcesses = 1
+    else:
+        NumberOfProcesses = maxProcesses
 
     # Create queues
     taskQueue = multiprocessing.Queue()
--- a/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheck.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/CheckerPlugins/SyntaxChecker/SyntaxCheck.py	Wed Jun 28 19:14:32 2017 +0200
@@ -118,23 +118,33 @@
                                     ignoreStarImportWarnings)
 
 
-def syntaxAndPyflakesBatchCheck(argumentsList, send, fx, cancelled):
+def syntaxAndPyflakesBatchCheck(argumentsList, send, fx, cancelled,
+                                maxProcesses=0):
     """
     Module function to check syntax for a batch of files.
     
     @param argumentsList list of arguments tuples as given for
         syntaxAndPyflakesCheck
-    @param send reference to send function (function)
-    @param fx registered service name (string)
+    @type list
+    @param send reference to send function
+    @type func
+    @param fx registered service name
+    @type str
     @param cancelled reference to function checking for a cancellation
-        (function)
+    @type func
+    @param maxProcesses number of processes to be used
+    @type int
     """
-    try:
-        NumberOfProcesses = multiprocessing.cpu_count()
-        if NumberOfProcesses >= 1:
-            NumberOfProcesses -= 1
-    except NotImplementedError:
-        NumberOfProcesses = 1
+    if maxProcesses == 0:
+        # determine based on CPU count
+        try:
+            NumberOfProcesses = multiprocessing.cpu_count()
+            if NumberOfProcesses >= 1:
+                NumberOfProcesses -= 1
+        except NotImplementedError:
+            NumberOfProcesses = 1
+    else:
+        NumberOfProcesses = maxProcesses
 
     # Create queues
     taskQueue = multiprocessing.Queue()
--- a/Plugins/CheckerPlugins/SyntaxChecker/jsCheckSyntax.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/CheckerPlugins/SyntaxChecker/jsCheckSyntax.py	Wed Jun 28 19:14:32 2017 +0200
@@ -78,23 +78,31 @@
     return __jsSyntaxCheck(file, codestring)
 
 
-def jsSyntaxBatchCheck(argumentsList, send, fx, cancelled):
+def jsSyntaxBatchCheck(argumentsList, send, fx, cancelled, maxProcesses=0):
     """
     Module function to check syntax for a batch of files.
     
-    @param argumentsList list of arguments tuples as given for
-        syntaxAndPyflakesCheck
-    @param send reference to send function (function)
-    @param fx registered service name (string)
+    @param argumentsList list of arguments tuples as given for jsSyntaxCheck
+    @type list
+    @param send reference to send function
+    @type func
+    @param fx registered service name
+    @type str
     @param cancelled reference to function checking for a cancellation
-        (function)
+    @type func
+    @param maxProcesses number of processes to be used
+    @type int
     """
-    try:
-        NumberOfProcesses = multiprocessing.cpu_count()
-        if NumberOfProcesses >= 1:
-            NumberOfProcesses -= 1
-    except NotImplementedError:
-        NumberOfProcesses = 1
+    if maxProcesses == 0:
+        # determine based on CPU count
+        try:
+            NumberOfProcesses = multiprocessing.cpu_count()
+            if NumberOfProcesses >= 1:
+                NumberOfProcesses -= 1
+        except NotImplementedError:
+            NumberOfProcesses = 1
+    else:
+        NumberOfProcesses = maxProcesses
 
     # Create queues
     taskQueue = multiprocessing.Queue()
--- a/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/CheckerPlugins/Tabnanny/Tabnanny.py	Wed Jun 28 19:14:32 2017 +0200
@@ -135,22 +135,31 @@
     return __check(file, text)
 
 
-def batchCheck(argumentsList, send, fx, cancelled):
+def batchCheck(argumentsList, send, fx, cancelled, maxProcesses=0):
     """
     Module function to check a batch of files for whitespace related problems.
     
     @param argumentsList list of arguments tuples as given for check
-    @param send reference to send function (function)
-    @param fx registered service name (string)
+    @type list
+    @param send reference to send function
+    @type func
+    @param fx registered service name
+    @type str
     @param cancelled reference to function checking for a cancellation
-        (function)
+    @type func
+    @param maxProcesses number of processes to be used
+    @type int
     """
-    try:
-        NumberOfProcesses = multiprocessing.cpu_count()
-        if NumberOfProcesses >= 1:
-            NumberOfProcesses -= 1
-    except NotImplementedError:
-        NumberOfProcesses = 1
+    if maxProcesses == 0:
+        # determine based on CPU count
+        try:
+            NumberOfProcesses = multiprocessing.cpu_count()
+            if NumberOfProcesses >= 1:
+                NumberOfProcesses -= 1
+        except NotImplementedError:
+            NumberOfProcesses = 1
+    else:
+        NumberOfProcesses = maxProcesses
 
     # Create queues
     taskQueue = multiprocessing.Queue()
--- a/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -92,6 +92,7 @@
         
         self.contents.clear()
         self.filesCombo.clear()
+        self.highlighter.regenerateRules()
         
         if qdiff:
             self.setWindowTitle(self.tr("Patch Contents"))
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -2553,6 +2553,7 @@
         self.diffEdit.setPlainText(self.tr("Generating differences ..."))
         self.diffLabel.setText(self.tr("Differences"))
         self.diffSelectLabel.clear()
+        self.diffHighlighter.regenerateRules()
         
         selectedItems = self.logTree.selectedItems()
         if len(selectedItems) == 1:
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -904,6 +904,7 @@
         Private slot to generate diff outputs for the selected item.
         """
         self.diffEdit.clear()
+        self.diffHighlighter.regenerateRules()
         
         if not self.__mq:
             selectedItems = self.statusList.selectedItems()
--- a/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -146,6 +146,7 @@
         self.filename = fn
         
         self.contents.clear()
+        self.highlighter.regenerateRules()
         self.paras = 0
         
         self.filesCombo.clear()
--- a/Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -118,6 +118,7 @@
         self.process.kill()
         
         self.contents.clear()
+        self.highlighter.regenerateRules()
         self.paras = 0
         
         self.filesCombo.clear()
--- a/Preferences/ConfigurationDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/ConfigurationDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -140,6 +140,9 @@
                 "corbaPage":
                 [self.tr("CORBA"), "preferences-orbit.png",
                  "CorbaPage", None, None],
+                "diffPage":
+                [self.tr("Diff"), "diffFiles.png",
+                 "DiffColoursPage", None, None],
                 "emailPage":
                 [self.tr("Email"), "preferences-mail_generic.png",
                  "EmailPage", None, None],
--- a/Preferences/ConfigurationPages/ApplicationPage.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/ConfigurationPages/ApplicationPage.py	Wed Jun 28 19:14:32 2017 +0200
@@ -27,6 +27,14 @@
         self.setupUi(self)
         self.setObjectName("ApplicationPage")
         
+        self.backgroundServicesLabel.setText(self.tr(
+            "eric is using background services for certain things like"
+            " syntax checks or code style checks. Per default the number"
+            " of processes to use for these checks is determined"
+            " automatically based on the number of CPUs. Please note, that"
+            " this is an advanced setting."
+        ))
+        
         # set initial values
         self.singleApplicationCheckBox.setChecked(
             Preferences.getUI("SingleApplicationMode"))
@@ -70,6 +78,9 @@
         self.intervalSpinBox.setValue(
             Preferences.getUI("KeyboardInputInterval"))
         
+        self.backgroundServicesSpinBox.setValue(
+            Preferences.getUI("BackgroundServiceProcesses"))
+    
     def save(self):
         """
         Public slot to save the Application configuration.
@@ -121,7 +132,11 @@
         Preferences.setUI(
             "KeyboardInputInterval",
             self.intervalSpinBox.value())
-    
+        
+        Preferences.setUI(
+            "BackgroundServiceProcesses",
+            self.backgroundServicesSpinBox.value())
+
 
 def create(dlg):
     """
--- a/Preferences/ConfigurationPages/ApplicationPage.ui	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/ConfigurationPages/ApplicationPage.ui	Wed Jun 28 19:14:32 2017 +0200
@@ -7,10 +7,10 @@
     <x>0</x>
     <y>0</y>
     <width>591</width>
-    <height>719</height>
+    <height>989</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_3">
+  <layout class="QVBoxLayout" name="verticalLayout_4">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -236,17 +236,7 @@
       <string>Keyboard Input Interval</string>
      </property>
      <layout class="QGridLayout" name="gridLayout">
-      <item row="0" column="0" colspan="2">
-       <widget class="QLabel" name="label">
-        <property name="text">
-         <string>&lt;b&gt;Note&lt;/b&gt;: Enter a value of 0 to use the system default value.</string>
-        </property>
-        <property name="wordWrap">
-         <bool>true</bool>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
+      <item row="0" column="0">
        <widget class="QSpinBox" name="intervalSpinBox">
         <property name="toolTip">
          <string>Enter the keyboard input interval, '0' for default</string>
@@ -254,6 +244,9 @@
         <property name="alignment">
          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
         </property>
+        <property name="specialValueText">
+         <string>System Default</string>
+        </property>
         <property name="suffix">
          <string> ms</string>
         </property>
@@ -265,7 +258,7 @@
         </property>
        </widget>
       </item>
-      <item row="1" column="1">
+      <item row="0" column="1">
        <spacer name="horizontalSpacer">
         <property name="orientation">
          <enum>Qt::Horizontal</enum>
@@ -282,6 +275,59 @@
     </widget>
    </item>
    <item>
+    <widget class="QGroupBox" name="groupBox_6">
+     <property name="title">
+      <string>Background Services</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_3">
+      <item>
+       <widget class="QLabel" name="backgroundServicesLabel">
+        <property name="text">
+         <string/>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" name="horizontalLayout">
+        <item>
+         <widget class="QLabel" name="label">
+          <property name="text">
+           <string>max. Processes:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QSpinBox" name="backgroundServicesSpinBox">
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+          <property name="specialValueText">
+           <string>Automatic</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <spacer name="horizontalSpacer_2">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
     <spacer>
      <property name="orientation">
       <enum>Qt::Vertical</enum>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/ConfigurationPages/DiffColoursPage.py	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,163 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2017 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Diff colours configuration page.
+"""
+
+from __future__ import unicode_literals
+
+from PyQt5.QtCore import pyqtSlot
+from PyQt5.QtGui import QPalette
+from PyQt5.QtWidgets import QColorDialog
+
+from .ConfigurationPageBase import ConfigurationPageBase
+from .Ui_DiffColoursPage import Ui_DiffColoursPage
+
+import Preferences
+
+
+class DiffColoursPage(ConfigurationPageBase, Ui_DiffColoursPage):
+    """
+    Class implementing the Diff colours configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super(DiffColoursPage, self).__init__()
+        self.setupUi(self)
+        self.setObjectName("DiffColoursPage")
+        
+        self.__coloursDict = {}
+        
+        monospacedFont = Preferences.getEditorOtherFonts("MonospacedFont")
+        self.__allSamples = (
+            self.textSample, self.addedSample, self.removedSample,
+            self.replacedSample, self.contextSample, self.headerSample,
+            self.whitespaceSample)
+        for sample in self.__allSamples:
+            sample.setFont(monospacedFont)
+        
+        # set initial values
+        self.__initColour("TextColor", self.textButton,
+                          self.__updateSampleTextColour,
+                          self.__selectTextColour, self.textSample)
+        self.__initColour("AddedColor", self.addedButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.addedSample)
+        self.__initColour("RemovedColor", self.removedButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.removedSample)
+        self.__initColour("ReplacedColor", self.replacedButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.replacedSample)
+        self.__initColour("ContextColor", self.contextButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.contextSample)
+        self.__initColour("HeaderColor", self.headerButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.headerSample)
+        self.__initColour("BadWhitespaceColor", self.whitespaceButton,
+                          self.__updateSampleBackgroundColour,
+                          self.__selectBackgroundColour, self.whitespaceSample)
+    
+    def save(self):
+        """
+        Public slot to save the Diff colours configuration.
+        """
+        for key in self.__coloursDict:
+            Preferences.setDiffColour(key, self.__coloursDict[key][0])
+    
+    def __initColour(self, colourKey, button, initSlot, selectSlot,
+                     sampleWidget):
+        """
+        Private method to initialize a colour selection button.
+        
+        @param colourKey key of the diff colour
+        @type str
+        @param button reference to the button
+        @type QPushButton
+        @param initSlot slot to be called to initialize the sample
+        @type func
+        @param selectSlot slot to be called to select the colour
+        @type func
+        @param sampleWidget reference to the sample widget
+        @type QLineEdit
+        """
+        colour = Preferences.getDiffColour(colourKey)
+        button.setProperty("colorKey", colourKey)
+        button.clicked.connect(selectSlot)
+        self.__coloursDict[colourKey] = [colour, sampleWidget]
+        if initSlot:
+            initSlot(colourKey)
+    
+    @pyqtSlot()
+    def __selectTextColour(self):
+        """
+        Private slot to select the text colour.
+        """
+        button = self.sender()
+        colorKey = button.property("colorKey")
+        
+        colour = QColorDialog.getColor(self.__coloursDict[colorKey][0], self)
+        if colour.isValid():
+            self.__coloursDict[colorKey][0] = colour
+            self.__updateSampleTextColour(colorKey)
+    
+    @pyqtSlot()
+    def __selectBackgroundColour(self):
+        """
+        Private slot to select a background colour.
+        """
+        button = self.sender()
+        colorKey = button.property("colorKey")
+        
+        colour = QColorDialog.getColor(self.__coloursDict[colorKey][0], self,
+                                       "", QColorDialog.ShowAlphaChannel)
+        if colour.isValid():
+            self.__coloursDict[colorKey][0] = colour
+            self.__updateSampleBackgroundColour(colorKey)
+    
+    @pyqtSlot()
+    def __updateSampleTextColour(self, colourKey):
+        """
+        Private slot to update the text colour of all samples.
+        
+        @param colourKey key of the diff colour
+        @type str
+        """
+        colour = self.__coloursDict[colourKey][0]
+        for sample in self.__allSamples:
+            pl = sample.palette()
+            pl.setColor(QPalette.Text, colour)
+            sample.setPalette(pl)
+            sample.repaint()
+    
+    def __updateSampleBackgroundColour(self, colourKey):
+        """
+        Private slot to update the background colour of a sample.
+        
+        @param colourKey key of the diff colour
+        @type str
+        """
+        sample = self.__coloursDict[colourKey][1]
+        if sample:
+            colour = self.__coloursDict[colourKey][0]
+            pl = sample.palette()
+            pl.setColor(QPalette.Base, colour)
+            sample.setPalette(pl)
+            sample.repaint()
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = DiffColoursPage()
+    return page
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Preferences/ConfigurationPages/DiffColoursPage.ui	Wed Jun 28 19:14:32 2017 +0200
@@ -0,0 +1,234 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DiffColoursPage</class>
+ <widget class="QWidget" name="DiffColoursPage">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <item>
+    <widget class="QLabel" name="headerLabel">
+     <property name="text">
+      <string>&lt;b&gt;Configure Diff colours&lt;/b&gt;</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="Line" name="line1">
+     <property name="frameShape">
+      <enum>QFrame::HLine</enum>
+     </property>
+     <property name="frameShadow">
+      <enum>QFrame::Sunken</enum>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout">
+     <item row="5" column="0">
+      <widget class="QPushButton" name="headerButton">
+       <property name="toolTip">
+        <string>Select the background colour for header lines</string>
+       </property>
+       <property name="text">
+        <string>Header Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="5" column="1">
+      <widget class="QLineEdit" name="headerSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Header Line</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="0">
+      <widget class="QPushButton" name="whitespaceButton">
+       <property name="toolTip">
+        <string>Select the background colour for bad whitespace</string>
+       </property>
+       <property name="text">
+        <string>Whitespace Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="6" column="1">
+      <widget class="QLineEdit" name="whitespaceSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="0">
+      <widget class="QPushButton" name="textButton">
+       <property name="toolTip">
+        <string>Select the text foreground colour</string>
+       </property>
+       <property name="text">
+        <string>Text Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QLineEdit" name="textSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Normal Text</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QPushButton" name="addedButton">
+       <property name="toolTip">
+        <string>Select the background colour for additions</string>
+       </property>
+       <property name="text">
+        <string>Added Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QLineEdit" name="addedSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Added Text</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="0">
+      <widget class="QPushButton" name="removedButton">
+       <property name="toolTip">
+        <string>Select the background colour for removed text</string>
+       </property>
+       <property name="text">
+        <string>Removed Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="2" column="1">
+      <widget class="QLineEdit" name="removedSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Removed Text</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="0">
+      <widget class="QPushButton" name="replacedButton">
+       <property name="toolTip">
+        <string>Select the background colour for replaced text</string>
+       </property>
+       <property name="text">
+        <string>Replaced Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="3" column="1">
+      <widget class="QLineEdit" name="replacedSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Replaced Text</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="0">
+      <widget class="QPushButton" name="contextButton">
+       <property name="toolTip">
+        <string>Select the background colour for context lines</string>
+       </property>
+       <property name="text">
+        <string>Context Colour</string>
+       </property>
+      </widget>
+     </item>
+     <item row="4" column="1">
+      <widget class="QLineEdit" name="contextSample">
+       <property name="focusPolicy">
+        <enum>Qt::NoFocus</enum>
+       </property>
+       <property name="text">
+        <string>Context Line</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignHCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <spacer name="verticalSpacer">
+     <property name="orientation">
+      <enum>Qt::Vertical</enum>
+     </property>
+     <property name="sizeHint" stdset="0">
+      <size>
+       <width>20</width>
+       <height>46</height>
+      </size>
+     </property>
+    </spacer>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
--- a/Preferences/ConfigurationPages/EmailPage.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/ConfigurationPages/EmailPage.py	Wed Jun 28 19:14:32 2017 +0200
@@ -37,6 +37,20 @@
         self.setObjectName("EmailPage")
         
         # set initial values
+        try:
+            import googleapiclient      # __IGNORE_WARNING__
+            self.googleMailCheckBox.setChecked(
+                Preferences.getUser("UseGoogleMailOAuth2"))
+        except ImportError:
+            # missing libraries, disable Google Mail
+            self.googleMailCheckBox.setChecked(False)
+            self.googleMailCheckBox.setEnabled(False)
+            self.googleMailInfoLabel.setText(self.tr(
+                "<p>The Google Mail Client API is not installed."
+                " Use <code>pip install --upgrade google-api-python-client"
+                "</code> to install it.</p>"))
+            Preferences.setUser("UseGoogleMailOAuth2", False)
+        
         self.mailServerEdit.setText(Preferences.getUser("MailServer"))
         self.portSpin.setValue(Preferences.getUser("MailServerPort"))
         self.emailEdit.setText(Preferences.getUser("Email"))
@@ -59,6 +73,9 @@
         Public slot to save the Email configuration.
         """
         Preferences.setUser(
+            "UseGoogleMailOAuth2",
+            self.googleMailCheckBox.isChecked())
+        Preferences.setUser(
             "MailServer",
             self.mailServerEdit.text())
         Preferences.setUser(
--- a/Preferences/ConfigurationPages/EmailPage.ui	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/ConfigurationPages/EmailPage.ui	Wed Jun 28 19:14:32 2017 +0200
@@ -6,11 +6,11 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>422</width>
-    <height>543</height>
+    <width>451</width>
+    <height>593</height>
    </rect>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout_3">
    <item>
     <widget class="QLabel" name="headerLabel">
      <property name="text">
@@ -32,211 +32,246 @@
     </widget>
    </item>
    <item>
-    <layout class="QGridLayout" name="gridLayout_2">
-     <item row="0" column="0">
-      <widget class="QLabel" name="textLabel2_2">
-       <property name="text">
-        <string>Outgoing mail server (SMTP):</string>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1" colspan="2">
-      <widget class="QLineEdit" name="mailServerEdit">
-       <property name="toolTip">
-        <string>Enter the address of your mail server</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="label_2">
-       <property name="text">
-        <string>Encryption Method:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1" colspan="2">
-      <widget class="QFrame" name="frame">
-       <property name="frameShape">
-        <enum>QFrame::NoFrame</enum>
-       </property>
-       <property name="frameShadow">
-        <enum>QFrame::Raised</enum>
-       </property>
-       <layout class="QHBoxLayout" name="horizontalLayout_2">
-        <property name="leftMargin">
-         <number>0</number>
+    <widget class="QGroupBox" name="groupBox_2">
+     <property name="title">
+      <string>Google Mail</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout_2">
+      <item>
+       <widget class="QCheckBox" name="googleMailCheckBox">
+        <property name="text">
+         <string>Use Google Mail with OAuth2 authentication</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QLabel" name="googleMailInfoLabel">
+        <property name="text">
+         <string>&lt;b&gt;Note:&lt;/b&gt; Google Mail using SMTP should be configured below.</string>
+        </property>
+        <property name="wordWrap">
+         <bool>true</bool>
         </property>
-        <property name="topMargin">
-         <number>0</number>
-        </property>
-        <property name="rightMargin">
-         <number>0</number>
-        </property>
-        <property name="bottomMargin">
-         <number>0</number>
-        </property>
-        <item>
-         <widget class="QRadioButton" name="noEncryptionButton">
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox">
+     <property name="title">
+      <string>Standard Email</string>
+     </property>
+     <layout class="QVBoxLayout" name="verticalLayout">
+      <item>
+       <layout class="QGridLayout" name="gridLayout_2">
+        <item row="0" column="0">
+         <widget class="QLabel" name="textLabel2_2">
+          <property name="text">
+           <string>Outgoing mail server (SMTP):</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1" colspan="2">
+         <widget class="QLineEdit" name="mailServerEdit">
           <property name="toolTip">
-           <string>Select to use no encryption</string>
+           <string>Enter the address of your mail server</string>
           </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QLabel" name="label_2">
           <property name="text">
-           <string>None</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
+           <string>Encryption Method:</string>
           </property>
          </widget>
         </item>
-        <item>
-         <widget class="QRadioButton" name="useSslButton">
-          <property name="toolTip">
-           <string>Select to use SSL</string>
+        <item row="1" column="1" colspan="2">
+         <widget class="QFrame" name="frame">
+          <property name="frameShape">
+           <enum>QFrame::NoFrame</enum>
+          </property>
+          <property name="frameShadow">
+           <enum>QFrame::Raised</enum>
           </property>
+          <layout class="QHBoxLayout" name="horizontalLayout_2">
+           <property name="leftMargin">
+            <number>0</number>
+           </property>
+           <property name="topMargin">
+            <number>0</number>
+           </property>
+           <property name="rightMargin">
+            <number>0</number>
+           </property>
+           <property name="bottomMargin">
+            <number>0</number>
+           </property>
+           <item>
+            <widget class="QRadioButton" name="noEncryptionButton">
+             <property name="toolTip">
+              <string>Select to use no encryption</string>
+             </property>
+             <property name="text">
+              <string>None</string>
+             </property>
+             <property name="checked">
+              <bool>true</bool>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QRadioButton" name="useSslButton">
+             <property name="toolTip">
+              <string>Select to use SSL</string>
+             </property>
+             <property name="text">
+              <string>SSL</string>
+             </property>
+            </widget>
+           </item>
+           <item>
+            <widget class="QRadioButton" name="useTlsButton">
+             <property name="toolTip">
+              <string>Select to use TLS</string>
+             </property>
+             <property name="text">
+              <string>TLS</string>
+             </property>
+            </widget>
+           </item>
+          </layout>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QLabel" name="label">
           <property name="text">
-           <string>SSL</string>
+           <string>Port:</string>
           </property>
          </widget>
         </item>
-        <item>
-         <widget class="QRadioButton" name="useTlsButton">
+        <item row="2" column="1">
+         <widget class="QSpinBox" name="portSpin">
           <property name="toolTip">
-           <string>Select to use TLS</string>
+           <string>Enter the port of the mail server</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+          </property>
+          <property name="minimum">
+           <number>1</number>
+          </property>
+          <property name="maximum">
+           <number>65535</number>
+          </property>
+          <property name="value">
+           <number>25</number>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="2">
+         <spacer name="horizontalSpacer">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" stdset="0">
+           <size>
+            <width>138</width>
+            <height>20</height>
+           </size>
           </property>
+         </spacer>
+        </item>
+        <item row="3" column="0">
+         <widget class="QLabel" name="textLabel1_5">
           <property name="text">
-           <string>TLS</string>
+           <string>Email address:</string>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1" colspan="2">
+         <widget class="QLineEdit" name="emailEdit">
+          <property name="toolTip">
+           <string>Enter your email address</string>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0">
+         <widget class="QLabel" name="textLabel1_6">
+          <property name="text">
+           <string>Signature:</string>
+          </property>
+          <property name="alignment">
+           <set>Qt::AlignTop</set>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="1" colspan="2">
+         <widget class="QTextEdit" name="signatureEdit">
+          <property name="toolTip">
+           <string>Enter your email signature</string>
+          </property>
+          <property name="acceptRichText">
+           <bool>false</bool>
           </property>
          </widget>
         </item>
        </layout>
-      </widget>
-     </item>
-     <item row="2" column="0">
-      <widget class="QLabel" name="label">
-       <property name="text">
-        <string>Port:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="1">
-      <widget class="QSpinBox" name="portSpin">
-       <property name="toolTip">
-        <string>Enter the port of the mail server</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-       </property>
-       <property name="minimum">
-        <number>1</number>
-       </property>
-       <property name="maximum">
-        <number>65535</number>
-       </property>
-       <property name="value">
-        <number>25</number>
-       </property>
-      </widget>
-     </item>
-     <item row="2" column="2">
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>138</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item row="3" column="0">
-      <widget class="QLabel" name="textLabel1_5">
-       <property name="text">
-        <string>Email address:</string>
-       </property>
-      </widget>
-     </item>
-     <item row="3" column="1" colspan="2">
-      <widget class="QLineEdit" name="emailEdit">
-       <property name="toolTip">
-        <string>Enter your email address</string>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="0">
-      <widget class="QLabel" name="textLabel1_6">
-       <property name="text">
-        <string>Signature:</string>
-       </property>
-       <property name="alignment">
-        <set>Qt::AlignTop</set>
-       </property>
-      </widget>
-     </item>
-     <item row="4" column="1" colspan="2">
-      <widget class="QTextEdit" name="signatureEdit">
-       <property name="toolTip">
-        <string>Enter your email signature</string>
-       </property>
-       <property name="acceptRichText">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QGroupBox" name="mailAuthenticationGroup">
-     <property name="toolTip">
-      <string>Select to authenticatate against the mail server</string>
-     </property>
-     <property name="title">
-      <string>Mail server needs authentication</string>
-     </property>
-     <property name="checkable">
-      <bool>true</bool>
-     </property>
-     <layout class="QGridLayout" name="gridLayout">
-      <item row="0" column="0">
-       <widget class="QLabel" name="textLabel1_15">
-        <property name="text">
-         <string>Username:</string>
+      </item>
+      <item>
+       <widget class="QGroupBox" name="mailAuthenticationGroup">
+        <property name="toolTip">
+         <string>Select to authenticatate against the mail server</string>
+        </property>
+        <property name="title">
+         <string>Mail server needs authentication</string>
+        </property>
+        <property name="checkable">
+         <bool>true</bool>
         </property>
-       </widget>
-      </item>
-      <item row="0" column="1">
-       <widget class="QLineEdit" name="mailUserEdit">
-        <property name="toolTip">
-         <string>Enter your mail server username</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="0">
-       <widget class="QLabel" name="textLabel2_7">
-        <property name="text">
-         <string>Password:</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1">
-       <widget class="QLineEdit" name="mailPasswordEdit">
-        <property name="toolTip">
-         <string>Enter your password for accessing the mail server</string>
-        </property>
-        <property name="echoMode">
-         <enum>QLineEdit::Password</enum>
-        </property>
-       </widget>
-      </item>
-      <item row="2" column="0" colspan="2">
-       <widget class="QPushButton" name="testButton">
-        <property name="toolTip">
-         <string>Press to test the login data</string>
-        </property>
-        <property name="text">
-         <string>Test Login</string>
-        </property>
+        <layout class="QGridLayout" name="gridLayout">
+         <item row="0" column="0">
+          <widget class="QLabel" name="textLabel1_15">
+           <property name="text">
+            <string>Username:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLineEdit" name="mailUserEdit">
+           <property name="toolTip">
+            <string>Enter your mail server username</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="textLabel2_7">
+           <property name="text">
+            <string>Password:</string>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLineEdit" name="mailPasswordEdit">
+           <property name="toolTip">
+            <string>Enter your password for accessing the mail server</string>
+           </property>
+           <property name="echoMode">
+            <enum>QLineEdit::Password</enum>
+           </property>
+          </widget>
+         </item>
+         <item row="2" column="0" colspan="2">
+          <widget class="QPushButton" name="testButton">
+           <property name="toolTip">
+            <string>Press to test the login data</string>
+           </property>
+           <property name="text">
+            <string>Test Login</string>
+           </property>
+          </widget>
+         </item>
+        </layout>
        </widget>
       </item>
      </layout>
@@ -258,6 +293,7 @@
   </layout>
  </widget>
  <tabstops>
+  <tabstop>googleMailCheckBox</tabstop>
   <tabstop>mailServerEdit</tabstop>
   <tabstop>noEncryptionButton</tabstop>
   <tabstop>useSslButton</tabstop>
@@ -271,5 +307,22 @@
   <tabstop>testButton</tabstop>
  </tabstops>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>googleMailCheckBox</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>groupBox</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>77</x>
+     <y>66</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>75</x>
+     <y>125</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
--- a/Preferences/__init__.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Preferences/__init__.py	Wed Jun 28 19:14:32 2017 +0200
@@ -125,7 +125,8 @@
     
     # defaults for the UI settings
     uiDefaults = {
-        "KeyboardInputInterval": 0,    # 0 = use system default
+        "KeyboardInputInterval": 0,         # 0 = use system default
+        "BackgroundServiceProcesses": 0,    # 0 = max. CPUs minus one
         "Language": "System",
         "Style": "System",
         "StyleSheet": "",
@@ -1245,6 +1246,7 @@
         "MailServerEncryption": "No",   # valid values: No, SSL, TLS
         "MailServerPort": 25,
         "UseSystemEmailClient": False,
+        "UseGoogleMailOAuth2": False,
         "MasterPassword": "",           # stores the password hash
         "UseMasterPassword": False,
         "SavePasswords": False,
@@ -1414,6 +1416,17 @@
         hexEditorDefaults["Font"] = "Courier,10,-1,5,50,0,0,0,0,0"
     else:
         hexEditorDefaults["Font"] = "Monospace,10,-1,5,50,0,0,0,0,0"
+    
+    # defaults for Diff colors
+    diffColourDefaults = {
+        "TextColor": QColor(0, 0, 0),
+        "AddedColor": QColor(190, 237, 190),
+        "RemovedColor": QColor(237, 190, 190),
+        "ReplacedColor": QColor(190, 190, 237),
+        "ContextColor": QColor(255, 220, 168),
+        "HeaderColor": QColor(237, 237, 190),
+        "BadWhitespaceColor": QColor(255, 0, 0, 192),
+    }
 
 
 def readToolGroups(prefClass=Prefs):
@@ -1859,7 +1872,8 @@
                  "ProxyPort/Http", "ProxyPort/Https", "ProxyPort/Ftp",
                  "ProxyType/Ftp", "OpenOnStartup",
                  "PerformVersionCheck", "RecentNumber", "NotificationTimeout",
-                 "SidebarDelay", "KeyboardInputInterval"]:
+                 "SidebarDelay", "KeyboardInputInterval",
+                 "BackgroundServiceProcesses"]:
         return int(prefClass.settings.value(
             "UI/" + key, prefClass.uiDefaults[key]))
     elif key in ["ProxyPassword/Http", "ProxyPassword/Https",
@@ -3087,7 +3101,7 @@
         return int(prefClass.settings.value(
             "User/" + key, prefClass.userDefaults[key]))
     elif key in ["MailServerAuthentication", "UseSystemEmailClient",
-                 "UseMasterPassword", "SavePasswords"]:
+                 "UseMasterPassword", "SavePasswords", "UseGoogleMailOAuth2"]:
         return toBool(prefClass.settings.value(
             "User/" + key, prefClass.userDefaults[key]))
     elif key == "MailServerEncryption":
@@ -3450,6 +3464,40 @@
         prefClass.settings.setValue("HexEditor/" + key, value.toString())
     else:
         prefClass.settings.setValue("HexEditor/" + key, value)
+    
+
+def getDiffColour(key, prefClass=Prefs):
+    """
+    Module function to retrieve the colours for the diff highlighter.
+    
+    @param key the key of the value to get
+    @param prefClass preferences class used as the storage area
+    @return the requested editor colour
+    """
+    col = prefClass.settings.value("Diff/" + key)
+    if col is not None:
+        if len(col) == 9:
+            # color string with alpha
+            return QColor.fromRgba(int(col[1:], 16))
+        else:
+            return QColor(col)
+    else:
+        return prefClass.diffColourDefaults[key]
+    
+
+def setDiffColour(key, value, prefClass=Prefs):
+    """
+    Module function to store the diff highlighter colours.
+    
+    @param key the key of the colour to be set
+    @param value the colour to be set
+    @param prefClass preferences class used as the storage area
+    """
+    if value.alpha() < 255:
+        val = "#{0:8x}".format(value.rgba())
+    else:
+        val = value.name()
+    prefClass.settings.setValue("Diff/" + key, val)
 
 
 def getGeometry(key, prefClass=Prefs):
--- a/Project/ProjectTranslationsBrowser.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Project/ProjectTranslationsBrowser.py	Wed Jun 28 19:14:32 2017 +0200
@@ -811,20 +811,10 @@
                 for key, fileList in sections:
                     if len(fileList) > 0:
                         pf.write('{0} = '.format(key))
-                        last = len(fileList) - 1
-                        if last > 0:
-                            pf.write('{0} \\{1}'.format(
-                                fileList[0].replace(os.sep, '/'), "\n"))
-                            for i in range(1, last):
-                                pf.write('\t{0} \\{1}'.format(
-                                    fileList[i].replace(os.sep, '/'), "\n"))
-                            pf.write('\t{0} {1}{2}'.format(
-                                fileList[last].replace(os.sep, '/'),
-                                "\n", "\n"))
-                        else:
-                            pf.write('{0} {1}{2}'.format(
-                                fileList[0].replace(os.sep, '/'), "\n", "\n"))
-                    
+                        pf.write(' \\\n\t'.join(
+                            [f.replace(os.sep, '/') for f in fileList]))
+                        pf.write('\n\n')
+                
                 pf.close()
                 self.__tmpProjects.append(outFile)
             except IOError:
--- a/Templates/TemplateHelpDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,105 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2015 - 2017 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to show some template help.
-"""
-
-from __future__ import unicode_literals
-
-from PyQt5.QtCore import Qt
-from PyQt5.QtWidgets import QDialog
-
-from .Ui_TemplateHelpDialog import Ui_TemplateHelpDialog
-
-
-class TemplateHelpDialog(QDialog, Ui_TemplateHelpDialog):
-    """
-    Class implementing a dialog to show some template help.
-    """
-    def __init__(self, parent=None):
-        """
-        Constructor
-        
-        @param parent reference to the parent widget
-        @type QWidget
-        """
-        super(TemplateHelpDialog, self).__init__(parent)
-        self.setupUi(self)
-        self.setWindowFlags(Qt.Window)
-        
-        self.helpEdit.setHtml(self.tr(
-            """<p>To use variables in a template, you just have to"""
-            """ enclose the variablename with $-characters. When you"""
-            """ use the template, you will then be asked for a value"""
-            """ for this variable.</p>"""
-            """<p>Example template: This is a $VAR$</p>"""
-            """<p>When you use this template you will be prompted for"""
-            """ a value for the variable $VAR$. Any occurrences of $VAR$"""
-            """ will then be replaced with whatever you've entered.</p>"""
-            """<p>If you need a single $-character in a template, which"""
-            """ is not used to enclose a variable, type $$(two dollar"""
-            """ characters) instead. They will automatically be replaced"""
-            """ with a single $-character when you use the template.</p>"""
-            """<p>If you want a variables contents to be treated"""
-            """ specially, the variablename must be followed by a ':'"""
-            """ and one formatting specifier (e.g. $VAR:ml$). The"""
-            """ supported specifiers are:"""
-            """<table>"""
-            """<tr><td>ml</td><td>Specifies a multiline formatting."""
-            """ The first line of the variable contents is prefixed with"""
-            """ the string occurring before the variable on the same"""
-            """ line of the template. All other lines are prefixed by"""
-            """ the same amount of whitespace as the line containing"""
-            """ the variable."""
-            """</td></tr>"""
-            """<tr><td>rl</td><td>Specifies a repeated line formatting."""
-            """ Each line of the variable contents is prefixed with the"""
-            """ string occuring before the variable on the same line of"""
-            """ the template."""
-            """</td></tr>"""
-            """</table></p>"""
-            """<p>The following predefined variables may be used in a"""
-            """ template:"""
-            """<table>"""
-            """<tr><td>date</td>"""
-            """<td>today's date in ISO format (YYYY-MM-DD)</td></tr>"""
-            """<tr><td>year</td>"""
-            """<td>the current year</td></tr>"""
-            """<tr><td>project_name</td>"""
-            """<td>the name of the project (if any)</td></tr>"""
-            """<tr><td>project_path</td>"""
-            """<td>the path of the project (if any)</td></tr>"""
-            """<tr><td>path_name</td>"""
-            """<td>full path of the current file</td></tr>"""
-            """<tr><td>dir_name</td>"""
-            """<td>full path of the parent directory</td></tr>"""
-            """<tr><td>file_name</td>"""
-            """<td>the current file name (without directory)</td></tr>"""
-            """<tr><td>base_name</td>"""
-            """<td>like <i>file_name</i>, but without extension"""
-            """</td></tr>"""
-            """<tr><td>ext</td>"""
-            """<td>the extension of the current file</td></tr>"""
-            """<tr><td>cur_select</td>"""
-            """<td>the currently selected text</td></tr>"""
-            """<tr><td>insertion</td>"""
-            """<td>Sets insertion point for cursor after template is"""
-            """ inserted.</td>"""
-            """</tr>"""
-            """<tr><td>select_start</td>"""
-            """<td>Sets span of selected text in template after template"""
-            """ is inserted (used together with 'select_end').</td></tr>"""
-            """<tr><td>select_end</td>"""
-            """<td>Sets span of selected text in template after template"""
-            """ is inserted (used together with 'select_start')."""
-            """</td></tr>"""
-            """<tr><td>clipboard</td>"""
-            """<td>the text of the clipboard</td></tr>"""
-            """</table></p>"""
-            """<p>If you want to change the default delimiter to"""
-            """ anything different, please use the configuration"""
-            """ dialog to do so.</p>"""
-        ))
--- a/Templates/TemplateHelpDialog.ui	Tue Jun 06 19:52:41 2017 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>TemplateHelpDialog</class>
- <widget class="QDialog" name="TemplateHelpDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>500</width>
-    <height>600</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Template Help</string>
-  </property>
-  <property name="sizeGripEnabled">
-   <bool>true</bool>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <widget class="QLabel" name="label">
-     <property name="text">
-      <string>&lt;b&gt;Template Help&lt;/b&gt;</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QTextEdit" name="helpEdit">
-     <property name="tabChangesFocus">
-      <bool>true</bool>
-     </property>
-     <property name="readOnly">
-      <bool>true</bool>
-     </property>
-     <property name="textInteractionFlags">
-      <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Close</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>TemplateHelpDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>TemplateHelpDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- a/Templates/TemplatePropertiesDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Templates/TemplatePropertiesDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -113,8 +113,89 @@
         Private slot to show some help.
         """
         if self.__helpDialog is None:
-            from .TemplateHelpDialog import TemplateHelpDialog
-            self.__helpDialog = TemplateHelpDialog(self)
+            from E5Gui.E5SimpleHelpDialog import E5SimpleHelpDialog
+            self.__helpDialog = E5SimpleHelpDialog(
+                title=self.tr("Template Help"),
+                label=self.tr("<b>Template Help</b>"),
+                help=self.tr(
+                    """<p>To use variables in a template, you just have to"""
+                    """ enclose the variablename with $-characters. When you"""
+                    """ use the template, you will then be asked for a value"""
+                    """ for this variable.</p>"""
+                    """<p>Example template: This is a $VAR$</p>"""
+                    """<p>When you use this template you will be prompted"""
+                    """ for a value for the variable $VAR$. Any occurrences"""
+                    """ of $VAR$ will then be replaced with whatever you've"""
+                    """ entered.</p>"""
+                    """<p>If you need a single $-character in a template,"""
+                    """ which is not used to enclose a variable, type"""
+                    """ $$(two dollar characters) instead. They will"""
+                    """ automatically be replaced with a single $-character"""
+                    """ when you use the template.</p>"""
+                    """<p>If you want a variables contents to be treated"""
+                    """ specially, the variablename must be followed by a"""
+                    """ ': and one formatting specifier (e.g. $VAR:ml$). The"""
+                    """ supported specifiers are:"""
+                    """<table>"""
+                    """<tr><td>ml</td><td>Specifies a multiline formatting."""
+                    """ The first line of the variable contents is prefixed"""
+                    """ with the string occurring before the variable on"""
+                    """ the same line of the template. All other lines are"""
+                    """ prefixed by the same amount of whitespace as the"""
+                    """ line containing the variable."""
+                    """</td></tr>"""
+                    """<tr><td>rl</td><td>Specifies a repeated line"""
+                    """ formatting. Each line of the variable contents is"""
+                    """ prefixed with the string occuring before the"""
+                    """ variable on the same line of the template."""
+                    """</td></tr>"""
+                    """</table></p>"""
+                    """<p>The following predefined variables may be used"""
+                    """ in a template:"""
+                    """<table>"""
+                    """<tr><td>date</td>"""
+                    """<td>today's date in ISO format (YYYY-MM-DD)</td></tr>"""
+                    """<tr><td>year</td>"""
+                    """<td>the current year</td></tr>"""
+                    """<tr><td>project_name</td>"""
+                    """<td>the name of the project (if any)</td></tr>"""
+                    """<tr><td>project_path</td>"""
+                    """<td>the path of the project (if any)</td></tr>"""
+                    """<tr><td>path_name</td>"""
+                    """<td>full path of the current file</td></tr>"""
+                    """<tr><td>dir_name</td>"""
+                    """<td>full path of the parent directory</td></tr>"""
+                    """<tr><td>file_name</td>"""
+                    """<td>the current file name (without directory)"""
+                    """</td></tr>"""
+                    """<tr><td>base_name</td>"""
+                    """<td>like <i>file_name</i>, but without extension"""
+                    """</td></tr>"""
+                    """<tr><td>ext</td>"""
+                    """<td>the extension of the current file</td></tr>"""
+                    """<tr><td>cur_select</td>"""
+                    """<td>the currently selected text</td></tr>"""
+                    """<tr><td>insertion</td>"""
+                    """<td>Sets insertion point for cursor after template is"""
+                    """ inserted.</td>"""
+                    """</tr>"""
+                    """<tr><td>select_start</td>"""
+                    """<td>Sets span of selected text in template after"""
+                    """ template is inserted (used together with"""
+                    """ 'select_end').</td></tr>"""
+                    """<tr><td>select_end</td>"""
+                    """<td>Sets span of selected text in template after"""
+                    """ template is inserted (used together with"""
+                    """ 'select_start')."""
+                    """</td></tr>"""
+                    """<tr><td>clipboard</td>"""
+                    """<td>the text of the clipboard</td></tr>"""
+                    """</table></p>"""
+                    """<p>If you want to change the default delimiter to"""
+                    """ anything different, please use the configuration"""
+                    """ dialog to do so.</p>"""
+                ),
+                parent=self)
         self.__helpDialog.show()
         
     def setSelectedGroup(self, name):
--- a/ThirdParty/CharDet/README.rst	Tue Jun 06 19:52:41 2017 +0200
+++ b/ThirdParty/CharDet/README.rst	Wed Jun 28 19:14:32 2017 +0200
@@ -6,11 +6,7 @@
    :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
+   :target: https://coveralls.io/r/chardet/chardet
 
 .. image:: https://img.shields.io/pypi/v/chardet.svg
    :target: https://warehouse.python.org/project/chardet/
@@ -36,7 +32,7 @@
    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
+Requires Python 2.6, 2.7, or 3.3+.
 
 Installation
 ------------
@@ -48,7 +44,7 @@
 Documentation
 -------------
 
-For users, docs are now available at http://chardet.readthedocs.org.
+For users, docs are now available at https://chardet.readthedocs.io/.
 
 Command-line Tool
 -----------------
--- a/ThirdParty/CharDet/chardet/universaldetector.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/ThirdParty/CharDet/chardet/universaldetector.py	Wed Jun 28 19:14:32 2017 +0200
@@ -40,6 +40,7 @@
 import logging
 import re
 
+from .charsetgroupprober import CharSetGroupProber
 from .enums import InputState, LanguageFilter, ProbingState
 from .escprober import EscCharSetProber
 from .latin1prober import Latin1Prober
@@ -268,11 +269,18 @@
         if self.logger.getEffectiveLevel() == logging.DEBUG:
             if self.result['encoding'] is None:
                 self.logger.debug('no probers hit minimum threshold')
-                for prober in self._charset_probers[0].probers:
-                    if not prober:
+                for group_prober in self._charset_probers:
+                    if not group_prober:
                         continue
-                    self.logger.debug('%s %s confidence = %s',
-                                      prober.charset_name,
-                                      prober.language,
-                                      prober.get_confidence())
+                    if isinstance(group_prober, CharSetGroupProber):
+                        for prober in group_prober.probers:
+                            self.logger.debug('%s %s confidence = %s',
+                                              prober.charset_name,
+                                              prober.language,
+                                              prober.get_confidence())
+                    else:
+                        self.logger.debug('%s %s confidence = %s',
+                                          prober.charset_name,
+                                          prober.language,
+                                          prober.get_confidence())
         return self.result
--- a/ThirdParty/CharDet/chardet/version.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/ThirdParty/CharDet/chardet/version.py	Wed Jun 28 19:14:32 2017 +0200
@@ -5,5 +5,5 @@
 :author: Dan Blanchard (dan.blanchard@gmail.com)
 """
 
-__version__ = "3.0.2"
+__version__ = "3.0.4"
 VERSION = __version__.split('.')
--- a/UI/CompareDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/UI/CompareDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -18,7 +18,7 @@
 from difflib import _mdiff, IS_CHARACTER_JUNK
 
 from PyQt5.QtCore import QTimer, QEvent, pyqtSlot
-from PyQt5.QtGui import QColor, QFontMetrics, QBrush, QTextCursor
+from PyQt5.QtGui import QFontMetrics, QBrush, QTextCursor
 from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox
 
 from E5Gui import E5MessageBox
@@ -133,20 +133,7 @@
         
         self.on_synchronizeCheckBox_toggled(True)
         
-        font = Preferences.getEditorOtherFonts("MonospacedFont")
-        self.contents_1.setFontFamily(font.family())
-        self.contents_1.setFontPointSize(font.pointSize())
-        self.contents_2.setFontFamily(font.family())
-        self.contents_2.setFontPointSize(font.pointSize())
-        self.fontHeight = QFontMetrics(self.contents_1.currentFont()).height()
-        
-        self.cNormalFormat = self.contents_1.currentCharFormat()
-        self.cInsertedFormat = self.contents_1.currentCharFormat()
-        self.cInsertedFormat.setBackground(QBrush(QColor(190, 237, 190)))
-        self.cDeletedFormat = self.contents_1.currentCharFormat()
-        self.cDeletedFormat.setBackground(QBrush(QColor(237, 190, 190)))
-        self.cReplacedFormat = self.contents_1.currentCharFormat()
-        self.cReplacedFormat.setBackground(QBrush(QColor(190, 190, 237)))
+        self.__generateFormats()
         
         # connect some of our widgets explicitly
         self.file1Picker.textChanged.connect(self.__fileChanged)
@@ -171,7 +158,29 @@
         else:
             self.file1Label.hide()
             self.file2Label.hide()
-
+    
+    def __generateFormats(self):
+        """
+        Private method to generate the various text formats.
+        """
+        font = Preferences.getEditorOtherFonts("MonospacedFont")
+        self.contents_1.setFontFamily(font.family())
+        self.contents_1.setFontPointSize(font.pointSize())
+        self.contents_2.setFontFamily(font.family())
+        self.contents_2.setFontPointSize(font.pointSize())
+        self.fontHeight = QFontMetrics(self.contents_1.currentFont()).height()
+        
+        self.cNormalFormat = self.contents_1.currentCharFormat()
+        self.cInsertedFormat = self.contents_1.currentCharFormat()
+        self.cInsertedFormat.setBackground(
+            QBrush(Preferences.getDiffColour("AddedColor")))
+        self.cDeletedFormat = self.contents_1.currentCharFormat()
+        self.cDeletedFormat.setBackground(
+            QBrush(Preferences.getDiffColour("RemovedColor")))
+        self.cReplacedFormat = self.contents_1.currentCharFormat()
+        self.cReplacedFormat.setBackground(
+            QBrush(Preferences.getDiffColour("ReplacedColor")))
+    
     def show(self, filename=None):
         """
         Public slot to show the dialog.
@@ -296,6 +305,8 @@
         self.contents_1.clear()
         self.contents_2.clear()
         
+        self.__generateFormats()
+        
         # counters for changes
         added = 0
         deleted = 0
--- a/UI/DiffDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/UI/DiffDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -367,6 +367,7 @@
             return
         
         self.contents.clear()
+        self.highlighter.regenerateRules()
         self.saveButton.setEnabled(False)
         
         if self.unifiedRadioButton.isChecked():
--- a/UI/EmailDialog.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/UI/EmailDialog.py	Wed Jun 28 19:14:32 2017 +0200
@@ -4,7 +4,7 @@
 #
 
 """
-Module implementing a dialog to send bug reports.
+Module implementing a dialog to send bug reports or feature requests.
 """
 
 from __future__ import unicode_literals
@@ -64,7 +64,7 @@
 
 class EmailDialog(QDialog, Ui_EmailDialog):
     """
-    Class implementing a dialog to send bug reports.
+    Class implementing a dialog to send bug reports or feature requests.
     """
     def __init__(self, mode="bug", parent=None):
         """
@@ -96,6 +96,9 @@
         self.sendButton.setEnabled(False)
         self.sendButton.setDefault(True)
         
+        self.googleHelpButton = self.buttonBox.addButton(
+            self.tr("Google Mail API Help"), QDialogButtonBox.HelpRole)
+        
         height = self.height()
         self.mainSplitter.setSizes([int(0.7 * height), int(0.3 * height)])
         
@@ -117,6 +120,8 @@
         
         self.__deleteFiles = []
         
+        self.__helpDialog = None
+    
     def keyPressEvent(self, ev):
         """
         Protected method to handle the user pressing the escape key.
@@ -139,6 +144,8 @@
         """
         if button == self.sendButton:
             self.on_sendButton_clicked()
+        elif button == self.googleHelpButton:
+            self.on_googleHelpButton_clicked()
         
     def on_buttonBox_rejected(self):
         """
@@ -150,7 +157,29 @@
             self.tr("""Do you really want to close the dialog?"""))
         if res:
             self.reject()
+    
+    @pyqtSlot()
+    def on_googleHelpButton_clicked(self):
+        """
+        Private slot to show some help text "how to turn on the Gmail API".
+        """
+        if self.__helpDialog is None:
+            try:
+                from E5Network.E5GoogleMail import GoogleMailHelp
+                help = GoogleMailHelp()
+            except ImportError:
+                help = self.tr(
+                    "<p>The Google Mail Client API is not installed."
+                    " Use <code>pip install --upgrade google-api-python-client"
+                    "</code> to install it.</p>")
+            
+            from E5Gui.E5SimpleHelpDialog import E5SimpleHelpDialog
+            self.__helpDialog = E5SimpleHelpDialog(
+                title=self.tr("Gmail API Help"),
+                help=help, parent=self)
         
+        self.__helpDialog.show()
+    
     @pyqtSlot()
     def on_sendButton_clicked(self):
         """
@@ -160,8 +189,11 @@
             msg = self.__createMultipartMail()
         else:
             msg = self.__createSimpleMail()
-            
-        ok = self.__sendmail(msg)
+        
+        if Preferences.getUser("UseGoogleMailOAuth2"):
+            ok = self.__sendmailGoogle(msg)
+        else:
+            ok = self.__sendmail(msg.as_string())
         
         if ok:
             for f in self.__deleteFiles:
@@ -203,7 +235,8 @@
         """
         Private method to create a simple mail message.
         
-        @return string containing the mail message
+        @return prepared mail message
+        @rtype email.mime.text.MIMEText
         """
         msgtext = "{0}\r\n----\r\n{1}----\r\n{2}----\r\n{3}".format(
             self.message.toPlainText(),
@@ -217,13 +250,14 @@
         subject = '[eric6] {0}'.format(self.subject.text())
         msg['Subject'] = self.__encodedHeader(subject)
         
-        return msg.as_string()
+        return msg
         
     def __createMultipartMail(self):
         """
         Private method to create a multipart mail message.
         
-        @return string containing the mail message
+        @return prepared mail message
+        @rtype email.mime.text.MIMEMultipart
         """
         mpPreamble = ("This is a MIME-encoded message with attachments. "
                       "If you see this message, your mail client is not "
@@ -273,7 +307,7 @@
             att.add_header('Content-Disposition', 'attachment', filename=name)
             msg.attach(att)
             
-        return msg.as_string()
+        return msg
 
     def __sendmail(self, msg):
         """
@@ -312,13 +346,15 @@
                 except (smtplib.SMTPException, socket.error) as e:
                     if isinstance(e, smtplib.SMTPResponseException):
                         errorStr = e.smtp_error.decode()
+                    elif isinstance(e, OSError):
+                        errorStr = e.strerror
                     elif isinstance(e, socket.error):
                         errorStr = e[1]
                     else:
                         errorStr = str(e)
                     res = E5MessageBox.retryAbort(
                         self,
-                        self.tr("Send bug report"),
+                        self.tr("Send Message"),
                         self.tr(
                             """<p>Authentication failed.<br>Reason: {0}</p>""")
                         .format(errorStr),
@@ -346,7 +382,7 @@
                 errorStr = str(e)
             res = E5MessageBox.retryAbort(
                 self,
-                self.tr("Send bug report"),
+                self.tr("Send Message"),
                 self.tr(
                     """<p>Message could not be sent.<br>Reason: {0}</p>""")
                 .format(errorStr),
@@ -356,7 +392,34 @@
             else:
                 return False
         return True
+    
+
+    def __sendmailGoogle(self, msg):
+        """
+        Private method to actually send the message via Google Mail.
         
+        @param message email message to be sent
+        @type email.mime.text.MIMEBase
+        @return flag indicating success
+        @rtype bool
+        """
+        from E5Network.E5GoogleMail import GoogleMailSendMessage
+        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
+        QApplication.processEvents()
+        ok, result = GoogleMailSendMessage(msg)
+        QApplication.restoreOverrideCursor()
+        if not ok:
+            # we got an error
+            E5MessageBox.critical(
+                self,
+                self.tr("Send Message"),
+                self.tr(
+                    """<p>Message could not be sent.<br>Reason: {0}</p>""")
+                .format(result)
+            )
+        
+        return ok
+    
     @pyqtSlot()
     def on_addButton_clicked(self):
         """
--- a/UI/UserInterface.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/UI/UserInterface.py	Wed Jun 28 19:14:32 2017 +0200
@@ -6538,9 +6538,20 @@
                             self.tr(
                                 """You are using the latest version of"""
                                 """ eric6"""))
+            elif VersionOnly.startswith(("rev_", "@@")):
+                if self.manualUpdatesCheck:
+                    E5MessageBox.information(
+                        self,
+                        self.tr("Update Check"),
+                        self.tr(
+                            """You installed eric directly from the source"""
+                            """ code. There is no possibility to check"""
+                            """ for the availability of an update."""))
             else:
                 # check release version
-                if versions[0] > VersionOnly:
+                installedVersionTuple = self.__versionToTuple(VersionOnly)
+                availableVersionTuple = self.__versionToTuple(versions[0])
+                if availableVersionTuple > installedVersionTuple:
                     res = E5MessageBox.yesNo(
                         self,
                         self.tr("Update available"),
--- a/Utilities/BackgroundClient.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Utilities/BackgroundClient.py	Wed Jun 28 19:14:32 2017 +0200
@@ -29,12 +29,17 @@
     """
     Class implementing the main part of the background client.
     """
-    def __init__(self, host, port):
+    def __init__(self, host, port, maxProcs):
         """
         Constructor of the BackgroundClient class.
         
         @param host ip address the background service is listening
+        @type str
         @param port port of the background service
+        @type int
+        @param maxProcs maximum number of CPUs (processes) to use
+            (0 = determined automatically)
+        @type int
         """
         self.services = {}
         self.batchServices = {}
@@ -42,6 +47,7 @@
         self.connection = socket.create_connection((host, port))
         ver = b'Python2' if sys.version_info[0] == 2 else b'Python3'
         self.connection.sendall(ver)
+        self.__maxProcs = maxProcs
 
     def __initClientService(self, fn, path, module):
         """
@@ -155,7 +161,12 @@
                 elif fx.startswith("batch_"):
                     callback = self.batchServices.get(fx)
                     if callback:
-                        callback(data, self.__send, fx, self.__cancelled)
+                        try:
+                            callback(data, self.__send, fx, self.__cancelled,
+                                     maxProcesses=self.__maxProcs)
+                        except TypeError:
+                            # for backward compatibility
+                            callback(data, self.__send, fx, self.__cancelled)
                         ret = "__DONE__"
                     else:
                         ret = 'Unknown batch service.'
@@ -183,12 +194,12 @@
         self.connection.close()
 
 if __name__ == '__main__':
-    if len(sys.argv) != 3:
-        print('Host and port parameters are missing. Abort.')
+    if len(sys.argv) != 4:
+        print('Host, port and max. processes parameters are missing. Abort.')
         sys.exit(1)
     
-    host, port = sys.argv[1:]
-    backgroundClient = BackgroundClient(host, int(port))
+    host, port, maxProcs = sys.argv[1:]
+    backgroundClient = BackgroundClient(host, int(port), int(maxProcs))
     # Start the main loop
     backgroundClient.run()
 
--- a/Utilities/BackgroundService.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/Utilities/BackgroundService.py	Wed Jun 28 19:14:32 2017 +0200
@@ -93,7 +93,8 @@
             "Utilities", "BackgroundClient.py")
         proc = QProcess()
         proc.setProcessChannelMode(QProcess.ForwardedChannels)
-        args = [backgroundClient, self.hostAddress, str(port)]
+        args = [backgroundClient, self.hostAddress, str(port),
+                str(Preferences.getUI("BackgroundServiceProcesses"))]
         proc.start(interpreter, args)
         if not proc.waitForStarted(10000):
             proc = None
--- a/WebBrowser/WebBrowserWindow.py	Tue Jun 06 19:52:41 2017 +0200
+++ b/WebBrowser/WebBrowserWindow.py	Wed Jun 28 19:14:32 2017 +0200
@@ -1916,6 +1916,7 @@
         menu.addAction(self.closeAllAct)
         menu.addSeparator()
         menu.addAction(self.exitAct)
+        self.addActions(menu.actions())
         
         menu = mb.addMenu(self.tr('&Edit'))
         menu.addAction(self.undoAct)
@@ -1931,6 +1932,7 @@
         menu.addAction(self.findAct)
         menu.addAction(self.findNextAct)
         menu.addAction(self.findPrevAct)
+        self.addActions(menu.actions())
         
         menu = mb.addMenu(self.tr('&View'))
         menu.addAction(self.stopAct)
@@ -1951,6 +1953,7 @@
         menu.addSeparator()
         menu.addAction(self.pageSourceAct)
         menu.addAction(self.fullScreenAct)
+        self.addActions(menu.actions())
         
         from .History.HistoryMenu import HistoryMenu
         self.historyMenu = HistoryMenu(self, self.__tabWidget)
@@ -1967,6 +1970,7 @@
         historyActions.append(self.forwardAct)
         historyActions.append(self.homeAct)
         self.historyMenu.setInitialActions(historyActions)
+        self.addActions(historyActions)
         
         from .Bookmarks.BookmarksMenu import BookmarksMenuBarMenu
         self.bookmarksMenu = BookmarksMenuBarMenu(self)
@@ -2058,6 +2062,7 @@
         menu.addAction(self.aboutQtAct)
         menu.addSeparator()
         menu.addAction(self.whatsThisAct)
+        self.addActions(menu.actions())
     
     def __initSuperMenu(self):
         """
--- a/changelog	Tue Jun 06 19:52:41 2017 +0200
+++ b/changelog	Wed Jun 28 19:14:32 2017 +0200
@@ -1,5 +1,18 @@
 Change Log
 ----------
+Version 17.07:
+- bug fixes
+- Background Services
+  -- added functionality to limit the number of processes used for background
+     services
+- Bug Reporting / Feature Request (Email)
+  -- added the capability to send these emails via Google Mail using OAuth2
+     authentication
+- Configuration
+  -- made the colors of the diff dialogs configurable
+- Third Party packages
+  -- updated chardet to 3.0.4
+
 Version 17.06:
 - bug fixes
 - Checkers
--- a/eric6.e4p	Tue Jun 06 19:52:41 2017 +0200
+++ b/eric6.e4p	Wed Jun 28 19:14:32 2017 +0200
@@ -135,6 +135,7 @@
     <Source>E5Gui/E5PathPicker.py</Source>
     <Source>E5Gui/E5ProgressDialog.py</Source>
     <Source>E5Gui/E5SideBar.py</Source>
+    <Source>E5Gui/E5SimpleHelpDialog.py</Source>
     <Source>E5Gui/E5SingleApplication.py</Source>
     <Source>E5Gui/E5SqueezeLabels.py</Source>
     <Source>E5Gui/E5StringListEditWidget.py</Source>
@@ -152,6 +153,7 @@
     <Source>E5Gui/E5ZoomWidget.py</Source>
     <Source>E5Gui/__init__.py</Source>
     <Source>E5Network/E5Ftp.py</Source>
+    <Source>E5Network/E5GoogleMail.py</Source>
     <Source>E5Network/E5NetworkHeaderDetailsDialog.py</Source>
     <Source>E5Network/E5NetworkIcon.py</Source>
     <Source>E5Network/E5NetworkMonitor.py</Source>
@@ -735,6 +737,7 @@
     <Source>Preferences/ConfigurationPages/DebuggerGeneralPage.py</Source>
     <Source>Preferences/ConfigurationPages/DebuggerPython3Page.py</Source>
     <Source>Preferences/ConfigurationPages/DebuggerPythonPage.py</Source>
+    <Source>Preferences/ConfigurationPages/DiffColoursPage.py</Source>
     <Source>Preferences/ConfigurationPages/EditorAPIsPage.py</Source>
     <Source>Preferences/ConfigurationPages/EditorAutocompletionPage.py</Source>
     <Source>Preferences/ConfigurationPages/EditorAutocompletionQScintillaPage.py</Source>
@@ -925,7 +928,6 @@
     <Source>Tasks/TaskPropertiesDialog.py</Source>
     <Source>Tasks/TaskViewer.py</Source>
     <Source>Tasks/__init__.py</Source>
-    <Source>Templates/TemplateHelpDialog.py</Source>
     <Source>Templates/TemplateMultipleVariablesDialog.py</Source>
     <Source>Templates/TemplatePropertiesDialog.py</Source>
     <Source>Templates/TemplateSingleVariableDialog.py</Source>
@@ -1554,6 +1556,7 @@
     <Form>Debugger/VariablesFilterDialog.ui</Form>
     <Form>E5Gui/E5ErrorMessageFilterDialog.ui</Form>
     <Form>E5Gui/E5ListSelectionDialog.ui</Form>
+    <Form>E5Gui/E5SimpleHelpDialog.ui</Form>
     <Form>E5Gui/E5StringListEditWidget.ui</Form>
     <Form>E5Gui/E5TextEditSearchWidget.ui</Form>
     <Form>E5Gui/E5ToolBarDialog.ui</Form>
@@ -1779,6 +1782,7 @@
     <Form>Preferences/ConfigurationPages/DebuggerGeneralPage.ui</Form>
     <Form>Preferences/ConfigurationPages/DebuggerPython3Page.ui</Form>
     <Form>Preferences/ConfigurationPages/DebuggerPythonPage.ui</Form>
+    <Form>Preferences/ConfigurationPages/DiffColoursPage.ui</Form>
     <Form>Preferences/ConfigurationPages/EditorAPIsPage.ui</Form>
     <Form>Preferences/ConfigurationPages/EditorAutocompletionPage.ui</Form>
     <Form>Preferences/ConfigurationPages/EditorAutocompletionQScintillaPage.ui</Form>
@@ -1873,7 +1877,6 @@
     <Form>SqlBrowser/SqlConnectionDialog.ui</Form>
     <Form>Tasks/TaskFilterConfigDialog.ui</Form>
     <Form>Tasks/TaskPropertiesDialog.ui</Form>
-    <Form>Templates/TemplateHelpDialog.ui</Form>
     <Form>Templates/TemplatePropertiesDialog.ui</Form>
     <Form>Templates/TemplateSingleVariableDialog.ui</Form>
     <Form>UI/AuthenticationDialog.ui</Form>
@@ -1990,14 +1993,14 @@
   <Interfaces/>
   <Others>
     <Other>.hgignore</Other>
-    <Other>APIs/Python/zope-2.10.7.api</Other>
-    <Other>APIs/Python/zope-2.11.2.api</Other>
-    <Other>APIs/Python/zope-3.3.1.api</Other>
     <Other>APIs/Python3/PyQt4.bas</Other>
     <Other>APIs/Python3/PyQt5.bas</Other>
     <Other>APIs/Python3/QScintilla2.bas</Other>
     <Other>APIs/Python3/eric6.api</Other>
     <Other>APIs/Python3/eric6.bas</Other>
+    <Other>APIs/Python/zope-2.10.7.api</Other>
+    <Other>APIs/Python/zope-2.11.2.api</Other>
+    <Other>APIs/Python/zope-3.3.1.api</Other>
     <Other>APIs/QSS/qss.api</Other>
     <Other>APIs/Ruby/Ruby-1.8.7.api</Other>
     <Other>APIs/Ruby/Ruby-1.8.7.bas</Other>
--- a/i18n/eric6_cs.ts	Tue Jun 06 19:52:41 2017 +0200
+++ b/i18n/eric6_cs.ts	Wed Jun 28 19:14:32 2017 +0200
@@ -1393,16 +1393,11 @@
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="242"/>
-        <source>&lt;b&gt;Note&lt;/b&gt;: Enter a value of 0 to use the system default value.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="252"/>
         <source>Enter the keyboard input interval, &apos;0&apos; for default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="258"/>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="251"/>
         <source> ms</source>
         <translation type="unfinished"> ms</translation>
     </message>
@@ -1426,6 +1421,31 @@
         <source>Enable Crash Session</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="248"/>
+        <source>System Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="280"/>
+        <source>Background Services</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="298"/>
+        <source>max. Processes:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="308"/>
+        <source>Automatic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.py" line="30"/>
+        <source>eric is using background services for certain things like syntax checks or code style checks. Per default the number of processes to use for these checks is determined automatically based on the number of CPUs. Please note, that this is an advanced setting.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AuthenticationDialog</name>
@@ -1478,37 +1498,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="128"/>
+        <location filename="../Utilities/BackgroundService.py" line="129"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="208"/>
+        <location filename="../Utilities/BackgroundService.py" line="209"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="419"/>
+        <location filename="../Utilities/BackgroundService.py" line="420"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnected because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4346,7 +4366,7 @@
         <translation>Stisknout pro provedení porovnání dvou souborů</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>Compare Files</source>
         <translation>Porovnat soubory</translation>
     </message>
@@ -4366,27 +4386,27 @@
         <translation>&amp;Synchronizovat vodorovné posuvníky</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="358"/>
+        <location filename="../UI/CompareDialog.py" line="369"/>
         <source>Total: {0}</source>
         <translation>Celkem: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="360"/>
+        <location filename="../UI/CompareDialog.py" line="371"/>
         <source>Changed: {0}</source>
         <translation>Změněno: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="361"/>
+        <location filename="../UI/CompareDialog.py" line="372"/>
         <source>Added: {0}</source>
         <translation>Přidáno: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="362"/>
+        <location filename="../UI/CompareDialog.py" line="373"/>
         <source>Deleted: {0}</source>
         <translation>Smazáno: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; nelze přečíst.&lt;/p&gt;</translation>
     </message>
@@ -4432,62 +4452,62 @@
         <translation>CORBA</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="144"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
         <source>Email</source>
         <translation>Email</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="150"/>
         <source>Graphics</source>
         <translation>Grafika</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="153"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="156"/>
         <source>Icons</source>
         <translation>Ikony</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="172"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="175"/>
         <source>Plugin Manager</source>
         <translation>Plugin Manažer</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="440"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="443"/>
         <source>Printer</source>
         <translation>Tiskárna</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="211"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
         <source>Python</source>
         <translation>Python</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="182"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="185"/>
         <source>Qt</source>
         <translation>Qt</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="188"/>
-        <source>Shell</source>
-        <translation>Shell</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="191"/>
-        <source>Tasks</source>
-        <translation>Úlohy</translation>
+        <source>Shell</source>
+        <translation>Shell</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="194"/>
+        <source>Tasks</source>
+        <translation>Úlohy</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="197"/>
         <source>Templates</source>
         <translation>Šablony</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="200"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="203"/>
         <source>Version Control Systems</source>
         <translation>Version Control Systems</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="205"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="208"/>
         <source>Debugger</source>
         <translation>Debugger</translation>
     </message>
@@ -4497,163 +4517,163 @@
         <translation type="obsolete">Ruby</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="218"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="221"/>
         <source>Editor</source>
         <translation>Editor</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="221"/>
-        <source>APIs</source>
-        <translation>APIs</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="224"/>
+        <source>APIs</source>
+        <translation>APIs</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="227"/>
         <source>Autocompletion</source>
         <translation>Autodoplňování</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="232"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="235"/>
         <source>Calltips</source>
         <translation>Rychlé tipy</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="238"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="241"/>
         <source>General</source>
         <translation>Hlavní</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="258"/>
-        <source>Typing</source>
-        <translation>Psaní</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="261"/>
+        <source>Typing</source>
+        <translation>Psaní</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="264"/>
         <source>Exporters</source>
         <translation>Exportery</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="265"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="268"/>
         <source>Highlighters</source>
         <translation>Zvýrazňovače</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="269"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="272"/>
         <source>Filetype Associations</source>
         <translation>Asociace typů souborů</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="273"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="276"/>
         <source>Styles</source>
         <translation>Styly</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="289"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="292"/>
         <source>Help</source>
         <translation>Nápověda</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="447"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="450"/>
         <source>Help Documentation</source>
         <translation>Dokumenty nápovědy</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="296"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="299"/>
         <source>Help Viewers</source>
         <translation>Prohlížeče nápovědy</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="307"/>
-        <source>Project</source>
-        <translation>Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="304"/>
-        <source>Project Viewer</source>
-        <translation>Prohlížeč projektu</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="310"/>
+        <source>Project</source>
+        <translation>Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="307"/>
+        <source>Project Viewer</source>
+        <translation>Prohlížeč projektu</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="313"/>
         <source>Multiproject</source>
         <translation>Multiprojekt</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="434"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="437"/>
         <source>Interface</source>
         <translation>Interface</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="321"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="324"/>
         <source>Viewmanager</source>
         <translation>Viewmanager</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="714"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="717"/>
         <source>Configuration Page Error</source>
         <translation>Chyba na straně konfigurace</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="241"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="244"/>
         <source>Filehandling</source>
         <translation>Manažer souborů</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="245"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="248"/>
         <source>Searching</source>
         <translation>Vyhledávání</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="452"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="455"/>
         <source>Appearance</source>
         <translation>Vzhled</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="235"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="238"/>
         <source>QScintilla</source>
         <translation>QScintilla</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="252"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="255"/>
         <source>Style</source>
         <translation>Styl</translation>
     </message>
     <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="283"/>
+        <source>Properties</source>
+        <translation>Nastavení</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="639"/>
+        <source>Preferences</source>
+        <translation>Předvolby</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="644"/>
+        <source>Please select an entry of the list 
+to display the configuration page.</source>
+        <translation>Pro zobrazení strany s konfigurací vyberte položku ze seznamu.</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="440"/>
+        <source>Network</source>
+        <translation>Síť</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="471"/>
+        <source>Spell checking</source>
+        <translation>Kontrola pravopisu</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="217"/>
+        <source>Python3</source>
+        <translation></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="717"/>
+        <source>&lt;p&gt;The configuration page &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Konfigurační stranu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
+    </message>
+    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="280"/>
-        <source>Properties</source>
-        <translation>Nastavení</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="636"/>
-        <source>Preferences</source>
-        <translation>Předvolby</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="641"/>
-        <source>Please select an entry of the list 
-to display the configuration page.</source>
-        <translation>Pro zobrazení strany s konfigurací vyberte položku ze seznamu.</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="437"/>
-        <source>Network</source>
-        <translation>Síť</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="468"/>
-        <source>Spell checking</source>
-        <translation>Kontrola pravopisu</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
-        <source>Python3</source>
-        <translation></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="714"/>
-        <source>&lt;p&gt;The configuration page &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Konfigurační stranu &lt;b&gt;{0}&lt;/b&gt; nelze načíst.&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="277"/>
         <source>Keywords</source>
         <translation>Klíčová slova</translation>
     </message>
@@ -4663,75 +4683,80 @@
         <translation>Spolupráce</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="484"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="487"/>
         <source>Tray Starter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="463"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="466"/>
         <source>VirusTotal Interface</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="443"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="446"/>
         <source>Security</source>
         <translation type="unfinished">Bezpečnost</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="168"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="171"/>
         <source>Notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="156"/>
-        <source>IRC</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="255"/>
-        <source>Code Checkers</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="455"/>
-        <source>eric6 Web Browser</source>
-        <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="159"/>
-        <source>Log-Viewer</source>
-        <translation type="unfinished">Prohlížeč logu</translation>
+        <source>IRC</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="258"/>
+        <source>Code Checkers</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="458"/>
+        <source>eric6 Web Browser</source>
+        <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="162"/>
+        <source>Log-Viewer</source>
+        <translation type="unfinished">Prohlížeč logu</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="165"/>
         <source>Mimetypes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="574"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="577"/>
         <source>Enter search text...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="284"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="287"/>
         <source>Mouse Click Handlers</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="459"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="462"/>
         <source>Flash Cookie Manager</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="497"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="500"/>
         <source>Hex Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="354"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="357"/>
         <source>Web Browser</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="144"/>
+        <source>Diff</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>Connection</name>
@@ -7289,6 +7314,114 @@
     </message>
 </context>
 <context>
+    <name>DiffColoursPage</name>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="17"/>
+        <source>&lt;b&gt;Configure Diff colours&lt;/b&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="39"/>
+        <source>Select the background colour for header lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="42"/>
+        <source>Header Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="52"/>
+        <source>Header Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="65"/>
+        <source>Select the background colour for bad whitespace</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="68"/>
+        <source>Whitespace Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="88"/>
+        <source>Select the text foreground colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="91"/>
+        <source>Text Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="101"/>
+        <source>Normal Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="114"/>
+        <source>Select the background colour for additions</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="117"/>
+        <source>Added Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="127"/>
+        <source>Added Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="140"/>
+        <source>Select the background colour for removed text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="143"/>
+        <source>Removed Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="153"/>
+        <source>Removed Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="166"/>
+        <source>Select the background colour for replaced text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="169"/>
+        <source>Replaced Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="179"/>
+        <source>Replaced Text</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="192"/>
+        <source>Select the background colour for context lines</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="195"/>
+        <source>Context Colour</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="205"/>
+        <source>Context Line</source>
+        <translation type="unfinished"></translation>
+    </message>
+</context>
+<context>
     <name>DiffDialog</name>
     <message>
         <location filename="../UI/DiffDialog.ui" line="14"/>
@@ -7386,7 +7519,7 @@
         <translation>Porovnat soubory</translation>
     </message>
     <message>
-        <location filename="../UI/DiffDialog.py" line="447"/>
+        <location filename="../UI/DiffDialog.py" line="448"/>
         <source>There is no difference.</source>
         <translation>Žádné rozdíly nebyly nalezeny.</translation>
     </message>
@@ -13914,7 +14047,7 @@
 <context>
     <name>EmailDialog</name>
     <message>
-        <location filename="../UI/EmailDialog.py" line="348"/>
+        <location filename="../UI/EmailDialog.ui" line="13"/>
         <source>Send bug report</source>
         <translation>Odeslat hlášení o chybách</translation>
     </message>
@@ -13974,27 +14107,27 @@
         <translation>Odeslat</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="147"/>
+        <location filename="../UI/EmailDialog.py" line="154"/>
         <source>Close dialog</source>
         <translation>Zavřít dialog</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="147"/>
+        <location filename="../UI/EmailDialog.py" line="154"/>
         <source>Do you really want to close the dialog?</source>
         <translation>Opravdu chcete zavřít dialog?</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="302"/>
+        <location filename="../UI/EmailDialog.py" line="336"/>
         <source>Mail Server Password</source>
         <translation>Heslo mail serveru</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="302"/>
+        <location filename="../UI/EmailDialog.py" line="336"/>
         <source>Enter your mail server password</source>
         <translation>Zadejte heslo vašeho mail serveru</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="366"/>
+        <location filename="../UI/EmailDialog.py" line="429"/>
         <source>Attach file</source>
         <translation>Připojit soubor</translation>
     </message>
@@ -14024,15 +14157,35 @@
         <translation>Poslat požadavek na vlastnost</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="320"/>
+        <location filename="../UI/EmailDialog.py" line="356"/>
         <source>&lt;p&gt;Authentication failed.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Autentizace selhala.&lt;br&gt;Důvod: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="348"/>
+        <location filename="../UI/EmailDialog.py" line="414"/>
         <source>&lt;p&gt;Message could not be sent.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Zprávu nelze odeslat.&lt;br&gt;Důvod: {0}&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="99"/>
+        <source>Google Mail API Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="171"/>
+        <source>&lt;p&gt;The Google Mail Client API is not installed. Use &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; to install it.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="177"/>
+        <source>Gmail API Help</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="414"/>
+        <source>Send Message</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>EmailPage</name>
@@ -14042,62 +14195,62 @@
         <translation>&lt;b&gt;Konfigurovat email&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="225"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="257"/>
         <source>Enter your password for accessing the mail server</source>
         <translation>Zadejte vaše heslo pro přístup na mail server</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="211"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="243"/>
         <source>Enter your mail server username</source>
         <translation>Zadejte vaše přihlašovací jméno na mail server</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="170"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="202"/>
         <source>Signature:</source>
         <translation>Podpis:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="46"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="78"/>
         <source>Enter the address of your mail server</source>
         <translation>Zadejte adresu vašeho mail serveru</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="188"/>
         <source>Email address:</source>
         <translation>Email adresa:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="180"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="212"/>
         <source>Enter your email signature</source>
         <translation>Zadejte váš email podpis</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="163"/>
-        <source>Enter your email address</source>
-        <translation>Zadejte vaši emailovou adresu</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="192"/>
-        <source>Select to authenticatate against the mail server</source>
-        <translation>Výběr autentizace proti mail serveru</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="195"/>
+        <source>Enter your email address</source>
+        <translation>Zadejte vaši emailovou adresu</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="224"/>
+        <source>Select to authenticatate against the mail server</source>
+        <translation>Výběr autentizace proti mail serveru</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="227"/>
         <source>Mail server needs authentication</source>
         <translation>Mail server požaduje autentizaci</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="204"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="236"/>
         <source>Username:</source>
         <translation>Přihlašovací jméno:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="218"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="250"/>
         <source>Password:</source>
         <translation>Heslo:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="104"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="136"/>
         <source>Select to use TLS</source>
         <translation>Vybrat pro použití TLS</translation>
     </message>
@@ -14107,12 +14260,12 @@
         <translation type="obsolete">Použít TLS</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="124"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/>
         <source>Enter the port of the mail server</source>
         <translation>Zadejte port mail serveru</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="39"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="71"/>
         <source>Outgoing mail server (SMTP):</source>
         <translation>Odchozí mail server (SMTP):</translation>
     </message>
@@ -14122,65 +14275,90 @@
         <translation type="obsolete">Odchozí mail server port:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="235"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="267"/>
         <source>Press to test the login data</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="238"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="270"/>
         <source>Test Login</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="241"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/>
         <source>Login Test</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="204"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="221"/>
         <source>The login test succeeded.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="241"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/>
         <source>&lt;p&gt;The login test failed.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="53"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="85"/>
         <source>Encryption Method:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="81"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="113"/>
         <source>Select to use no encryption</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="84"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="116"/>
         <source>None</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="94"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="126"/>
         <source>Select to use SSL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="97"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="129"/>
         <source>SSL</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="107"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="139"/>
         <source>TLS</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="117"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="149"/>
         <source>Port:</source>
         <translation type="unfinished">Port:</translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="37"/>
+        <source>Google Mail</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="43"/>
+        <source>Use Google Mail with OAuth2 authentication</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="50"/>
+        <source>&lt;b&gt;Note:&lt;/b&gt; Google Mail using SMTP should be configured below.</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="63"/>
+        <source>Standard Email</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="48"/>
+        <source>&lt;p&gt;The Google Mail Client API is not installed. Use &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; to install it.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>EricAccessHandler</name>
@@ -24227,52 +24405,52 @@
         <translation type="obsolete">Ty&amp;p heslo</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="106"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="107"/>
         <source>Process Generation Error</source>
         <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="106"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="107"/>
         <source>The process {0} could not be started. Ensure, that it is in the search path.</source>
         <translation>Proces {0} nelze spustit. Ověřte, že je umístěn v požadované cestě.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="126"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="127"/>
         <source>There is no difference.</source>
         <translation>Žádné rozdíly nebyly nalezeny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="254"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="255"/>
         <source>Save Diff</source>
         <translation>Uložit Diff</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="221"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="222"/>
         <source>Patch Files (*.diff)</source>
         <translation>Patch soubory (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="254"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="255"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Patch soubor &lt;b&gt;{0}&lt;/b&gt; nelze uložit.&lt;br /&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="238"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="239"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="97"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="98"/>
         <source>Patch Contents</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="145"/>
-        <source>&lt;Start&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="146"/>
+        <source>&lt;Start&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="147"/>
         <source>&lt;End&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25708,37 +25886,37 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2584"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2585"/>
         <source>Differences to Parent {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2600"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2601"/>
         <source>Diff to Parent {0}{1}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2625"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2626"/>
         <source>There is no difference.</source>
         <translation type="unfinished">Žádné rozdíly nebyly nalezeny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2768"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2769"/>
         <source>Save Diff</source>
         <translation type="unfinished">Uložit Diff</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2735"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2736"/>
         <source>Patch Files (*.diff)</source>
         <translation type="unfinished">Patch soubory (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2752"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2753"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2768"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2769"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished">&lt;p&gt;Patch soubor &lt;b&gt;{0}&lt;/b&gt; nelze uložit.&lt;br /&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
@@ -40651,17 +40829,17 @@
         <translation>Chyba při stahování souboru</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="567"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="573"/>
         <source>Stable</source>
         <translation>Stabilní</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="574"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="580"/>
         <source>Unstable</source>
         <translation>Nestabilní</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="581"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="587"/>
         <source>Unknown</source>
         <translation>Neznámý</translation>
     </message>
@@ -40711,32 +40889,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="595"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="601"/>
         <source>up-to-date</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="598"/>
-        <source>new download available</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="601"/>
-        <source>update installable</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../PluginManager/PluginRepositoryDialog.py" line="604"/>
+        <source>new download available</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="607"/>
+        <source>update installable</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="610"/>
         <source>updated download available</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="883"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="889"/>
         <source>Cleanup of Plugin Downloads</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="883"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="889"/>
         <source>&lt;p&gt;The plugin download &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -40759,17 +40937,17 @@
 <context>
     <name>PluginRepositoryWindow</name>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>Process Generation Error</source>
         <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>OK</source>
         <translation>OK</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>&lt;p&gt;Could not start the process.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nemohu spustit zveřejnění.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
@@ -40843,27 +41021,27 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="../Preferences/__init__.py" line="1551"/>
+        <location filename="../Preferences/__init__.py" line="1564"/>
         <source>Export Preferences</source>
         <translation>Předvolby exportu</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1579"/>
+        <location filename="../Preferences/__init__.py" line="1592"/>
         <source>Import Preferences</source>
         <translation>Předvolby importu</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1579"/>
+        <location filename="../Preferences/__init__.py" line="1592"/>
         <source>Properties File (*.ini);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1681"/>
+        <location filename="../Preferences/__init__.py" line="1694"/>
         <source>Select Python{0} Interpreter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1681"/>
+        <location filename="../Preferences/__init__.py" line="1694"/>
         <source>Select the Python{0} interpreter to be used:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -43949,7 +44127,7 @@
         <translation>Opravdu chcete odebrat tyto soubory s překlady z projektu?</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="831"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="821"/>
         <source>Write temporary project file</source>
         <translation>Zapsat dočasný soubor projektu</translation>
     </message>
@@ -43959,32 +44137,32 @@
         <translation>Nebyly vybrány žádné soubory s překlady (*.ts).</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="959"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
         <source>Translation file generation</source>
         <translation>Generování souboru s překladem</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="947"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="937"/>
         <source>The generation of the translation files (*.ts) was successful.</source>
         <translation>Generování souboru s překladem (*.ts) bylo úspěšné.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1238"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1228"/>
         <source>Process Generation Error</source>
         <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1152"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1142"/>
         <source>Translation file release</source>
         <translation>Zveřejnění souboru s překladem</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1136"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1126"/>
         <source>The release of the translation files (*.qm) was successful.</source>
         <translation>Zveřejnění souboru s překladem (*.qm) bylo úspěšné.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1152"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1142"/>
         <source>The release of the translation files (*.qm) has failed.</source>
         <translation>Zveřejnění souboru s překladem (*.qm) selhalo.</translation>
     </message>
@@ -44004,17 +44182,17 @@
         <translation>Kopírovat cestu do schránky</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="831"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="821"/>
         <source>&lt;p&gt;The temporary project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Do dočasného souboru projektu &lt;b&gt;{0}&lt;/b&gt; nelze zapisovat.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1068"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1058"/>
         <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
         <translation>Nelze spustit {0}.&lt;br&gt;Ověřte, že je umístěn v požadované cestě.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1238"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1228"/>
         <source>&lt;p&gt;Could not start lrelease.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nemohu spustit zveřejnění.&lt;br&gt;Ověřte jestli je dostupný jako &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</translation>
     </message>
@@ -44024,12 +44202,12 @@
         <translation type="unfinished">Otevřít</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="955"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="945"/>
         <source> The process has crashed.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="959"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
         <source>The generation of the translation files (*.ts) has failed.{0}</source>
         <translation type="unfinished"></translation>
     </message>
@@ -55130,7 +55308,7 @@
 <context>
     <name>SvnDiffDialog</name>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="171"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="172"/>
         <source>Subversion Diff</source>
         <translation></translation>
     </message>
@@ -55190,58 +55368,58 @@
         <translation></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="192"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="193"/>
         <source>Process Generation Error</source>
         <translation>Chyba v procesu generování</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="212"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="213"/>
         <source>There is no difference.</source>
         <translation>Žádné rozdíly nebyly nalezeny.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="405"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="406"/>
         <source>Save Diff</source>
         <translation>Uložit Diff</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="372"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="373"/>
         <source>Patch Files (*.diff)</source>
         <translation>Patch soubory (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="171"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="172"/>
         <source>There is no temporary directory available.</source>
         <translation>Zamčené soubory nejsou dostupné/vybrané.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="192"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="193"/>
         <source>The process {0} could not be started. Ensure, that it is in the search path.</source>
         <translation>Proces {0} nelze spustit. Ověřte, že je umístěn v požadované cestě.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="405"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="406"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Patch soubor &lt;b&gt;{0}&lt;/b&gt; nelze uložit.&lt;br /&gt;Důvod: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="214"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="215"/>
         <source>Processing file &apos;{0}&apos;...
 </source>
         <translation>Spouštím proces &apos;{0}&apos;...</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="389"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="390"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="225"/>
-        <source>&lt;Start&gt;</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="226"/>
+        <source>&lt;Start&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="227"/>
         <source>&lt;End&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -60954,17 +61132,12 @@
     <message>
         <location filename="../Templates/TemplateHelpDialog.ui" line="14"/>
         <source>Template Help</source>
-        <translation type="unfinished">Nápověda šablony</translation>
-    </message>
-    <message>
-        <location filename="../Templates/TemplateHelpDialog.ui" line="23"/>
-        <source>&lt;b&gt;Template Help&lt;/b&gt;</source>
-        <translation type="unfinished"></translation>
+        <translation type="obsolete">Nápověda šablony</translation>
     </message>
     <message>
         <location filename="../Templates/TemplateHelpDialog.py" line="33"/>
         <source>&lt;p&gt;To use variables in a template, you just have to enclose the variablename with $-characters. When you use the template, you will then be asked for a value for this variable.&lt;/p&gt;&lt;p&gt;Example template: This is a $VAR$&lt;/p&gt;&lt;p&gt;When you use this template you will be prompted for a value for the variable $VAR$. Any occurrences of $VAR$ will then be replaced with whatever you&apos;ve entered.&lt;/p&gt;&lt;p&gt;If you need a single $-character in a template, which is not used to enclose a variable, type $$(two dollar characters) instead. They will automatically be replaced with a single $-character when you use the template.&lt;/p&gt;&lt;p&gt;If you want a variables contents to be treated specially, the variablename must be followed by a &apos;:&apos; and one formatting specifier (e.g. $VAR:ml$). The supported specifiers are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Specifies a multiline formatting. The first line of the variable contents is prefixed with the string occurring before the variable on the same line of the template. All other lines are prefixed by the same amount of whitespace as the line containing the variable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Specifies a repeated line formatting. Each line of the variable contents is prefixed with the string occuring before the variable on the same line of the template.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;The following predefined variables may be used in a template:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;today&apos;s date in ISO format (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;the current year&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;the name of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;the path of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;full path of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;full path of the parent directory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;the current file name (without directory)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;like &lt;i&gt;file_name&lt;/i&gt;, but without extension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;the extension of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;the currently selected text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Sets insertion point for cursor after template is inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;the text of the clipboard&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you want to change the default delimiter to anything different, please use the configuration dialog to do so.&lt;/p&gt;</source>
-        <translation type="unfinished">&lt;p&gt;Proměnné se v šablonách používají tak, že se jejich jména vloží mezi $ znaky. Když je v šabloně použiteje, budete vyzváni k zadání hodnoty proměnné.&lt;/p&gt;&lt;p&gt;Příklad šablony: Toto je $VAR$&lt;/p&gt;&lt;p&gt;Když použiteje tuto šablonu, budete vyzváni k zadání hodnoty proměnné $VAR$. Všechny výskyty $VAR$ pak budou nahrazeny touto hodnotou.&lt;/p&gt;&lt;p&gt;Pokud chcete do šablony umístit pouze znak $, zadejte jej zdvojeně: $$. Takovýto výskyt bude automaticky nahrazen na jeden znak $.&lt;/p&gt;&lt;p&gt;Pokud chcete proměnnou nějak formátovat, zadejte &apos;:&apos; a pak název filtru. (např. $VAR:ml$) Podporované filtry jsou:&lt;table&gt;&lt;tr&gt;    &lt;td&gt;ml&lt;/td&gt;    &lt;td&gt;Víceřádkové formátování. První řádek s hodnotou proměnné začíná s textem, který na tom samém řádku předcházel proměnnou. Všechny ostatní řádky dané hodnoty jsou zleva doplněny mezerami tak, aby byly zarovnány pod začátek hodnoty na prvním řádku.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;rl&lt;/td&gt;    &lt;td&gt;Formátování s opakováním. Každá řádka hodnoty začíná s textem, který na tom samém řádku předcházel proměnnou.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;V šablonách lze použít následující předdefinované proměnné:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;aktuální datum v ISO formátu (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;aktuální rok&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;jméno projektu (je-li nějaké)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;cesta k projektu (je-li nějaká)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;celá cesta k aktuálnímu souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;celá cesta k nadřazené složce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;jméno aktuálního souboru (bez cesty)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;stejně jako &lt;i&gt;file_name&lt;/i&gt;, ale bez extenze&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;extenze aktuálního souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;kurzorem vybraný text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Nastaví pozici kurzoru po té, co je šablona vložena.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;obsah schránky&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Chcete-li změnit výchozí oddělovač na něco jiného, prosím, použijte dialog nastavení konfigurace.&lt;/p&gt;</translation>
+        <translation type="obsolete">&lt;p&gt;Proměnné se v šablonách používají tak, že se jejich jména vloží mezi $ znaky. Když je v šabloně použiteje, budete vyzváni k zadání hodnoty proměnné.&lt;/p&gt;&lt;p&gt;Příklad šablony: Toto je $VAR$&lt;/p&gt;&lt;p&gt;Když použiteje tuto šablonu, budete vyzváni k zadání hodnoty proměnné $VAR$. Všechny výskyty $VAR$ pak budou nahrazeny touto hodnotou.&lt;/p&gt;&lt;p&gt;Pokud chcete do šablony umístit pouze znak $, zadejte jej zdvojeně: $$. Takovýto výskyt bude automaticky nahrazen na jeden znak $.&lt;/p&gt;&lt;p&gt;Pokud chcete proměnnou nějak formátovat, zadejte &apos;:&apos; a pak název filtru. (např. $VAR:ml$) Podporované filtry jsou:&lt;table&gt;&lt;tr&gt;    &lt;td&gt;ml&lt;/td&gt;    &lt;td&gt;Víceřádkové formátování. První řádek s hodnotou proměnné začíná s textem, který na tom samém řádku předcházel proměnnou. Všechny ostatní řádky dané hodnoty jsou zleva doplněny mezerami tak, aby byly zarovnány pod začátek hodnoty na prvním řádku.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;rl&lt;/td&gt;    &lt;td&gt;Formátování s opakováním. Každá řádka hodnoty začíná s textem, který na tom samém řádku předcházel proměnnou.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;V šablonách lze použít následující předdefinované proměnné:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;aktuální datum v ISO formátu (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;aktuální rok&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;jméno projektu (je-li nějaké)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;cesta k projektu (je-li nějaká)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;celá cesta k aktuálnímu souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;celá cesta k nadřazené složce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;jméno aktuálního souboru (bez cesty)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;stejně jako &lt;i&gt;file_name&lt;/i&gt;, ale bez extenze&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;extenze aktuálního souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;kurzorem vybraný text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Nastaví pozici kurzoru po té, co je šablona vložena.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;obsah schránky&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Chcete-li změnit výchozí oddělovač na něco jiného, prosím, použijte dialog nastavení konfigurace.&lt;/p&gt;</translation>
     </message>
 </context>
 <context>
@@ -61048,9 +61221,9 @@
         <translation>Opravdu chcete zavřít dialog?</translation>
     </message>
     <message>
-        <location filename="../Templates/TemplatePropertiesDialog.py" line="114"/>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
         <source>Template Help</source>
-        <translation type="obsolete">Nápověda šablony</translation>
+        <translation type="unfinished">Nápověda šablony</translation>
     </message>
     <message>
         <location filename="../Templates/TemplatePropertiesDialog.ui" line="86"/>
@@ -61086,6 +61259,16 @@
         <source>&lt;p&gt;To use variables in a template, you just have to enclose the variablename with $-characters. When you use the template, you will then be asked for a value for this variable.&lt;/p&gt;&lt;p&gt;Example template: This is a $VAR$&lt;/p&gt;&lt;p&gt;When you use this template you will be prompted for a value for the variable $VAR$. Any occurrences of $VAR$ will then be replaced with whatever you&apos;ve entered.&lt;/p&gt;&lt;p&gt;If you need a single $-character in a template, which is not used to enclose a variable, type $$(two dollar characters) instead. They will automatically be replaced with a single $-character when you use the template.&lt;/p&gt;&lt;p&gt;If you want a variables contents to be treated specially, the variablename must be followed by a &apos;:&apos; and one formatting specifier (e.g. $VAR:ml$). The supported specifiers are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Specifies a multiline formatting. The first line of the variable contents is prefixed with the string occurring before the variable on the same line of the template. All other lines are prefixed by the same amount of whitespace as the line containing the variable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Specifies a repeated line formatting. Each line of the variable contents is prefixed with the string occuring before the variable on the same line of the template.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;The following predefined variables may be used in a template:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;today&apos;s date in ISO format (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;the current year&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;the name of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;the path of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;full path of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;full path of the parent directory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;the current file name (without directory)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;like &lt;i&gt;file_name&lt;/i&gt;, but without extension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;the extension of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;the currently selected text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Sets insertion point for cursor after template is inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;the text of the clipboard&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you want to change the default delimiter to anything different, please use the configuration dialog to do so.&lt;/p&gt;</source>
         <translation type="obsolete">&lt;p&gt;Proměnné se v šablonách používají tak, že se jejich jména vloží mezi $ znaky. Když je v šabloně použiteje, budete vyzváni k zadání hodnoty proměnné.&lt;/p&gt;&lt;p&gt;Příklad šablony: Toto je $VAR$&lt;/p&gt;&lt;p&gt;Když použiteje tuto šablonu, budete vyzváni k zadání hodnoty proměnné $VAR$. Všechny výskyty $VAR$ pak budou nahrazeny touto hodnotou.&lt;/p&gt;&lt;p&gt;Pokud chcete do šablony umístit pouze znak $, zadejte jej zdvojeně: $$. Takovýto výskyt bude automaticky nahrazen na jeden znak $.&lt;/p&gt;&lt;p&gt;Pokud chcete proměnnou nějak formátovat, zadejte &apos;:&apos; a pak název filtru. (např. $VAR:ml$) Podporované filtry jsou:&lt;table&gt;&lt;tr&gt;    &lt;td&gt;ml&lt;/td&gt;    &lt;td&gt;Víceřádkové formátování. První řádek s hodnotou proměnné začíná s textem, který na tom samém řádku předcházel proměnnou. Všechny ostatní řádky dané hodnoty jsou zleva doplněny mezerami tak, aby byly zarovnány pod začátek hodnoty na prvním řádku.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;    &lt;td&gt;rl&lt;/td&gt;    &lt;td&gt;Formátování s opakováním. Každá řádka hodnoty začíná s textem, který na tom samém řádku předcházel proměnnou.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;V šablonách lze použít následující předdefinované proměnné:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;aktuální datum v ISO formátu (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;aktuální rok&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;jméno projektu (je-li nějaké)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;cesta k projektu (je-li nějaká)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;celá cesta k aktuálnímu souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;celá cesta k nadřazené složce&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;jméno aktuálního souboru (bez cesty)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;stejně jako &lt;i&gt;file_name&lt;/i&gt;, ale bez extenze&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;extenze aktuálního souboru&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;kurzorem vybraný text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Nastaví pozici kurzoru po té, co je šablona vložena.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Nastaví span vybraného textu v šabloně po té, co je šablona vložena (používá se společně s &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;obsah schránky&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Chcete-li změnit výchozí oddělovač na něco jiného, prosím, použijte dialog nastavení konfigurace.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
+        <source>&lt;b&gt;Template Help&lt;/b&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
+        <source>&lt;p&gt;To use variables in a template, you just have to enclose the variablename with $-characters. When you use the template, you will then be asked for a value for this variable.&lt;/p&gt;&lt;p&gt;Example template: This is a $VAR$&lt;/p&gt;&lt;p&gt;When you use this template you will be prompted for a value for the variable $VAR$. Any occurrences of $VAR$ will then be replaced with whatever you&apos;ve entered.&lt;/p&gt;&lt;p&gt;If you need a single $-character in a template, which is not used to enclose a variable, type $$(two dollar characters) instead. They will automatically be replaced with a single $-character when you use the template.&lt;/p&gt;&lt;p&gt;If you want a variables contents to be treated specially, the variablename must be followed by a &apos;: and one formatting specifier (e.g. $VAR:ml$). The supported specifiers are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Specifies a multiline formatting. The first line of the variable contents is prefixed with the string occurring before the variable on the same line of the template. All other lines are prefixed by the same amount of whitespace as the line containing the variable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Specifies a repeated line formatting. Each line of the variable contents is prefixed with the string occuring before the variable on the same line of the template.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;The following predefined variables may be used in a template:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;today&apos;s date in ISO format (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;the current year&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;the name of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;the path of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;full path of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;full path of the parent directory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;the current file name (without directory)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;like &lt;i&gt;file_name&lt;/i&gt;, but without extension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;the extension of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;the currently selected text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Sets insertion point for cursor after template is inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;the text of the clipboard&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you want to change the default delimiter to anything different, please use the configuration dialog to do so.&lt;/p&gt;</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>TemplateSingleVariableDialog</name>
@@ -63910,7 +64093,7 @@
         <translation>&lt;h3&gt;Čísla verzí&lt;/h3&gt;&lt;table&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6616"/>
+        <location filename="../UI/UserInterface.py" line="6627"/>
         <source>&lt;/table&gt;</source>
         <translation>&lt;/table&gt;</translation>
     </message>
@@ -63990,12 +64173,12 @@
         <translation>Zahodit chybu</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6578"/>
+        <location filename="../UI/UserInterface.py" line="6589"/>
         <source>Error during updates check</source>
         <translation>Chyba během zjišťování aktualizací</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6558"/>
+        <location filename="../UI/UserInterface.py" line="6569"/>
         <source>Update available</source>
         <translation>Byla nalezena aktualizace</translation>
     </message>
@@ -64010,7 +64193,7 @@
         <translation>Zobrazit externí nás&amp;troje</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6578"/>
+        <location filename="../UI/UserInterface.py" line="6589"/>
         <source>Could not perform updates check.</source>
         <translation>Kontrolu updatů nelze provést.</translation>
     </message>
@@ -64020,7 +64203,7 @@
         <translation>&amp;Zrušit</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6643"/>
+        <location filename="../UI/UserInterface.py" line="6654"/>
         <source>First time usage</source>
         <translation>Spuštěno poprvé</translation>
     </message>
@@ -64115,7 +64298,7 @@
         <translation>Zobrazit dostupné verze ke stažení</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6602"/>
+        <location filename="../UI/UserInterface.py" line="6613"/>
         <source>&lt;h3&gt;Available versions&lt;/h3&gt;&lt;table&gt;</source>
         <translation>&lt;h3&gt;Dostupné verze&lt;/h3&gt;&lt;table&gt;</translation>
     </message>
@@ -64775,7 +64958,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6662"/>
+        <location filename="../UI/UserInterface.py" line="6673"/>
         <source>Select Workspace Directory</source>
         <translation type="unfinished"></translation>
     </message>
@@ -65280,22 +65463,22 @@
         <translation type="unfinished">Qt v.3 není podporováno v eric5. {3 ?} {6.?}</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6558"/>
+        <location filename="../UI/UserInterface.py" line="6569"/>
         <source>The update to &lt;b&gt;{0}&lt;/b&gt; of eric6 is available at &lt;b&gt;{1}&lt;/b&gt;. Would you like to get it?</source>
         <translation type="unfinished">Aktualizace &lt;b&gt;{0}&lt;/b&gt; eric5 je připravena na &lt;b&gt;{1}&lt;/b&gt;. Chcete ji stáhnout a nainstalovat? {0}?} {6 ?} {1}?}</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6571"/>
+        <location filename="../UI/UserInterface.py" line="6582"/>
         <source>Eric6 is up to date</source>
         <translation type="unfinished">Eric5 je aktuální {6 ?}</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6571"/>
+        <location filename="../UI/UserInterface.py" line="6582"/>
         <source>You are using the latest version of eric6</source>
         <translation type="unfinished">Používáte poslední verzi eric6</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6643"/>
+        <location filename="../UI/UserInterface.py" line="6654"/>
         <source>eric6 has not been configured yet. The configuration dialog will be started.</source>
         <translation type="unfinished">eric5 nebyl ještě nakonfigurován. Bude spuštěn konfigurační dialog. {6 ?}</translation>
     </message>
@@ -65399,6 +65582,16 @@
         <source>Initializing Plugins...</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../UI/UserInterface.py" line="6557"/>
+        <source>Update Check</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../UI/UserInterface.py" line="6557"/>
+        <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>UserPropertiesDialog</name>
@@ -71592,7 +71785,7 @@
 <context>
     <name>WebBrowserWindow</name>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3417"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3422"/>
         <source>eric6 Web Browser</source>
         <translation type="unfinished"></translation>
     </message>
@@ -71669,7 +71862,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>New Private Window</source>
         <translation type="unfinished"></translation>
     </message>
@@ -71695,7 +71888,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2459"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2464"/>
         <source>Open File</source>
         <translation type="unfinished">Otevřít soubor</translation>
     </message>
@@ -71827,7 +72020,7 @@
         <translation type="unfinished">&lt;b&gt;Export záložek&lt;/b&gt;&lt;p&gt;Export záložek do souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2084"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2089"/>
         <source>Print</source>
         <translation type="unfinished">Tisk</translation>
     </message>
@@ -73186,17 +73379,17 @@
         <translation type="unfinished">S&amp;oubor</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1921"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1922"/>
         <source>&amp;Edit</source>
         <translation type="unfinished">&amp;Edit</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2139"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2144"/>
         <source>&amp;View</source>
         <translation type="unfinished">Poh&amp;led</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1947"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1949"/>
         <source>Text Encoding</source>
         <translation type="unfinished"></translation>
     </message>
@@ -73206,27 +73399,27 @@
         <translation type="obsolete">&amp;Jít</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1958"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1961"/>
         <source>H&amp;istory</source>
         <translation type="unfinished">H&amp;istorie</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1974"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1978"/>
         <source>&amp;Bookmarks</source>
         <translation type="unfinished">&amp;Záložky</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1990"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1994"/>
         <source>&amp;Settings</source>
         <translation type="unfinished">Na&amp;stavení</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2016"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2020"/>
         <source>Global User Agent</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2169"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2174"/>
         <source>&amp;Tools</source>
         <translation type="unfinished">&amp;Nástroje</translation>
     </message>
@@ -73236,52 +73429,52 @@
         <translation type="obsolete">O&amp;kno</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2057"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2061"/>
         <source>&amp;Help</source>
         <translation type="unfinished">&amp;Nápověda</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2193"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2198"/>
         <source>File</source>
         <translation type="unfinished">Soubor</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2225"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2230"/>
         <source>Edit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2238"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2243"/>
         <source>View</source>
         <translation type="unfinished">Pohled</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2248"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2253"/>
         <source>Find</source>
         <translation type="unfinished">Hledat</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2257"/>
-        <source>Filter</source>
-        <translation type="unfinished">Filtr</translation>
-    </message>
-    <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="2262"/>
+        <source>Filter</source>
+        <translation type="unfinished">Filtr</translation>
+    </message>
+    <message>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2267"/>
         <source>Filtered by: </source>
         <translation type="unfinished">Filtrováno: </translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2270"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2275"/>
         <source>Settings</source>
         <translation type="unfinished">Nastavení</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2282"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2287"/>
         <source>Tools</source>
         <translation type="unfinished">Nástroje</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2291"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2296"/>
         <source>Help</source>
         <translation type="unfinished"></translation>
     </message>
@@ -73291,7 +73484,7 @@
         <translation type="obsolete">Jít</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2298"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2303"/>
         <source>VirusTotal</source>
         <translation type="unfinished"></translation>
     </message>
@@ -73301,22 +73494,22 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4476"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4481"/>
         <source>IP Address Report</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4486"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4491"/>
         <source>Domain Report</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>&lt;p&gt;Could not start the process.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>OK</source>
         <translation type="unfinished">OK</translation>
     </message>
@@ -73326,93 +73519,93 @@
         <translation type="obsolete">Help soubory (*.html *.htm);;PDF soubory (*.pdf);;CHM soubory (*.chm);;Všechny soubory (*)</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2510"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2515"/>
         <source>&lt;b&gt;eric6 Web Browser - {0}&lt;/b&gt;&lt;p&gt;The eric6 Web Browser is a combined help file and HTML browser. It is part of the eric6 development toolset.&lt;/p&gt;&lt;p&gt;It is based on QtWebEngine {1} and Chrome {2}.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2634"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2639"/>
         <source>Saved Tabs</source>
         <translation type="unfinished">Uložkt taby</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3234"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3239"/>
         <source>Could not find an associated content.</source>
         <translation type="unfinished">Asociovaný obsah nelze nalézt.</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3337"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3342"/>
         <source>Updating search index</source>
         <translation type="unfinished">Aktualizovat index pro hledání</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3407"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3412"/>
         <source>Looking for Documentation...</source>
         <translation type="unfinished">Vyhledat dokumentaci...</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3442"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3447"/>
         <source>Unfiltered</source>
         <translation type="unfinished">Nefiltrováno</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3461"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3466"/>
         <source>Help Engine</source>
         <translation type="unfinished">Engine nápovědy</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4014"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4019"/>
         <source>ISO</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4018"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4023"/>
         <source>Windows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4020"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4025"/>
         <source>ISCII</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4016"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4021"/>
         <source>Unicode</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4024"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4029"/>
         <source>Other</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4022"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4027"/>
         <source>IBM</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4441"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4446"/>
         <source>VirusTotal Scan</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4441"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4446"/>
         <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4467"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4472"/>
         <source>Enter a valid IPv4 address in dotted quad notation:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4476"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4481"/>
         <source>The given IP address is not in dotted quad notation.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4486"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4491"/>
         <source>Enter a valid domain name:</source>
         <translation type="unfinished"></translation>
     </message>
@@ -73484,7 +73677,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2459"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2464"/>
         <source>HTML Files (*.html *.htm *.mhtml *.mht);;PDF Files (*.pdf);;CHM Files (*.chm);;All Files (*)</source>
         <translation type="unfinished"></translation>
     </message>
@@ -73499,52 +73692,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2175"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2180"/>
         <source>&amp;VirusTotal</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2141"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2146"/>
         <source>&amp;Windows</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2051"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2055"/>
         <source>&amp;Toolbars</source>
         <translation type="unfinished">&amp;Toolbary</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2077"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2082"/>
         <source>Save</source>
         <translation type="unfinished">Uložit</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2097"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2102"/>
         <source>Show All History...</source>
         <translation type="unfinished">Zobrazit celou historii...</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4049"/>
-        <source>Menu Bar</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="4054"/>
-        <source>Bookmarks</source>
-        <translation type="unfinished">Záložky</translation>
+        <source>Menu Bar</source>
+        <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="4059"/>
+        <source>Bookmarks</source>
+        <translation type="unfinished">Záložky</translation>
+    </message>
+    <message>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4064"/>
         <source>Status Bar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4073"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4078"/>
         <source>&amp;Show all</source>
         <translation type="unfinished">&amp;Zobrazit vše</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4075"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4080"/>
         <source>&amp;Hide all</source>
         <translation type="unfinished">&amp;Skrýt vše</translation>
     </message>
Binary file i18n/eric6_de.qm has changed
--- a/i18n/eric6_de.ts	Tue Jun 06 19:52:41 2017 +0200
+++ b/i18n/eric6_de.ts	Wed Jun 28 19:14:32 2017 +0200
@@ -1336,16 +1336,11 @@
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="242"/>
-        <source>&lt;b&gt;Note&lt;/b&gt;: Enter a value of 0 to use the system default value.</source>
-        <translation>&lt;b&gt;Hinweis&lt;/b&gt;: Gib einen Wert von o ein, um den Systemstandardwert zu verwenden.</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="252"/>
         <source>Enter the keyboard input interval, &apos;0&apos; for default</source>
         <translation>Gib das Tastatureingabeintervall ein, &apos;0&apos; für Standardwert</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="258"/>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="251"/>
         <source> ms</source>
         <translation> ms</translation>
     </message>
@@ -1369,6 +1364,31 @@
         <source>Enable Crash Session</source>
         <translation>Absturzsitzung aktivieren</translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="248"/>
+        <source>System Default</source>
+        <translation>Standardwert</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="280"/>
+        <source>Background Services</source>
+        <translation>Hintergrunddienste</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="298"/>
+        <source>max. Processes:</source>
+        <translation>max. Prozesse:</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="308"/>
+        <source>Automatic</source>
+        <translation>Automatisch</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.py" line="30"/>
+        <source>eric is using background services for certain things like syntax checks or code style checks. Per default the number of processes to use for these checks is determined automatically based on the number of CPUs. Please note, that this is an advanced setting.</source>
+        <translation>eric verwendet Hintergrunddienste für verschiedene Dinge wie z.B. Syntaxprüfungen oder Codestilprüfungen. Standardmäßig wird die Anzahl der für diese Prüfungen zu startenden Prozesse automatisch basierend auf der Anzahl verfügbarer Prozessorkernen ermittelt. Bitte beachten, dass dies ein Einstellung für Fortgeschrittene ist.</translation>
+    </message>
 </context>
 <context>
     <name>AuthenticationDialog</name>
@@ -1421,37 +1441,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="128"/>
+        <location filename="../Utilities/BackgroundService.py" line="129"/>
         <source>{0} not configured.</source>
         <translation>{0} nicht konfiguriert.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>Restart background client?</source>
         <translation>Hintergrund Client neu starten?</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>Background client disconnected.</source>
         <translation>Hintergrund Client wurde getrennt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="419"/>
+        <location filename="../Utilities/BackgroundService.py" line="420"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation>Die Verbindung zu Erics Hintergund Client wurde aus unbekanntem Grund getrennt.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="208"/>
+        <location filename="../Utilities/BackgroundService.py" line="209"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation>Ein Fehler im Eric Hintergrunddienst hat den Dienst beendet.</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Hintergund Client für &lt;b&gt;{0}&lt;/b&gt; wurde durch eine Exception gestoppt. Er wird für verschiedene Plugins, wie z.B. die Checker, verwendet.&lt;/p&gt;&lt;p&gt;Wähle:&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Ja&apos;&lt;/b&gt;, um den Client aber nicht den letzten Job neu zu starten&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Wiederholen&apos;&lt;/b&gt;, um den Client und letzten Job neu zu starten&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Nein&apos;&lt;/b&gt;, um den Client nicht neu zu starten.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Hinweis: Der Client kann immer wieder gestartet werden, indem der Einstellungsdialog mit Ok geschlossen wird oder durch das Neuladen/ Wechseln des Projektes.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnected because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation>Die Verbindung zum Hintergund Client für &lt;b&gt;{0}&lt;/b&gt; wurde aus unbekanntem Grund getrennt.&lt;br&gt;Soll er neu gestartet werden?</translation>
     </message>
@@ -2673,19 +2693,22 @@
         <location filename="../Cooperation/ChatWidget.py" line="664"/>
         <source>* {0} has been kicked.
 </source>
-        <translation>* {0} wurde ausgeschlossen.</translation>
+        <translation>* {0} wurde ausgeschlossen.
+</translation>
     </message>
     <message>
         <location filename="../Cooperation/ChatWidget.py" line="680"/>
         <source>* {0} has been banned.
 </source>
-        <translation>* {0} wurde gebannt.</translation>
+        <translation>* {0} wurde gebannt.
+</translation>
     </message>
     <message>
         <location filename="../Cooperation/ChatWidget.py" line="696"/>
         <source>* {0} has been banned and kicked.
 </source>
-        <translation>* {0} wurde gebannt und ausgeschlossen.</translation>
+        <translation>* {0} wurde gebannt und ausgeschlossen.
+</translation>
     </message>
     <message>
         <location filename="../Cooperation/ChatWidget.py" line="573"/>
@@ -4213,12 +4236,12 @@
 <context>
     <name>CompareDialog</name>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>Compare Files</source>
         <translation>Dateien vergleichen</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden.&lt;/p&gt;</translation>
     </message>
@@ -4283,22 +4306,22 @@
         <translation>Vergleichen</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="358"/>
+        <location filename="../UI/CompareDialog.py" line="369"/>
         <source>Total: {0}</source>
         <translation>Gesamt: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="360"/>
+        <location filename="../UI/CompareDialog.py" line="371"/>
         <source>Changed: {0}</source>
         <translation>Geändert: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="361"/>
+        <location filename="../UI/CompareDialog.py" line="372"/>
         <source>Added: {0}</source>
         <translation>Hinzugefügt: {0}</translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="362"/>
+        <location filename="../UI/CompareDialog.py" line="373"/>
         <source>Deleted: {0}</source>
         <translation>Gelöscht: {0}</translation>
     </message>
@@ -4354,224 +4377,224 @@
         <translation>CORBA</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="144"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
         <source>Email</source>
         <translation>E-Mail</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="150"/>
         <source>Graphics</source>
         <translation>Grafiken</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="153"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="156"/>
         <source>Icons</source>
         <translation>Icons</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="172"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="175"/>
         <source>Plugin Manager</source>
         <translation>Pluginmanager</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="440"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="443"/>
         <source>Printer</source>
         <translation>Drucker</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="211"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
         <source>Python</source>
         <translation>Python</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="182"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="185"/>
         <source>Qt</source>
         <translation>Qt</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="188"/>
-        <source>Shell</source>
-        <translation>Shell</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="191"/>
-        <source>Tasks</source>
-        <translation>Aufgaben</translation>
+        <source>Shell</source>
+        <translation>Shell</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="194"/>
+        <source>Tasks</source>
+        <translation>Aufgaben</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="197"/>
         <source>Templates</source>
         <translation>Vorlagen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="200"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="203"/>
         <source>Version Control Systems</source>
         <translation>Versionskontrollsysteme</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="205"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="208"/>
         <source>Debugger</source>
         <translation>Debugger</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="218"/>
-        <source>Editor</source>
-        <translation>Editor</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="221"/>
-        <source>APIs</source>
-        <translation>APIs</translation>
+        <source>Editor</source>
+        <translation>Editor</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="224"/>
+        <source>APIs</source>
+        <translation>APIs</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="227"/>
         <source>Autocompletion</source>
         <translation>Automatische Vervollständigung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="232"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="235"/>
         <source>Calltips</source>
         <translation>Calltips</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="238"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="241"/>
         <source>General</source>
         <translation>Allgemein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="258"/>
-        <source>Typing</source>
-        <translation>Eingabe</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="261"/>
+        <source>Typing</source>
+        <translation>Eingabe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="264"/>
         <source>Exporters</source>
         <translation>Exporter</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="265"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="268"/>
         <source>Highlighters</source>
         <translation>Syntaxhervorhebung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="269"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="272"/>
         <source>Filetype Associations</source>
         <translation>Dateitypzuordnungen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="273"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="276"/>
         <source>Styles</source>
         <translation>Stile</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="289"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="292"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="447"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="450"/>
         <source>Help Documentation</source>
         <translation>Hilfe Dokumentation</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="296"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="299"/>
         <source>Help Viewers</source>
         <translation>Hilfeanzeiger</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="307"/>
-        <source>Project</source>
-        <translation>Projekt</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="304"/>
-        <source>Project Viewer</source>
-        <translation>Projektanzeige</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="310"/>
+        <source>Project</source>
+        <translation>Projekt</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="307"/>
+        <source>Project Viewer</source>
+        <translation>Projektanzeige</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="313"/>
         <source>Multiproject</source>
         <translation>Mehrfachprojekt</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="434"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="437"/>
         <source>Interface</source>
         <translation>Oberfläche</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="321"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="324"/>
         <source>Viewmanager</source>
         <translation>Ansichtenmanager</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="714"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="717"/>
         <source>Configuration Page Error</source>
         <translation>Konfigurationsseitenfehler</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="714"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="717"/>
         <source>&lt;p&gt;The configuration page &lt;b&gt;{0}&lt;/b&gt; could not be loaded.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Konfigurationsseite &lt;b&gt;{0}&lt;/b&gt; konnte nicht geladen werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="241"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="244"/>
         <source>Filehandling</source>
         <translation>Dateibehandlung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="245"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="248"/>
         <source>Searching</source>
         <translation>Suchen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="452"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="455"/>
         <source>Appearance</source>
         <translation>Erscheinung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="235"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="238"/>
         <source>QScintilla</source>
         <translation>QScintilla</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="252"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="255"/>
         <source>Style</source>
         <translation>Stil</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="280"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="283"/>
         <source>Properties</source>
         <translation>Einstellungen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="636"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="639"/>
         <source>Preferences</source>
         <translation>Einstellungen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="641"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="644"/>
         <source>Please select an entry of the list 
 to display the configuration page.</source>
         <translation>Wähle einen Listeneintrag aus,
 um die Konfigurationsseite anzuzeigen.</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="437"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="440"/>
         <source>Network</source>
         <translation>Netzwerk</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="468"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="471"/>
         <source>Spell checking</source>
         <translation>Rechtschreibprüfung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="217"/>
         <source>Python3</source>
         <translation>Python 3</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="277"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="280"/>
         <source>Keywords</source>
         <translation>Schlüsselwörter</translation>
     </message>
@@ -4581,75 +4604,80 @@
         <translation>Zusammenarbeit</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="484"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="487"/>
         <source>Tray Starter</source>
         <translation>Systemstarter</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="463"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="466"/>
         <source>VirusTotal Interface</source>
         <translation>VirusTotal-Schnittstelle</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="443"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="446"/>
         <source>Security</source>
         <translation>Sicherheit</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="168"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="171"/>
         <source>Notifications</source>
         <translation>Benachrichtigungen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="156"/>
-        <source>IRC</source>
-        <translation>IRC</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="255"/>
-        <source>Code Checkers</source>
-        <translation>Quelltextprüfungen</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="455"/>
-        <source>eric6 Web Browser</source>
-        <translation>eric6-Webbrowser</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="159"/>
-        <source>Log-Viewer</source>
-        <translation>Ausgabefenster</translation>
+        <source>IRC</source>
+        <translation>IRC</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="258"/>
+        <source>Code Checkers</source>
+        <translation>Quelltextprüfungen</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="458"/>
+        <source>eric6 Web Browser</source>
+        <translation>eric6-Webbrowser</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="162"/>
+        <source>Log-Viewer</source>
+        <translation>Ausgabefenster</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="165"/>
         <source>Mimetypes</source>
         <translation>MIME-Typen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="574"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="577"/>
         <source>Enter search text...</source>
         <translation>Suchtext eingeben...</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="284"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="287"/>
         <source>Mouse Click Handlers</source>
         <translation>Maus Klick Handlers</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="459"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="462"/>
         <source>Flash Cookie Manager</source>
         <translation>Flash Cookie Manager</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="497"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="500"/>
         <source>Hex Editor</source>
         <translation>Hex-Editor</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="354"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="357"/>
         <source>Web Browser</source>
         <translation>Web-Browser</translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="144"/>
+        <source>Diff</source>
+        <translation>Diff</translation>
+    </message>
 </context>
 <context>
     <name>Connection</name>
@@ -4991,7 +5019,7 @@
     <message>
         <location filename="../WebBrowser/CookieJar/CookiesDialog.py" line="145"/>
         <source>Do you really want to remove all stored cookies?</source>
-        <translation>Sollen wirklich alle gespeicherten Cookies entfernt werden? </translation>
+        <translation>Sollen wirklich alle gespeicherten Cookies entfernt werden?</translation>
     </message>
     <message>
         <location filename="../WebBrowser/CookieJar/CookiesDialog.py" line="179"/>
@@ -6082,7 +6110,7 @@
     <message>
         <location filename="../Debugger/DebugViewer.py" line="174"/>
         <source>Enter regular expression patterns separated by &apos;;&apos; to define variable filters. </source>
-        <translation>Gib reguläre Ausdrücke getrennt durch „;“ ein, um Variablenfilter zu definieren.</translation>
+        <translation>Gib reguläre Ausdrücke getrennt durch „;“ ein, um Variablenfilter zu definieren. </translation>
     </message>
     <message>
         <location filename="../Debugger/DebugViewer.py" line="178"/>
@@ -7017,6 +7045,114 @@
     </message>
 </context>
 <context>
+    <name>DiffColoursPage</name>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="17"/>
+        <source>&lt;b&gt;Configure Diff colours&lt;/b&gt;</source>
+        <translation>&lt;b&gt;Diff Farben einstellen&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="39"/>
+        <source>Select the background colour for header lines</source>
+        <translation>Wähle die Hintergrundfarbe für Kopfzeilen</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="42"/>
+        <source>Header Colour</source>
+        <translation>Kopfzeilenfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="52"/>
+        <source>Header Line</source>
+        <translation>Kopfzeile</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="65"/>
+        <source>Select the background colour for bad whitespace</source>
+        <translation>Wähle die Hintergrundfarbe für ungültige Leerzeichen</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="68"/>
+        <source>Whitespace Colour</source>
+        <translation>Leerzeichenfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="88"/>
+        <source>Select the text foreground colour</source>
+        <translation>Wähle die Textfarbe aus</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="91"/>
+        <source>Text Colour</source>
+        <translation>Textfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="101"/>
+        <source>Normal Text</source>
+        <translation>Normaler Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="114"/>
+        <source>Select the background colour for additions</source>
+        <translation>Wähle die Hintergrundfarbe für Ergänzungen</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="117"/>
+        <source>Added Colour</source>
+        <translation>Ergänzungsfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="127"/>
+        <source>Added Text</source>
+        <translation>Hinzugefügter Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="140"/>
+        <source>Select the background colour for removed text</source>
+        <translation>Wähle die Hintergrundfarbe für entfernten Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="143"/>
+        <source>Removed Colour</source>
+        <translation>Löschungsfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="153"/>
+        <source>Removed Text</source>
+        <translation>Gelöschter Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="166"/>
+        <source>Select the background colour for replaced text</source>
+        <translation>Wähle die Hintergrundfarbe für geänderten Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="169"/>
+        <source>Replaced Colour</source>
+        <translation>Änderungsfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="179"/>
+        <source>Replaced Text</source>
+        <translation>Geänderter Text</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="192"/>
+        <source>Select the background colour for context lines</source>
+        <translation>Wähle die Hintergrundfarbe für Kontextzeilen</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="195"/>
+        <source>Context Colour</source>
+        <translation>Kontextfarbe</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/DiffColoursPage.ui" line="205"/>
+        <source>Context Line</source>
+        <translation>Kontextzeile</translation>
+    </message>
+</context>
+<context>
     <name>DiffDialog</name>
     <message>
         <location filename="../UI/DiffDialog.py" line="288"/>
@@ -7034,7 +7170,7 @@
         <translation>Dateien vergleichen</translation>
     </message>
     <message>
-        <location filename="../UI/DiffDialog.py" line="447"/>
+        <location filename="../UI/DiffDialog.py" line="448"/>
         <source>There is no difference.</source>
         <translation>Es gibt keinen Unterschied.</translation>
     </message>
@@ -8727,7 +8863,8 @@
         <location filename="../E5Network/E5SslInfoWidget.py" line="124"/>
         <source>Your connection to &quot;{0}&quot; is NOT encrypted.
 </source>
-        <translation>Ihre Verbindung zu „{0}“ ist NICHT verschlüsselt.</translation>
+        <translation>Ihre Verbindung zu „{0}“ ist NICHT verschlüsselt.
+</translation>
     </message>
     <message>
         <location filename="../E5Network/E5SslInfoWidget.py" line="133"/>
@@ -8750,6 +8887,7 @@
 
 </source>
         <translation>Sie ist durch {0} mit {1} Bits verschlüsselt und benutzt {2} zur Nachrichtenauthentifizierung und {3} für den Schlüsselaustausch.
+
 </translation>
     </message>
     <message>
@@ -10891,7 +11029,7 @@
     <message>
         <location filename="../Preferences/ConfigurationPages/EditorFilePage.ui" line="258"/>
         <source>Select to use the advanced encoding detection </source>
-        <translation>Auswählen, um die erweiterte Zeichenkodierungserkennung zu nutzen</translation>
+        <translation>Auswählen, um die erweiterte Zeichenkodierungserkennung zu nutzen </translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/EditorFilePage.ui" line="261"/>
@@ -13560,32 +13698,32 @@
 <context>
     <name>EmailDialog</name>
     <message>
-        <location filename="../UI/EmailDialog.py" line="348"/>
+        <location filename="../UI/EmailDialog.ui" line="13"/>
         <source>Send bug report</source>
         <translation>Sende Fehlerbericht</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="366"/>
+        <location filename="../UI/EmailDialog.py" line="429"/>
         <source>Attach file</source>
         <translation>Datei anhängen</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="348"/>
+        <location filename="../UI/EmailDialog.py" line="414"/>
         <source>&lt;p&gt;Message could not be sent.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Nachricht konnte nicht gesendet werden.&lt;br&gt;Grund: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="302"/>
+        <location filename="../UI/EmailDialog.py" line="336"/>
         <source>Mail Server Password</source>
         <translation>Mail Server Kennwort</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="302"/>
+        <location filename="../UI/EmailDialog.py" line="336"/>
         <source>Enter your mail server password</source>
         <translation>Geben Sie Ihr Mailserver-Kennwort ein</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="320"/>
+        <location filename="../UI/EmailDialog.py" line="356"/>
         <source>&lt;p&gt;Authentication failed.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Autorisierung fehlgeschlagen.&lt;br&gt;Grund: {0}&lt;/p&gt;</translation>
     </message>
@@ -13645,12 +13783,12 @@
         <translation>Senden</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="147"/>
+        <location filename="../UI/EmailDialog.py" line="154"/>
         <source>Close dialog</source>
         <translation>Dialog schließen</translation>
     </message>
     <message>
-        <location filename="../UI/EmailDialog.py" line="147"/>
+        <location filename="../UI/EmailDialog.py" line="154"/>
         <source>Do you really want to close the dialog?</source>
         <translation>Soll der Dialog wirklich geschlossen werden?</translation>
     </message>
@@ -13679,61 +13817,81 @@
         <source>Send feature request</source>
         <translation>Sende Anfrage für neue Funktion</translation>
     </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="99"/>
+        <source>Google Mail API Help</source>
+        <translation>Google Mail API Hilfe</translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="171"/>
+        <source>&lt;p&gt;The Google Mail Client API is not installed. Use &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; to install it.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Das Google Mail Client API ist nicht installiert. Führe &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; aus, um es zu installieren.&lt;/p&gt;</translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="177"/>
+        <source>Gmail API Help</source>
+        <translation>Gmail API Hilfe</translation>
+    </message>
+    <message>
+        <location filename="../UI/EmailDialog.py" line="414"/>
+        <source>Send Message</source>
+        <translation>Nachricht senden</translation>
+    </message>
 </context>
 <context>
     <name>EmailPage</name>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="225"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="257"/>
         <source>Enter your password for accessing the mail server</source>
         <translation>Geben Sie das Kennwort zum Zugriff auf den Mailserver ein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="211"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="243"/>
         <source>Enter your mail server username</source>
         <translation>Geben Sie Ihren Mailserver-Nutzernamen ein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="170"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="202"/>
         <source>Signature:</source>
         <translation>Signatur:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="46"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="78"/>
         <source>Enter the address of your mail server</source>
         <translation>Gib die Adresse des E-Mail-Servers ein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="188"/>
         <source>Email address:</source>
         <translation>E-Mail-Adresse:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="180"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="212"/>
         <source>Enter your email signature</source>
         <translation>Gib die E-Mail-Signatur ein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="163"/>
-        <source>Enter your email address</source>
-        <translation>Gib die E-Mail-Adresse ein</translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="192"/>
-        <source>Select to authenticatate against the mail server</source>
-        <translation>Auswählen, wenn der Mailserver eine Autorisierung verlangt</translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="195"/>
+        <source>Enter your email address</source>
+        <translation>Gib die E-Mail-Adresse ein</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="224"/>
+        <source>Select to authenticatate against the mail server</source>
+        <translation>Auswählen, wenn der Mailserver eine Autorisierung verlangt</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="227"/>
         <source>Mail server needs authentication</source>
         <translation>Mailserver verlangt Autorisierung</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="204"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="236"/>
         <source>Username:</source>
         <translation>Nutzername:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="218"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="250"/>
         <source>Password:</source>
         <translation>Kennwort:</translation>
     </message>
@@ -13743,80 +13901,105 @@
         <translation>&lt;b&gt;E-Mail-Einstellungen&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="104"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="136"/>
         <source>Select to use TLS</source>
         <translation>Auswählen, um TLS zu verwenden</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="124"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/>
         <source>Enter the port of the mail server</source>
         <translation>Gibt den Port des E-Mail-Servers ein</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="39"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="71"/>
         <source>Outgoing mail server (SMTP):</source>
         <translation>Ausgangsmailserver (SMTP):</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="235"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="267"/>
         <source>Press to test the login data</source>
         <translation>Drücken, um die Anmeldedaten zu testen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="238"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="270"/>
         <source>Test Login</source>
         <translation>Anmeldung testen</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="241"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/>
         <source>Login Test</source>
         <translation>Anmeldetest</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="204"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="221"/>
         <source>The login test succeeded.</source>
         <translation>Der Anmeldetest war erfolgreich.</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="241"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/>
         <source>&lt;p&gt;The login test failed.&lt;br&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Anmeldetest ist fehlgeschlagen.&lt;br&gt;Ursache: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="53"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="85"/>
         <source>Encryption Method:</source>
         <translation>Verschlüsselungsmethode:</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="81"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="113"/>
         <source>Select to use no encryption</source>
         <translation>Auswählen, um keine Verschlüsselung zu verwenden</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="84"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="116"/>
         <source>None</source>
         <translation>keine</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="94"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="126"/>
         <source>Select to use SSL</source>
         <translation>Auswählen, um SSL zu verwenden</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="97"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="129"/>
         <source>SSL</source>
         <translation>SSL</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="107"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="139"/>
         <source>TLS</source>
         <translation>TLS</translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="117"/>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="149"/>
         <source>Port:</source>
         <translation>Port:</translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="37"/>
+        <source>Google Mail</source>
+        <translation>Google Mail</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="43"/>
+        <source>Use Google Mail with OAuth2 authentication</source>
+        <translation>Verwende Google Mail mit OAuth2 Authentisierung</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="50"/>
+        <source>&lt;b&gt;Note:&lt;/b&gt; Google Mail using SMTP should be configured below.</source>
+        <translation>&lt;b&gt;Hinweis:&lt;/b&gt; Google Mail über SMTP muss unten konfiguriert werden.</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="63"/>
+        <source>Standard Email</source>
+        <translation>Normale Email</translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="48"/>
+        <source>&lt;p&gt;The Google Mail Client API is not installed. Use &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; to install it.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Das Google Mail Client API ist nicht installiert. Führe &lt;code&gt;pip install --upgrade google-api-python-client&lt;/code&gt; aus, um es zu installieren.&lt;/p&gt;</translation>
+    </message>
 </context>
 <context>
     <name>EricAccessHandler</name>
@@ -14584,7 +14767,9 @@
         <source>
 {0} crashed.
 </source>
-        <translation>{0} ist abgestürzt.</translation>
+        <translation>
+{0} ist abgestürzt.
+</translation>
     </message>
 </context>
 <context>
@@ -15865,7 +16050,7 @@
     <message>
         <location filename="../UI/FindFileDialog.ui" line="279"/>
         <source>Search in open files only </source>
-        <translation>Suche nur in geöffneten Dateien</translation>
+        <translation>Suche nur in geöffneten Dateien </translation>
     </message>
     <message>
         <location filename="../UI/FindFileDialog.ui" line="282"/>
@@ -15950,7 +16135,7 @@
     <message>
         <location filename="../UI/FindFileNameDialog.ui" line="35"/>
         <source>Enter file name to search for </source>
-        <translation>Gib den zu suchenden Dateinamen ein</translation>
+        <translation>Gib den zu suchenden Dateinamen ein </translation>
     </message>
     <message>
         <location filename="../UI/FindFileNameDialog.ui" line="42"/>
@@ -17107,7 +17292,7 @@
     <message>
         <location filename="../Helpviewer/HelpBrowserWV.py" line="1362"/>
         <source>Show &amp;only this frame</source>
-        <translation>&amp;Nur diesen Rahmen anzeigen </translation>
+        <translation>&amp;Nur diesen Rahmen anzeigen</translation>
     </message>
     <message>
         <location filename="../Helpviewer/HelpBrowserWV.py" line="1365"/>
@@ -18182,7 +18367,7 @@
     <message>
         <location filename="../Preferences/ConfigurationPages/HelpWebBrowserPage.ui" line="548"/>
         <source> MB</source>
-        <translation>MB</translation>
+        <translation> MB</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/HelpWebBrowserPage.ui" line="616"/>
@@ -23642,52 +23827,52 @@
         <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="106"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="107"/>
         <source>Process Generation Error</source>
         <translation>Fehler beim Prozessstart</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="106"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="107"/>
         <source>The process {0} could not be started. Ensure, that it is in the search path.</source>
         <translation>Der Prozess {0} konnte nicht gestartet werden. Stellen Sie sicher, dass er sich im Suchpfad befindet.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="126"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="127"/>
         <source>There is no difference.</source>
         <translation>Es gibt keinen Unterschied.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="254"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="255"/>
         <source>Save Diff</source>
         <translation>Diff speichern</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="221"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="222"/>
         <source>Patch Files (*.diff)</source>
         <translation>Patchdateien (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="254"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="255"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;br&gt;Grund: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="238"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="239"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="97"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="98"/>
         <source>Patch Contents</source>
         <translation>Patchinhalt</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="145"/>
-        <source>&lt;Start&gt;</source>
-        <translation>&lt;Anfang&gt;</translation>
-    </message>
-    <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="146"/>
+        <source>&lt;Start&gt;</source>
+        <translation>&lt;Anfang&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgDiffDialog.py" line="147"/>
         <source>&lt;End&gt;</source>
         <translation>&lt;Ende&gt;</translation>
     </message>
@@ -23752,7 +23937,7 @@
 &lt;tr&gt;&lt;td&gt;%h&lt;/td&gt;&lt;td&gt;Kurzform des Changeset-Hashes (12 hexadezimale Zeichen)&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;%n&lt;/td&gt;&lt;td&gt;Sequenznummer mit führenden Nullen beginnend bei 1&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;%r&lt;/td&gt;&lt;td&gt;Revisionsnummer mit führenden Nullen&lt;/td&gt;&lt;/tr&gt;
-&lt;/table&gt;
+&lt;/table&gt;    
 </translation>
     </message>
     <message>
@@ -24963,7 +25148,7 @@
     <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2148"/>
         <source>Enter bookmark name for changeset &quot;{0}&quot;:</source>
-        <translation>Gib einen Lesezeichennamen für den Änderungssatz &quot;{0}&quot; ein: </translation>
+        <translation>Gib einen Lesezeichennamen für den Änderungssatz &quot;{0}&quot; ein:</translation>
     </message>
     <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2170"/>
@@ -24973,7 +25158,7 @@
     <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2170"/>
         <source>Select the bookmark to be moved  to changeset &quot;{0}&quot;:</source>
-        <translation>Wähle ein Lesezeichen aus, das zum Änderungssatz &quot;{0}&quot; verschoben werden soll: </translation>
+        <translation>Wähle ein Lesezeichen aus, das zum Änderungssatz &quot;{0}&quot; verschoben werden soll:</translation>
     </message>
     <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2113"/>
@@ -25103,37 +25288,37 @@
         <translation>Unterschiede</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2584"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2585"/>
         <source>Differences to Parent {0}</source>
         <translation>Unterschiede zu Vorgänger {0}</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2600"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2601"/>
         <source>Diff to Parent {0}{1}</source>
         <translation>Diff zu Vorgänger {0}{1}</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2625"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2626"/>
         <source>There is no difference.</source>
         <translation>Es gibt keinen Unterschied.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2768"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2769"/>
         <source>Save Diff</source>
         <translation>Diff speichern</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2735"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2736"/>
         <source>Patch Files (*.diff)</source>
         <translation>Patchdateien (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2752"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2753"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2768"/>
+        <location filename="../Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py" line="2769"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;br&gt;Grund: {1}&lt;/p&gt;</translation>
     </message>
@@ -27223,7 +27408,7 @@
     <message>
         <location filename="../Plugins/VcsPlugins/vcsMercurial/QueuesExtension/HgQueuesHeaderDialog.py" line="198"/>
         <source>Error: </source>
-        <translation>Fehler:</translation>
+        <translation>Fehler: </translation>
     </message>
 </context>
 <context>
@@ -32773,7 +32958,7 @@
     <message>
         <location filename="../Network/IRC/IrcChannelWidget.py" line="1449"/>
         <source> (Away)</source>
-        <translation>(Abwesend)</translation>
+        <translation> (Abwesend)</translation>
     </message>
     <message>
         <location filename="../Network/IRC/IrcChannelWidget.py" line="1452"/>
@@ -38267,7 +38452,7 @@
     <message>
         <location filename="../Helpviewer/OfflineStorage/OfflineStorageConfigDialog.ui" line="140"/>
         <source> MB</source>
-        <translation>MB</translation>
+        <translation> MB</translation>
     </message>
     <message>
         <location filename="../Helpviewer/OfflineStorage/OfflineStorageConfigDialog.ui" line="98"/>
@@ -39743,17 +39928,17 @@
         <translation>&lt;p&gt;Die angefragte Datei konnte nicht von {0} gedownloaded werden.&lt;/p&gt;&lt;p&gt;Fehler: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="567"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="573"/>
         <source>Stable</source>
         <translation>Stabil</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="574"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="580"/>
         <source>Unstable</source>
         <translation>Instabil</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="581"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="587"/>
         <source>Unknown</source>
         <translation>Unbekannt</translation>
     </message>
@@ -39793,32 +39978,32 @@
         <translation>Downloadswartung</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="595"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="601"/>
         <source>up-to-date</source>
         <translation>aktuell</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="598"/>
-        <source>new download available</source>
-        <translation>neuer Download verfügbar</translation>
-    </message>
-    <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="601"/>
-        <source>update installable</source>
-        <translation>Aktualisierung installierbar</translation>
-    </message>
-    <message>
         <location filename="../PluginManager/PluginRepositoryDialog.py" line="604"/>
+        <source>new download available</source>
+        <translation>neuer Download verfügbar</translation>
+    </message>
+    <message>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="607"/>
+        <source>update installable</source>
+        <translation>Aktualisierung installierbar</translation>
+    </message>
+    <message>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="610"/>
         <source>updated download available</source>
         <translation>aktualisiertes Download verfügbar</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="883"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="889"/>
         <source>Cleanup of Plugin Downloads</source>
         <translation>Wartung der Plugin Downloads</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="883"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="889"/>
         <source>&lt;p&gt;The plugin download &lt;b&gt;{0}&lt;/b&gt; could not be deleted.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Plugindatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelöscht werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
@@ -39841,17 +40026,17 @@
 <context>
     <name>PluginRepositoryWindow</name>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>Process Generation Error</source>
         <translation>Fehler beim Prozessstart</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>&lt;p&gt;Could not start the process.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Prozess konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass er als &lt;b&gt;{0}&lt;/b&gt; verfügbar ist.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../PluginManager/PluginRepositoryDialog.py" line="835"/>
+        <location filename="../PluginManager/PluginRepositoryDialog.py" line="841"/>
         <source>OK</source>
         <translation>OK</translation>
     </message>
@@ -39925,27 +40110,27 @@
 <context>
     <name>Preferences</name>
     <message>
-        <location filename="../Preferences/__init__.py" line="1551"/>
+        <location filename="../Preferences/__init__.py" line="1564"/>
         <source>Export Preferences</source>
         <translation>Einstellungen exportieren</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1579"/>
+        <location filename="../Preferences/__init__.py" line="1592"/>
         <source>Import Preferences</source>
         <translation>Einstellungen importieren</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1579"/>
+        <location filename="../Preferences/__init__.py" line="1592"/>
         <source>Properties File (*.ini);;All Files (*)</source>
         <translation>Properties-Dateien (*.ini);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1681"/>
+        <location filename="../Preferences/__init__.py" line="1694"/>
         <source>Select Python{0} Interpreter</source>
         <translation>Wähle den Python{0}-Interpreter</translation>
     </message>
     <message>
-        <location filename="../Preferences/__init__.py" line="1681"/>
+        <location filename="../Preferences/__init__.py" line="1694"/>
         <source>Select the Python{0} interpreter to be used:</source>
         <translation>Wähle den zu verwendenden Python{0}-Interpreter aus:</translation>
     </message>
@@ -40219,7 +40404,7 @@
     <message>
         <location filename="../Preferences/ConfigurationPages/PrinterPage.ui" line="182"/>
         <source>Select the printer resolution </source>
-        <translation>Wähle die Druckerauflösung</translation>
+        <translation>Wähle die Druckerauflösung </translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/PrinterPage.ui" line="188"/>
@@ -42508,7 +42693,7 @@
     <message>
         <location filename="../Preferences/ConfigurationPages/ProjectPage.ui" line="272"/>
         <source>Select to rescan the project tasks when a project is opened</source>
-        <translation>Auswählen, um nach dem Öffnen eines Projektes Projektaufgaben neu zu ermitteln </translation>
+        <translation>Auswählen, um nach dem Öffnen eines Projektes Projektaufgaben neu zu ermitteln</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/ProjectPage.ui" line="275"/>
@@ -42935,27 +43120,27 @@
         <translation>Übersetzung hinzufügen...</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="959"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
         <source>Translation file generation</source>
         <translation>Übersetzungsdatei erzeugen</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="947"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="937"/>
         <source>The generation of the translation files (*.ts) was successful.</source>
         <translation>Das Erzeugen der Übersetzungsdateien (*.ts) war erfolgreich.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1152"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1142"/>
         <source>Translation file release</source>
         <translation>Übersetzungsdatei freigeben</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1136"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1126"/>
         <source>The release of the translation files (*.qm) was successful.</source>
         <translation>Die Freigabe der Übersetzungsdatei (*.qm) war erfolgreich.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1152"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1142"/>
         <source>The release of the translation files (*.qm) has failed.</source>
         <translation>Die Freigabe der Übersetzungsdatei (*.qm) ist fehlgeschlagen.</translation>
     </message>
@@ -42965,12 +43150,12 @@
         <translation>Mit Qt Linguist öffnen</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1238"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1228"/>
         <source>Process Generation Error</source>
         <translation>Fehler beim Prozessstart</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="831"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="821"/>
         <source>Write temporary project file</source>
         <translation>Temporäre Projektdatei schreiben</translation>
     </message>
@@ -43010,12 +43195,12 @@
         <translation>Alle Übersetzungen freigeben</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="831"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="821"/>
         <source>&lt;p&gt;The temporary project file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die temporäre Projektdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1238"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1228"/>
         <source>&lt;p&gt;Could not start lrelease.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;lrelease konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass es als &lt;b&gt;{0}&lt;/b&gt; verfügbar ist.&lt;/p&gt;</translation>
     </message>
@@ -43045,7 +43230,7 @@
         <translation>Keine Überstzungsdateien (*.ts) ausgewählt.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="1068"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="1058"/>
         <source>Could not start {0}.&lt;br&gt;Ensure that it is in the search path.</source>
         <translation>{0} konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass es sich im Suchpfad befindet.</translation>
     </message>
@@ -43080,12 +43265,12 @@
         <translation>Öffnen</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="955"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="945"/>
         <source> The process has crashed.</source>
         <translation> Der Prouess ist abgestürzt.</translation>
     </message>
     <message>
-        <location filename="../Project/ProjectTranslationsBrowser.py" line="959"/>
+        <location filename="../Project/ProjectTranslationsBrowser.py" line="949"/>
         <source>The generation of the translation files (*.ts) has failed.{0}</source>
         <translation>Das Erzeugen der Übersetzungsdateien (*.ts) ist fehlgeschlagen.{0}</translation>
     </message>
@@ -49701,7 +49886,8 @@
         <translation>&lt;b&gt;Suchen und Ersetzen&lt;/b&gt;
 &lt;p&gt;Dieser Dialog erlaubt es, nach einem Text zu suchen und ihn durch einen anderen zu ersetzen. 
 Durch Anwählen der verschiedenen Auswahlfelder kann die Suche eingegrenzt werden. Die Suchzeichenkette 
-kann ein regulärer Ausdruck sein. In einem regulären Ausdruck können folgende Spezialzeichen verwendet werden:&lt;/p&gt;</translation>
+kann ein regulärer Ausdruck sein. In einem regulären Ausdruck können folgende Spezialzeichen verwendet werden:&lt;/p&gt;
+</translation>
     </message>
     <message>
         <location filename="../QScintilla/SearchReplaceWidget.py" line="69"/>
@@ -49713,7 +49899,8 @@
         <translation>&lt;b&gt;Suchen&lt;/b&gt;
 &lt;p&gt;Dieser Dialog erlaubt es, nach einem Text zu suchen. 
 Durch Anwählen der verschiedenen Auswahlfelder kann die Suche eingegrenzt werden. Die Suchzeichenkette 
-kann ein regulärer Ausdruck sein. In einem regulären Ausdruck können folgende Spezialzeichen verwendet werden:&lt;/p&gt;</translation>
+kann ein regulärer Ausdruck sein. In einem regulären Ausdruck können folgende Spezialzeichen verwendet werden:&lt;/p&gt;
+</translation>
     </message>
     <message>
         <location filename="../QScintilla/SearchReplaceWidget.py" line="80"/>
@@ -51440,7 +51627,7 @@
     <message>
         <location filename="../Snapshot/SnapWidget.ui" line="89"/>
         <source> No delay</source>
-        <translation>Keine Verzögerung</translation>
+        <translation> Keine Verzögerung</translation>
     </message>
     <message>
         <location filename="../Snapshot/SnapWidget.ui" line="92"/>
@@ -54103,27 +54290,27 @@
 <context>
     <name>SvnDiffDialog</name>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="171"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="172"/>
         <source>Subversion Diff</source>
         <translation>Subversion-Diff</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="212"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="213"/>
         <source>There is no difference.</source>
         <translation>Es gibt keinen Unterschied.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="372"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="373"/>
         <source>Patch Files (*.diff)</source>
         <translation>Patchdateien (*.diff)</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="405"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="406"/>
         <source>Save Diff</source>
         <translation>Diff speichern</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="405"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="406"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; could not be saved.&lt;br&gt;Reason: {1}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gespeichert werden.&lt;br&gt;Grund: {1}&lt;/p&gt;</translation>
     </message>
@@ -54183,39 +54370,39 @@
         <translation>Alt+P</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="192"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="193"/>
         <source>Process Generation Error</source>
         <translation>Fehler beim Prozessstart</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="171"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="172"/>
         <source>There is no temporary directory available.</source>
         <translation>Es steht kein temporäres Verzeichnis zur verfügung.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="214"/>
+        <location filename="../Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py" line="215"/>
         <source>Processing file &apos;{0}&apos;...
 </source>
         <translation>Bearbeite Datei „{0}“...
 </translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="192"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="193"/>
         <source>The process {0} could not be started. Ensure, that it is in the search path.</source>
         <translation>Der Prozess {0} konnte nicht gestartet werden. Stellen Sie sicher, dass er sich im Suchpfad befindet.</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="389"/>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="390"/>
         <source>&lt;p&gt;The patch file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die Patchdatei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="225"/>
-        <source>&lt;Start&gt;</source>
-        <translation>&lt;Anfang&gt;</translation>
-    </message>
-    <message>
         <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="226"/>
+        <source>&lt;Start&gt;</source>
+        <translation>&lt;Anfang&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Plugins/VcsPlugins/vcsSubversion/SvnDiffDialog.py" line="227"/>
         <source>&lt;End&gt;</source>
         <translation>&lt;Ende&gt;</translation>
     </message>
@@ -59778,24 +59965,6 @@
     </message>
 </context>
 <context>
-    <name>TemplateHelpDialog</name>
-    <message>
-        <location filename="../Templates/TemplateHelpDialog.ui" line="14"/>
-        <source>Template Help</source>
-        <translation>Hilfe zu Vorlagen</translation>
-    </message>
-    <message>
-        <location filename="../Templates/TemplateHelpDialog.ui" line="23"/>
-        <source>&lt;b&gt;Template Help&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Hilfe zu Vorlagen&lt;/b&gt;</translation>
-    </message>
-    <message>
-        <location filename="../Templates/TemplateHelpDialog.py" line="33"/>
-        <source>&lt;p&gt;To use variables in a template, you just have to enclose the variablename with $-characters. When you use the template, you will then be asked for a value for this variable.&lt;/p&gt;&lt;p&gt;Example template: This is a $VAR$&lt;/p&gt;&lt;p&gt;When you use this template you will be prompted for a value for the variable $VAR$. Any occurrences of $VAR$ will then be replaced with whatever you&apos;ve entered.&lt;/p&gt;&lt;p&gt;If you need a single $-character in a template, which is not used to enclose a variable, type $$(two dollar characters) instead. They will automatically be replaced with a single $-character when you use the template.&lt;/p&gt;&lt;p&gt;If you want a variables contents to be treated specially, the variablename must be followed by a &apos;:&apos; and one formatting specifier (e.g. $VAR:ml$). The supported specifiers are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Specifies a multiline formatting. The first line of the variable contents is prefixed with the string occurring before the variable on the same line of the template. All other lines are prefixed by the same amount of whitespace as the line containing the variable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Specifies a repeated line formatting. Each line of the variable contents is prefixed with the string occuring before the variable on the same line of the template.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;The following predefined variables may be used in a template:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;today&apos;s date in ISO format (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;the current year&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;the name of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;the path of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;full path of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;full path of the parent directory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;the current file name (without directory)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;like &lt;i&gt;file_name&lt;/i&gt;, but without extension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;the extension of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;the currently selected text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Sets insertion point for cursor after template is inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;the text of the clipboard&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you want to change the default delimiter to anything different, please use the configuration dialog to do so.&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Um Variablen in einer Vorlage zu verwenden, muss der Variablenname mit einem $-Zeichen umschlossen werden. Wenn die Vorlage angewandt wird, wird nach einem Wert für diese Variable gefragt.&lt;/p&gt;&lt;p&gt;Beispiel: Dies ist eine $Variable$&lt;/p&gt;&lt;p&gt;Wenn diese Vorlage angewandt wird, wird nach einem Wert für die Variable $Variable$ gefragt. Jedes Vorkommen von $Variable$ wird dann durch den eingegebenen Text ersetzt.&lt;/p&gt;&lt;p&gt;Wird in der Vorlage ein einzelnes $-Zeichen, das keine Variable umschließt, benötigt, so muss dies als $$ (zwei Dollar Zeichen) geschrieben werden. Bei der Anwendung der Vorlage wird dies automatisch zu einem $-Zeichen.&lt;/p&gt;&lt;p&gt;Soll der Wert einer Variablen speziell behandelt werden, so muss dem Variablennamen ein „:“ und eine Formatangabe folgen (z.B. $Variable:ml$). Die unterstützten Formatangaben sind:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Gibt ein mehrzeiliges Format an. Der ersten Zeile des Variablenwertes wird die Zeichenkette vor der Variablen der gleichen Zeile in der Vorlage vorangestellt. Allen anderen wird soviel Leerraum vorangestellt, wie die Zeile der Variablen.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Gibt ein wiederholendes Format an. Jede Zeile des Variablenwertes wird die Zeichenkette vor der Variablen der gleichen Zeile in der Vorlage vorangestellt.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Die folgenden vordefinierten Variablen können in einer Vorlage verwendet werden:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;das aktuelle Datum im ISO-Format (JJJJ-MM-TT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;das aktuelle Jahr&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;der Name des Projektes (falls vorhanden)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;der Pfad des Projektes (falls vorhanden)/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;voller Pfadname der aktuellen Datei&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;voller Pfadname des Verzeichnisses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;Dateiname der aktuellen Datei (ohne Verzeichnis)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;wie &lt;i&gt;file_name&lt;/i&gt;, aber ohne Erweiterung&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;die Erweiterung der aktuellen Datei&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;der aktuell ausgewählte Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Setzt den Cursor an diese Stelle nachdem das Template eingefügt wurde.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Setzt die Auswahl nachdem das Template eingefügt wurde (verwendet zusammen mit „select_end“).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Setzt die Auswahl nachdem das Template eingefügt wurde (verwendet zusammen mit „select_start“).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;der Text der Zwischenablage&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Soll das einen Variablennamen umschließende Zeichen geändert werden, so kann dies im Konfigurationsdialog geschehen.&lt;/p&gt;</translation>
-    </message>
-</context>
-<context>
     <name>TemplateMultipleVariablesDialog</name>
     <message>
         <location filename="../Templates/TemplateMultipleVariablesDialog.py" line="106"/>
@@ -59906,6 +60075,21 @@
         <source>&lt;b&gt;Template name&lt;b&gt;&lt;p&gt;Enter the name of the template. Templates may be autocompleted upon this name. In order to support autocompletion. the template name must only consist of letters (a-z and A-Z), digits (0-9) and underscores (_).&lt;/p&gt;</source>
         <translation>&lt;b&gt;Vorlagenname&lt;/b&gt;&lt;p&gt;Gib den Namen der Vorlage ein. Vorlagen werden basierend auf ihrem Namen vervollständigt. Um dies zu unterstützen, darf der Name nur Buchstaben (a-z und A-Z), Ziffern (0-9) und Unterstriche (_) enthalten.&lt;/p&gt;</translation>
     </message>
+    <message>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
+        <source>Template Help</source>
+        <translation>Hilfe zu Vorlagen</translation>
+    </message>
+    <message>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
+        <source>&lt;b&gt;Template Help&lt;/b&gt;</source>
+        <translation>&lt;b&gt;Hilfe zu Vorlagen&lt;/b&gt;</translation>
+    </message>
+    <message>
+        <location filename="../Templates/TemplatePropertiesDialog.py" line="117"/>
+        <source>&lt;p&gt;To use variables in a template, you just have to enclose the variablename with $-characters. When you use the template, you will then be asked for a value for this variable.&lt;/p&gt;&lt;p&gt;Example template: This is a $VAR$&lt;/p&gt;&lt;p&gt;When you use this template you will be prompted for a value for the variable $VAR$. Any occurrences of $VAR$ will then be replaced with whatever you&apos;ve entered.&lt;/p&gt;&lt;p&gt;If you need a single $-character in a template, which is not used to enclose a variable, type $$(two dollar characters) instead. They will automatically be replaced with a single $-character when you use the template.&lt;/p&gt;&lt;p&gt;If you want a variables contents to be treated specially, the variablename must be followed by a &apos;: and one formatting specifier (e.g. $VAR:ml$). The supported specifiers are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Specifies a multiline formatting. The first line of the variable contents is prefixed with the string occurring before the variable on the same line of the template. All other lines are prefixed by the same amount of whitespace as the line containing the variable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Specifies a repeated line formatting. Each line of the variable contents is prefixed with the string occuring before the variable on the same line of the template.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;The following predefined variables may be used in a template:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;today&apos;s date in ISO format (YYYY-MM-DD)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;the current year&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;the name of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;the path of the project (if any)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;full path of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;full path of the parent directory&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;the current file name (without directory)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;like &lt;i&gt;file_name&lt;/i&gt;, but without extension&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;the extension of the current file&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;the currently selected text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Sets insertion point for cursor after template is inserted.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_end&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Sets span of selected text in template after template is inserted (used together with &apos;select_start&apos;).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;the text of the clipboard&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you want to change the default delimiter to anything different, please use the configuration dialog to do so.&lt;/p&gt;</source>
+        <translation>&lt;p&gt;Um Variablen in einer Vorlage zu verwenden, muss der Variablenname mit einem $-Zeichen umschlossen werden. Wenn die Vorlage angewandt wird, wird nach einem Wert für diese Variable gefragt.&lt;/p&gt;&lt;p&gt;Beispiel: Dies ist eine $Variable$&lt;/p&gt;&lt;p&gt;Wenn diese Vorlage angewandt wird, wird nach einem Wert für die Variable $Variable$ gefragt. Jedes Vorkommen von $Variable$ wird dann durch den eingegebenen Text ersetzt.&lt;/p&gt;&lt;p&gt;Wird in der Vorlage ein einzelnes $-Zeichen, das keine Variable umschließt, benötigt, so muss dies als $$ (zwei Dollar Zeichen) geschrieben werden. Bei der Anwendung der Vorlage wird dies automatisch zu einem $-Zeichen.&lt;/p&gt;&lt;p&gt;Soll der Wert einer Variablen speziell behandelt werden, so muss dem Variablennamen ein „:“ und eine Formatangabe folgen (z.B. $Variable:ml$). Die unterstützten Formatangaben sind:&lt;table&gt;&lt;tr&gt;&lt;td&gt;ml&lt;/td&gt;&lt;td&gt;Gibt ein mehrzeiliges Format an. Der ersten Zeile des Variablenwertes wird die Zeichenkette vor der Variablen der gleichen Zeile in der Vorlage vorangestellt. Allen anderen wird soviel Leerraum vorangestellt, wie die Zeile der Variablen.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rl&lt;/td&gt;&lt;td&gt;Gibt ein wiederholendes Format an. Jede Zeile des Variablenwertes wird die Zeichenkette vor der Variablen der gleichen Zeile in der Vorlage vorangestellt.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Die folgenden vordefinierten Variablen können in einer Vorlage verwendet werden:&lt;table&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;das aktuelle Datum im ISO-Format (JJJJ-MM-TT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;year&lt;/td&gt;&lt;td&gt;das aktuelle Jahr&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_name&lt;/td&gt;&lt;td&gt;der Name des Projektes (falls vorhanden)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;project_path&lt;/td&gt;&lt;td&gt;der Pfad des Projektes (falls vorhanden)/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;path_name&lt;/td&gt;&lt;td&gt;voller Pfadname der aktuellen Datei&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;dir_name&lt;/td&gt;&lt;td&gt;voller Pfadname des Verzeichnisses&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;file_name&lt;/td&gt;&lt;td&gt;Dateiname der aktuellen Datei (ohne Verzeichnis)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;base_name&lt;/td&gt;&lt;td&gt;wie &lt;i&gt;file_name&lt;/i&gt;, aber ohne Erweiterung&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ext&lt;/td&gt;&lt;td&gt;die Erweiterung der aktuellen Datei&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cur_select&lt;/td&gt;&lt;td&gt;der aktuell ausgewählte Text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;insertion&lt;/td&gt;&lt;td&gt;Setzt den Cursor an diese Stelle nachdem das Template eingefügt wurde.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_start&lt;/td&gt;&lt;td&gt;Setzt die Auswahl nachdem das Template eingefügt wurde (verwendet zusammen mit „select_end“).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;select_end&lt;/td&gt;&lt;td&gt;Setzt die Auswahl nachdem das Template eingefügt wurde (verwendet zusammen mit „select_start“).&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;clipboard&lt;/td&gt;&lt;td&gt;der Text der Zwischenablage&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;Soll das einen Variablennamen umschließende Zeichen geändert werden, so kann dies im Konfigurationsdialog geschehen.&lt;/p&gt;</translation>
+    </message>
 </context>
 <context>
     <name>TemplateSingleVariableDialog</name>
@@ -61817,7 +62001,7 @@
     <message>
         <location filename="../PyUnit/UnittestDialog.py" line="550"/>
         <source>    Skipped: {0}</source>
-        <translation>   Übersprungen: {0}</translation>
+        <translation>    Übersprungen: {0}</translation>
     </message>
     <message>
         <location filename="../PyUnit/UnittestDialog.py" line="565"/>
@@ -62420,7 +62604,7 @@
     <message>
         <location filename="../UI/UserInterface.py" line="1348"/>
         <source>Activate the edit view profile</source>
-        <translation>Aktiviert das Editieren-Ansichtsprofil </translation>
+        <translation>Aktiviert das Editieren-Ansichtsprofil</translation>
     </message>
     <message>
         <location filename="../UI/UserInterface.py" line="1350"/>
@@ -62818,12 +63002,12 @@
         <translation>&lt;p&gt;Der PyQt4-Dokumentations-Startpunkt ist nicht konfiguriert.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6578"/>
+        <location filename="../UI/UserInterface.py" line="6589"/>
         <source>Error during updates check</source>
         <translation>Fehler während der Aktualisierungsprüfung</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6558"/>
+        <location filename="../UI/UserInterface.py" line="6569"/>
         <source>Update available</source>
         <translation>Aktualisierung verfügbar</translation>
     </message>
@@ -62833,7 +63017,7 @@
         <translation>&lt;h3&gt;Versionsnummern&lt;/h3&gt;&lt;table&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6616"/>
+        <location filename="../UI/UserInterface.py" line="6627"/>
         <source>&lt;/table&gt;</source>
         <translation>&lt;/table&gt;</translation>
     </message>
@@ -62858,7 +63042,7 @@
         <translation>Zeige externe &amp;Werkzeuge</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6578"/>
+        <location filename="../UI/UserInterface.py" line="6589"/>
         <source>Could not perform updates check.</source>
         <translation>Konnte keine Aktualisierungsprüfung durchführen.</translation>
     </message>
@@ -62873,7 +63057,7 @@
         <translation>Prüfe Host {0}</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6643"/>
+        <location filename="../UI/UserInterface.py" line="6654"/>
         <source>First time usage</source>
         <translation>Erstmalige Nutzung</translation>
     </message>
@@ -62968,7 +63152,7 @@
         <translation>Zeige die verfügbaren eric-Versionen</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6602"/>
+        <location filename="../UI/UserInterface.py" line="6613"/>
         <source>&lt;h3&gt;Available versions&lt;/h3&gt;&lt;table&gt;</source>
         <translation>&lt;h3&gt;Verfügbare Versionen&lt;/h3&gt;&lt;table&gt;</translation>
     </message>
@@ -63534,7 +63718,7 @@
         <translation>&lt;p&gt;Die Bildschirmfotoanwendung konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass sie als &lt;b&gt;{0}&lt;/b&gt; verfügbar ist.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6662"/>
+        <location filename="../UI/UserInterface.py" line="6673"/>
         <source>Select Workspace Directory</source>
         <translation>Wähle Arbeitsverzeichnis</translation>
     </message>
@@ -64040,22 +64224,22 @@
         <translation>Qt v.3 wird von eric6 nicht unterstützt.</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6558"/>
+        <location filename="../UI/UserInterface.py" line="6569"/>
         <source>The update to &lt;b&gt;{0}&lt;/b&gt; of eric6 is available at &lt;b&gt;{1}&lt;/b&gt;. Would you like to get it?</source>
         <translation>Eine Aktualisierung auf &lt;b&gt;{0}&lt;/b&gt; von Eric6 ist unter &lt;b&gt;{1}&lt;/b&gt; verfügbar. Wollen Sie sie laden?</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6571"/>
+        <location filename="../UI/UserInterface.py" line="6582"/>
         <source>Eric6 is up to date</source>
         <translation>Eric6 ist aktuell</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6571"/>
+        <location filename="../UI/UserInterface.py" line="6582"/>
         <source>You are using the latest version of eric6</source>
         <translation>Sie verwenden die aktuellste Version von eric6</translation>
     </message>
     <message>
-        <location filename="../UI/UserInterface.py" line="6643"/>
+        <location filename="../UI/UserInterface.py" line="6654"/>
         <source>eric6 has not been configured yet. The configuration dialog will be started.</source>
         <translation>eric6 wurde noch nicht konfiguriert. Der Konfigurationsdialog wird nun gestartet.</translation>
     </message>
@@ -64159,6 +64343,16 @@
         <source>Initializing Plugins...</source>
         <translation>Initialisiere Plugins...</translation>
     </message>
+    <message>
+        <location filename="../UI/UserInterface.py" line="6557"/>
+        <source>Update Check</source>
+        <translation>Aktualisierungsprüfung</translation>
+    </message>
+    <message>
+        <location filename="../UI/UserInterface.py" line="6557"/>
+        <source>You installed eric directly from the source code. There is no possibility to check for the availability of an update.</source>
+        <translation>Eric wurde direkt von vom Quelltext installiert. Eine Aktualitätsprüfung ist daher nicht möglich.</translation>
+    </message>
 </context>
 <context>
     <name>UserPropertiesDialog</name>
@@ -69755,7 +69949,7 @@
     <message>
         <location filename="../Preferences/ConfigurationPages/WebBrowserPage.ui" line="113"/>
         <source>Select to enable screen capture support</source>
-        <translation>Auswählen, um die Screen Capture Unterstützung zu aktivieren </translation>
+        <translation>Auswählen, um die Screen Capture Unterstützung zu aktivieren</translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/WebBrowserPage.ui" line="116"/>
@@ -70332,7 +70526,7 @@
 <context>
     <name>WebBrowserWindow</name>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3417"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3422"/>
         <source>eric6 Web Browser</source>
         <translation>eric6 Web-Browser</translation>
     </message>
@@ -70409,7 +70603,7 @@
         <translation>&lt;b&gt;Neues Fenster&lt;/b&gt;&lt;p&gt;Dies öffnet ein neues Web-Browser Fenster im aktuellen Privatsphärenmodus.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>New Private Window</source>
         <translation>Neues Privates Fenster</translation>
     </message>
@@ -70435,7 +70629,7 @@
         <translation>&lt;b&gt;Neues Privates Fenster&lt;/b&gt;&lt;p&gt;Dies startet ein neues privates Web-Browser Fenster durch Starten einer neuen Web-Browser Instanz im Privatmodus.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2459"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2464"/>
         <source>Open File</source>
         <translation>Datei öffnen</translation>
     </message>
@@ -70567,7 +70761,7 @@
         <translation>&lt;b&gt;Lesezeichen exportieren&lt;/b&gt;&lt;p&gt;Exportiert die Lesezeichen in eine Datei.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2084"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2089"/>
         <source>Print</source>
         <translation>Drucken</translation>
     </message>
@@ -71916,97 +72110,97 @@
         <translation>&amp;Datei</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1921"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1922"/>
         <source>&amp;Edit</source>
         <translation>&amp;Bearbeiten</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2139"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2144"/>
         <source>&amp;View</source>
         <translation>&amp;Ansicht</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1947"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1949"/>
         <source>Text Encoding</source>
         <translation>Zeichenkodierung</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1958"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1961"/>
         <source>H&amp;istory</source>
         <translation>&amp;Chronik</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1974"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1978"/>
         <source>&amp;Bookmarks</source>
         <translation>&amp;Lesezeichen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="1990"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="1994"/>
         <source>&amp;Settings</source>
         <translation>&amp;Einstellungen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2016"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2020"/>
         <source>Global User Agent</source>
         <translation>Globaler User Agent</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2169"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2174"/>
         <source>&amp;Tools</source>
         <translation>&amp;Werkzeuge</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2057"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2061"/>
         <source>&amp;Help</source>
         <translation>&amp;Hilfe</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2193"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2198"/>
         <source>File</source>
         <translation>Datei</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2225"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2230"/>
         <source>Edit</source>
         <translation>Bearbeiten</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2238"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2243"/>
         <source>View</source>
         <translation>Ansicht</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2248"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2253"/>
         <source>Find</source>
         <translation>Suchen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2257"/>
-        <source>Filter</source>
-        <translation>Filter</translation>
-    </message>
-    <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="2262"/>
+        <source>Filter</source>
+        <translation>Filter</translation>
+    </message>
+    <message>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2267"/>
         <source>Filtered by: </source>
         <translation>Filter: </translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2270"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2275"/>
         <source>Settings</source>
         <translation>Einstellungen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2282"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2287"/>
         <source>Tools</source>
         <translation>Werkzeuge</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2291"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2296"/>
         <source>Help</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2298"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2303"/>
         <source>VirusTotal</source>
         <translation>VirusTotal</translation>
     </message>
@@ -72016,114 +72210,114 @@
         <translation>Aktuelle Seite prüfen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4476"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4481"/>
         <source>IP Address Report</source>
         <translation>IP Adressenbericht</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4486"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4491"/>
         <source>Domain Report</source>
         <translation>Domänenbericht</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>&lt;p&gt;Could not start the process.&lt;br&gt;Ensure that it is available as &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
         <translation>&lt;p&gt;Der Prozess konnte nicht gestartet werden.&lt;br&gt;Stellen Sie sicher, dass er als &lt;b&gt;{0}&lt;/b&gt; verfügbar ist.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2426"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2431"/>
         <source>OK</source>
         <translation>OK</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2510"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2515"/>
         <source>&lt;b&gt;eric6 Web Browser - {0}&lt;/b&gt;&lt;p&gt;The eric6 Web Browser is a combined help file and HTML browser. It is part of the eric6 development toolset.&lt;/p&gt;&lt;p&gt;It is based on QtWebEngine {1} and Chrome {2}.&lt;/p&gt;</source>
         <translation>&lt;b&gt;eric6 Web-Browser – {0}&lt;/b&gt;&lt;p&gt;Der eric6 Web-Browser ist eine kombinierte Anzeige für Hilfe- und HTML-Dateien. Er ist Bestandteil der eric6-Entwicklungsumgebung.&lt;/p&gt;&lt;p&gt;Er basiert auf QtWebEngine {1} und Chrome {2}.&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2634"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2639"/>
         <source>Saved Tabs</source>
         <translation>Gesicherte Tabs</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3234"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3239"/>
         <source>Could not find an associated content.</source>
         <translation>Konnte keinen zugehörigen Inhalt finden.</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3337"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3342"/>
         <source>Updating search index</source>
         <translation>Aktualisiere Suchindex</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3407"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3412"/>
         <source>Looking for Documentation...</source>
         <translation>Suche nach Dokumentation...</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3442"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3447"/>
         <source>Unfiltered</source>
         <translation>Ungefiltert</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="3461"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="3466"/>
         <source>Help Engine</source>
         <translation>Hilfe</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4014"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4019"/>
         <source>ISO</source>
         <translation>ISO</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4018"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4023"/>
         <source>Windows</source>
         <translation>Windows</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4020"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4025"/>
         <source>ISCII</source>
         <translation>ISCII</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4016"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4021"/>
         <source>Unicode</source>
         <translation>Unicode</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4024"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4029"/>
         <source>Other</source>
         <translation>Sonstige</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4022"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4027"/>
         <source>IBM</source>
         <translation>IBM</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4441"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4446"/>
         <source>VirusTotal Scan</source>
         <translation>VirusTotal-Prüfung</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4441"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4446"/>
         <source>&lt;p&gt;The VirusTotal scan could not be scheduled.&lt;p&gt;
 &lt;p&gt;Reason: {0}&lt;/p&gt;</source>
         <translation>&lt;p&gt;Die VirusTotal-Prüfung konnte nicht beauftragt werden.&lt;p&gt;
 &lt;p&gt;Ursache: {0}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4467"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4472"/>
         <source>Enter a valid IPv4 address in dotted quad notation:</source>
         <translation>Gib eine gültige IPv4 Adresse in Vierpunktnotation ein:</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4476"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4481"/>
         <source>The given IP address is not in dotted quad notation.</source>
         <translation>Die eingegebene IP Adresse ist nicht in Vierpunktnotation.</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4486"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4491"/>
         <source>Enter a valid domain name:</source>
         <translation>Gib einen gültigen Domänennamen ein:</translation>
     </message>
@@ -72195,7 +72389,7 @@
         <translation>Alt+Ctrl+A</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2459"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2464"/>
         <source>HTML Files (*.html *.htm *.mhtml *.mht);;PDF Files (*.pdf);;CHM Files (*.chm);;All Files (*)</source>
         <translation>Hilfedateien (*.html *.htm *.mhtml *.mht);;PDF-Dateien (*.pdf);;CHM Dateien (*.chm);;Alle Dateien (*)</translation>
     </message>
@@ -72210,64 +72404,65 @@
         <translation>Meta+Ctrl+F</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2175"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2180"/>
         <source>&amp;VirusTotal</source>
         <translation>&amp;VirusTotal</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2141"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2146"/>
         <source>&amp;Windows</source>
         <translation>&amp;Fenster</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2051"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2055"/>
         <source>&amp;Toolbars</source>
         <translation>&amp;Werkzeugleisten</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2077"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2082"/>
         <source>Save</source>
         <translation>Speichern</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="2097"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="2102"/>
         <source>Show All History...</source>
         <translation>Chronik anzeigen...</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4049"/>
-        <source>Menu Bar</source>
-        <translation>Menüleiste</translation>
-    </message>
-    <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="4054"/>
-        <source>Bookmarks</source>
-        <translation>Lesezeichen</translation>
+        <source>Menu Bar</source>
+        <translation>Menüleiste</translation>
     </message>
     <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="4059"/>
+        <source>Bookmarks</source>
+        <translation>Lesezeichen</translation>
+    </message>
+    <message>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4064"/>
         <source>Status Bar</source>
         <translation>Statusleiste</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4073"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4078"/>
         <source>&amp;Show all</source>
         <translation>Alle an&amp;zeigen</translation>
     </message>
     <message>
-        <location filename="../WebBrowser/WebBrowserWindow.py" line="4075"/>
+        <location filename="../WebBrowser/WebBrowserWindow.py" line="4080"/>
         <source>&amp;Hide all</source>
         <translation>Alle &amp;ausblenden</translation>
     </message>
     <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="830"/>
         <source>Send Page Link</source>
-        <translation>Link der Seite verschicken</translation>
+        <translation>
+        </translation>
     </message>
     <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="835"/>
         <source>Send the link of the current page via email</source>
-        <translation>Versende den Link der aktuellen Seite per Email </translation>
+        <translation>Versende den Link der aktuellen Seite per Email</translation>
     </message>
     <message>
         <location filename="../WebBrowser/WebBrowserWindow.py" line="837"/>
--- a/i18n/eric6_empty.ts	Tue Jun 06 19:52:41 2017 +0200
+++ b/i18n/eric6_empty.ts	Wed Jun 28 19:14:32 2017 +0200
@@ -1320,16 +1320,11 @@
     </message>
     <message>
         <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="242"/>
-        <source>&lt;b&gt;Note&lt;/b&gt;: Enter a value of 0 to use the system default value.</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="252"/>
         <source>Enter the keyboard input interval, &apos;0&apos; for default</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="258"/>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="251"/>
         <source> ms</source>
         <translation type="unfinished"></translation>
     </message>
@@ -1353,6 +1348,31 @@
         <source>Enable Crash Session</source>
         <translation type="unfinished"></translation>
     </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="248"/>
+        <source>System Default</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="280"/>
+        <source>Background Services</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="298"/>
+        <source>max. Processes:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.ui" line="308"/>
+        <source>Automatic</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationPages/ApplicationPage.py" line="30"/>
+        <source>eric is using background services for certain things like syntax checks or code style checks. Per default the number of processes to use for these checks is determined automatically based on the number of CPUs. Please note, that this is an advanced setting.</source>
+        <translation type="unfinished"></translation>
+    </message>
 </context>
 <context>
     <name>AuthenticationDialog</name>
@@ -1405,37 +1425,37 @@
 <context>
     <name>BackgroundService</name>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="128"/>
+        <location filename="../Utilities/BackgroundService.py" line="129"/>
         <source>{0} not configured.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>Restart background client?</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="182"/>
+        <location filename="../Utilities/BackgroundService.py" line="183"/>
         <source>&lt;p&gt;The background client for &lt;b&gt;{0}&lt;/b&gt; has stopped due to an exception. It&apos;s used by various plug-ins like the different checkers.&lt;/p&gt;&lt;p&gt;Select&lt;ul&gt;&lt;li&gt;&lt;b&gt;&apos;Yes&apos;&lt;/b&gt; to restart the client, but abort the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;Retry&apos;&lt;/b&gt; to restart the client and the last job&lt;/li&gt;&lt;li&gt;&lt;b&gt;&apos;No&apos;&lt;/b&gt; to leave the client off.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Note: The client can be restarted by opening and accepting the preferences dialog or reloading/changing the project.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="208"/>
+        <location filename="../Utilities/BackgroundService.py" line="209"/>
         <source>An error in Erics background client stopped the service.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="419"/>
+        <location filename="../Utilities/BackgroundService.py" line="420"/>
         <source>Erics background client disconnected because of an unknown reason.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>Background client disconnected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Utilities/BackgroundService.py" line="425"/>
+        <location filename="../Utilities/BackgroundService.py" line="426"/>
         <source>The background client for &lt;b&gt;{0}&lt;/b&gt; disconnected because of an unknown reason.&lt;br&gt;Should it be restarted?</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4242,32 +4262,32 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="358"/>
+        <location filename="../UI/CompareDialog.py" line="369"/>
         <source>Total: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="360"/>
+        <location filename="../UI/CompareDialog.py" line="371"/>
         <source>Changed: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="361"/>
+        <location filename="../UI/CompareDialog.py" line="372"/>
         <source>Added: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="362"/>
+        <location filename="../UI/CompareDialog.py" line="373"/>
         <source>Deleted: {0}</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>Compare Files</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../UI/CompareDialog.py" line="253"/>
+        <location filename="../UI/CompareDialog.py" line="262"/>
         <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4313,296 +4333,301 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="144"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
         <source>Email</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="147"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="150"/>
         <source>Graphics</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="497"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="500"/>
         <source>Hex Editor</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="153"/>
-        <source>Icons</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="156"/>
-        <source>IRC</source>
+        <source>Icons</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="159"/>
-        <source>Log-Viewer</source>
+        <source>IRC</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="162"/>
+        <source>Log-Viewer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="165"/>
         <source>Mimetypes</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="437"/>
-        <source>Network</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="168"/>
-        <source>Notifications</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="172"/>
-        <source>Plugin Manager</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="440"/>
-        <source>Printer</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="211"/>
-        <source>Python</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="182"/>
-        <source>Qt</source>
+        <source>Network</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="171"/>
+        <source>Notifications</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="175"/>
+        <source>Plugin Manager</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="443"/>
+        <source>Printer</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
+        <source>Python</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="185"/>
+        <source>Qt</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="446"/>
         <source>Security</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="188"/>
-        <source>Shell</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="191"/>
-        <source>Tasks</source>
+        <source>Shell</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../Preferences/ConfigurationDialog.py" line="194"/>
+        <source>Tasks</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../Preferences/ConfigurationDialog.py" line="197"/>
         <source>Templates</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="484"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="487"/>
         <source>Tray Starter</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="200"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="203"/>
         <source>Version Control Systems</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="205"/>
+        <location filename="../Preferences/ConfigurationDialog.py" line="208"/>
         <source>Debugger</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="238"/>
-        <source>General</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="214"/>
-        <source>Python3</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="218"/>
-        <source>Editor</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
-        <location filename="../Preferences/ConfigurationDialog.py" line="221"/>
-        <source>APIs</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>