Find In Files eric7

Sat, 18 Sep 2021 18:51:58 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 18 Sep 2021 18:51:58 +0200
branch
eric7
changeset 8614
4a3a68e51b92
parent 8613
2af21036b293
child 8615
d43e7eb22319

Find In Files
- integrated the dialog into the right sidebar

docs/changelog file | annotate | diff | comparison | revisions
eric7.epj file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.api file | annotate | diff | comparison | revisions
eric7/APIs/Python3/eric7.bas file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qch file | annotate | diff | comparison | revisions
eric7/Documentation/Help/source.qhp file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.UI.FindFileDialog.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.UI.FindFileWidget.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/eric7.UI.UserInterface.html file | annotate | diff | comparison | revisions
eric7/Documentation/Source/index-eric7.UI.html file | annotate | diff | comparison | revisions
eric7/UI/Browser.py file | annotate | diff | comparison | revisions
eric7/UI/FindFileDialog.py file | annotate | diff | comparison | revisions
eric7/UI/FindFileDialog.ui file | annotate | diff | comparison | revisions
eric7/UI/FindFileWidget.py file | annotate | diff | comparison | revisions
eric7/UI/FindFileWidget.ui file | annotate | diff | comparison | revisions
eric7/UI/UserInterface.py file | annotate | diff | comparison | revisions
eric7/ViewManager/ViewManager.py file | annotate | diff | comparison | revisions
eric7/eric7.py file | annotate | diff | comparison | revisions
eric7/i18n/eric7_cs.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.qm file | annotate | diff | comparison | revisions
eric7/i18n/eric7_de.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_empty.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_en.qm file | annotate | diff | comparison | revisions
eric7/i18n/eric7_en.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_es.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_fr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_it.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_pt.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_ru.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_tr.ts file | annotate | diff | comparison | revisions
eric7/i18n/eric7_zh_CN.ts file | annotate | diff | comparison | revisions
--- a/docs/changelog	Fri Sep 17 19:53:54 2021 +0200
+++ b/docs/changelog	Sat Sep 18 18:51:58 2021 +0200
@@ -12,6 +12,8 @@
      the file type 'Text'
   -- added code to move a breakpoint to a line actually creating some byte code
      (Python only)
+- Find In Files
+  -- integrated the dialog into the right sidebar
 - Jedi
   -- integrated the Assistant Jedi plugin as a fixed part of eric
   -- added code to jump to references when clicked on a definition
--- a/eric7.epj	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7.epj	Sat Sep 18 18:51:58 2021 +0200
@@ -620,7 +620,6 @@
       "eric7/UI/DiffDialog.ui",
       "eric7/UI/EmailDialog.ui",
       "eric7/UI/ErrorLogDialog.ui",
-      "eric7/UI/FindFileDialog.ui",
       "eric7/UI/FindFileNameDialog.ui",
       "eric7/UI/InstallInfoDialog.ui",
       "eric7/UI/NotificationFrame.ui",
@@ -713,7 +712,8 @@
       "eric7/Preferences/ConfigurationPages/EditorAutoCompletionJediPage.ui",
       "eric7/Preferences/ConfigurationPages/EditorCallTipsJediPage.ui",
       "eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.ui",
-      "eric7/VirtualEnv/VirtualenvManagerWidget.ui"
+      "eric7/VirtualEnv/VirtualenvManagerWidget.ui",
+      "eric7/UI/FindFileWidget.ui"
     ],
     "HASH": "df7daa8781250f7664e6ecaeaf1361fa2efd39ee",
     "IDLPARAMS": {
@@ -1835,7 +1835,6 @@
       "eric7/UI/DiffHighlighter.py",
       "eric7/UI/EmailDialog.py",
       "eric7/UI/ErrorLogDialog.py",
-      "eric7/UI/FindFileDialog.py",
       "eric7/UI/FindFileNameDialog.py",
       "eric7/UI/Info.py",
       "eric7/UI/InstallInfoDialog.py",
@@ -2284,7 +2283,8 @@
       "eric7/Preferences/ConfigurationPages/EditorMouseClickHandlerJediPage.py",
       "eric7/VirtualEnv/VirtualenvManagerWidgets.py",
       "eric7/eric7_virtualenv.py",
-      "eric7/eric7_virtualenv.pyw"
+      "eric7/eric7_virtualenv.pyw",
+      "eric7/UI/FindFileWidget.py"
     ],
     "SPELLEXCLUDES": "Dictionaries/excludes.dic",
     "SPELLLANGUAGE": "en_US",
--- a/eric7/APIs/Python3/eric7.api	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/APIs/Python3/eric7.api	Sat Sep 18 18:51:58 2021 +0200
@@ -9360,28 +9360,6 @@
 eric7.UI.ErrorLogDialog.ErrorLogDialog.on_emailButton_clicked?4()
 eric7.UI.ErrorLogDialog.ErrorLogDialog.on_keepButton_clicked?4()
 eric7.UI.ErrorLogDialog.ErrorLogDialog?1(logFile, showMode, parent=None)
-eric7.UI.FindFileDialog.FindFileDialog.designerFile?7
-eric7.UI.FindFileDialog.FindFileDialog.endRole?7
-eric7.UI.FindFileDialog.FindFileDialog.lineRole?7
-eric7.UI.FindFileDialog.FindFileDialog.md5Role?7
-eric7.UI.FindFileDialog.FindFileDialog.on_buttonBox_clicked?4(button)
-eric7.UI.FindFileDialog.FindFileDialog.on_dirButton_clicked?4()
-eric7.UI.FindFileDialog.FindFileDialog.on_dirPicker_editTextChanged?4(text)
-eric7.UI.FindFileDialog.FindFileDialog.on_filterCheckBox_clicked?4()
-eric7.UI.FindFileDialog.FindFileDialog.on_filterEdit_textEdited?4(text)
-eric7.UI.FindFileDialog.FindFileDialog.on_findList_itemDoubleClicked?4(itm, column)
-eric7.UI.FindFileDialog.FindFileDialog.on_findtextCombo_editTextChanged?4(text)
-eric7.UI.FindFileDialog.FindFileDialog.on_openFilesButton_clicked?4()
-eric7.UI.FindFileDialog.FindFileDialog.on_projectButton_clicked?4()
-eric7.UI.FindFileDialog.FindFileDialog.on_replaceButton_clicked?4()
-eric7.UI.FindFileDialog.FindFileDialog.on_replacetextCombo_editTextChanged?4(text)
-eric7.UI.FindFileDialog.FindFileDialog.replaceRole?7
-eric7.UI.FindFileDialog.FindFileDialog.setOpenFiles?4()
-eric7.UI.FindFileDialog.FindFileDialog.setSearchDirectory?4(searchDir)
-eric7.UI.FindFileDialog.FindFileDialog.show?4(txt="")
-eric7.UI.FindFileDialog.FindFileDialog.sourceFile?7
-eric7.UI.FindFileDialog.FindFileDialog.startRole?7
-eric7.UI.FindFileDialog.FindFileDialog?1(project, replaceMode=False, parent=None)
 eric7.UI.FindFileNameDialog.FindFileNameDialog.checkStop?4()
 eric7.UI.FindFileNameDialog.FindFileNameDialog.designerFile?7
 eric7.UI.FindFileNameDialog.FindFileNameDialog.on_buttonBox_clicked?4(button)
@@ -9396,6 +9374,27 @@
 eric7.UI.FindFileNameDialog.FindFileNameDialog.show?4()
 eric7.UI.FindFileNameDialog.FindFileNameDialog.sourceFile?7
 eric7.UI.FindFileNameDialog.FindFileNameDialog?1(project, parent=None)
+eric7.UI.FindFileWidget.FindFileWidget.activate?4(replaceMode=False, txt="", searchDir="", openFiles=False)
+eric7.UI.FindFileWidget.FindFileWidget.designerFile?7
+eric7.UI.FindFileWidget.FindFileWidget.endRole?7
+eric7.UI.FindFileWidget.FindFileWidget.lineRole?7
+eric7.UI.FindFileWidget.FindFileWidget.md5Role?7
+eric7.UI.FindFileWidget.FindFileWidget.on_dirButton_clicked?4()
+eric7.UI.FindFileWidget.FindFileWidget.on_dirPicker_editTextChanged?4(text)
+eric7.UI.FindFileWidget.FindFileWidget.on_filterCheckBox_clicked?4()
+eric7.UI.FindFileWidget.FindFileWidget.on_filterEdit_textEdited?4(text)
+eric7.UI.FindFileWidget.FindFileWidget.on_findList_itemDoubleClicked?4(itm, column)
+eric7.UI.FindFileWidget.FindFileWidget.on_findtextCombo_editTextChanged?4(text)
+eric7.UI.FindFileWidget.FindFileWidget.on_openFilesButton_clicked?4()
+eric7.UI.FindFileWidget.FindFileWidget.on_projectButton_clicked?4()
+eric7.UI.FindFileWidget.FindFileWidget.on_replaceButton_clicked?4()
+eric7.UI.FindFileWidget.FindFileWidget.on_replacetextCombo_editTextChanged?4(text)
+eric7.UI.FindFileWidget.FindFileWidget.replaceRole?7
+eric7.UI.FindFileWidget.FindFileWidget.setOpenFiles?4()
+eric7.UI.FindFileWidget.FindFileWidget.setSearchDirectory?4(searchDir)
+eric7.UI.FindFileWidget.FindFileWidget.sourceFile?7
+eric7.UI.FindFileWidget.FindFileWidget.startRole?7
+eric7.UI.FindFileWidget.FindFileWidget?1(project, parent=None)
 eric7.UI.Info.BugAddress?7
 eric7.UI.Info.Copyright?7
 eric7.UI.Info.CopyrightShort?7
@@ -9632,12 +9631,12 @@
 eric7.UI.UserInterface.UserInterface.showEmailDialog?4(mode, attachFile=None, deleteAttachFile=False)
 eric7.UI.UserInterface.UserInterface.showEvent?4(evt)
 eric7.UI.UserInterface.UserInterface.showFindFileByNameDialog?4()
-eric7.UI.UserInterface.UserInterface.showFindFilesDialog?4(txt="", searchDir="", openFiles=False)
+eric7.UI.UserInterface.UserInterface.showFindFilesWidget?4(txt="", searchDir="", openFiles=False)
 eric7.UI.UserInterface.UserInterface.showLogViewer?4()
 eric7.UI.UserInterface.UserInterface.showMenu?7
 eric7.UI.UserInterface.UserInterface.showNotification?4(icon, heading, text, kind=NotificationTypes.INFORMATION, timeout=None)
 eric7.UI.UserInterface.UserInterface.showPreferences?4(pageName=None)
-eric7.UI.UserInterface.UserInterface.showReplaceFilesDialog?4(txt="", searchDir="", openFiles=False)
+eric7.UI.UserInterface.UserInterface.showReplaceFilesWidget?4(txt="", searchDir="", openFiles=False)
 eric7.UI.UserInterface.UserInterface.showSideWidget?4(widget)
 eric7.UI.UserInterface.UserInterface.unregisterToolbar?4(name)
 eric7.UI.UserInterface.UserInterface.versionIsNewer?4(required, snapshot=None)
--- a/eric7/APIs/Python3/eric7.bas	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/APIs/Python3/eric7.bas	Sat Sep 18 18:51:58 2021 +0200
@@ -326,8 +326,8 @@
 FileDialogWizardDialog QDialog Ui_FileDialogWizardDialog
 FileReport BaseReport
 FiletypeAssociationDialog QDialog Ui_FiletypeAssociationDialog
-FindFileDialog QDialog Ui_FindFileDialog
 FindFileNameDialog QWidget Ui_FindFileNameDialog
+FindFileWidget QWidget Ui_FindFileWidget
 FirefoxImporter BookmarksImporter
 FontDialogOptionsDialog QDialog Ui_FontDialogOptionsDialog
 FontDialogWizard QObject
Binary file eric7/Documentation/Help/source.qch has changed
--- a/eric7/Documentation/Help/source.qhp	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/Documentation/Help/source.qhp	Sat Sep 18 18:51:58 2021 +0200
@@ -1053,8 +1053,8 @@
             <section title="eric7.UI.DiffHighlighter" ref="eric7.UI.DiffHighlighter.html" />
             <section title="eric7.UI.EmailDialog" ref="eric7.UI.EmailDialog.html" />
             <section title="eric7.UI.ErrorLogDialog" ref="eric7.UI.ErrorLogDialog.html" />
-            <section title="eric7.UI.FindFileDialog" ref="eric7.UI.FindFileDialog.html" />
             <section title="eric7.UI.FindFileNameDialog" ref="eric7.UI.FindFileNameDialog.html" />
+            <section title="eric7.UI.FindFileWidget" ref="eric7.UI.FindFileWidget.html" />
             <section title="eric7.UI.Info" ref="eric7.UI.Info.html" />
             <section title="eric7.UI.InstallInfoDialog" ref="eric7.UI.InstallInfoDialog.html" />
             <section title="eric7.UI.LogView" ref="eric7.UI.LogView.html" />
@@ -5938,32 +5938,6 @@
       <keyword name="FiletypeAssociationDialog.on_filePatternEdit_textChanged" id="FiletypeAssociationDialog.on_filePatternEdit_textChanged" ref="eric7.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog.on_filePatternEdit_textChanged" />
       <keyword name="FiletypeAssociationDialog.on_filetypeAssociationList_currentItemChanged" id="FiletypeAssociationDialog.on_filetypeAssociationList_currentItemChanged" ref="eric7.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog.on_filetypeAssociationList_currentItemChanged" />
       <keyword name="FiletypeAssociationDialog.transferData" id="FiletypeAssociationDialog.transferData" ref="eric7.Project.FiletypeAssociationDialog.html#FiletypeAssociationDialog.transferData" />
-      <keyword name="FindFileDialog" id="FindFileDialog" ref="eric7.UI.FindFileDialog.html#FindFileDialog" />
-      <keyword name="FindFileDialog (Constructor)" id="FindFileDialog (Constructor)" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__init__" />
-      <keyword name="FindFileDialog (Module)" id="FindFileDialog (Module)" ref="eric7.UI.FindFileDialog.html" />
-      <keyword name="FindFileDialog.__contextMenuRequested" id="FindFileDialog.__contextMenuRequested" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__contextMenuRequested" />
-      <keyword name="FindFileDialog.__copyToClipboard" id="FindFileDialog.__copyToClipboard" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__copyToClipboard" />
-      <keyword name="FindFileDialog.__createItem" id="FindFileDialog.__createItem" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__createItem" />
-      <keyword name="FindFileDialog.__doSearch" id="FindFileDialog.__doSearch" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__doSearch" />
-      <keyword name="FindFileDialog.__enableFindButton" id="FindFileDialog.__enableFindButton" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__enableFindButton" />
-      <keyword name="FindFileDialog.__getFileList" id="FindFileDialog.__getFileList" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__getFileList" />
-      <keyword name="FindFileDialog.__openFile" id="FindFileDialog.__openFile" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__openFile" />
-      <keyword name="FindFileDialog.__stopSearch" id="FindFileDialog.__stopSearch" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__stopSearch" />
-      <keyword name="FindFileDialog.__stripEol" id="FindFileDialog.__stripEol" ref="eric7.UI.FindFileDialog.html#FindFileDialog.__stripEol" />
-      <keyword name="FindFileDialog.on_buttonBox_clicked" id="FindFileDialog.on_buttonBox_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_buttonBox_clicked" />
-      <keyword name="FindFileDialog.on_dirButton_clicked" id="FindFileDialog.on_dirButton_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_dirButton_clicked" />
-      <keyword name="FindFileDialog.on_dirPicker_editTextChanged" id="FindFileDialog.on_dirPicker_editTextChanged" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_dirPicker_editTextChanged" />
-      <keyword name="FindFileDialog.on_filterCheckBox_clicked" id="FindFileDialog.on_filterCheckBox_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_filterCheckBox_clicked" />
-      <keyword name="FindFileDialog.on_filterEdit_textEdited" id="FindFileDialog.on_filterEdit_textEdited" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_filterEdit_textEdited" />
-      <keyword name="FindFileDialog.on_findList_itemDoubleClicked" id="FindFileDialog.on_findList_itemDoubleClicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_findList_itemDoubleClicked" />
-      <keyword name="FindFileDialog.on_findtextCombo_editTextChanged" id="FindFileDialog.on_findtextCombo_editTextChanged" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_findtextCombo_editTextChanged" />
-      <keyword name="FindFileDialog.on_openFilesButton_clicked" id="FindFileDialog.on_openFilesButton_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_openFilesButton_clicked" />
-      <keyword name="FindFileDialog.on_projectButton_clicked" id="FindFileDialog.on_projectButton_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_projectButton_clicked" />
-      <keyword name="FindFileDialog.on_replaceButton_clicked" id="FindFileDialog.on_replaceButton_clicked" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_replaceButton_clicked" />
-      <keyword name="FindFileDialog.on_replacetextCombo_editTextChanged" id="FindFileDialog.on_replacetextCombo_editTextChanged" ref="eric7.UI.FindFileDialog.html#FindFileDialog.on_replacetextCombo_editTextChanged" />
-      <keyword name="FindFileDialog.setOpenFiles" id="FindFileDialog.setOpenFiles" ref="eric7.UI.FindFileDialog.html#FindFileDialog.setOpenFiles" />
-      <keyword name="FindFileDialog.setSearchDirectory" id="FindFileDialog.setSearchDirectory" ref="eric7.UI.FindFileDialog.html#FindFileDialog.setSearchDirectory" />
-      <keyword name="FindFileDialog.show" id="FindFileDialog.show" ref="eric7.UI.FindFileDialog.html#FindFileDialog.show" />
       <keyword name="FindFileNameDialog" id="FindFileNameDialog" ref="eric7.UI.FindFileNameDialog.html#FindFileNameDialog" />
       <keyword name="FindFileNameDialog (Constructor)" id="FindFileNameDialog (Constructor)" ref="eric7.UI.FindFileNameDialog.html#FindFileNameDialog.__init__" />
       <keyword name="FindFileNameDialog (Module)" id="FindFileNameDialog (Module)" ref="eric7.UI.FindFileNameDialog.html" />
@@ -5980,6 +5954,34 @@
       <keyword name="FindFileNameDialog.on_searchDirPicker_textChanged" id="FindFileNameDialog.on_searchDirPicker_textChanged" ref="eric7.UI.FindFileNameDialog.html#FindFileNameDialog.on_searchDirPicker_textChanged" />
       <keyword name="FindFileNameDialog.on_syspathCheckBox_toggled" id="FindFileNameDialog.on_syspathCheckBox_toggled" ref="eric7.UI.FindFileNameDialog.html#FindFileNameDialog.on_syspathCheckBox_toggled" />
       <keyword name="FindFileNameDialog.show" id="FindFileNameDialog.show" ref="eric7.UI.FindFileNameDialog.html#FindFileNameDialog.show" />
+      <keyword name="FindFileWidget" id="FindFileWidget" ref="eric7.UI.FindFileWidget.html#FindFileWidget" />
+      <keyword name="FindFileWidget (Constructor)" id="FindFileWidget (Constructor)" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__init__" />
+      <keyword name="FindFileWidget (Module)" id="FindFileWidget (Module)" ref="eric7.UI.FindFileWidget.html" />
+      <keyword name="FindFileWidget.__contextMenuRequested" id="FindFileWidget.__contextMenuRequested" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__contextMenuRequested" />
+      <keyword name="FindFileWidget.__copyToClipboard" id="FindFileWidget.__copyToClipboard" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__copyToClipboard" />
+      <keyword name="FindFileWidget.__createItem" id="FindFileWidget.__createItem" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__createItem" />
+      <keyword name="FindFileWidget.__doSearch" id="FindFileWidget.__doSearch" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__doSearch" />
+      <keyword name="FindFileWidget.__enableFindButton" id="FindFileWidget.__enableFindButton" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__enableFindButton" />
+      <keyword name="FindFileWidget.__getFileList" id="FindFileWidget.__getFileList" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__getFileList" />
+      <keyword name="FindFileWidget.__openFile" id="FindFileWidget.__openFile" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__openFile" />
+      <keyword name="FindFileWidget.__projectClosed" id="FindFileWidget.__projectClosed" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__projectClosed" />
+      <keyword name="FindFileWidget.__projectOpened" id="FindFileWidget.__projectOpened" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__projectOpened" />
+      <keyword name="FindFileWidget.__stopSearch" id="FindFileWidget.__stopSearch" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__stopSearch" />
+      <keyword name="FindFileWidget.__stripEol" id="FindFileWidget.__stripEol" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__stripEol" />
+      <keyword name="FindFileWidget.__toggleReplaceMode" id="FindFileWidget.__toggleReplaceMode" ref="eric7.UI.FindFileWidget.html#FindFileWidget.__toggleReplaceMode" />
+      <keyword name="FindFileWidget.activate" id="FindFileWidget.activate" ref="eric7.UI.FindFileWidget.html#FindFileWidget.activate" />
+      <keyword name="FindFileWidget.on_dirButton_clicked" id="FindFileWidget.on_dirButton_clicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_dirButton_clicked" />
+      <keyword name="FindFileWidget.on_dirPicker_editTextChanged" id="FindFileWidget.on_dirPicker_editTextChanged" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_dirPicker_editTextChanged" />
+      <keyword name="FindFileWidget.on_filterCheckBox_clicked" id="FindFileWidget.on_filterCheckBox_clicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_filterCheckBox_clicked" />
+      <keyword name="FindFileWidget.on_filterEdit_textEdited" id="FindFileWidget.on_filterEdit_textEdited" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_filterEdit_textEdited" />
+      <keyword name="FindFileWidget.on_findList_itemDoubleClicked" id="FindFileWidget.on_findList_itemDoubleClicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_findList_itemDoubleClicked" />
+      <keyword name="FindFileWidget.on_findtextCombo_editTextChanged" id="FindFileWidget.on_findtextCombo_editTextChanged" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_findtextCombo_editTextChanged" />
+      <keyword name="FindFileWidget.on_openFilesButton_clicked" id="FindFileWidget.on_openFilesButton_clicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_openFilesButton_clicked" />
+      <keyword name="FindFileWidget.on_projectButton_clicked" id="FindFileWidget.on_projectButton_clicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_projectButton_clicked" />
+      <keyword name="FindFileWidget.on_replaceButton_clicked" id="FindFileWidget.on_replaceButton_clicked" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_replaceButton_clicked" />
+      <keyword name="FindFileWidget.on_replacetextCombo_editTextChanged" id="FindFileWidget.on_replacetextCombo_editTextChanged" ref="eric7.UI.FindFileWidget.html#FindFileWidget.on_replacetextCombo_editTextChanged" />
+      <keyword name="FindFileWidget.setOpenFiles" id="FindFileWidget.setOpenFiles" ref="eric7.UI.FindFileWidget.html#FindFileWidget.setOpenFiles" />
+      <keyword name="FindFileWidget.setSearchDirectory" id="FindFileWidget.setSearchDirectory" ref="eric7.UI.FindFileWidget.html#FindFileWidget.setSearchDirectory" />
       <keyword name="FirefoxImporter" id="FirefoxImporter" ref="eric7.WebBrowser.Bookmarks.BookmarksImporters.FirefoxImporter.html#FirefoxImporter" />
       <keyword name="FirefoxImporter (Constructor)" id="FirefoxImporter (Constructor)" ref="eric7.WebBrowser.Bookmarks.BookmarksImporters.FirefoxImporter.html#FirefoxImporter.__init__" />
       <keyword name="FirefoxImporter (Module)" id="FirefoxImporter (Module)" ref="eric7.WebBrowser.Bookmarks.BookmarksImporters.FirefoxImporter.html" />
@@ -15842,6 +15844,7 @@
       <keyword name="UserInterface.__UIPreviewer" id="UserInterface.__UIPreviewer" ref="eric7.UI.UserInterface.html#UserInterface.__UIPreviewer" />
       <keyword name="UserInterface.__activateBrowser" id="UserInterface.__activateBrowser" ref="eric7.UI.UserInterface.html#UserInterface.__activateBrowser" />
       <keyword name="UserInterface.__activateCondaWidget" id="UserInterface.__activateCondaWidget" ref="eric7.UI.UserInterface.html#UserInterface.__activateCondaWidget" />
+      <keyword name="UserInterface.__activateFindFileWidget" id="UserInterface.__activateFindFileWidget" ref="eric7.UI.UserInterface.html#UserInterface.__activateFindFileWidget" />
       <keyword name="UserInterface.__activateIRC" id="UserInterface.__activateIRC" ref="eric7.UI.UserInterface.html#UserInterface.__activateIRC" />
       <keyword name="UserInterface.__activateLogViewer" id="UserInterface.__activateLogViewer" ref="eric7.UI.UserInterface.html#UserInterface.__activateLogViewer" />
       <keyword name="UserInterface.__activateMicroPython" id="UserInterface.__activateMicroPython" ref="eric7.UI.UserInterface.html#UserInterface.__activateMicroPython" />
@@ -16051,11 +16054,11 @@
       <keyword name="UserInterface.showEmailDialog" id="UserInterface.showEmailDialog" ref="eric7.UI.UserInterface.html#UserInterface.showEmailDialog" />
       <keyword name="UserInterface.showEvent" id="UserInterface.showEvent" ref="eric7.UI.UserInterface.html#UserInterface.showEvent" />
       <keyword name="UserInterface.showFindFileByNameDialog" id="UserInterface.showFindFileByNameDialog" ref="eric7.UI.UserInterface.html#UserInterface.showFindFileByNameDialog" />
-      <keyword name="UserInterface.showFindFilesDialog" id="UserInterface.showFindFilesDialog" ref="eric7.UI.UserInterface.html#UserInterface.showFindFilesDialog" />
+      <keyword name="UserInterface.showFindFilesWidget" id="UserInterface.showFindFilesWidget" ref="eric7.UI.UserInterface.html#UserInterface.showFindFilesWidget" />
       <keyword name="UserInterface.showLogViewer" id="UserInterface.showLogViewer" ref="eric7.UI.UserInterface.html#UserInterface.showLogViewer" />
       <keyword name="UserInterface.showNotification" id="UserInterface.showNotification" ref="eric7.UI.UserInterface.html#UserInterface.showNotification" />
       <keyword name="UserInterface.showPreferences" id="UserInterface.showPreferences" ref="eric7.UI.UserInterface.html#UserInterface.showPreferences" />
-      <keyword name="UserInterface.showReplaceFilesDialog" id="UserInterface.showReplaceFilesDialog" ref="eric7.UI.UserInterface.html#UserInterface.showReplaceFilesDialog" />
+      <keyword name="UserInterface.showReplaceFilesWidget" id="UserInterface.showReplaceFilesWidget" ref="eric7.UI.UserInterface.html#UserInterface.showReplaceFilesWidget" />
       <keyword name="UserInterface.showSideWidget" id="UserInterface.showSideWidget" ref="eric7.UI.UserInterface.html#UserInterface.showSideWidget" />
       <keyword name="UserInterface.unregisterToolbar" id="UserInterface.unregisterToolbar" ref="eric7.UI.UserInterface.html#UserInterface.unregisterToolbar" />
       <keyword name="UserInterface.versionIsNewer" id="UserInterface.versionIsNewer" ref="eric7.UI.UserInterface.html#UserInterface.versionIsNewer" />
@@ -19535,8 +19538,8 @@
       <file>eric7.UI.DiffHighlighter.html</file>
       <file>eric7.UI.EmailDialog.html</file>
       <file>eric7.UI.ErrorLogDialog.html</file>
-      <file>eric7.UI.FindFileDialog.html</file>
       <file>eric7.UI.FindFileNameDialog.html</file>
+      <file>eric7.UI.FindFileWidget.html</file>
       <file>eric7.UI.Info.html</file>
       <file>eric7.UI.InstallInfoDialog.html</file>
       <file>eric7.UI.LogView.html</file>
--- a/eric7/Documentation/Source/eric7.UI.FindFileDialog.html	Fri Sep 17 19:53:54 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,513 +0,0 @@
-<!DOCTYPE html>
-<html><head>
-<title>eric7.UI.FindFileDialog</title>
-<meta charset="UTF-8">
-<link rel="stylesheet" href="styles.css">
-</head>
-<body>
-<a NAME="top" ID="top"></a>
-<h1>eric7.UI.FindFileDialog</h1>
-
-<p>
-Module implementing a dialog to search for text in files.
-</p>
-<h3>Global Attributes</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Classes</h3>
-
-<table>
-
-<tr>
-<td><a href="#FindFileDialog">FindFileDialog</a></td>
-<td>Class implementing a dialog to search for text in files.</td>
-</tr>
-</table>
-<h3>Functions</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-<hr />
-<hr />
-<a NAME="FindFileDialog" ID="FindFileDialog"></a>
-<h2>FindFileDialog</h2>
-
-<p>
-    Class implementing a dialog to search for text in files.
-</p>
-<p>
-    The occurrences found are displayed in a QTreeWidget showing the filename,
-    the linenumber and the found text. The file will be opened upon a double
-    click onto the respective entry of the list.
-</p>
-<h3>Signals</h3>
-<dl>
-
-<dt>designerFile(str)</dt>
-<dd>
-emitted to open a Qt-Designer file
-</dd>
-<dt>sourceFile(str, int, str, int, int)</dt>
-<dd>
-emitted to open a source file
-        at a line
-</dd>
-</dl>
-<h3>Derived from</h3>
-QDialog, Ui_FindFileDialog
-<h3>Class Attributes</h3>
-
-<table>
-<tr><td>endRole</td></tr><tr><td>lineRole</td></tr><tr><td>md5Role</td></tr><tr><td>replaceRole</td></tr><tr><td>startRole</td></tr>
-</table>
-<h3>Class Methods</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-<h3>Methods</h3>
-
-<table>
-
-<tr>
-<td><a href="#FindFileDialog.__init__">FindFileDialog</a></td>
-<td>Constructor</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__contextMenuRequested">__contextMenuRequested</a></td>
-<td>Private slot to handle the context menu request.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__copyToClipboard">__copyToClipboard</a></td>
-<td>Private method to copy the path of an entry to the clipboard.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__createItem">__createItem</a></td>
-<td>Private method to create an entry in the file list.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__doSearch">__doSearch</a></td>
-<td>Private slot to handle the find button being pressed.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__enableFindButton">__enableFindButton</a></td>
-<td>Private slot called to enable the find button.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__getFileList">__getFileList</a></td>
-<td>Private method to get a list of files to search.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__openFile">__openFile</a></td>
-<td>Private slot to open the currently selected entry.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__stopSearch">__stopSearch</a></td>
-<td>Private slot to handle the stop button being pressed.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.__stripEol">__stripEol</a></td>
-<td>Private method to strip the eol part.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td>
-<td>Private slot called by a button of the button box clicked.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_dirButton_clicked">on_dirButton_clicked</a></td>
-<td>Private slot to handle the selection of the 'Directory' radio button.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_dirPicker_editTextChanged">on_dirPicker_editTextChanged</a></td>
-<td>Private slot to handle the textChanged signal of the directory picker.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_filterCheckBox_clicked">on_filterCheckBox_clicked</a></td>
-<td>Private slot to handle the selection of the file filter check box.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_filterEdit_textEdited">on_filterEdit_textEdited</a></td>
-<td>Private slot to handle the textChanged signal of the file filter edit.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_findList_itemDoubleClicked">on_findList_itemDoubleClicked</a></td>
-<td>Private slot to handle the double click on a file item.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_findtextCombo_editTextChanged">on_findtextCombo_editTextChanged</a></td>
-<td>Private slot to handle the editTextChanged signal of the find text combo.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_openFilesButton_clicked">on_openFilesButton_clicked</a></td>
-<td>Private slot to handle the selection of the 'Open Files' radio button.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_projectButton_clicked">on_projectButton_clicked</a></td>
-<td>Private slot to handle the selection of the 'Project' radio button.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_replaceButton_clicked">on_replaceButton_clicked</a></td>
-<td>Private slot to perform the requested replace actions.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.on_replacetextCombo_editTextChanged">on_replacetextCombo_editTextChanged</a></td>
-<td>Private slot to handle the editTextChanged signal of the replace text combo.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.setOpenFiles">setOpenFiles</a></td>
-<td>Public slot to set the mode to search in open files.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.setSearchDirectory">setSearchDirectory</a></td>
-<td>Public slot to set the name of the directory to search in.</td>
-</tr>
-<tr>
-<td><a href="#FindFileDialog.show">show</a></td>
-<td>Public method to enable/disable the project button.</td>
-</tr>
-</table>
-<h3>Static Methods</h3>
-
-<table>
-<tr><td>None</td></tr>
-</table>
-
-<a NAME="FindFileDialog.__init__" ID="FindFileDialog.__init__"></a>
-<h4>FindFileDialog (Constructor)</h4>
-<b>FindFileDialog</b>(<i>project, replaceMode=False, parent=None</i>)
-
-<p>
-        Constructor
-</p>
-<dl>
-
-<dt><i>project</i></dt>
-<dd>
-reference to the project object
-</dd>
-<dt><i>replaceMode</i></dt>
-<dd>
-flag indicating the replace dialog mode (boolean)
-</dd>
-<dt><i>parent</i></dt>
-<dd>
-parent widget of this dialog (QWidget)
-</dd>
-</dl>
-<a NAME="FindFileDialog.__contextMenuRequested" ID="FindFileDialog.__contextMenuRequested"></a>
-<h4>FindFileDialog.__contextMenuRequested</h4>
-<b>__contextMenuRequested</b>(<i>pos</i>)
-
-<p>
-        Private slot to handle the context menu request.
-</p>
-<dl>
-
-<dt><i>pos</i></dt>
-<dd>
-position the context menu shall be shown (QPoint)
-</dd>
-</dl>
-<a NAME="FindFileDialog.__copyToClipboard" ID="FindFileDialog.__copyToClipboard"></a>
-<h4>FindFileDialog.__copyToClipboard</h4>
-<b>__copyToClipboard</b>(<i></i>)
-
-<p>
-        Private method to copy the path of an entry to the clipboard.
-</p>
-<a NAME="FindFileDialog.__createItem" ID="FindFileDialog.__createItem"></a>
-<h4>FindFileDialog.__createItem</h4>
-<b>__createItem</b>(<i>file, line, text, start, end, replTxt="", md5=""</i>)
-
-<p>
-        Private method to create an entry in the file list.
-</p>
-<dl>
-
-<dt><i>file</i></dt>
-<dd>
-filename of file (string)
-</dd>
-<dt><i>line</i></dt>
-<dd>
-line number (integer)
-</dd>
-<dt><i>text</i></dt>
-<dd>
-text found (string)
-</dd>
-<dt><i>start</i></dt>
-<dd>
-start position of match (integer)
-</dd>
-<dt><i>end</i></dt>
-<dd>
-end position of match (integer)
-</dd>
-<dt><i>replTxt</i></dt>
-<dd>
-text with replacements applied (string)
-</dd>
-<dt><i>md5</i></dt>
-<dd>
-MD5 hash of the file (string)
-</dd>
-</dl>
-<a NAME="FindFileDialog.__doSearch" ID="FindFileDialog.__doSearch"></a>
-<h4>FindFileDialog.__doSearch</h4>
-<b>__doSearch</b>(<i></i>)
-
-<p>
-        Private slot to handle the find button being pressed.
-</p>
-<a NAME="FindFileDialog.__enableFindButton" ID="FindFileDialog.__enableFindButton"></a>
-<h4>FindFileDialog.__enableFindButton</h4>
-<b>__enableFindButton</b>(<i></i>)
-
-<p>
-        Private slot called to enable the find button.
-</p>
-<a NAME="FindFileDialog.__getFileList" ID="FindFileDialog.__getFileList"></a>
-<h4>FindFileDialog.__getFileList</h4>
-<b>__getFileList</b>(<i>path, filterRe, excludeHiddenDirs=False, excludeHiddenFiles=False</i>)
-
-<p>
-        Private method to get a list of files to search.
-</p>
-<dl>
-
-<dt><i>path</i> (str)</dt>
-<dd>
-the root directory to search in
-</dd>
-<dt><i>filterRe</i> (regexp object)</dt>
-<dd>
-regular expression defining the filter
-            criteria
-</dd>
-<dt><i>excludeHiddenDirs</i> (bool)</dt>
-<dd>
-flag indicating to exclude hidden directories
-</dd>
-<dt><i>excludeHiddenFiles</i> (bool)</dt>
-<dd>
-flag indicating to exclude hidden files
-</dd>
-</dl>
-<dl>
-<dt>Return:</dt>
-<dd>
-list of files to be processed
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-list of str
-</dd>
-</dl>
-<a NAME="FindFileDialog.__openFile" ID="FindFileDialog.__openFile"></a>
-<h4>FindFileDialog.__openFile</h4>
-<b>__openFile</b>(<i></i>)
-
-<p>
-        Private slot to open the currently selected entry.
-</p>
-<a NAME="FindFileDialog.__stopSearch" ID="FindFileDialog.__stopSearch"></a>
-<h4>FindFileDialog.__stopSearch</h4>
-<b>__stopSearch</b>(<i></i>)
-
-<p>
-        Private slot to handle the stop button being pressed.
-</p>
-<a NAME="FindFileDialog.__stripEol" ID="FindFileDialog.__stripEol"></a>
-<h4>FindFileDialog.__stripEol</h4>
-<b>__stripEol</b>(<i>txt</i>)
-
-<p>
-        Private method to strip the eol part.
-</p>
-<dl>
-
-<dt><i>txt</i></dt>
-<dd>
-line of text that should be treated (string)
-</dd>
-</dl>
-<dl>
-<dt>Return:</dt>
-<dd>
-text with eol stripped (string)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_buttonBox_clicked" ID="FindFileDialog.on_buttonBox_clicked"></a>
-<h4>FindFileDialog.on_buttonBox_clicked</h4>
-<b>on_buttonBox_clicked</b>(<i>button</i>)
-
-<p>
-        Private slot called by a button of the button box clicked.
-</p>
-<dl>
-
-<dt><i>button</i></dt>
-<dd>
-button that was clicked (QAbstractButton)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_dirButton_clicked" ID="FindFileDialog.on_dirButton_clicked"></a>
-<h4>FindFileDialog.on_dirButton_clicked</h4>
-<b>on_dirButton_clicked</b>(<i></i>)
-
-<p>
-        Private slot to handle the selection of the 'Directory' radio button.
-</p>
-<a NAME="FindFileDialog.on_dirPicker_editTextChanged" ID="FindFileDialog.on_dirPicker_editTextChanged"></a>
-<h4>FindFileDialog.on_dirPicker_editTextChanged</h4>
-<b>on_dirPicker_editTextChanged</b>(<i>text</i>)
-
-<p>
-        Private slot to handle the textChanged signal of the directory
-        picker.
-</p>
-<dl>
-
-<dt><i>text</i></dt>
-<dd>
-(ignored)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_filterCheckBox_clicked" ID="FindFileDialog.on_filterCheckBox_clicked"></a>
-<h4>FindFileDialog.on_filterCheckBox_clicked</h4>
-<b>on_filterCheckBox_clicked</b>(<i></i>)
-
-<p>
-        Private slot to handle the selection of the file filter check box.
-</p>
-<a NAME="FindFileDialog.on_filterEdit_textEdited" ID="FindFileDialog.on_filterEdit_textEdited"></a>
-<h4>FindFileDialog.on_filterEdit_textEdited</h4>
-<b>on_filterEdit_textEdited</b>(<i>text</i>)
-
-<p>
-        Private slot to handle the textChanged signal of the file filter edit.
-</p>
-<dl>
-
-<dt><i>text</i></dt>
-<dd>
-(ignored)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_findList_itemDoubleClicked" ID="FindFileDialog.on_findList_itemDoubleClicked"></a>
-<h4>FindFileDialog.on_findList_itemDoubleClicked</h4>
-<b>on_findList_itemDoubleClicked</b>(<i>itm, column</i>)
-
-<p>
-        Private slot to handle the double click on a file item.
-</p>
-<p>
-        It emits the signal
-        sourceFile or designerFile depending on the file extension.
-</p>
-<dl>
-
-<dt><i>itm</i></dt>
-<dd>
-the double clicked tree item (QTreeWidgetItem)
-</dd>
-<dt><i>column</i></dt>
-<dd>
-column that was double clicked (integer) (ignored)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_findtextCombo_editTextChanged" ID="FindFileDialog.on_findtextCombo_editTextChanged"></a>
-<h4>FindFileDialog.on_findtextCombo_editTextChanged</h4>
-<b>on_findtextCombo_editTextChanged</b>(<i>text</i>)
-
-<p>
-        Private slot to handle the editTextChanged signal of the find
-        text combo.
-</p>
-<dl>
-
-<dt><i>text</i></dt>
-<dd>
-(ignored)
-</dd>
-</dl>
-<a NAME="FindFileDialog.on_openFilesButton_clicked" ID="FindFileDialog.on_openFilesButton_clicked"></a>
-<h4>FindFileDialog.on_openFilesButton_clicked</h4>
-<b>on_openFilesButton_clicked</b>(<i></i>)
-
-<p>
-        Private slot to handle the selection of the 'Open Files' radio button.
-</p>
-<a NAME="FindFileDialog.on_projectButton_clicked" ID="FindFileDialog.on_projectButton_clicked"></a>
-<h4>FindFileDialog.on_projectButton_clicked</h4>
-<b>on_projectButton_clicked</b>(<i></i>)
-
-<p>
-        Private slot to handle the selection of the 'Project' radio button.
-</p>
-<a NAME="FindFileDialog.on_replaceButton_clicked" ID="FindFileDialog.on_replaceButton_clicked"></a>
-<h4>FindFileDialog.on_replaceButton_clicked</h4>
-<b>on_replaceButton_clicked</b>(<i></i>)
-
-<p>
-        Private slot to perform the requested replace actions.
-</p>
-<a NAME="FindFileDialog.on_replacetextCombo_editTextChanged" ID="FindFileDialog.on_replacetextCombo_editTextChanged"></a>
-<h4>FindFileDialog.on_replacetextCombo_editTextChanged</h4>
-<b>on_replacetextCombo_editTextChanged</b>(<i>text</i>)
-
-<p>
-        Private slot to handle the editTextChanged signal of the replace
-        text combo.
-</p>
-<dl>
-
-<dt><i>text</i></dt>
-<dd>
-(ignored)
-</dd>
-</dl>
-<a NAME="FindFileDialog.setOpenFiles" ID="FindFileDialog.setOpenFiles"></a>
-<h4>FindFileDialog.setOpenFiles</h4>
-<b>setOpenFiles</b>(<i></i>)
-
-<p>
-        Public slot to set the mode to search in open files.
-</p>
-<a NAME="FindFileDialog.setSearchDirectory" ID="FindFileDialog.setSearchDirectory"></a>
-<h4>FindFileDialog.setSearchDirectory</h4>
-<b>setSearchDirectory</b>(<i>searchDir</i>)
-
-<p>
-        Public slot to set the name of the directory to search in.
-</p>
-<dl>
-
-<dt><i>searchDir</i></dt>
-<dd>
-name of the directory to search in (string)
-</dd>
-</dl>
-<a NAME="FindFileDialog.show" ID="FindFileDialog.show"></a>
-<h4>FindFileDialog.show</h4>
-<b>show</b>(<i>txt=""</i>)
-
-<p>
-        Public method to enable/disable the project button.
-</p>
-<dl>
-
-<dt><i>txt</i></dt>
-<dd>
-text to be shown in the searchtext combo (string)
-</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/eric7/Documentation/Source/eric7.UI.FindFileWidget.html	Sat Sep 18 18:51:58 2021 +0200
@@ -0,0 +1,548 @@
+<!DOCTYPE html>
+<html><head>
+<title>eric7.UI.FindFileWidget</title>
+<meta charset="UTF-8">
+<link rel="stylesheet" href="styles.css">
+</head>
+<body>
+<a NAME="top" ID="top"></a>
+<h1>eric7.UI.FindFileWidget</h1>
+
+<p>
+Module implementing a dialog to search for text in files.
+</p>
+<h3>Global Attributes</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Classes</h3>
+
+<table>
+
+<tr>
+<td><a href="#FindFileWidget">FindFileWidget</a></td>
+<td>Class implementing a widget to search for text in files and replace it with some other text.</td>
+</tr>
+</table>
+<h3>Functions</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<hr />
+<hr />
+<a NAME="FindFileWidget" ID="FindFileWidget"></a>
+<h2>FindFileWidget</h2>
+
+<p>
+    Class implementing a widget to search for text in files and replace it
+    with some other text.
+</p>
+<p>
+    The occurrences found are displayed in a tree showing the file name,
+    the line number and the text found. The file will be opened upon a double
+    click onto the respective entry of the list. If the widget is in replace
+    mode the line below shows the text after replacement. Replacements can
+    be authorized by ticking them on. Pressing the replace button performs
+    all ticked replacement operations.
+</p>
+<h3>Signals</h3>
+<dl>
+
+<dt>designerFile(str)</dt>
+<dd>
+emitted to open a Qt-Designer file
+</dd>
+<dt>sourceFile(str, int, str, int, int)</dt>
+<dd>
+emitted to open a source file
+        at a specificline
+</dd>
+</dl>
+<h3>Derived from</h3>
+QWidget, Ui_FindFileWidget
+<h3>Class Attributes</h3>
+
+<table>
+<tr><td>endRole</td></tr><tr><td>lineRole</td></tr><tr><td>md5Role</td></tr><tr><td>replaceRole</td></tr><tr><td>startRole</td></tr>
+</table>
+<h3>Class Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+<h3>Methods</h3>
+
+<table>
+
+<tr>
+<td><a href="#FindFileWidget.__init__">FindFileWidget</a></td>
+<td>Constructor</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__contextMenuRequested">__contextMenuRequested</a></td>
+<td>Private slot to handle the context menu request.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__copyToClipboard">__copyToClipboard</a></td>
+<td>Private slot to copy the path of an entry to the clipboard.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__createItem">__createItem</a></td>
+<td>Private method to create an entry in the file list.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__doSearch">__doSearch</a></td>
+<td>Private slot to handle the find button being pressed.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__enableFindButton">__enableFindButton</a></td>
+<td>Private slot called to enable the find button.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__getFileList">__getFileList</a></td>
+<td>Private method to get a list of files to search.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__openFile">__openFile</a></td>
+<td>Private slot to open the currently selected entry.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__projectClosed">__projectClosed</a></td>
+<td>Private slot to react to the closing of a project.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__projectOpened">__projectOpened</a></td>
+<td>Private slot to react to the opening of a project.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__stopSearch">__stopSearch</a></td>
+<td>Private slot to handle the stop button being pressed.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__stripEol">__stripEol</a></td>
+<td>Private method to strip the eol part.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.__toggleReplaceMode">__toggleReplaceMode</a></td>
+<td>Private slot to toggle the dialog mode.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.activate">activate</a></td>
+<td>Public method to activate the widget with a given mode, a text to search for and some search parameters.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_dirButton_clicked">on_dirButton_clicked</a></td>
+<td>Private slot to handle the selection of the 'Directory' radio button.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_dirPicker_editTextChanged">on_dirPicker_editTextChanged</a></td>
+<td>Private slot to handle the textChanged signal of the directory picker.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_filterCheckBox_clicked">on_filterCheckBox_clicked</a></td>
+<td>Private slot to handle the selection of the file filter check box.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_filterEdit_textEdited">on_filterEdit_textEdited</a></td>
+<td>Private slot to handle the textChanged signal of the file filter edit.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_findList_itemDoubleClicked">on_findList_itemDoubleClicked</a></td>
+<td>Private slot to handle the double click on a file item.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_findtextCombo_editTextChanged">on_findtextCombo_editTextChanged</a></td>
+<td>Private slot to handle the editTextChanged signal of the find text combo.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_openFilesButton_clicked">on_openFilesButton_clicked</a></td>
+<td>Private slot to handle the selection of the 'Open Files' radio button.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_projectButton_clicked">on_projectButton_clicked</a></td>
+<td>Private slot to handle the selection of the 'Project' radio button.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_replaceButton_clicked">on_replaceButton_clicked</a></td>
+<td>Private slot to perform the requested replace actions.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.on_replacetextCombo_editTextChanged">on_replacetextCombo_editTextChanged</a></td>
+<td>Private slot to handle the editTextChanged signal of the replace text combo.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.setOpenFiles">setOpenFiles</a></td>
+<td>Public slot to set the mode to search in open files.</td>
+</tr>
+<tr>
+<td><a href="#FindFileWidget.setSearchDirectory">setSearchDirectory</a></td>
+<td>Public slot to set the name of the directory to search in.</td>
+</tr>
+</table>
+<h3>Static Methods</h3>
+
+<table>
+<tr><td>None</td></tr>
+</table>
+
+<a NAME="FindFileWidget.__init__" ID="FindFileWidget.__init__"></a>
+<h4>FindFileWidget (Constructor)</h4>
+<b>FindFileWidget</b>(<i>project, parent=None</i>)
+
+<p>
+        Constructor
+</p>
+<dl>
+
+<dt><i>project</i> (Project)</dt>
+<dd>
+reference to the project object
+</dd>
+<dt><i>parent</i> (QWidget (optional))</dt>
+<dd>
+parent widget of this dialog (defaults to None)
+</dd>
+</dl>
+<a NAME="FindFileWidget.__contextMenuRequested" ID="FindFileWidget.__contextMenuRequested"></a>
+<h4>FindFileWidget.__contextMenuRequested</h4>
+<b>__contextMenuRequested</b>(<i>pos</i>)
+
+<p>
+        Private slot to handle the context menu request.
+</p>
+<dl>
+
+<dt><i>pos</i> (QPoint)</dt>
+<dd>
+position the context menu shall be shown
+</dd>
+</dl>
+<a NAME="FindFileWidget.__copyToClipboard" ID="FindFileWidget.__copyToClipboard"></a>
+<h4>FindFileWidget.__copyToClipboard</h4>
+<b>__copyToClipboard</b>(<i></i>)
+
+<p>
+        Private slot to copy the path of an entry to the clipboard.
+</p>
+<a NAME="FindFileWidget.__createItem" ID="FindFileWidget.__createItem"></a>
+<h4>FindFileWidget.__createItem</h4>
+<b>__createItem</b>(<i>file, line, text, start, end, replTxt="", md5=""</i>)
+
+<p>
+        Private method to create an entry in the file list.
+</p>
+<dl>
+
+<dt><i>file</i> (str)</dt>
+<dd>
+filename of file
+</dd>
+<dt><i>line</i> (int)</dt>
+<dd>
+line number
+</dd>
+<dt><i>text</i> (str)</dt>
+<dd>
+text found
+</dd>
+<dt><i>start</i> (int)</dt>
+<dd>
+start position of match
+</dd>
+<dt><i>end</i> (int)</dt>
+<dd>
+end position of match
+</dd>
+<dt><i>replTxt</i> (str (optional))</dt>
+<dd>
+text with replacements applied (defaults to "")
+</dd>
+<dt><i>md5</i> (str (optional))</dt>
+<dd>
+MD5 hash of the file (defaults to "")
+</dd>
+</dl>
+<a NAME="FindFileWidget.__doSearch" ID="FindFileWidget.__doSearch"></a>
+<h4>FindFileWidget.__doSearch</h4>
+<b>__doSearch</b>(<i></i>)
+
+<p>
+        Private slot to handle the find button being pressed.
+</p>
+<a NAME="FindFileWidget.__enableFindButton" ID="FindFileWidget.__enableFindButton"></a>
+<h4>FindFileWidget.__enableFindButton</h4>
+<b>__enableFindButton</b>(<i></i>)
+
+<p>
+        Private slot called to enable the find button.
+</p>
+<a NAME="FindFileWidget.__getFileList" ID="FindFileWidget.__getFileList"></a>
+<h4>FindFileWidget.__getFileList</h4>
+<b>__getFileList</b>(<i>path, filterRe, excludeHiddenDirs=False, excludeHiddenFiles=False</i>)
+
+<p>
+        Private method to get a list of files to search.
+</p>
+<dl>
+
+<dt><i>path</i> (str)</dt>
+<dd>
+the root directory to search in
+</dd>
+<dt><i>filterRe</i> (regexp object)</dt>
+<dd>
+regular expression defining the filter
+            criteria
+</dd>
+<dt><i>excludeHiddenDirs</i> (bool)</dt>
+<dd>
+flag indicating to exclude hidden directories
+</dd>
+<dt><i>excludeHiddenFiles</i> (bool)</dt>
+<dd>
+flag indicating to exclude hidden files
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+list of files to be processed
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+list of str
+</dd>
+</dl>
+<a NAME="FindFileWidget.__openFile" ID="FindFileWidget.__openFile"></a>
+<h4>FindFileWidget.__openFile</h4>
+<b>__openFile</b>(<i></i>)
+
+<p>
+        Private slot to open the currently selected entry.
+</p>
+<a NAME="FindFileWidget.__projectClosed" ID="FindFileWidget.__projectClosed"></a>
+<h4>FindFileWidget.__projectClosed</h4>
+<b>__projectClosed</b>(<i></i>)
+
+<p>
+        Private slot to react to the closing of a project.
+</p>
+<a NAME="FindFileWidget.__projectOpened" ID="FindFileWidget.__projectOpened"></a>
+<h4>FindFileWidget.__projectOpened</h4>
+<b>__projectOpened</b>(<i></i>)
+
+<p>
+        Private slot to react to the opening of a project.
+</p>
+<a NAME="FindFileWidget.__stopSearch" ID="FindFileWidget.__stopSearch"></a>
+<h4>FindFileWidget.__stopSearch</h4>
+<b>__stopSearch</b>(<i></i>)
+
+<p>
+        Private slot to handle the stop button being pressed.
+</p>
+<a NAME="FindFileWidget.__stripEol" ID="FindFileWidget.__stripEol"></a>
+<h4>FindFileWidget.__stripEol</h4>
+<b>__stripEol</b>(<i>txt</i>)
+
+<p>
+        Private method to strip the eol part.
+</p>
+<dl>
+
+<dt><i>txt</i> (str)</dt>
+<dd>
+line of text that should be treated
+</dd>
+</dl>
+<dl>
+<dt>Return:</dt>
+<dd>
+text with eol stripped
+</dd>
+</dl>
+<dl>
+<dt>Return Type:</dt>
+<dd>
+str
+</dd>
+</dl>
+<a NAME="FindFileWidget.__toggleReplaceMode" ID="FindFileWidget.__toggleReplaceMode"></a>
+<h4>FindFileWidget.__toggleReplaceMode</h4>
+<b>__toggleReplaceMode</b>(<i></i>)
+
+<p>
+        Private slot to toggle the dialog mode.
+</p>
+<a NAME="FindFileWidget.activate" ID="FindFileWidget.activate"></a>
+<h4>FindFileWidget.activate</h4>
+<b>activate</b>(<i>replaceMode=False, txt="", searchDir="", openFiles=False</i>)
+
+<p>
+        Public method to activate the widget with a given mode, a text
+        to search for and some search parameters.
+</p>
+<dl>
+
+<dt><i>replaceMode</i> (bool (optional))</dt>
+<dd>
+flag indicating replacement mode (defaults to False)
+</dd>
+<dt><i>txt</i> (str (optional))</dt>
+<dd>
+text to be searched for (defaults to "")
+</dd>
+<dt><i>searchDir</i> (str (optional))</dt>
+<dd>
+directory to search in (defaults to "")
+</dd>
+<dt><i>openFiles</i> (bool (optional))</dt>
+<dd>
+flag indicating to operate on open files only
+            (defaults to False)
+</dd>
+</dl>
+<a NAME="FindFileWidget.on_dirButton_clicked" ID="FindFileWidget.on_dirButton_clicked"></a>
+<h4>FindFileWidget.on_dirButton_clicked</h4>
+<b>on_dirButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to handle the selection of the 'Directory' radio button.
+</p>
+<a NAME="FindFileWidget.on_dirPicker_editTextChanged" ID="FindFileWidget.on_dirPicker_editTextChanged"></a>
+<h4>FindFileWidget.on_dirPicker_editTextChanged</h4>
+<b>on_dirPicker_editTextChanged</b>(<i>text</i>)
+
+<p>
+        Private slot to handle the textChanged signal of the directory
+        picker.
+</p>
+<dl>
+
+<dt><i>text</i></dt>
+<dd>
+(ignored)
+</dd>
+</dl>
+<a NAME="FindFileWidget.on_filterCheckBox_clicked" ID="FindFileWidget.on_filterCheckBox_clicked"></a>
+<h4>FindFileWidget.on_filterCheckBox_clicked</h4>
+<b>on_filterCheckBox_clicked</b>(<i></i>)
+
+<p>
+        Private slot to handle the selection of the file filter check box.
+</p>
+<a NAME="FindFileWidget.on_filterEdit_textEdited" ID="FindFileWidget.on_filterEdit_textEdited"></a>
+<h4>FindFileWidget.on_filterEdit_textEdited</h4>
+<b>on_filterEdit_textEdited</b>(<i>text</i>)
+
+<p>
+        Private slot to handle the textChanged signal of the file filter edit.
+</p>
+<dl>
+
+<dt><i>text</i></dt>
+<dd>
+(ignored)
+</dd>
+</dl>
+<a NAME="FindFileWidget.on_findList_itemDoubleClicked" ID="FindFileWidget.on_findList_itemDoubleClicked"></a>
+<h4>FindFileWidget.on_findList_itemDoubleClicked</h4>
+<b>on_findList_itemDoubleClicked</b>(<i>itm, column</i>)
+
+<p>
+        Private slot to handle the double click on a file item.
+</p>
+<p>
+        It emits the signal sourceFile or designerFile depending on the file
+        extension.
+</p>
+<dl>
+
+<dt><i>itm</i> (QTreeWidgetItem)</dt>
+<dd>
+the double clicked tree item
+</dd>
+<dt><i>column</i> (int)</dt>
+<dd>
+column that was double clicked (ignored)
+</dd>
+</dl>
+<a NAME="FindFileWidget.on_findtextCombo_editTextChanged" ID="FindFileWidget.on_findtextCombo_editTextChanged"></a>
+<h4>FindFileWidget.on_findtextCombo_editTextChanged</h4>
+<b>on_findtextCombo_editTextChanged</b>(<i>text</i>)
+
+<p>
+        Private slot to handle the editTextChanged signal of the find
+        text combo.
+</p>
+<dl>
+
+<dt><i>text</i></dt>
+<dd>
+(ignored)
+</dd>
+</dl>
+<a NAME="FindFileWidget.on_openFilesButton_clicked" ID="FindFileWidget.on_openFilesButton_clicked"></a>
+<h4>FindFileWidget.on_openFilesButton_clicked</h4>
+<b>on_openFilesButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to handle the selection of the 'Open Files' radio button.
+</p>
+<a NAME="FindFileWidget.on_projectButton_clicked" ID="FindFileWidget.on_projectButton_clicked"></a>
+<h4>FindFileWidget.on_projectButton_clicked</h4>
+<b>on_projectButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to handle the selection of the 'Project' radio button.
+</p>
+<a NAME="FindFileWidget.on_replaceButton_clicked" ID="FindFileWidget.on_replaceButton_clicked"></a>
+<h4>FindFileWidget.on_replaceButton_clicked</h4>
+<b>on_replaceButton_clicked</b>(<i></i>)
+
+<p>
+        Private slot to perform the requested replace actions.
+</p>
+<a NAME="FindFileWidget.on_replacetextCombo_editTextChanged" ID="FindFileWidget.on_replacetextCombo_editTextChanged"></a>
+<h4>FindFileWidget.on_replacetextCombo_editTextChanged</h4>
+<b>on_replacetextCombo_editTextChanged</b>(<i>text</i>)
+
+<p>
+        Private slot to handle the editTextChanged signal of the replace
+        text combo.
+</p>
+<dl>
+
+<dt><i>text</i></dt>
+<dd>
+(ignored)
+</dd>
+</dl>
+<a NAME="FindFileWidget.setOpenFiles" ID="FindFileWidget.setOpenFiles"></a>
+<h4>FindFileWidget.setOpenFiles</h4>
+<b>setOpenFiles</b>(<i></i>)
+
+<p>
+        Public slot to set the mode to search in open files.
+</p>
+<a NAME="FindFileWidget.setSearchDirectory" ID="FindFileWidget.setSearchDirectory"></a>
+<h4>FindFileWidget.setSearchDirectory</h4>
+<b>setSearchDirectory</b>(<i>searchDir</i>)
+
+<p>
+        Public slot to set the name of the directory to search in.
+</p>
+<dl>
+
+<dt><i>searchDir</i> (str)</dt>
+<dd>
+name of the directory to search in
+</dd>
+</dl>
+<div align="right"><a href="#top">Up</a></div>
+<hr />
+</body></html>
\ No newline at end of file
--- a/eric7/Documentation/Source/eric7.UI.UserInterface.html	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/Documentation/Source/eric7.UI.UserInterface.html	Sat Sep 18 18:51:58 2021 +0200
@@ -253,6 +253,10 @@
 <td>Private slot to handle the activation of the Conda manager widget.</td>
 </tr>
 <tr>
+<td><a href="#UserInterface.__activateFindFileWidget">__activateFindFileWidget</a></td>
+<td>Private method to activate the Find In Files widget.</td>
+</tr>
+<tr>
 <td><a href="#UserInterface.__activateIRC">__activateIRC</a></td>
 <td>Private slot to handle the activation of the IRC window.</td>
 </tr>
@@ -1089,8 +1093,8 @@
 <td>Public slot to show the Find File by Name dialog.</td>
 </tr>
 <tr>
-<td><a href="#UserInterface.showFindFilesDialog">showFindFilesDialog</a></td>
-<td>Public slot to show the Find In Files dialog.</td>
+<td><a href="#UserInterface.showFindFilesWidget">showFindFilesWidget</a></td>
+<td>Public slot to show the Find In Files widget.</td>
 </tr>
 <tr>
 <td><a href="#UserInterface.showLogViewer">showLogViewer</a></td>
@@ -1105,8 +1109,8 @@
 <td>Public slot to set the preferences.</td>
 </tr>
 <tr>
-<td><a href="#UserInterface.showReplaceFilesDialog">showReplaceFilesDialog</a></td>
-<td>Public slot to show the Find & Replace In Files dialog.</td>
+<td><a href="#UserInterface.showReplaceFilesWidget">showReplaceFilesWidget</a></td>
+<td>Public slot to show the Find In Files widget in replace mode.</td>
 </tr>
 <tr>
 <td><a href="#UserInterface.showSideWidget">showSideWidget</a></td>
@@ -1261,6 +1265,13 @@
 <p>
         Private slot to handle the activation of the Conda manager widget.
 </p>
+<a NAME="UserInterface.__activateFindFileWidget" ID="UserInterface.__activateFindFileWidget"></a>
+<h4>UserInterface.__activateFindFileWidget</h4>
+<b>__activateFindFileWidget</b>(<i></i>)
+
+<p>
+        Private method to activate the Find In Files widget.
+</p>
 <a NAME="UserInterface.__activateIRC" ID="UserInterface.__activateIRC"></a>
 <h4>UserInterface.__activateIRC</h4>
 <b>__activateIRC</b>(<i></i>)
@@ -3678,26 +3689,27 @@
 <p>
         Public slot to show the Find File by Name dialog.
 </p>
-<a NAME="UserInterface.showFindFilesDialog" ID="UserInterface.showFindFilesDialog"></a>
-<h4>UserInterface.showFindFilesDialog</h4>
-<b>showFindFilesDialog</b>(<i>txt="", searchDir="", openFiles=False</i>)
+<a NAME="UserInterface.showFindFilesWidget" ID="UserInterface.showFindFilesWidget"></a>
+<h4>UserInterface.showFindFilesWidget</h4>
+<b>showFindFilesWidget</b>(<i>txt="", searchDir="", openFiles=False</i>)
 
 <p>
-        Public slot to show the Find In Files dialog.
+        Public slot to show the Find In Files widget.
 </p>
 <dl>
 
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str (optional))</dt>
 <dd>
-text to search for (string)
+text to search for (defaults to "")
 </dd>
-<dt><i>searchDir</i></dt>
+<dt><i>searchDir</i> (str (optional))</dt>
 <dd>
-directory to search in (string)
+directory to search in (defaults to "")
 </dd>
-<dt><i>openFiles</i></dt>
+<dt><i>openFiles</i> (bool (optional))</dt>
 <dd>
-flag indicating to operate on open files (boolean)
+flag indicating to operate on open files only
+            (defaults to False)
 </dd>
 </dl>
 <a NAME="UserInterface.showLogViewer" ID="UserInterface.showLogViewer"></a>
@@ -3752,26 +3764,27 @@
 name of the configuration page to show (string)
 </dd>
 </dl>
-<a NAME="UserInterface.showReplaceFilesDialog" ID="UserInterface.showReplaceFilesDialog"></a>
-<h4>UserInterface.showReplaceFilesDialog</h4>
-<b>showReplaceFilesDialog</b>(<i>txt="", searchDir="", openFiles=False</i>)
+<a NAME="UserInterface.showReplaceFilesWidget" ID="UserInterface.showReplaceFilesWidget"></a>
+<h4>UserInterface.showReplaceFilesWidget</h4>
+<b>showReplaceFilesWidget</b>(<i>txt="", searchDir="", openFiles=False</i>)
 
 <p>
-        Public slot to show the Find & Replace In Files dialog.
+        Public slot to show the Find In Files widget in replace mode.
 </p>
 <dl>
 
-<dt><i>txt</i></dt>
+<dt><i>txt</i> (str (optional))</dt>
 <dd>
-text to search for (string)
+text to search for (defaults to "")
 </dd>
-<dt><i>searchDir</i></dt>
+<dt><i>searchDir</i> (str (optional))</dt>
 <dd>
-directory to search in (string)
+directory to search in (defaults to "")
 </dd>
-<dt><i>openFiles</i></dt>
+<dt><i>openFiles</i> (bool (optional))</dt>
 <dd>
-flag indicating to operate on open files (boolean)
+flag indicating to operate on open files only
+            (defaults to False)
 </dd>
 </dl>
 <a NAME="UserInterface.showSideWidget" ID="UserInterface.showSideWidget"></a>
--- a/eric7/Documentation/Source/index-eric7.UI.html	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/Documentation/Source/index-eric7.UI.html	Sat Sep 18 18:51:58 2021 +0200
@@ -88,12 +88,12 @@
 <td>Module implementing a dialog to display an error log.</td>
 </tr>
 <tr>
-<td><a href="eric7.UI.FindFileDialog.html">FindFileDialog</a></td>
-<td>Module implementing a dialog to search for text in files.</td>
+<td><a href="eric7.UI.FindFileNameDialog.html">FindFileNameDialog</a></td>
+<td>Module implementing a dialog to search for files.</td>
 </tr>
 <tr>
-<td><a href="eric7.UI.FindFileNameDialog.html">FindFileNameDialog</a></td>
-<td>Module implementing a dialog to search for files.</td>
+<td><a href="eric7.UI.FindFileWidget.html">FindFileWidget</a></td>
+<td>Module implementing a dialog to search for text in files.</td>
 </tr>
 <tr>
 <td><a href="eric7.UI.Info.html">Info</a></td>
--- a/eric7/UI/Browser.py	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/UI/Browser.py	Sat Sep 18 18:51:58 2021 +0200
@@ -684,7 +684,7 @@
         index = self.currentIndex()
         searchDir = self.model().item(index).dirName()
         
-        ericApp().getObject("UserInterface").showFindFilesDialog(
+        ericApp().getObject("UserInterface").showFindFilesWidget(
             searchDir=searchDir)
         
     def __replaceInDirectory(self):
@@ -694,7 +694,7 @@
         index = self.currentIndex()
         searchDir = self.model().item(index).dirName()
         
-        ericApp().getObject("UserInterface").showReplaceFilesDialog(
+        ericApp().getObject("UserInterface").showReplaceFilesWidget(
             searchDir=searchDir)
         
     def handleProgramChange(self, fn):
--- a/eric7/UI/FindFileDialog.py	Fri Sep 17 19:53:54 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,778 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2002 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a dialog to search for text in files.
-"""
-
-import os
-import re
-
-from PyQt6.QtCore import pyqtSignal, Qt, pyqtSlot
-from PyQt6.QtGui import QCursor
-from PyQt6.QtWidgets import (
-    QDialog, QApplication, QMenu, QDialogButtonBox, QTreeWidgetItem, QComboBox
-)
-
-from EricWidgets.EricApplication import ericApp
-from EricWidgets import EricMessageBox
-from EricWidgets.EricPathPicker import EricPathPickerModes
-
-from .Ui_FindFileDialog import Ui_FindFileDialog
-
-import Utilities
-import Preferences
-
-
-class FindFileDialog(QDialog, Ui_FindFileDialog):
-    """
-    Class implementing a dialog to search for text in files.
-    
-    The occurrences found are displayed in a QTreeWidget showing the filename,
-    the linenumber and the found text. The file will be opened upon a double
-    click onto the respective entry of the list.
-    
-    @signal sourceFile(str, int, str, int, int) emitted to open a source file
-        at a line
-    @signal designerFile(str) emitted to open a Qt-Designer file
-    """
-    sourceFile = pyqtSignal(str, int, str, int, int)
-    designerFile = pyqtSignal(str)
-    
-    lineRole = Qt.ItemDataRole.UserRole + 1
-    startRole = Qt.ItemDataRole.UserRole + 2
-    endRole = Qt.ItemDataRole.UserRole + 3
-    replaceRole = Qt.ItemDataRole.UserRole + 4
-    md5Role = Qt.ItemDataRole.UserRole + 5
-    
-    def __init__(self, project, replaceMode=False, parent=None):
-        """
-        Constructor
-        
-        @param project reference to the project object
-        @param replaceMode flag indicating the replace dialog mode (boolean)
-        @param parent parent widget of this dialog (QWidget)
-        """
-        super().__init__(parent)
-        self.setupUi(self)
-        self.setWindowFlags(Qt.WindowType.Window)
-        
-        self.dirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
-        self.dirPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
-        self.dirPicker.setSizeAdjustPolicy(
-            QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon)
-        
-        self.__replaceMode = replaceMode
-        
-        self.stopButton = self.buttonBox.addButton(
-            self.tr("Stop"), QDialogButtonBox.ButtonRole.ActionRole)
-        self.stopButton.setEnabled(False)
-        
-        self.findButton = self.buttonBox.addButton(
-            self.tr("Find"), QDialogButtonBox.ButtonRole.ActionRole)
-        self.findButton.setEnabled(False)
-        self.findButton.setDefault(True)
-        
-        if self.__replaceMode:
-            self.replaceButton.setEnabled(False)
-            self.setWindowTitle(self.tr("Replace in Files"))
-        else:
-            self.replaceLabel.hide()
-            self.replacetextCombo.hide()
-            self.replaceButton.hide()
-        
-        self.findProgressLabel.setMaximumWidth(550)
-        
-        self.findtextCombo.setCompleter(None)
-        self.replacetextCombo.setCompleter(None)
-        
-        self.searchHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
-                "FindFileDialog/SearchHistory"))
-        self.replaceHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
-                "FindFileDialog/ReplaceHistory"))
-        self.dirHistory = Preferences.toList(
-            Preferences.Prefs.settings.value(
-                "FindFileDialog/DirectoryHistory"))
-        self.findtextCombo.addItems(self.searchHistory)
-        self.replacetextCombo.addItems(self.replaceHistory)
-        self.dirPicker.addItems(self.dirHistory)
-        
-        self.excludeHiddenCheckBox.setChecked(Preferences.toBool(
-            Preferences.Prefs.settings.value(
-                "FindFileDialog/ExcludeHidden", True)
-        ))
-        
-        self.project = project
-        
-        self.findList.headerItem().setText(self.findList.columnCount(), "")
-        self.findList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
-        self.__section0Size = self.findList.header().sectionSize(0)
-        self.findList.setExpandsOnDoubleClick(False)
-        if self.__replaceMode:
-            font = Preferences.getEditorOtherFonts("MonospacedFont")
-            self.findList.setFont(font)
-
-        # Qt Designer form files
-        self.filterForms = r'.*\.ui$'
-        self.formsExt = ['*.ui']
-        
-        # Corba interface files
-        self.filterInterfaces = r'.*\.idl$'
-        self.interfacesExt = ['*.idl']
-        
-        # Protobuf protocol files
-        self.filterProtocols = r'.*\.proto$'
-        self.protocolsExt = ['*.proto']
-        
-        # Qt resources files
-        self.filterResources = r'.*\.qrc$'
-        self.resourcesExt = ['*.qrc']
-        
-        self.__cancelSearch = False
-        self.__lastFileItem = None
-        self.__populating = False
-        
-        self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
-        self.customContextMenuRequested.connect(self.__contextMenuRequested)
-        
-    def __createItem(self, file, line, text, start, end, replTxt="", md5=""):
-        """
-        Private method to create an entry in the file list.
-        
-        @param file filename of file (string)
-        @param line line number (integer)
-        @param text text found (string)
-        @param start start position of match (integer)
-        @param end end position of match (integer)
-        @param replTxt text with replacements applied (string)
-        @param md5 MD5 hash of the file (string)
-        """
-        if self.__lastFileItem is None:
-            # It's a new file
-            self.__lastFileItem = QTreeWidgetItem(self.findList, [file])
-            self.__lastFileItem.setFirstColumnSpanned(True)
-            self.__lastFileItem.setExpanded(True)
-            if self.__replaceMode:
-                self.__lastFileItem.setFlags(
-                    self.__lastFileItem.flags() |
-                    Qt.ItemFlag.ItemIsUserCheckable |
-                    Qt.ItemFlag.ItemIsAutoTristate)
-            self.__lastFileItem.setData(0, self.md5Role, md5)
-        
-        itm = QTreeWidgetItem(self.__lastFileItem)
-        itm.setTextAlignment(0, Qt.AlignmentFlag.AlignRight)
-        itm.setData(0, Qt.ItemDataRole.DisplayRole, line)
-        itm.setData(1, Qt.ItemDataRole.DisplayRole, text)
-        itm.setData(0, self.lineRole, line)
-        itm.setData(0, self.startRole, start)
-        itm.setData(0, self.endRole, end)
-        itm.setData(0, self.replaceRole, replTxt)
-        if self.__replaceMode:
-            itm.setFlags(itm.flags() |
-                         Qt.ItemFlag.ItemIsUserCheckable)
-            itm.setCheckState(0, Qt.CheckState.Checked)
-            self.replaceButton.setEnabled(True)
-        
-    def show(self, txt=""):
-        """
-        Public method to enable/disable the project button.
-        
-        @param txt text to be shown in the searchtext combo (string)
-        """
-        if self.project and self.project.isOpen():
-            self.projectButton.setEnabled(True)
-        else:
-            self.projectButton.setEnabled(False)
-            self.dirButton.setChecked(True)
-            
-        self.findtextCombo.setEditText(txt)
-        self.findtextCombo.lineEdit().selectAll()
-        self.findtextCombo.setFocus()
-        
-        if self.__replaceMode:
-            self.findList.clear()
-            self.replacetextCombo.setEditText("")
-        
-        super().show()
-        
-    def on_findtextCombo_editTextChanged(self, text):
-        """
-        Private slot to handle the editTextChanged signal of the find
-        text combo.
-        
-        @param text (ignored)
-        """
-        self.__enableFindButton()
-        
-    def on_replacetextCombo_editTextChanged(self, text):
-        """
-        Private slot to handle the editTextChanged signal of the replace
-        text combo.
-        
-        @param text (ignored)
-        """
-        self.__enableFindButton()
-        
-    def on_dirPicker_editTextChanged(self, text):
-        """
-        Private slot to handle the textChanged signal of the directory
-        picker.
-        
-        @param text (ignored)
-        """
-        self.__enableFindButton()
-        
-    @pyqtSlot()
-    def on_projectButton_clicked(self):
-        """
-        Private slot to handle the selection of the 'Project' radio button.
-        """
-        self.__enableFindButton()
-        
-    @pyqtSlot()
-    def on_dirButton_clicked(self):
-        """
-        Private slot to handle the selection of the 'Directory' radio button.
-        """
-        self.__enableFindButton()
-
-    @pyqtSlot()
-    def on_openFilesButton_clicked(self):
-        """
-        Private slot to handle the selection of the 'Open Files' radio button.
-        """
-        self.__enableFindButton()
-    
-    @pyqtSlot()
-    def on_filterCheckBox_clicked(self):
-        """
-        Private slot to handle the selection of the file filter check box.
-        """
-        self.__enableFindButton()
-    
-    @pyqtSlot(str)
-    def on_filterEdit_textEdited(self, text):
-        """
-        Private slot to handle the textChanged signal of the file filter edit.
-        
-        @param text (ignored)
-        """
-        self.__enableFindButton()
-    
-    def __enableFindButton(self):
-        """
-        Private slot called to enable the find button.
-        """
-        if (
-            self.findtextCombo.currentText() == "" or
-            (self.dirButton.isChecked() and
-             (self.dirPicker.currentText() == "" or
-              not os.path.exists(os.path.abspath(
-                self.dirPicker.currentText())))) or
-            (self.filterCheckBox.isChecked() and
-             self.filterEdit.text() == "")
-        ):
-            self.findButton.setEnabled(False)
-            self.buttonBox.button(
-                QDialogButtonBox.StandardButton.Close).setDefault(True)
-        else:
-            self.findButton.setEnabled(True)
-            self.findButton.setDefault(True)
-        
-    def on_buttonBox_clicked(self, button):
-        """
-        Private slot called by a button of the button box clicked.
-        
-        @param button button that was clicked (QAbstractButton)
-        """
-        if button == self.findButton:
-            self.__doSearch()
-        elif button == self.stopButton:
-            self.__stopSearch()
-        
-    def __stripEol(self, txt):
-        """
-        Private method to strip the eol part.
-        
-        @param txt line of text that should be treated (string)
-        @return text with eol stripped (string)
-        """
-        return txt.replace("\r", "").replace("\n", "")
-        
-    def __stopSearch(self):
-        """
-        Private slot to handle the stop button being pressed.
-        """
-        self.__cancelSearch = True
-        
-    def __doSearch(self):
-        """
-        Private slot to handle the find button being pressed.
-        """
-        if (
-            self.__replaceMode and
-            not ericApp().getObject("ViewManager").checkAllDirty()
-        ):
-            return
-        
-        self.__cancelSearch = False
-        
-        if self.filterCheckBox.isChecked():
-            fileFilter = self.filterEdit.text()
-            fileFilterList = [
-                "^{0}$".format(filter.replace(".", r"\.").replace("*", ".*"))
-                for filter in fileFilter.split(";")
-            ]
-            filterRe = re.compile("|".join(fileFilterList))
-        
-        if self.projectButton.isChecked():
-            if self.filterCheckBox.isChecked():
-                files = [
-                    self.project.getRelativePath(file)
-                    for file in
-                    self.__getFileList(
-                        self.project.getProjectPath(),
-                        filterRe,
-                        excludeHiddenDirs=self.excludeHiddenCheckBox
-                        .isChecked(),
-                    )
-                ]
-            else:
-                files = []
-                if self.sourcesCheckBox.isChecked():
-                    files += self.project.pdata["SOURCES"]
-                if self.formsCheckBox.isChecked():
-                    files += self.project.pdata["FORMS"]
-                if self.interfacesCheckBox.isChecked():
-                    files += self.project.pdata["INTERFACES"]
-                if self.protocolsCheckBox.isChecked():
-                    files += self.project.pdata["PROTOCOLS"]
-                if self.resourcesCheckBox.isChecked():
-                    files += self.project.pdata["RESOURCES"]
-        elif self.dirButton.isChecked():
-            if not self.filterCheckBox.isChecked():
-                filters = []
-                if (
-                    self.project.isOpen() and
-                    os.path.abspath(self.dirPicker.currentText()).startswith(
-                        self.project.getProjectPath())
-                ):
-                    if self.sourcesCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*")
-                            ) for assoc in
-                            self.project.getFiletypeAssociations("SOURCES")
-                        ])
-                    if self.formsCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*")
-                            ) for assoc in
-                            self.project.getFiletypeAssociations("FORMS")
-                        ])
-                    if self.interfacesCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*")
-                            ) for assoc in
-                            self.project.getFiletypeAssociations("INTERFACES")
-                        ])
-                    if self.protocolsCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*")
-                            ) for assoc in
-                            self.project.getFiletypeAssociations("PROTOCOLS")
-                        ])
-                    if self.resourcesCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*")
-                            ) for assoc in
-                            self.project.getFiletypeAssociations("RESOURCES")
-                        ])
-                else:
-                    if self.sourcesCheckBox.isChecked():
-                        filters.extend([
-                            "^{0}$".format(
-                                assoc.replace(".", r"\.").replace("*", ".*"))
-                            for assoc in list(
-                                Preferences.getEditorLexerAssocs().keys())
-                            if assoc not in
-                            self.formsExt + self.interfacesExt +
-                            self.protocolsExt + self.resourcesExt
-                        ])
-                    if self.formsCheckBox.isChecked():
-                        filters.append(self.filterForms)
-                    if self.interfacesCheckBox.isChecked():
-                        filters.append(self.filterInterfaces)
-                    if self.protocolsCheckBox.isChecked():
-                        filters.append(self.filterProtocols)
-                    if self.resourcesCheckBox.isChecked():
-                        filters.append(self.filterResources)
-                filterString = "|".join(filters)
-                filterRe = re.compile(filterString)
-            files = self.__getFileList(
-                os.path.abspath(self.dirPicker.currentText()),
-                filterRe,
-                excludeHiddenDirs=self.excludeHiddenCheckBox.isChecked(),
-                excludeHiddenFiles=self.excludeHiddenCheckBox.isChecked(),
-            )
-        elif self.openFilesButton.isChecked():
-            vm = ericApp().getObject("ViewManager")
-            vm.checkAllDirty()
-            files = vm.getOpenFilenames()
-        
-        self.findList.clear()
-        QApplication.processEvents()
-        QApplication.processEvents()
-        self.findProgress.setMaximum(len(files))
-        
-        # retrieve the values
-        reg = self.regexpCheckBox.isChecked()
-        wo = self.wordCheckBox.isChecked()
-        cs = self.caseCheckBox.isChecked()
-        ct = self.findtextCombo.currentText()
-        txt = ct if reg else re.escape(ct)
-        if wo:
-            txt = "\\b{0}\\b".format(txt)
-        flags = re.UNICODE
-        if not cs:
-            flags |= re.IGNORECASE
-        try:
-            search = re.compile(txt, flags)
-        except re.error as why:
-            EricMessageBox.critical(
-                self,
-                self.tr("Invalid search expression"),
-                self.tr("""<p>The search expression is not valid.</p>"""
-                        """<p>Error: {0}</p>""").format(str(why)))
-            self.stopButton.setEnabled(False)
-            self.findButton.setEnabled(True)
-            self.findButton.setDefault(True)
-            return
-        # reset the findtextCombo
-        if ct in self.searchHistory:
-            self.searchHistory.remove(ct)
-        self.searchHistory.insert(0, ct)
-        self.findtextCombo.clear()
-        self.findtextCombo.addItems(self.searchHistory)
-        Preferences.Prefs.settings.setValue(
-            "FindFileDialog/SearchHistory",
-            self.searchHistory[:30])
-        Preferences.Prefs.settings.setValue(
-            "FindFileDialog/ExcludeHidden",
-            self.excludeHiddenCheckBox.isChecked())
-        
-        if self.__replaceMode:
-            replTxt = self.replacetextCombo.currentText()
-            if replTxt in self.replaceHistory:
-                self.replaceHistory.remove(replTxt)
-            self.replaceHistory.insert(0, replTxt)
-            self.replacetextCombo.clear()
-            self.replacetextCombo.addItems(self.replaceHistory)
-            Preferences.Prefs.settings.setValue(
-                "FindFileDialog/ReplaceHistory",
-                self.replaceHistory[:30])
-        
-        if self.dirButton.isChecked():
-            searchDir = self.dirPicker.currentText()
-            if searchDir in self.dirHistory:
-                self.dirHistory.remove(searchDir)
-            self.dirHistory.insert(0, searchDir)
-            self.dirPicker.clear()
-            self.dirPicker.addItems(self.dirHistory)
-            Preferences.Prefs.settings.setValue(
-                "FindFileDialog/DirectoryHistory",
-                self.dirHistory[:30])
-        
-        # set the button states
-        self.stopButton.setEnabled(True)
-        self.stopButton.setDefault(True)
-        self.findButton.setEnabled(False)
-        
-        # now go through all the files
-        self.__populating = True
-        self.findList.setUpdatesEnabled(False)
-        breakSearch = False
-        occurrences = 0
-        fileOccurrences = 0
-        for progress, file in enumerate(files, start=1):
-            self.__lastFileItem = None
-            found = False
-            if self.__cancelSearch or breakSearch:
-                break
-            
-            self.findProgressLabel.setPath(file)
-            
-            fn = (
-                os.path.join(self.project.ppath, file)
-                if self.projectButton.isChecked() else
-                file
-            )
-            # read the file and split it into textlines
-            try:
-                text, encoding, hashStr = Utilities.readEncodedFileWithHash(fn)
-                lines = text.splitlines(True)
-            except (UnicodeError, OSError):
-                self.findProgress.setValue(progress)
-                continue
-            
-            # now perform the search and display the lines found
-            for count, line in enumerate(lines, start=1):
-                if self.__cancelSearch:
-                    break
-                
-                contains = search.search(line)
-                if contains:
-                    occurrences += 1
-                    found = True
-                    start = contains.start()
-                    end = contains.end()
-                    if self.__replaceMode:
-                        rline = search.sub(replTxt, line)
-                    else:
-                        rline = ""
-                    line = self.__stripEol(line)
-                    if len(line) > 1024:
-                        line = "{0} ...".format(line[:1024])
-                    if self.__replaceMode:
-                        if len(rline) > 1024:
-                            rline = "{0} ...".format(line[:1024])
-                        line = "- {0}\n+ {1}".format(
-                            line, self.__stripEol(rline))
-                    self.__createItem(file, count, line, start, end,
-                                      rline, hashStr)
-                    
-                    if self.feelLikeCheckBox.isChecked():
-                        fn = os.path.join(self.project.ppath, file)
-                        self.sourceFile.emit(fn, count, "", start, end)
-                        QApplication.processEvents()
-                        breakSearch = True
-                        break
-                
-                QApplication.processEvents()
-            
-            if found:
-                fileOccurrences += 1
-            self.findProgress.setValue(progress)
-        
-        if not files:
-            self.findProgress.setMaximum(1)
-            self.findProgress.setValue(1)
-        
-        resultFormat = self.tr("{0} / {1}", "occurrences / files")
-        self.findProgressLabel.setPath(resultFormat.format(
-            self.tr("%n occurrence(s)", "", occurrences),
-            self.tr("%n file(s)", "", fileOccurrences)))
-        
-        self.findList.setUpdatesEnabled(True)
-        self.findList.sortItems(self.findList.sortColumn(),
-                                self.findList.header().sortIndicatorOrder())
-        self.findList.resizeColumnToContents(1)
-        if self.__replaceMode:
-            self.findList.header().resizeSection(0, self.__section0Size + 30)
-        self.findList.header().setStretchLastSection(True)
-        self.__populating = False
-        
-        self.stopButton.setEnabled(False)
-        self.findButton.setEnabled(True)
-        self.findButton.setDefault(True)
-        
-        if breakSearch:
-            self.close()
-        
-    def on_findList_itemDoubleClicked(self, itm, column):
-        """
-        Private slot to handle the double click on a file item.
-        
-        It emits the signal
-        sourceFile or designerFile depending on the file extension.
-        
-        @param itm the double clicked tree item (QTreeWidgetItem)
-        @param column column that was double clicked (integer) (ignored)
-        """
-        if itm.parent():
-            file = itm.parent().text(0)
-            line = itm.data(0, self.lineRole)
-            start = itm.data(0, self.startRole)
-            end = itm.data(0, self.endRole)
-        else:
-            file = itm.text(0)
-            line = 1
-            start = 0
-            end = 0
-        
-        fn = os.path.join(self.project.ppath, file) if self.project else file
-        if fn.endswith('.ui'):
-            self.designerFile.emit(fn)
-        else:
-            self.sourceFile.emit(fn, line, "", start, end)
-        
-    def __getFileList(self, path, filterRe, excludeHiddenDirs=False,
-                      excludeHiddenFiles=False):
-        """
-        Private method to get a list of files to search.
-        
-        @param path the root directory to search in
-        @type str
-        @param filterRe regular expression defining the filter
-            criteria
-        @type regexp object
-        @param excludeHiddenDirs flag indicating to exclude hidden directories
-        @type bool
-        @param excludeHiddenFiles flag indicating to exclude hidden files
-        @type bool
-        @return list of files to be processed
-        @rtype list of str
-        """
-        path = os.path.abspath(path)
-        files = []
-        for dirname, dirs, filenames in os.walk(path):
-            files.extend([
-                os.path.join(dirname, f) for f in filenames
-                if (not (excludeHiddenFiles and f.startswith(".")) and
-                    re.match(filterRe, f))
-            ])
-            if excludeHiddenDirs:
-                for d in dirs[:]:
-                    if d .startswith("."):
-                        dirs.remove(d)
-        return files
-        
-    def setSearchDirectory(self, searchDir):
-        """
-        Public slot to set the name of the directory to search in.
-        
-        @param searchDir name of the directory to search in (string)
-        """
-        self.dirButton.setChecked(True)
-        self.dirPicker.setEditText(Utilities.toNativeSeparators(searchDir))
-        
-    def setOpenFiles(self):
-        """
-        Public slot to set the mode to search in open files.
-        """
-        self.openFilesButton.setChecked(True)
-        
-    @pyqtSlot()
-    def on_replaceButton_clicked(self):
-        """
-        Private slot to perform the requested replace actions.
-        """
-        self.findProgress.setMaximum(self.findList.topLevelItemCount())
-        self.findProgress.setValue(0)
-        
-        for index in range(self.findList.topLevelItemCount()):
-            itm = self.findList.topLevelItem(index)
-            if itm.checkState(0) in [Qt.CheckState.PartiallyChecked,
-                                     Qt.CheckState.Checked]:
-                file = itm.text(0)
-                origHash = itm.data(0, self.md5Role)
-                
-                self.findProgressLabel.setPath(file)
-                
-                if self.projectButton.isChecked():
-                    fn = os.path.join(self.project.ppath, file)
-                else:
-                    fn = file
-                
-                # read the file and split it into textlines
-                try:
-                    text, encoding, hashStr = (
-                        Utilities.readEncodedFileWithHash(fn)
-                    )
-                    lines = text.splitlines(True)
-                except (UnicodeError, OSError) as err:
-                    EricMessageBox.critical(
-                        self,
-                        self.tr("Replace in Files"),
-                        self.tr(
-                            """<p>Could not read the file <b>{0}</b>."""
-                            """ Skipping it.</p><p>Reason: {1}</p>""")
-                        .format(fn, str(err))
-                    )
-                    self.findProgress.setValue(index)
-                    continue
-                
-                # Check the original and the current hash. Skip the file,
-                # if hashes are different.
-                if origHash != hashStr:
-                    EricMessageBox.critical(
-                        self,
-                        self.tr("Replace in Files"),
-                        self.tr(
-                            """<p>The current and the original hash of the"""
-                            """ file <b>{0}</b> are different. Skipping it."""
-                            """</p><p>Hash 1: {1}</p><p>Hash 2: {2}</p>""")
-                        .format(fn, origHash, hashStr)
-                    )
-                    self.findProgress.setValue(index)
-                    continue
-                
-                # replace the lines authorized by the user
-                for cindex in range(itm.childCount()):
-                    citm = itm.child(cindex)
-                    if citm.checkState(0) == Qt.CheckState.Checked:
-                        line = citm.data(0, self.lineRole)
-                        rline = citm.data(0, self.replaceRole)
-                        lines[line - 1] = rline
-                
-                # write the file
-                txt = "".join(lines)
-                try:
-                    Utilities.writeEncodedFile(fn, txt, encoding)
-                except (OSError, Utilities.CodingError, UnicodeError) as err:
-                    EricMessageBox.critical(
-                        self,
-                        self.tr("Replace in Files"),
-                        self.tr(
-                            """<p>Could not save the file <b>{0}</b>."""
-                            """ Skipping it.</p><p>Reason: {1}</p>""")
-                        .format(fn, str(err))
-                    )
-            
-            self.findProgress.setValue(index + 1)
-        
-        self.findProgressLabel.setPath("")
-        
-        self.findList.clear()
-        self.replaceButton.setEnabled(False)
-        self.findButton.setEnabled(True)
-        self.findButton.setDefault(True)
-        
-    def __contextMenuRequested(self, pos):
-        """
-        Private slot to handle the context menu request.
-        
-        @param pos position the context menu shall be shown (QPoint)
-        """
-        menu = QMenu(self)
-        
-        menu.addAction(self.tr("Open"), self.__openFile)
-        menu.addAction(self.tr("Copy Path to Clipboard"),
-                       self.__copyToClipboard)
-        
-        menu.exec(QCursor.pos())
-        
-    def __openFile(self):
-        """
-        Private slot to open the currently selected entry.
-        """
-        itm = self.findList.selectedItems()[0]
-        self.on_findList_itemDoubleClicked(itm, 0)
-        
-    def __copyToClipboard(self):
-        """
-        Private method to copy the path of an entry to the clipboard.
-        """
-        itm = self.findList.selectedItems()[0]
-        fn = itm.parent().text(0) if itm.parent() else itm.text(0)
-        
-        cb = QApplication.clipboard()
-        cb.setText(fn)
--- a/eric7/UI/FindFileDialog.ui	Fri Sep 17 19:53:54 2021 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,503 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>FindFileDialog</class>
- <widget class="QWidget" name="FindFileDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>600</width>
-    <height>800</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Find in Files</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout_3">
-   <item>
-    <layout class="QGridLayout" name="gridLayout_3">
-     <item row="0" column="0">
-      <widget class="QLabel" name="TextLabel1">
-       <property name="text">
-        <string>Find &amp;text:</string>
-       </property>
-       <property name="buddy">
-        <cstring>findtextCombo</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="0" column="1">
-      <widget class="QComboBox" name="findtextCombo">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="toolTip">
-        <string>Enter the search text or regular expression</string>
-       </property>
-       <property name="editable">
-        <bool>true</bool>
-       </property>
-       <property name="insertPolicy">
-        <enum>QComboBox::InsertAtTop</enum>
-       </property>
-       <property name="duplicatesEnabled">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="0">
-      <widget class="QLabel" name="replaceLabel">
-       <property name="text">
-        <string>Replace te&amp;xt:</string>
-       </property>
-       <property name="buddy">
-        <cstring>findtextCombo</cstring>
-       </property>
-      </widget>
-     </item>
-     <item row="1" column="1">
-      <widget class="QComboBox" name="replacetextCombo">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="toolTip">
-        <string>Enter the replacement text or regular expression</string>
-       </property>
-       <property name="editable">
-        <bool>true</bool>
-       </property>
-       <property name="insertPolicy">
-        <enum>QComboBox::InsertAtTop</enum>
-       </property>
-       <property name="duplicatesEnabled">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QCheckBox" name="caseCheckBox">
-       <property name="toolTip">
-        <string>Select to match case sensitive</string>
-       </property>
-       <property name="text">
-        <string>&amp;Match upper/lower case</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="wordCheckBox">
-       <property name="toolTip">
-        <string>Select to match whole words only</string>
-       </property>
-       <property name="text">
-        <string>Whole &amp;word</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="regexpCheckBox">
-       <property name="toolTip">
-        <string>Select if the searchtext is a regular expression</string>
-       </property>
-       <property name="text">
-        <string>Regular &amp;Expression</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="feelLikeCheckBox">
-       <property name="toolTip">
-        <string>Select to open the first occurence automatically</string>
-       </property>
-       <property name="text">
-        <string>Feeling Like</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_4">
-     <item>
-      <widget class="QGroupBox" name="groupBox">
-       <property name="title">
-        <string>File type</string>
-       </property>
-       <layout class="QGridLayout" name="gridLayout">
-        <item row="0" column="0">
-         <widget class="QCheckBox" name="sourcesCheckBox">
-          <property name="toolTip">
-           <string>Search in source files</string>
-          </property>
-          <property name="text">
-           <string>&amp;Sources</string>
-          </property>
-          <property name="checked">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="QCheckBox" name="interfacesCheckBox">
-          <property name="toolTip">
-           <string>Search in interfaces</string>
-          </property>
-          <property name="text">
-           <string>&amp;Interfaces</string>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QCheckBox" name="formsCheckBox">
-          <property name="toolTip">
-           <string>Search in forms</string>
-          </property>
-          <property name="text">
-           <string>&amp;Forms</string>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="1">
-         <widget class="QCheckBox" name="protocolsCheckBox">
-          <property name="toolTip">
-           <string>Search in protocols</string>
-          </property>
-          <property name="text">
-           <string>&amp;Protocols</string>
-          </property>
-         </widget>
-        </item>
-        <item row="2" column="0">
-         <widget class="QCheckBox" name="resourcesCheckBox">
-          <property name="toolTip">
-           <string>Search in resources</string>
-          </property>
-          <property name="text">
-           <string>&amp;Resources</string>
-          </property>
-         </widget>
-        </item>
-        <item row="3" column="0" colspan="2">
-         <widget class="Line" name="line">
-          <property name="orientation">
-           <enum>Qt::Horizontal</enum>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="0" colspan="2">
-         <layout class="QHBoxLayout" name="horizontalLayout">
-          <item>
-           <widget class="QCheckBox" name="filterCheckBox">
-            <property name="toolTip">
-             <string>Select to filter the files by a given filename pattern</string>
-            </property>
-            <property name="text">
-             <string>Fi&amp;lter</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <widget class="QLineEdit" name="filterEdit">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="toolTip">
-             <string>Enter the filename wildcards separated by ';'</string>
-            </property>
-           </widget>
-          </item>
-         </layout>
-        </item>
-       </layout>
-      </widget>
-     </item>
-     <item>
-      <layout class="QVBoxLayout" name="verticalLayout_2">
-       <item>
-        <widget class="QGroupBox" name="groupBox_2">
-         <property name="sizePolicy">
-          <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="title">
-          <string>Find in</string>
-         </property>
-         <layout class="QVBoxLayout" name="verticalLayout">
-          <item>
-           <layout class="QHBoxLayout" name="horizontalLayout_3">
-            <item>
-             <widget class="QRadioButton" name="projectButton">
-              <property name="toolTip">
-               <string>Search in files of the current project</string>
-              </property>
-              <property name="text">
-               <string>&amp;Project</string>
-              </property>
-              <property name="checked">
-               <bool>true</bool>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QRadioButton" name="dirButton">
-              <property name="toolTip">
-               <string>Search in files of a directory tree to be entered below</string>
-              </property>
-              <property name="text">
-               <string>&amp;Directory tree</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-          <item>
-           <widget class="EricComboPathPicker" name="dirPicker" native="true">
-            <property name="enabled">
-             <bool>false</bool>
-            </property>
-            <property name="sizePolicy">
-             <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-              <horstretch>0</horstretch>
-              <verstretch>0</verstretch>
-             </sizepolicy>
-            </property>
-            <property name="focusPolicy">
-             <enum>Qt::WheelFocus</enum>
-            </property>
-            <property name="toolTip">
-             <string>Enter the directory to search in</string>
-            </property>
-           </widget>
-          </item>
-          <item>
-           <layout class="QHBoxLayout" name="horizontalLayout_5">
-            <item>
-             <widget class="QRadioButton" name="openFilesButton">
-              <property name="toolTip">
-               <string>Search in open files only </string>
-              </property>
-              <property name="text">
-               <string>&amp;Open files only</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </item>
-         </layout>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="excludeHiddenCheckBox">
-         <property name="toolTip">
-          <string>Select to exclude hidden files and directories when searching a directory tree.</string>
-         </property>
-         <property name="text">
-          <string>Exclude hidden files and directories</string>
-         </property>
-         <property name="checked">
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer name="verticalSpacer">
-         <property name="orientation">
-          <enum>Qt::Vertical</enum>
-         </property>
-         <property name="sizeHint" stdset="0">
-          <size>
-           <width>20</width>
-           <height>10</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="EricSqueezeLabelPath" name="findProgressLabel">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="text">
-      <string/>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QProgressBar" name="findProgress">
-     <property name="toolTip">
-      <string>Shows the progress of the search action</string>
-     </property>
-     <property name="value">
-      <number>0</number>
-     </property>
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="format">
-      <string>%v/%m Files</string>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QTreeWidget" name="findList">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
-       <horstretch>0</horstretch>
-       <verstretch>5</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="alternatingRowColors">
-      <bool>true</bool>
-     </property>
-     <property name="sortingEnabled">
-      <bool>true</bool>
-     </property>
-     <property name="columnCount">
-      <number>2</number>
-     </property>
-     <column>
-      <property name="text">
-       <string>File/Line</string>
-      </property>
-     </column>
-     <column>
-      <property name="text">
-       <string>Text</string>
-      </property>
-     </column>
-    </widget>
-   </item>
-   <item>
-    <widget class="QPushButton" name="replaceButton">
-     <property name="toolTip">
-      <string>Press to apply the selected replacements</string>
-     </property>
-     <property name="text">
-      <string>Replace</string>
-     </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>
- <customwidgets>
-  <customwidget>
-   <class>EricSqueezeLabelPath</class>
-   <extends>QLabel</extends>
-   <header>EricWidgets/EricSqueezeLabels.h</header>
-  </customwidget>
-  <customwidget>
-   <class>EricComboPathPicker</class>
-   <extends>QWidget</extends>
-   <header>EricWidgets/EricPathPicker.h</header>
-   <container>1</container>
-  </customwidget>
- </customwidgets>
- <tabstops>
-  <tabstop>findtextCombo</tabstop>
-  <tabstop>replacetextCombo</tabstop>
-  <tabstop>caseCheckBox</tabstop>
-  <tabstop>wordCheckBox</tabstop>
-  <tabstop>regexpCheckBox</tabstop>
-  <tabstop>feelLikeCheckBox</tabstop>
-  <tabstop>sourcesCheckBox</tabstop>
-  <tabstop>formsCheckBox</tabstop>
-  <tabstop>resourcesCheckBox</tabstop>
-  <tabstop>interfacesCheckBox</tabstop>
-  <tabstop>protocolsCheckBox</tabstop>
-  <tabstop>filterCheckBox</tabstop>
-  <tabstop>filterEdit</tabstop>
-  <tabstop>projectButton</tabstop>
-  <tabstop>dirButton</tabstop>
-  <tabstop>dirPicker</tabstop>
-  <tabstop>openFilesButton</tabstop>
-  <tabstop>excludeHiddenCheckBox</tabstop>
-  <tabstop>findList</tabstop>
-  <tabstop>replaceButton</tabstop>
- </tabstops>
- <resources/>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>FindFileDialog</receiver>
-   <slot>close()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>59</x>
-     <y>739</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>34</x>
-     <y>660</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>filterCheckBox</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>filterEdit</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>53</x>
-     <y>195</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>191</x>
-     <y>196</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>dirButton</sender>
-   <signal>toggled(bool)</signal>
-   <receiver>dirPicker</receiver>
-   <slot>setEnabled(bool)</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>409</x>
-     <y>144</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>408</x>
-     <y>176</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/UI/FindFileWidget.py	Sat Sep 18 18:51:58 2021 +0200
@@ -0,0 +1,846 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2002 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing a dialog to search for text in files.
+"""
+
+import os
+import re
+
+from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QPoint
+from PyQt6.QtGui import QCursor
+from PyQt6.QtWidgets import (
+    QWidget, QApplication, QMenu, QTreeWidgetItem, QComboBox
+)
+
+from EricWidgets.EricApplication import ericApp
+from EricWidgets import EricMessageBox
+from EricWidgets.EricPathPicker import EricPathPickerModes
+
+from .Ui_FindFileWidget import Ui_FindFileWidget
+
+import Preferences
+import UI.PixmapCache
+import Utilities
+
+
+class FindFileWidget(QWidget, Ui_FindFileWidget):
+    """
+    Class implementing a widget to search for text in files and replace it
+    with some other text.
+    
+    The occurrences found are displayed in a tree showing the file name,
+    the line number and the text found. The file will be opened upon a double
+    click onto the respective entry of the list. If the widget is in replace
+    mode the line below shows the text after replacement. Replacements can
+    be authorized by ticking them on. Pressing the replace button performs
+    all ticked replacement operations.
+    
+    @signal sourceFile(str, int, str, int, int) emitted to open a source file
+        at a specificline
+    @signal designerFile(str) emitted to open a Qt-Designer file
+    """
+    sourceFile = pyqtSignal(str, int, str, int, int)
+    designerFile = pyqtSignal(str)
+    
+    lineRole = Qt.ItemDataRole.UserRole + 1
+    startRole = Qt.ItemDataRole.UserRole + 2
+    endRole = Qt.ItemDataRole.UserRole + 3
+    replaceRole = Qt.ItemDataRole.UserRole + 4
+    md5Role = Qt.ItemDataRole.UserRole + 5
+    
+    def __init__(self, project, parent=None):
+        """
+        Constructor
+        
+        @param project reference to the project object
+        @type Project
+        @param parent parent widget of this dialog (defaults to None)
+        @type QWidget (optional)
+        """
+        super().__init__(parent)
+        self.setupUi(self)
+        self.setWindowFlags(Qt.WindowType.Window)
+        
+        self.layout().setContentsMargins(0, 3, 0, 0)
+        
+        self.dirPicker.setMode(EricPathPickerModes.DIRECTORY_MODE)
+        self.dirPicker.setInsertPolicy(QComboBox.InsertPolicy.InsertAtTop)
+        self.dirPicker.setSizeAdjustPolicy(
+            QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon)
+        
+        self.stopButton.setEnabled(False)
+        self.stopButton.clicked.connect(self.__stopSearch)
+        self.stopButton.setIcon(UI.PixmapCache.getIcon("stopLoading"))
+        
+        self.findButton.setEnabled(False)
+        self.findButton.clicked.connect(self.__doSearch)
+        self.findButton.setIcon(UI.PixmapCache.getIcon("find"))
+        
+        self.replaceButton.setIcon(UI.PixmapCache.getIcon("editReplace"))
+        
+        self.modeToggleButton.clicked.connect(self.__toggleReplaceMode)
+        
+        self.findProgressLabel.setMaximumWidth(550)
+        
+        self.searchHistory = Preferences.toList(
+            Preferences.Prefs.settings.value(
+                "FindFileWidget/SearchHistory"))
+        self.findtextCombo.lineEdit().setClearButtonEnabled(True)
+        self.findtextCombo.lineEdit().returnPressed.connect(self.__doSearch)
+        self.findtextCombo.setCompleter(None)
+        self.findtextCombo.addItems(self.searchHistory)
+        self.findtextCombo.setEditText("")
+        
+        self.replaceHistory = Preferences.toList(
+            Preferences.Prefs.settings.value(
+                "FindFileWidget/ReplaceHistory"))
+        self.replacetextCombo.lineEdit().setClearButtonEnabled(True)
+        self.replacetextCombo.lineEdit().returnPressed.connect(self.__doSearch)
+        self.replacetextCombo.setCompleter(None)
+        self.replacetextCombo.addItems(self.replaceHistory)
+        self.replacetextCombo.setEditText("")
+        
+        self.dirHistory = Preferences.toList(
+            Preferences.Prefs.settings.value(
+                "FindFileWidget/DirectoryHistory"))
+        self.dirPicker.addItems(self.dirHistory)
+        self.dirPicker.setText("")
+        
+        self.excludeHiddenCheckBox.setChecked(Preferences.toBool(
+            Preferences.Prefs.settings.value(
+                "FindFileWidget/ExcludeHidden", True)
+        ))
+        
+        self.project = project
+        self.project.projectOpened.connect(self.__projectOpened)
+        self.project.projectClosed.connect(self.__projectClosed)
+        
+        self.__standardListFont = self.findList.font()
+        self.findList.headerItem().setText(self.findList.columnCount(), "")
+        self.findList.header().setSortIndicator(0, Qt.SortOrder.AscendingOrder)
+        self.__section0Size = self.findList.header().sectionSize(0)
+        self.findList.setExpandsOnDoubleClick(False)
+
+        # Qt Designer form files
+        self.filterForms = r'.*\.ui$'
+        self.formsExt = ['*.ui']
+        
+        # Corba interface files
+        self.filterInterfaces = r'.*\.idl$'
+        self.interfacesExt = ['*.idl']
+        
+        # Protobuf protocol files
+        self.filterProtocols = r'.*\.proto$'
+        self.protocolsExt = ['*.proto']
+        
+        # Qt resources files
+        self.filterResources = r'.*\.qrc$'
+        self.resourcesExt = ['*.qrc']
+        
+        self.__cancelSearch = False
+        self.__lastFileItem = None
+        self.__populating = False
+        
+        self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
+        self.customContextMenuRequested.connect(self.__contextMenuRequested)
+        
+        self.__replaceMode = True
+        self.__toggleReplaceMode()
+    
+    def __createItem(self, file, line, text, start, end, replTxt="", md5=""):
+        """
+        Private method to create an entry in the file list.
+        
+        @param file filename of file
+        @type str
+        @param line line number
+        @type int
+        @param text text found
+        @type str
+        @param start start position of match
+        @type int
+        @param end end position of match
+        @type int
+        @param replTxt text with replacements applied (defaults to "")
+        @type str (optional)
+        @param md5 MD5 hash of the file (defaults to "")
+        @type str (optional)
+        """
+        if self.__lastFileItem is None:
+            # It's a new file
+            self.__lastFileItem = QTreeWidgetItem(self.findList, [file])
+            self.__lastFileItem.setFirstColumnSpanned(True)
+            self.__lastFileItem.setExpanded(True)
+            if self.__replaceMode:
+                self.__lastFileItem.setFlags(
+                    self.__lastFileItem.flags() |
+                    Qt.ItemFlag.ItemIsUserCheckable |
+                    Qt.ItemFlag.ItemIsAutoTristate)
+            self.__lastFileItem.setData(0, self.md5Role, md5)
+        
+        itm = QTreeWidgetItem(self.__lastFileItem)
+        itm.setTextAlignment(0, Qt.AlignmentFlag.AlignRight)
+        itm.setData(0, Qt.ItemDataRole.DisplayRole, line)
+        itm.setData(1, Qt.ItemDataRole.DisplayRole, text)
+        itm.setData(0, self.lineRole, line)
+        itm.setData(0, self.startRole, start)
+        itm.setData(0, self.endRole, end)
+        itm.setData(0, self.replaceRole, replTxt)
+        if self.__replaceMode:
+            itm.setFlags(itm.flags() |
+                         Qt.ItemFlag.ItemIsUserCheckable)
+            itm.setCheckState(0, Qt.CheckState.Checked)
+            self.replaceButton.setEnabled(True)
+    
+    def activate(self, replaceMode=False, txt="", searchDir="",
+                 openFiles=False):
+        """
+        Public method to activate the widget with a given mode, a text
+        to search for and some search parameters.
+        
+        @param replaceMode flag indicating replacement mode (defaults to False)
+        @type bool (optional)
+        @param txt text to be searched for (defaults to "")
+        @type str (optional)
+        @param searchDir directory to search in (defaults to "")
+        @type str (optional)
+        @param openFiles flag indicating to operate on open files only
+            (defaults to False)
+        @type bool (optional)
+        """
+        if self.project.isOpen():
+            self.projectButton.setEnabled(True)
+            self.projectButton.setChecked(True)
+        else:
+            self.projectButton.setEnabled(False)
+            self.dirButton.setChecked(True)
+            
+        self.findtextCombo.setEditText(txt)
+        self.findtextCombo.lineEdit().selectAll()
+        self.findtextCombo.setFocus()
+        
+        if self.__replaceMode != replaceMode:
+            self.__toggleReplaceMode()
+        
+        if searchDir:
+            self.setSearchDirectory(searchDir)
+        if openFiles:
+            self.setOpenFiles()
+    
+    @pyqtSlot()
+    def __toggleReplaceMode(self):
+        """
+        Private slot to toggle the dialog mode.
+        """
+        self.__replaceMode = not self.__replaceMode
+        
+        # change some interface elements and properties
+        self.findList.clear()
+        if self.__replaceMode:
+            self.replaceButton.show()
+            self.replaceLabel.show()
+            self.replacetextCombo.show()
+            
+            self.replaceButton.setEnabled(False)
+            self.replacetextCombo.setEditText("")
+            
+            font = Preferences.getEditorOtherFonts("MonospacedFont")
+            self.findList.setFont(font)
+            
+            self.modeToggleButton.setIcon(UI.PixmapCache.getIcon("1uparrow"))
+        else:
+            self.replaceLabel.hide()
+            self.replacetextCombo.hide()
+            self.replaceButton.hide()
+            
+            self.findList.setFont(self.__standardListFont)
+            
+            self.modeToggleButton.setIcon(UI.PixmapCache.getIcon("1downarrow"))
+    
+    @pyqtSlot()
+    def __projectOpened(self):
+        """
+        Private slot to react to the opening of a project.
+        """
+        self.projectButton.setEnabled(True)
+        self.projectButton.setChecked(True)
+    
+    @pyqtSlot()
+    def __projectClosed(self):
+        """
+        Private slot to react to the closing of a project.
+        """
+        self.projectButton.setEnabled(False)
+        if self.projectButton.isChecked():
+            self.dirButton.setChecked(True)
+    
+    @pyqtSlot(str)
+    def on_findtextCombo_editTextChanged(self, text):
+        """
+        Private slot to handle the editTextChanged signal of the find
+        text combo.
+        
+        @param text (ignored)
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot(str)
+    def on_replacetextCombo_editTextChanged(self, text):
+        """
+        Private slot to handle the editTextChanged signal of the replace
+        text combo.
+        
+        @param text (ignored)
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot(str)
+    def on_dirPicker_editTextChanged(self, text):
+        """
+        Private slot to handle the textChanged signal of the directory
+        picker.
+        
+        @param text (ignored)
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot()
+    def on_projectButton_clicked(self):
+        """
+        Private slot to handle the selection of the 'Project' radio button.
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot()
+    def on_dirButton_clicked(self):
+        """
+        Private slot to handle the selection of the 'Directory' radio button.
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot()
+    def on_openFilesButton_clicked(self):
+        """
+        Private slot to handle the selection of the 'Open Files' radio button.
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot()
+    def on_filterCheckBox_clicked(self):
+        """
+        Private slot to handle the selection of the file filter check box.
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot(str)
+    def on_filterEdit_textEdited(self, text):
+        """
+        Private slot to handle the textChanged signal of the file filter edit.
+        
+        @param text (ignored)
+        """
+        self.__enableFindButton()
+    
+    @pyqtSlot()
+    def __enableFindButton(self):
+        """
+        Private slot called to enable the find button.
+        """
+        if (
+            self.findtextCombo.currentText() == "" or
+            (self.dirButton.isChecked() and
+             (self.dirPicker.currentText() == "" or
+              not os.path.exists(os.path.abspath(
+                self.dirPicker.currentText())))) or
+            (self.filterCheckBox.isChecked() and
+             self.filterEdit.text() == "")
+        ):
+            self.findButton.setEnabled(False)
+        else:
+            self.findButton.setEnabled(True)
+    
+    def __stripEol(self, txt):
+        """
+        Private method to strip the eol part.
+        
+        @param txt line of text that should be treated
+        @type str
+        @return text with eol stripped
+        @rtype str
+        """
+        return txt.replace("\r", "").replace("\n", "")
+        
+    @pyqtSlot()
+    def __stopSearch(self):
+        """
+        Private slot to handle the stop button being pressed.
+        """
+        self.__cancelSearch = True
+    
+    @pyqtSlot()
+    def __doSearch(self):
+        """
+        Private slot to handle the find button being pressed.
+        """
+        if (
+            self.__replaceMode and
+            not ericApp().getObject("ViewManager").checkAllDirty()
+        ):
+            return
+        
+        self.__cancelSearch = False
+        
+        if self.filterCheckBox.isChecked():
+            fileFilter = self.filterEdit.text()
+            fileFilterList = [
+                "^{0}$".format(filter.replace(".", r"\.").replace("*", ".*"))
+                for filter in fileFilter.split(";")
+            ]
+            filterRe = re.compile("|".join(fileFilterList))
+        
+        if self.projectButton.isChecked():
+            if self.filterCheckBox.isChecked():
+                files = [
+                    self.project.getRelativePath(file)
+                    for file in
+                    self.__getFileList(
+                        self.project.getProjectPath(),
+                        filterRe,
+                        excludeHiddenDirs=self.excludeHiddenCheckBox
+                        .isChecked(),
+                    )
+                ]
+            else:
+                files = []
+                if self.sourcesCheckBox.isChecked():
+                    files += self.project.pdata["SOURCES"]
+                if self.formsCheckBox.isChecked():
+                    files += self.project.pdata["FORMS"]
+                if self.interfacesCheckBox.isChecked():
+                    files += self.project.pdata["INTERFACES"]
+                if self.protocolsCheckBox.isChecked():
+                    files += self.project.pdata["PROTOCOLS"]
+                if self.resourcesCheckBox.isChecked():
+                    files += self.project.pdata["RESOURCES"]
+        elif self.dirButton.isChecked():
+            if not self.filterCheckBox.isChecked():
+                filters = []
+                if (
+                    self.project.isOpen() and
+                    os.path.abspath(self.dirPicker.currentText()).startswith(
+                        self.project.getProjectPath())
+                ):
+                    if self.sourcesCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*")
+                            ) for assoc in
+                            self.project.getFiletypeAssociations("SOURCES")
+                        ])
+                    if self.formsCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*")
+                            ) for assoc in
+                            self.project.getFiletypeAssociations("FORMS")
+                        ])
+                    if self.interfacesCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*")
+                            ) for assoc in
+                            self.project.getFiletypeAssociations("INTERFACES")
+                        ])
+                    if self.protocolsCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*")
+                            ) for assoc in
+                            self.project.getFiletypeAssociations("PROTOCOLS")
+                        ])
+                    if self.resourcesCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*")
+                            ) for assoc in
+                            self.project.getFiletypeAssociations("RESOURCES")
+                        ])
+                else:
+                    if self.sourcesCheckBox.isChecked():
+                        filters.extend([
+                            "^{0}$".format(
+                                assoc.replace(".", r"\.").replace("*", ".*"))
+                            for assoc in list(
+                                Preferences.getEditorLexerAssocs().keys())
+                            if assoc not in
+                            self.formsExt + self.interfacesExt +
+                            self.protocolsExt + self.resourcesExt
+                        ])
+                    if self.formsCheckBox.isChecked():
+                        filters.append(self.filterForms)
+                    if self.interfacesCheckBox.isChecked():
+                        filters.append(self.filterInterfaces)
+                    if self.protocolsCheckBox.isChecked():
+                        filters.append(self.filterProtocols)
+                    if self.resourcesCheckBox.isChecked():
+                        filters.append(self.filterResources)
+                filterString = "|".join(filters)
+                filterRe = re.compile(filterString)
+            files = self.__getFileList(
+                os.path.abspath(self.dirPicker.currentText()),
+                filterRe,
+                excludeHiddenDirs=self.excludeHiddenCheckBox.isChecked(),
+                excludeHiddenFiles=self.excludeHiddenCheckBox.isChecked(),
+            )
+        elif self.openFilesButton.isChecked():
+            vm = ericApp().getObject("ViewManager")
+            vm.checkAllDirty()
+            files = vm.getOpenFilenames()
+        
+        self.findList.clear()
+        QApplication.processEvents()
+        QApplication.processEvents()
+        self.findProgress.setMaximum(len(files))
+        
+        # retrieve the values
+        reg = self.regexpCheckBox.isChecked()
+        wo = self.wordCheckBox.isChecked()
+        cs = self.caseCheckBox.isChecked()
+        ct = self.findtextCombo.currentText()
+        txt = ct if reg else re.escape(ct)
+        if wo:
+            txt = "\\b{0}\\b".format(txt)
+        flags = re.UNICODE
+        if not cs:
+            flags |= re.IGNORECASE
+        try:
+            search = re.compile(txt, flags)
+        except re.error as why:
+            EricMessageBox.critical(
+                self,
+                self.tr("Invalid search expression"),
+                self.tr("""<p>The search expression is not valid.</p>"""
+                        """<p>Error: {0}</p>""").format(str(why)))
+            self.stopButton.setEnabled(False)
+            self.findButton.setEnabled(True)
+            return
+        # reset the findtextCombo
+        if ct in self.searchHistory:
+            self.searchHistory.remove(ct)
+        self.searchHistory.insert(0, ct)
+        self.findtextCombo.clear()
+        self.findtextCombo.addItems(self.searchHistory)
+        Preferences.Prefs.settings.setValue(
+            "FindFileWidget/SearchHistory",
+            self.searchHistory[:30])
+        Preferences.Prefs.settings.setValue(
+            "FindFileWidget/ExcludeHidden",
+            self.excludeHiddenCheckBox.isChecked())
+        
+        if self.__replaceMode:
+            replTxt = self.replacetextCombo.currentText()
+            if replTxt in self.replaceHistory:
+                self.replaceHistory.remove(replTxt)
+            self.replaceHistory.insert(0, replTxt)
+            self.replacetextCombo.clear()
+            self.replacetextCombo.addItems(self.replaceHistory)
+            Preferences.Prefs.settings.setValue(
+                "FindFileWidget/ReplaceHistory",
+                self.replaceHistory[:30])
+        
+        if self.dirButton.isChecked():
+            searchDir = self.dirPicker.currentText()
+            if searchDir in self.dirHistory:
+                self.dirHistory.remove(searchDir)
+            self.dirHistory.insert(0, searchDir)
+            self.dirPicker.clear()
+            self.dirPicker.addItems(self.dirHistory)
+            self.dirPicker.setText(self.dirHistory[0])
+            Preferences.Prefs.settings.setValue(
+                "FindFileWidget/DirectoryHistory",
+                self.dirHistory[:30])
+        
+        # set the button states
+        self.stopButton.setEnabled(True)
+        self.findButton.setEnabled(False)
+        
+        # now go through all the files
+        self.__populating = True
+        self.findList.setUpdatesEnabled(False)
+        occurrences = 0
+        fileOccurrences = 0
+        for progress, file in enumerate(files, start=1):
+            self.__lastFileItem = None
+            found = False
+            if self.__cancelSearch:
+                break
+            
+            self.findProgressLabel.setPath(file)
+            
+            fn = (
+                os.path.join(self.project.ppath, file)
+                if self.projectButton.isChecked() else
+                file
+            )
+            # read the file and split it into textlines
+            try:
+                text, encoding, hashStr = Utilities.readEncodedFileWithHash(fn)
+                lines = text.splitlines(True)
+            except (UnicodeError, OSError):
+                self.findProgress.setValue(progress)
+                continue
+            
+            # now perform the search and display the lines found
+            for count, line in enumerate(lines, start=1):
+                if self.__cancelSearch:
+                    break
+                
+                contains = search.search(line)
+                if contains:
+                    occurrences += 1
+                    found = True
+                    start = contains.start()
+                    end = contains.end()
+                    if self.__replaceMode:
+                        rline = search.sub(replTxt, line)
+                    else:
+                        rline = ""
+                    line = self.__stripEol(line)
+                    if len(line) > 1024:
+                        line = "{0} ...".format(line[:1024])
+                    if self.__replaceMode:
+                        if len(rline) > 1024:
+                            rline = "{0} ...".format(line[:1024])
+                        line = "- {0}\n+ {1}".format(
+                            line, self.__stripEol(rline))
+                    self.__createItem(file, count, line, start, end,
+                                      rline, hashStr)
+                
+                QApplication.processEvents()
+            
+            if found:
+                fileOccurrences += 1
+            self.findProgress.setValue(progress)
+        
+        if not files:
+            self.findProgress.setMaximum(1)
+            self.findProgress.setValue(1)
+        
+        resultFormat = self.tr("{0} / {1}", "occurrences / files")
+        self.findProgressLabel.setPath(resultFormat.format(
+            self.tr("%n occurrence(s)", "", occurrences),
+            self.tr("%n file(s)", "", fileOccurrences)))
+        
+        self.findList.setUpdatesEnabled(True)
+        self.findList.sortItems(self.findList.sortColumn(),
+                                self.findList.header().sortIndicatorOrder())
+        self.findList.resizeColumnToContents(1)
+        if self.__replaceMode:
+            self.findList.header().resizeSection(0, self.__section0Size + 30)
+        self.findList.header().setStretchLastSection(True)
+        self.__populating = False
+        
+        self.stopButton.setEnabled(False)
+        self.findButton.setEnabled(True)
+    
+    @pyqtSlot(QTreeWidgetItem, int)
+    def on_findList_itemDoubleClicked(self, itm, column):
+        """
+        Private slot to handle the double click on a file item.
+        
+        It emits the signal sourceFile or designerFile depending on the file
+        extension.
+        
+        @param itm the double clicked tree item
+        @type QTreeWidgetItem
+        @param column column that was double clicked (ignored)
+        @type int
+        """
+        if itm.parent():
+            file = itm.parent().text(0)
+            line = itm.data(0, self.lineRole)
+            start = itm.data(0, self.startRole)
+            end = itm.data(0, self.endRole)
+        else:
+            file = itm.text(0)
+            line = 1
+            start = 0
+            end = 0
+        
+        fn = os.path.join(self.project.ppath, file) if self.project else file
+        if fn.endswith('.ui'):
+            self.designerFile.emit(fn)
+        else:
+            self.sourceFile.emit(fn, line, "", start, end)
+    
+    def __getFileList(self, path, filterRe, excludeHiddenDirs=False,
+                      excludeHiddenFiles=False):
+        """
+        Private method to get a list of files to search.
+        
+        @param path the root directory to search in
+        @type str
+        @param filterRe regular expression defining the filter
+            criteria
+        @type regexp object
+        @param excludeHiddenDirs flag indicating to exclude hidden directories
+        @type bool
+        @param excludeHiddenFiles flag indicating to exclude hidden files
+        @type bool
+        @return list of files to be processed
+        @rtype list of str
+        """
+        path = os.path.abspath(path)
+        files = []
+        for dirname, dirs, filenames in os.walk(path):
+            files.extend([
+                os.path.join(dirname, f) for f in filenames
+                if (not (excludeHiddenFiles and f.startswith(".")) and
+                    re.match(filterRe, f))
+            ])
+            if excludeHiddenDirs:
+                for d in dirs[:]:
+                    if d .startswith("."):
+                        dirs.remove(d)
+        return files
+    
+    def setSearchDirectory(self, searchDir):
+        """
+        Public slot to set the name of the directory to search in.
+        
+        @param searchDir name of the directory to search in
+        @type str
+        """
+        self.dirButton.setChecked(True)
+        self.dirPicker.setEditText(Utilities.toNativeSeparators(searchDir))
+    
+    @pyqtSlot()
+    def setOpenFiles(self):
+        """
+        Public slot to set the mode to search in open files.
+        """
+        self.openFilesButton.setChecked(True)
+    
+    @pyqtSlot()
+    def on_replaceButton_clicked(self):
+        """
+        Private slot to perform the requested replace actions.
+        """
+        self.findProgress.setMaximum(self.findList.topLevelItemCount())
+        self.findProgress.setValue(0)
+        
+        for index in range(self.findList.topLevelItemCount()):
+            itm = self.findList.topLevelItem(index)
+            if itm.checkState(0) in [Qt.CheckState.PartiallyChecked,
+                                     Qt.CheckState.Checked]:
+                file = itm.text(0)
+                origHash = itm.data(0, self.md5Role)
+                
+                self.findProgressLabel.setPath(file)
+                
+                if self.projectButton.isChecked():
+                    fn = os.path.join(self.project.ppath, file)
+                else:
+                    fn = file
+                
+                # read the file and split it into textlines
+                try:
+                    text, encoding, hashStr = (
+                        Utilities.readEncodedFileWithHash(fn)
+                    )
+                    lines = text.splitlines(True)
+                except (UnicodeError, OSError) as err:
+                    EricMessageBox.critical(
+                        self,
+                        self.tr("Replace in Files"),
+                        self.tr(
+                            """<p>Could not read the file <b>{0}</b>."""
+                            """ Skipping it.</p><p>Reason: {1}</p>""")
+                        .format(fn, str(err))
+                    )
+                    self.findProgress.setValue(index)
+                    continue
+                
+                # Check the original and the current hash. Skip the file,
+                # if hashes are different.
+                if origHash != hashStr:
+                    EricMessageBox.critical(
+                        self,
+                        self.tr("Replace in Files"),
+                        self.tr(
+                            """<p>The current and the original hash of the"""
+                            """ file <b>{0}</b> are different. Skipping it."""
+                            """</p><p>Hash 1: {1}</p><p>Hash 2: {2}</p>""")
+                        .format(fn, origHash, hashStr)
+                    )
+                    self.findProgress.setValue(index)
+                    continue
+                
+                # replace the lines authorized by the user
+                for cindex in range(itm.childCount()):
+                    citm = itm.child(cindex)
+                    if citm.checkState(0) == Qt.CheckState.Checked:
+                        line = citm.data(0, self.lineRole)
+                        rline = citm.data(0, self.replaceRole)
+                        lines[line - 1] = rline
+                
+                # write the file
+                txt = "".join(lines)
+                try:
+                    Utilities.writeEncodedFile(fn, txt, encoding)
+                except (OSError, Utilities.CodingError, UnicodeError) as err:
+                    EricMessageBox.critical(
+                        self,
+                        self.tr("Replace in Files"),
+                        self.tr(
+                            """<p>Could not save the file <b>{0}</b>."""
+                            """ Skipping it.</p><p>Reason: {1}</p>""")
+                        .format(fn, str(err))
+                    )
+            
+            self.findProgress.setValue(index + 1)
+        
+        self.findProgressLabel.setPath("")
+        
+        self.findList.clear()
+        self.replaceButton.setEnabled(False)
+        self.findButton.setEnabled(True)
+    
+    @pyqtSlot(QPoint)
+    def __contextMenuRequested(self, pos):
+        """
+        Private slot to handle the context menu request.
+        
+        @param pos position the context menu shall be shown
+        @type QPoint
+        """
+        menu = QMenu(self)
+        
+        menu.addAction(self.tr("Open"), self.__openFile)
+        menu.addAction(self.tr("Copy Path to Clipboard"),
+                       self.__copyToClipboard)
+        
+        menu.exec(QCursor.pos())
+    
+    @pyqtSlot()
+    def __openFile(self):
+        """
+        Private slot to open the currently selected entry.
+        """
+        itm = self.findList.selectedItems()[0]
+        self.on_findList_itemDoubleClicked(itm, 0)
+    
+    @pyqtSlot()
+    def __copyToClipboard(self):
+        """
+        Private slot to copy the path of an entry to the clipboard.
+        """
+        itm = self.findList.selectedItems()[0]
+        fn = itm.parent().text(0) if itm.parent() else itm.text(0)
+        
+        cb = QApplication.clipboard()
+        cb.setText(fn)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/UI/FindFileWidget.ui	Sat Sep 18 18:51:58 2021 +0200
@@ -0,0 +1,508 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FindFileWidget</class>
+ <widget class="QWidget" name="FindFileWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>800</height>
+   </rect>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2">
+   <item>
+    <layout class="QGridLayout" name="gridLayout_3">
+     <item row="0" column="0">
+      <widget class="QLabel" name="TextLabel1">
+       <property name="text">
+        <string>Find &amp;text:</string>
+       </property>
+       <property name="buddy">
+        <cstring>findtextCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QComboBox" name="findtextCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the search text or regular expression</string>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+     <item row="0" column="2">
+      <widget class="QToolButton" name="modeToggleButton">
+       <property name="toolTip">
+        <string>Press to toggle the mode between find and replace mode</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="0">
+      <widget class="QLabel" name="replaceLabel">
+       <property name="text">
+        <string>Replace te&amp;xt:</string>
+       </property>
+       <property name="buddy">
+        <cstring>findtextCombo</cstring>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <widget class="QComboBox" name="replacetextCombo">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>Enter the replacement text or regular expression</string>
+       </property>
+       <property name="editable">
+        <bool>true</bool>
+       </property>
+       <property name="insertPolicy">
+        <enum>QComboBox::InsertAtTop</enum>
+       </property>
+       <property name="duplicatesEnabled">
+        <bool>false</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_2">
+     <item>
+      <widget class="QCheckBox" name="caseCheckBox">
+       <property name="toolTip">
+        <string>Select to match case sensitive</string>
+       </property>
+       <property name="text">
+        <string>&amp;Match upper/lower case</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="wordCheckBox">
+       <property name="toolTip">
+        <string>Select to match whole words only</string>
+       </property>
+       <property name="text">
+        <string>Whole &amp;word</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QCheckBox" name="regexpCheckBox">
+       <property name="toolTip">
+        <string>Select if the searchtext is a regular expression</string>
+       </property>
+       <property name="text">
+        <string>Regular &amp;Expression</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <layout class="QGridLayout" name="gridLayout_2">
+     <item row="0" column="0" rowspan="2">
+      <widget class="QGroupBox" name="groupBox">
+       <property name="title">
+        <string>File type</string>
+       </property>
+       <layout class="QGridLayout" name="gridLayout">
+        <item row="0" column="0">
+         <widget class="QCheckBox" name="sourcesCheckBox">
+          <property name="toolTip">
+           <string>Search in source files</string>
+          </property>
+          <property name="text">
+           <string>&amp;Sources</string>
+          </property>
+          <property name="checked">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1">
+         <widget class="QCheckBox" name="interfacesCheckBox">
+          <property name="toolTip">
+           <string>Search in interfaces</string>
+          </property>
+          <property name="text">
+           <string>&amp;Interfaces</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0">
+         <widget class="QCheckBox" name="formsCheckBox">
+          <property name="toolTip">
+           <string>Search in forms</string>
+          </property>
+          <property name="text">
+           <string>&amp;Forms</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1">
+         <widget class="QCheckBox" name="protocolsCheckBox">
+          <property name="toolTip">
+           <string>Search in protocols</string>
+          </property>
+          <property name="text">
+           <string>&amp;Protocols</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0">
+         <widget class="QCheckBox" name="resourcesCheckBox">
+          <property name="toolTip">
+           <string>Search in resources</string>
+          </property>
+          <property name="text">
+           <string>&amp;Resources</string>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0" colspan="2">
+         <widget class="Line" name="line">
+          <property name="orientation">
+           <enum>Qt::Horizontal</enum>
+          </property>
+         </widget>
+        </item>
+        <item row="4" column="0" colspan="2">
+         <layout class="QHBoxLayout" name="horizontalLayout">
+          <item>
+           <widget class="QCheckBox" name="filterCheckBox">
+            <property name="toolTip">
+             <string>Select to filter the files by a given filename pattern</string>
+            </property>
+            <property name="text">
+             <string>Fi&amp;lter</string>
+            </property>
+           </widget>
+          </item>
+          <item>
+           <widget class="QLineEdit" name="filterEdit">
+            <property name="enabled">
+             <bool>false</bool>
+            </property>
+            <property name="sizePolicy">
+             <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+              <horstretch>0</horstretch>
+              <verstretch>0</verstretch>
+             </sizepolicy>
+            </property>
+            <property name="toolTip">
+             <string>Enter the filename wildcards separated by ';'</string>
+            </property>
+            <property name="clearButtonEnabled">
+             <bool>true</bool>
+            </property>
+           </widget>
+          </item>
+         </layout>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item row="0" column="1">
+      <widget class="QGroupBox" name="groupBox_2">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="title">
+        <string>Find in</string>
+       </property>
+       <layout class="QVBoxLayout" name="verticalLayout">
+        <item>
+         <widget class="QRadioButton" name="projectButton">
+          <property name="toolTip">
+           <string>Search in files of the current project</string>
+          </property>
+          <property name="text">
+           <string>&amp;Project</string>
+          </property>
+          <property name="checked">
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="dirButton">
+          <property name="toolTip">
+           <string>Search in files of a directory tree to be entered below</string>
+          </property>
+          <property name="text">
+           <string>&amp;Directory tree</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="EricComboPathPicker" name="dirPicker" native="true">
+          <property name="enabled">
+           <bool>false</bool>
+          </property>
+          <property name="sizePolicy">
+           <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="focusPolicy">
+           <enum>Qt::WheelFocus</enum>
+          </property>
+          <property name="toolTip">
+           <string>Enter the directory to search in</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QRadioButton" name="openFilesButton">
+          <property name="toolTip">
+           <string>Search in open files only </string>
+          </property>
+          <property name="text">
+           <string>&amp;Open files only</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
+     <item row="1" column="1">
+      <spacer name="verticalSpacer">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>13</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+    </layout>
+   </item>
+   <item>
+    <widget class="QCheckBox" name="excludeHiddenCheckBox">
+     <property name="toolTip">
+      <string>Select to exclude hidden files and directories when searching a directory tree.</string>
+     </property>
+     <property name="text">
+      <string>Exclude hidden files and directories</string>
+     </property>
+     <property name="checked">
+      <bool>true</bool>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout_3">
+     <item>
+      <widget class="QPushButton" name="findButton">
+       <property name="toolTip">
+        <string>Press to start the search process</string>
+       </property>
+       <property name="text">
+        <string>Find</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="stopButton">
+       <property name="toolTip">
+        <string>Press to stop the current search process</string>
+       </property>
+       <property name="text">
+        <string>Stop</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="horizontalSpacer">
+       <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>
+   <item>
+    <widget class="Line" name="line_2">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="EricSqueezeLabelPath" name="findProgressLabel">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="text">
+      <string/>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QProgressBar" name="findProgress">
+     <property name="toolTip">
+      <string>Shows the progress of the search action</string>
+     </property>
+     <property name="value">
+      <number>0</number>
+     </property>
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="format">
+      <string>%v/%m Files</string>
+     </property>
+    </widget>
+   </item>
+   <item>
+    <widget class="QTreeWidget" name="findList">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>5</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="alternatingRowColors">
+      <bool>true</bool>
+     </property>
+     <property name="sortingEnabled">
+      <bool>true</bool>
+     </property>
+     <property name="columnCount">
+      <number>2</number>
+     </property>
+     <column>
+      <property name="text">
+       <string>File/Line</string>
+      </property>
+     </column>
+     <column>
+      <property name="text">
+       <string>Text</string>
+      </property>
+     </column>
+    </widget>
+   </item>
+   <item>
+    <widget class="QPushButton" name="replaceButton">
+     <property name="toolTip">
+      <string>Press to apply the selected replacements</string>
+     </property>
+     <property name="text">
+      <string>Replace</string>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>EricSqueezeLabelPath</class>
+   <extends>QLabel</extends>
+   <header>EricWidgets/EricSqueezeLabels.h</header>
+  </customwidget>
+  <customwidget>
+   <class>EricComboPathPicker</class>
+   <extends>QWidget</extends>
+   <header>EricWidgets/EricPathPicker.h</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <tabstops>
+  <tabstop>findtextCombo</tabstop>
+  <tabstop>modeToggleButton</tabstop>
+  <tabstop>replacetextCombo</tabstop>
+  <tabstop>caseCheckBox</tabstop>
+  <tabstop>wordCheckBox</tabstop>
+  <tabstop>regexpCheckBox</tabstop>
+  <tabstop>sourcesCheckBox</tabstop>
+  <tabstop>formsCheckBox</tabstop>
+  <tabstop>resourcesCheckBox</tabstop>
+  <tabstop>interfacesCheckBox</tabstop>
+  <tabstop>protocolsCheckBox</tabstop>
+  <tabstop>filterCheckBox</tabstop>
+  <tabstop>filterEdit</tabstop>
+  <tabstop>projectButton</tabstop>
+  <tabstop>dirButton</tabstop>
+  <tabstop>dirPicker</tabstop>
+  <tabstop>openFilesButton</tabstop>
+  <tabstop>excludeHiddenCheckBox</tabstop>
+  <tabstop>findButton</tabstop>
+  <tabstop>stopButton</tabstop>
+  <tabstop>findList</tabstop>
+  <tabstop>replaceButton</tabstop>
+ </tabstops>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>filterCheckBox</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>filterEdit</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>53</x>
+     <y>195</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>191</x>
+     <y>196</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>dirButton</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>dirPicker</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>409</x>
+     <y>144</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>408</x>
+     <y>176</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
--- a/eric7/UI/UserInterface.py	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/UI/UserInterface.py	Sat Sep 18 18:51:58 2021 +0200
@@ -945,6 +945,13 @@
         from VirtualEnv.VirtualenvManagerWidgets import VirtualenvManagerWidget
         self.__virtualenvManagerWidget = VirtualenvManagerWidget(
             self.virtualenvManager, self)
+        
+        # Create the find in files widget
+        from .FindFileWidget import FindFileWidget
+        self.__findFileWidget = FindFileWidget(self.project, self)
+        self.__findFileWidget.sourceFile.connect(
+            self.viewmanager.openSourceFile)
+        self.__findFileWidget.designerFile.connect(self.__designer)
     
     def __createLayout(self):
         """
@@ -1065,6 +1072,10 @@
                               UI.PixmapCache.getIcon("debugViewer"),
                               self.tr("Debug-Viewer"))
         
+        self.rToolbox.addItem(self.__findFileWidget,
+                              UI.PixmapCache.getIcon("find"),
+                              self.tr("Find/Replace In Files"))
+        
         self.rToolbox.addItem(self.pluginRepositoryViewer,
                               UI.PixmapCache.getIcon("pluginRepository"),
                               self.tr("Plugin Repository"))
@@ -1203,10 +1214,16 @@
                 self.tr("Code Documentation Viewer"))
         
         self.rightSidebar.addTab(
-            self.debugViewer, UI.PixmapCache.getIcon("sbDebugViewer96"),
+            self.debugViewer,
+            UI.PixmapCache.getIcon("sbDebugViewer96"),
             self.tr("Debug-Viewer"))
         
         self.rightSidebar.addTab(
+            self.__findFileWidget,
+            UI.PixmapCache.getIcon("sbFind96"),
+            self.tr("Find/Replace In Files"))
+        
+        self.rightSidebar.addTab(
             self.pluginRepositoryViewer,
             UI.PixmapCache.getIcon("sbPluginRepository96"),
             self.tr("Plugin Repository"))
@@ -2210,6 +2227,24 @@
             self.activateVirtualenvManager)
         self.actions.append(self.virtualenvManagerActivateAct)
         self.addAction(self.virtualenvManagerActivateAct)
+
+        self.findFileActivateAct = EricAction(
+            self.tr("Find/Replace In Files"),
+            self.tr("Find/Replace In Files"),
+            QKeySequence(self.tr("Ctrl+Alt+Shift+F")),
+            0, self,
+            'find_file_activate')
+        self.findFileActivateAct.setStatusTip(self.tr(
+            "Switch the input focus to the Find/Replace In Files window."))
+        self.findFileActivateAct.setWhatsThis(self.tr(
+            """<b>Find/Replace In Files</b>"""
+            """<p>This switches the input focus to the Find/Replace In Files"""
+            """ window.</p>"""
+        ))
+        self.findFileActivateAct.triggered.connect(
+            self.__activateFindFileWidget)
+        self.actions.append(self.findFileActivateAct)
+        self.addAction(self.findFileActivateAct)
         
         self.whatsThisAct = EricAction(
             self.tr('What\'s This?'),
@@ -3311,6 +3346,7 @@
             self.__menus["subwindow"].addAction(
                 self.codeDocumentationViewerActivateAct)
         self.__menus["subwindow"].addAction(self.debugViewerActivateAct)
+        self.__menus["subwindow"].addAction(self.findFileActivateAct)
         self.__menus["subwindow"].addAction(
             self.pluginRepositoryViewerActivateAct)
         self.__menus["subwindow"].addAction(self.virtualenvManagerActivateAct)
@@ -6796,50 +6832,54 @@
         self.findFileNameDialog.raise_()
         self.findFileNameDialog.activateWindow()
     
-    def showFindFilesDialog(self, txt="", searchDir="", openFiles=False):
-        """
-        Public slot to show the Find In Files dialog.
-        
-        @param txt text to search for (string)
-        @param searchDir directory to search in (string)
-        @param openFiles flag indicating to operate on open files (boolean)
-        """
-        if self.findFilesDialog is None:
-            from .FindFileDialog import FindFileDialog
-            self.findFilesDialog = FindFileDialog(self.project)
-            self.findFilesDialog.sourceFile.connect(
-                self.viewmanager.openSourceFile)
-            self.findFilesDialog.designerFile.connect(self.__designer)
-        if searchDir:
-            self.findFilesDialog.setSearchDirectory(searchDir)
-        self.findFilesDialog.show(txt)
-        if openFiles:
-            self.findFilesDialog.setOpenFiles()
-        self.findFilesDialog.raise_()
-        self.findFilesDialog.activateWindow()
+    def showFindFilesWidget(self, txt="", searchDir="", openFiles=False):
+        """
+        Public slot to show the Find In Files widget.
+        
+        @param txt text to search for (defaults to "")
+        @type str (optional)
+        @param searchDir directory to search in (defaults to "")
+        @type str (optional)
+        @param openFiles flag indicating to operate on open files only
+            (defaults to False)
+        @type bool (optional)
+        """
+        self.__activateFindFileWidget()
+        self.__findFileWidget.activate(
+            replaceMode=False, txt=txt, searchDir=searchDir,
+            openFiles=openFiles)
     
-    def showReplaceFilesDialog(self, txt="", searchDir="", openFiles=False):
-        """
-        Public slot to show the Find & Replace In Files dialog.
-        
-        @param txt text to search for (string)
-        @param searchDir directory to search in (string)
-        @param openFiles flag indicating to operate on open files (boolean)
-        """
-        if self.replaceFilesDialog is None:
-            from .FindFileDialog import FindFileDialog
-            self.replaceFilesDialog = FindFileDialog(
-                self.project, replaceMode=True)
-            self.replaceFilesDialog.sourceFile.connect(
-                self.viewmanager.openSourceFile)
-            self.replaceFilesDialog.designerFile.connect(self.__designer)
-        if searchDir:
-            self.replaceFilesDialog.setSearchDirectory(searchDir)
-        self.replaceFilesDialog.show(txt)
-        if openFiles:
-            self.replaceFilesDialog.setOpenFiles()
-        self.replaceFilesDialog.raise_()
-        self.replaceFilesDialog.activateWindow()
+    def showReplaceFilesWidget(self, txt="", searchDir="", openFiles=False):
+        """
+        Public slot to show the Find In Files widget in replace mode.
+        
+        @param txt text to search for (defaults to "")
+        @type str (optional)
+        @param searchDir directory to search in (defaults to "")
+        @type str (optional)
+        @param openFiles flag indicating to operate on open files only
+            (defaults to False)
+        @type bool (optional)
+        """
+        self.__activateFindFileWidget()
+        self.__findFileWidget.activate(
+            replaceMode=True, txt=txt, searchDir=searchDir,
+            openFiles=openFiles)
+    
+    def __activateFindFileWidget(self):
+        """
+        Private method to activate the Find In Files widget.
+        """
+        if self.__layoutType == "Toolboxes":
+            self.rToolboxDock.show()
+            self.rToolbox.setCurrentWidget(self.__findFileWidget)
+        elif self.__layoutType == "Sidebars":
+            self.rightSidebar.show()
+            self.rightSidebar.setCurrentWidget(self.__findFileWidget)
+        self.__findFileWidget.setFocus(
+            Qt.FocusReason.ActiveWindowFocusReason)
+        
+        self.__findFileWidget.activate()
     
     ##########################################################
     ## Below are slots to handle StdOut and StdErr
--- a/eric7/ViewManager/ViewManager.py	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/ViewManager/ViewManager.py	Sat Sep 18 18:51:58 2021 +0200
@@ -2847,6 +2847,7 @@
         commands.
         """
         self.searchActGrp = createActionGroup(self)
+        self.searchOpenFilesActGrp = createActionGroup(self)
         
         self.searchAct = EricAction(
             QCoreApplication.translate('ViewManager', 'Search'),
@@ -3182,7 +3183,7 @@
             'ViewManager',
             """<b>Search in Files</b>"""
             """<p>Search for some text in the files of a directory tree"""
-            """ or the project. A dialog is shown to enter the searchtext"""
+            """ or the project. A window is shown to enter the searchtext"""
             """ and options for the search and to display the result.</p>"""
         ))
         self.searchFilesAct.triggered.connect(self.__searchFiles)
@@ -3201,7 +3202,7 @@
             'ViewManager',
             """<b>Replace in Files</b>"""
             """<p>Search for some text in the files of a directory tree"""
-            """ or the project and replace it. A dialog is shown to enter"""
+            """ or the project and replace it. A window is shown to enter"""
             """ the searchtext, the replacement text and options for the"""
             """ search and to display the result.</p>"""
         ))
@@ -3218,14 +3219,14 @@
                 'ViewManager',
                 "Meta+Ctrl+Alt+F", "Search|Search Open Files")),
             0,
-            self.searchActGrp, 'vm_search_in_open_files')
+            self.searchOpenFilesActGrp, 'vm_search_in_open_files')
         self.searchOpenFilesAct.setStatusTip(QCoreApplication.translate(
             'ViewManager', 'Search for a text in open files'))
         self.searchOpenFilesAct.setWhatsThis(QCoreApplication.translate(
             'ViewManager',
             """<b>Search in Open Files</b>"""
             """<p>Search for some text in the currently opened files."""
-            """ A dialog is shown to enter the searchtext"""
+            """ A window is shown to enter the search text"""
             """ and options for the search and to display the result.</p>"""
         ))
         self.searchOpenFilesAct.triggered.connect(self.__searchOpenFiles)
@@ -3240,19 +3241,21 @@
                 'ViewManager',
                 "Meta+Ctrl+Alt+R", "Search|Replace in Open Files")),
             0,
-            self.searchActGrp, 'vm_replace_in_open_files')
+            self.searchOpenFilesActGrp, 'vm_replace_in_open_files')
         self.replaceOpenFilesAct.setStatusTip(QCoreApplication.translate(
             'ViewManager', 'Search for a text in open files and replace it'))
         self.replaceOpenFilesAct.setWhatsThis(QCoreApplication.translate(
             'ViewManager',
             """<b>Replace in Open Files</b>"""
             """<p>Search for some text in the currently opened files"""
-            """ and replace it. A dialog is shown to enter"""
-            """ the searchtext, the replacement text and options for the"""
+            """ and replace it. A window is shown to enter"""
+            """ the search text, the replacement text and options for the"""
             """ search and to display the result.</p>"""
         ))
         self.replaceOpenFilesAct.triggered.connect(self.__replaceOpenFiles)
         self.searchActions.append(self.replaceOpenFilesAct)
+        
+        self.searchOpenFilesActGrp.setEnabled(False)
     
     def initSearchMenu(self):
         """
@@ -5678,25 +5681,25 @@
         """
         Private method to handle the search in files action.
         """
-        self.ui.showFindFilesDialog(self.textForFind())
+        self.ui.showFindFilesWidget(self.textForFind())
         
     def __replaceFiles(self):
         """
         Private method to handle the replace in files action.
         """
-        self.ui.showReplaceFilesDialog(self.textForFind())
+        self.ui.showReplaceFilesWidget(self.textForFind())
         
     def __searchOpenFiles(self):
         """
         Private method to handle the search in open files action.
         """
-        self.ui.showFindFilesDialog(self.textForFind(), openFiles=True)
+        self.ui.showFindFilesWidget(self.textForFind(), openFiles=True)
         
     def __replaceOpenFiles(self):
         """
         Private method to handle the replace in open files action.
         """
-        self.ui.showReplaceFilesDialog(self.textForFind(), openFiles=True)
+        self.ui.showReplaceFilesWidget(self.textForFind(), openFiles=True)
     
     ##################################################################
     ## Below are the action methods for the view menu
@@ -6340,6 +6343,7 @@
             self.printPreviewAct.setEnabled(False)
         self.editActGrp.setEnabled(False)
         self.searchActGrp.setEnabled(False)
+        self.searchOpenFilesActGrp.setEnabled(False)
         self.viewActGrp.setEnabled(False)
         self.viewFoldActGrp.setEnabled(False)
         self.unhighlightAct.setEnabled(False)
@@ -6386,6 +6390,7 @@
             self.printPreviewAct.setEnabled(True)
         self.editActGrp.setEnabled(True)
         self.searchActGrp.setEnabled(True)
+        self.searchOpenFilesActGrp.setEnabled(True)
         self.viewActGrp.setEnabled(True)
         self.viewFoldActGrp.setEnabled(True)
         self.unhighlightAct.setEnabled(True)
--- a/eric7/eric7.py	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/eric7.py	Sat Sep 18 18:51:58 2021 +0200
@@ -425,4 +425,3 @@
 # TODO: add an embedded help viewer based on QWebEngineView (right side)
 # TODO: make VCS status an embedded view (left side)
 # TODO: add a VCS diff view in the central area (view manager) (?)
-# TODO: add file search/replace as embedded view (left side)
--- a/eric7/i18n/eric7_cs.ts	Fri Sep 17 19:53:54 2021 +0200
+++ b/eric7/i18n/eric7_cs.ts	Sat Sep 18 18:51:58 2021 +0200
@@ -20619,296 +20619,204 @@
   <context>
     <name>FindFileDialog</name>
     <message>
-      <location filename="../UI/FindFileDialog.py" line="70" />
-      <source>Stop</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="74" />
       <source>Find</source>
-      <translation>Hledat</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="733" />
-      <location filename="../UI/FindFileDialog.py" line="708" />
-      <location filename="../UI/FindFileDialog.py" line="694" />
-      <location filename="../UI/FindFileDialog.py" line="80" />
+      <translation type="vanished">Hledat</translation>
+    </message>
+    <message>
       <source>Replace in Files</source>
-      <translation>Nahradit v souborech</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="452" />
+      <translation type="vanished">Nahradit v souborech</translation>
+    </message>
+    <message>
       <source>Invalid search expression</source>
-      <translation>Neplatný výraz hledání</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="453" />
+      <translation type="vanished">Neplatný výraz hledání</translation>
+    </message>
+    <message>
       <source>&lt;p&gt;The search expression is not valid.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Výraz hledná není platný. &lt;/p&gt;&lt;p&gt;Chyba: {0}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="569" />
-      <source>{0} / {1}</source>
-      <comment>occurrences / files</comment>
-      <translation type="unfinished" />
+      <translation type="vanished">&lt;p&gt;Výraz hledná není platný. &lt;/p&gt;&lt;p&gt;Chyba: {0}&lt;/p&gt;</translation>
     </message>
     <message numerus="yes">
-      <location filename="../UI/FindFileDialog.py" line="571" />
       <source>%n occurrence(s)</source>
-      <translation type="unfinished">
+      <translation type="vanished">
         <numerusform />
         <numerusform />
         <numerusform />
       </translation>
     </message>
     <message numerus="yes">
-      <location filename="../UI/FindFileDialog.py" line="572" />
       <source>%n file(s)</source>
-      <translation type="unfinished">
+      <translation type="vanished">
         <numerusform />
         <numerusform />
         <numerusform />
       </translation>
     </message>
     <message>
-      <location filename="../UI/FindFileDialog.py" line="695" />
       <source>&lt;p&gt;Could not read the file &lt;b&gt;{0}&lt;/b&gt;. Skipping it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Nelze číst ze souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="709" />
-      <source>&lt;p&gt;The current and the original hash of the file &lt;b&gt;{0}&lt;/b&gt; are different. Skipping it.&lt;/p&gt;&lt;p&gt;Hash 1: {1}&lt;/p&gt;&lt;p&gt;Hash 2: {2}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="734" />
+      <translation type="vanished">&lt;p&gt;Nelze číst ze souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
       <source>&lt;p&gt;Could not save the file &lt;b&gt;{0}&lt;/b&gt;. Skipping it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Nelze uložit do souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="757" />
+      <translation type="vanished">&lt;p&gt;Nelze uložit do souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
       <source>Open</source>
-      <translation>Otevřít</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.py" line="758" />
+      <translation type="vanished">Otevřít</translation>
+    </message>
+    <message>
       <source>Copy Path to Clipboard</source>
-      <translation>Kopírovat cestu do schránky</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Kopírovat cestu do schránky</translation>
+    </message>
+    <message>
       <source>Find in Files</source>
-      <translation>Hledat v souborech</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat v souborech</translation>
+    </message>
+    <message>
       <source>Find &amp;text:</source>
-      <translation>Hledat &amp;text:</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat &amp;text:</translation>
+    </message>
+    <message>
       <source>Enter the search text or regular expression</source>
-      <translation>Zadejte hledaný text nebo regulární výraz</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zadejte hledaný text nebo regulární výraz</translation>
+    </message>
+    <message>
       <source>Replace te&amp;xt:</source>
-      <translation>Nahradit te&amp;xt:</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Nahradit te&amp;xt:</translation>
+    </message>
+    <message>
       <source>Enter the replacement text or regular expression</source>
-      <translation>Zadejte text k nahrazení nebo regulární výraz</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zadejte text k nahrazení nebo regulární výraz</translation>
+    </message>
+    <message>
       <source>Select to match case sensitive</source>
-      <translation>Vybrat pro rozlišování velkých/malých znaků</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Vybrat pro rozlišování velkých/malých znaků</translation>
+    </message>
+    <message>
       <source>&amp;Match upper/lower case</source>
-      <translation>Rozlišit velké/&amp;malé znaky</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Rozlišit velké/&amp;malé znaky</translation>
+    </message>
+    <message>
       <source>Select to match whole words only</source>
-      <translation>Vybrat pro rozlišování jen celých slov</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Vybrat pro rozlišování jen celých slov</translation>
+    </message>
+    <message>
       <source>Whole &amp;word</source>
-      <translation>Celá slo&amp;va</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Celá slo&amp;va</translation>
+    </message>
+    <message>
       <source>Select if the searchtext is a regular expression</source>
-      <translation>Vybrat jestliže hledaný text je regulární výraz</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Vybrat jestliže hledaný text je regulární výraz</translation>
+    </message>
+    <message>
       <source>Regular &amp;Expression</source>
-      <translation>R&amp;egulární výraz</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">R&amp;egulární výraz</translation>
+    </message>
+    <message>
       <source>Select to open the first occurence automatically</source>
-      <translation>Vybrat pro automatické otevření prvního výskytu</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Vybrat pro automatické otevření prvního výskytu</translation>
+    </message>
+    <message>
       <source>Feeling Like</source>
-      <translation>Pocit jako</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Pocit jako</translation>
+    </message>
+    <message>
       <source>File type</source>
-      <translation>Typ souboru</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Typ souboru</translation>
+    </message>
+    <message>
       <source>Search in source files</source>
-      <translation>Hledat ve zdrojových kódech</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat ve zdrojových kódech</translation>
+    </message>
+    <message>
       <source>&amp;Sources</source>
-      <translation>&amp;Zdrojové kódy</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">&amp;Zdrojové kódy</translation>
+    </message>
+    <message>
       <source>Search in interfaces</source>
-      <translation>Hledat v interfacech</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat v interfacech</translation>
+    </message>
+    <message>
       <source>&amp;Interfaces</source>
-      <translation>&amp;Interface soubory</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">&amp;Interface soubory</translation>
+    </message>
+    <message>
       <source>Search in forms</source>
-      <translation>Hledat ve formulářech</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat ve formulářech</translation>
+    </message>
+    <message>
       <source>&amp;Forms</source>
-      <translation>&amp;Formuláře</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
-      <source>Search in protocols</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
-      <source>&amp;Protocols</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">&amp;Formuláře</translation>
+    </message>
+    <message>
       <source>Search in resources</source>
-      <translation>Hledat ve zdrojích</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat ve zdrojích</translation>
+    </message>
+    <message>
       <source>&amp;Resources</source>
-      <translation>Zd&amp;roje</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zd&amp;roje</translation>
+    </message>
+    <message>
       <source>Select to filter the files by a given filename pattern</source>
-      <translation>Vybrat pro filtrování souborů podle zadaného vzorku</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Vybrat pro filtrování souborů podle zadaného vzorku</translation>
+    </message>
+    <message>
       <source>Fi&amp;lter</source>
-      <translation>Fi&amp;ltr</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Fi&amp;ltr</translation>
+    </message>
+    <message>
       <source>Enter the filename wildcards separated by ';'</source>
-      <translation>Zadejte zástupné znaky pro názvy souborů oddělené ';'</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zadejte zástupné znaky pro názvy souborů oddělené ';'</translation>
+    </message>
+    <message>
       <source>Find in</source>
-      <translation>Hledat v</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat v</translation>
+    </message>
+    <message>
       <source>Search in files of the current project</source>
-      <translation>Hledat v souborech aktuálního projektu</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat v souborech aktuálního projektu</translation>
+    </message>
+    <message>
       <source>&amp;Project</source>
-      <translation>&amp;Projekt</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">&amp;Projekt</translation>
+    </message>
+    <message>
       <source>Search in files of a directory tree to be entered below</source>
-      <translation>Hledat v souborech stromu adresáře, který byl zadán níže</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat v souborech stromu adresáře, který byl zadán níže</translation>
+    </message>
+    <message>
       <source>&amp;Directory tree</source>
-      <translation>Strom a&amp;dresářů</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Strom a&amp;dresářů</translation>
+    </message>
+    <message>
       <source>Enter the directory to search in</source>
-      <translation>Zadejte adresář pro hledání</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zadejte adresář pro hledání</translation>
+    </message>
+    <message>
       <source>Search in open files only </source>
-      <translation>Hledat jen v otevřených souborech </translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Hledat jen v otevřených souborech </translation>
+    </message>
+    <message>
       <source>&amp;Open files only</source>
-      <translation>Jen &amp;otevřené soubory</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
-      <source>Select to exclude hidden files and directories when searching a directory tree.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
-      <source>Exclude hidden files and directories</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Jen &amp;otevřené soubory</translation>
+    </message>
+    <message>
       <source>Shows the progress of the search action</source>
-      <translation>Zobrazit průběh vyhledávání</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
-      <source>%v/%m Files</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Zobrazit průběh vyhledávání</translation>
+    </message>
+    <message>
       <source>File/Line</source>
-      <translation>Soubor/Řádek</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Soubor/Řádek</translation>
+    </message>
+    <message>
       <source>Text</source>
-      <translation>Text</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Text</translation>
+    </message>
+    <message>
       <source>Press to apply the selected replacements</source>
-      <translation>Stisknout pro použití vybraných náhrad</translation>
-    </message>
-    <message>
-      <location filename="../UI/FindFileDialog.ui" line="0" />
+      <translation type="vanished">Stisknout pro použití vybraných náhrad</translation>
+    </message>
+    <message>
       <source>Replace</source>
-      <translation>Nahradit</translation>
+      <translation type="vanished">Nahradit</translation>
     </message>
   </context>
   <context>
@@ -21010,6 +20918,296 @@
     </message>
   </context>
   <context>
+    <name>FindFileWidget</name>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="525" />
+      <source>Invalid search expression</source>
+      <translation type="unfinished">Neplatný výraz hledání</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="526" />
+      <source>&lt;p&gt;The search expression is not valid.&lt;/p&gt;&lt;p&gt;Error: {0}&lt;/p&gt;</source>
+      <translation type="unfinished">&lt;p&gt;Výraz hledná není platný. &lt;/p&gt;&lt;p&gt;Chyba: {0}&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="633" />
+      <source>{0} / {1}</source>
+      <comment>occurrences / files</comment>
+      <translation type="unfinished" />
+    </message>
+    <message numerus="yes">
+      <location filename="../UI/FindFileWidget.py" line="635" />
+      <source>%n occurrence(s)</source>
+      <translation type="unfinished">
+        <numerusform />
+      </translation>
+    </message>
+    <message numerus="yes">
+      <location filename="../UI/FindFileWidget.py" line="636" />
+      <source>%n file(s)</source>
+      <translation type="unfinished">
+        <numerusform />
+      </translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="798" />
+      <location filename="../UI/FindFileWidget.py" line="773" />
+      <location filename="../UI/FindFileWidget.py" line="759" />
+      <source>Replace in Files</source>
+      <translation type="unfinished">Nahradit v souborech</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="760" />
+      <source>&lt;p&gt;Could not read the file &lt;b&gt;{0}&lt;/b&gt;. Skipping it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished">&lt;p&gt;Nelze číst ze souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="774" />
+      <source>&lt;p&gt;The current and the original hash of the file &lt;b&gt;{0}&lt;/b&gt; are different. Skipping it.&lt;/p&gt;&lt;p&gt;Hash 1: {1}&lt;/p&gt;&lt;p&gt;Hash 2: {2}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="799" />
+      <source>&lt;p&gt;Could not save the file &lt;b&gt;{0}&lt;/b&gt;. Skipping it.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished">&lt;p&gt;Nelze uložit do souboru  &lt;b&gt;{0}&lt;/b&gt;. Přeskočeno.&lt;/p&gt;&lt;p&gt;Důvod: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="823" />
+      <source>Open</source>
+      <translation type="unfinished">Otevřít</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.py" line="824" />
+      <source>Copy Path to Clipboard</source>
+      <translation type="unfinished">Kopírovat cestu do schránky</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Find &amp;text:</source>
+      <translation type="unfinished">Hledat &amp;text:</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Enter the search text or regular expression</source>
+      <translation type="unfinished">Zadejte hledaný text nebo regulární výraz</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Press to toggle the mode between find and replace mode</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Replace te&amp;xt:</source>
+      <translation type="unfinished">Nahradit te&amp;xt:</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Enter the replacement text or regular expression</source>
+      <translation type="unfinished">Zadejte text k nahrazení nebo regulární výraz</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Select to match case sensitive</source>
+      <translation type="unfinished">Vybrat pro rozlišování velkých/malých znaků</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Match upper/lower case</source>
+      <translation type="unfinished">Rozlišit velké/&amp;malé znaky</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Select to match whole words only</source>
+      <translation type="unfinished">Vybrat pro rozlišování jen celých slov</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Whole &amp;word</source>
+      <translation type="unfinished">Celá slo&amp;va</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Select if the searchtext is a regular expression</source>
+      <translation type="unfinished">Vybrat jestliže hledaný text je regulární výraz</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Regular &amp;Expression</source>
+      <translation type="unfinished">R&amp;egulární výraz</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>File type</source>
+      <translation type="unfinished">Typ souboru</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in source files</source>
+      <translation type="unfinished">Hledat ve zdrojových kódech</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Sources</source>
+      <translation type="unfinished">&amp;Zdrojové kódy</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in interfaces</source>
+      <translation type="unfinished">Hledat v interfacech</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Interfaces</source>
+      <translation type="unfinished">&amp;Interface soubory</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in forms</source>
+      <translation type="unfinished">Hledat ve formulářech</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Forms</source>
+      <translation type="unfinished">&amp;Formuláře</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in protocols</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Protocols</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in resources</source>
+      <translation type="unfinished">Hledat ve zdrojích</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Resources</source>
+      <translation type="unfinished">Zd&amp;roje</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Select to filter the files by a given filename pattern</source>
+      <translation type="unfinished">Vybrat pro filtrování souborů podle zadaného vzorku</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Fi&amp;lter</source>
+      <translation type="unfinished">Fi&amp;ltr</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Enter the filename wildcards separated by ';'</source>
+      <translation type="unfinished">Zadejte zástupné znaky pro názvy souborů oddělené ';'</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Find in</source>
+      <translation type="unfinished">Hledat v</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in files of the current project</source>
+      <translation type="unfinished">Hledat v souborech aktuálního projektu</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Project</source>
+      <translation type="unfinished">&amp;Projekt</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in files of a directory tree to be entered below</source>
+      <translation type="unfinished">Hledat v souborech stromu adresáře, který byl zadán níže</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Directory tree</source>
+      <translation type="unfinished">Strom a&amp;dresářů</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Enter the directory to search in</source>
+      <translation type="unfinished">Zadejte adresář pro hledání</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Search in open files only </source>
+      <translation type="unfinished">Hledat jen v otevřených souborech </translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>&amp;Open files only</source>
+      <translation type="unfinished">Jen &amp;otevřené soubory</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Select to exclude hidden files and directories when searching a directory tree.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Exclude hidden files and directories</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Press to start the search process</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Find</source>
+      <translation type="unfinished">Hledat</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Press to stop the current search process</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Stop</source>
+      <translation type="unfinished">Zastavit</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Shows the progress of the search action</source>
+      <translation type="unfinished">Zobrazit průběh vyhledávání</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>%v/%m Files</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>File/Line</source>
+      <translation type="unfinished">Soubor/Řádek</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Text</source>
+      <translation type="unfinished">Text</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Press to apply the selected replacements</source>
+      <translation type="unfinished">Stisknout pro použití vybraných náhrad</translation>
+    </message>
+    <message>
+      <location filename="../UI/FindFileWidget.ui" line="0" />
+      <source>Replace</source>
+      <translation type="unfinished">Nahradit</translation>
+    </message>
+  </context>
+  <context>
     <name>FirefoxImporter</name>
     <message>
       <location filename="../WebBrowser/Bookmarks/BookmarksImporters/FirefoxImporter.py" line="48" />
@@ -82924,2384 +83122,2407 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1948" />
-      <location filename="../UI/UserInterface.py" line="1010" />
+      <location filename="../UI/UserInterface.py" line="1965" />
+      <location filename="../UI/UserInterface.py" line="1017" />
       <source>Left Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1973" />
-      <location filename="../UI/UserInterface.py" line="1018" />
+      <location filename="../UI/UserInterface.py" line="1990" />
+      <location filename="../UI/UserInterface.py" line="1025" />
       <source>Horizontal Toolbox</source>
       <translation>Vodorovná nástrojová lišta</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1960" />
-      <location filename="../UI/UserInterface.py" line="1026" />
+      <location filename="../UI/UserInterface.py" line="1977" />
+      <location filename="../UI/UserInterface.py" line="1033" />
       <source>Right Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1806" />
-      <location filename="../UI/UserInterface.py" line="1170" />
-      <location filename="../UI/UserInterface.py" line="1034" />
-      <source>Project-Viewer</source>
-      <translation>Prohlížeč projektu</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1823" />
-      <location filename="../UI/UserInterface.py" line="1175" />
-      <location filename="../UI/UserInterface.py" line="1038" />
+      <location filename="../UI/UserInterface.py" line="1181" />
+      <location filename="../UI/UserInterface.py" line="1041" />
+      <source>Project-Viewer</source>
+      <translation>Prohlížeč projektu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1840" />
+      <location filename="../UI/UserInterface.py" line="1186" />
+      <location filename="../UI/UserInterface.py" line="1045" />
       <source>Multiproject-Viewer</source>
       <translation>Prohlížeč multiprojektu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1930" />
-      <location filename="../UI/UserInterface.py" line="1181" />
-      <location filename="../UI/UserInterface.py" line="1043" />
+      <location filename="../UI/UserInterface.py" line="1947" />
+      <location filename="../UI/UserInterface.py" line="1192" />
+      <location filename="../UI/UserInterface.py" line="1050" />
       <source>Template-Viewer</source>
       <translation>Prohlížeč šablon</translation>
     </message>
     <message>
+      <location filename="../UI/UserInterface.py" line="1893" />
+      <location filename="../UI/UserInterface.py" line="1198" />
+      <location filename="../UI/UserInterface.py" line="1055" />
+      <source>File-Browser</source>
+      <translation>Browser souborů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1204" />
+      <location filename="../UI/UserInterface.py" line="1060" />
+      <source>Symbols</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2122" />
+      <location filename="../UI/UserInterface.py" line="2121" />
+      <location filename="../UI/UserInterface.py" line="1214" />
+      <location filename="../UI/UserInterface.py" line="1069" />
+      <source>Code Documentation Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1858" />
+      <location filename="../UI/UserInterface.py" line="1219" />
+      <location filename="../UI/UserInterface.py" line="1073" />
+      <source>Debug-Viewer</source>
+      <translation>Prohlížeč debugeru</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2233" />
+      <location filename="../UI/UserInterface.py" line="2232" />
+      <location filename="../UI/UserInterface.py" line="1224" />
+      <location filename="../UI/UserInterface.py" line="1077" />
+      <source>Find/Replace In Files</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2926" />
+      <location filename="../UI/UserInterface.py" line="2196" />
+      <location filename="../UI/UserInterface.py" line="2195" />
+      <location filename="../UI/UserInterface.py" line="1229" />
+      <location filename="../UI/UserInterface.py" line="1081" />
+      <source>Plugin Repository</source>
+      <translation>Repozitář pluginů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2214" />
+      <location filename="../UI/UserInterface.py" line="2213" />
+      <location filename="../UI/UserInterface.py" line="1234" />
+      <location filename="../UI/UserInterface.py" line="1085" />
+      <source>Virtual Environments</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2142" />
+      <location filename="../UI/UserInterface.py" line="2141" />
+      <location filename="../UI/UserInterface.py" line="1239" />
+      <location filename="../UI/UserInterface.py" line="1089" />
+      <source>PyPI</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2160" />
+      <location filename="../UI/UserInterface.py" line="2159" />
+      <location filename="../UI/UserInterface.py" line="1244" />
+      <location filename="../UI/UserInterface.py" line="1094" />
+      <source>Conda</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1249" />
+      <location filename="../UI/UserInterface.py" line="1099" />
+      <source>Cooperation</source>
+      <translation>Spolupráce</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2065" />
+      <location filename="../UI/UserInterface.py" line="1254" />
+      <location filename="../UI/UserInterface.py" line="1104" />
+      <source>IRC</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2178" />
+      <location filename="../UI/UserInterface.py" line="2177" />
+      <location filename="../UI/UserInterface.py" line="1260" />
+      <location filename="../UI/UserInterface.py" line="1109" />
+      <source>MicroPython</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1928" />
+      <location filename="../UI/UserInterface.py" line="1268" />
+      <location filename="../UI/UserInterface.py" line="1117" />
+      <source>Task-Viewer</source>
+      <translation>Prohlížeč úloh</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1910" />
+      <location filename="../UI/UserInterface.py" line="1272" />
+      <location filename="../UI/UserInterface.py" line="1121" />
+      <source>Log-Viewer</source>
+      <translation>Prohlížeč logu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1277" />
+      <location filename="../UI/UserInterface.py" line="1126" />
+      <source>Numbers</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../UI/UserInterface.py" line="1876" />
-      <location filename="../UI/UserInterface.py" line="1187" />
-      <location filename="../UI/UserInterface.py" line="1048" />
-      <source>File-Browser</source>
-      <translation>Browser souborů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1193" />
-      <location filename="../UI/UserInterface.py" line="1053" />
-      <source>Symbols</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2105" />
-      <location filename="../UI/UserInterface.py" line="2104" />
-      <location filename="../UI/UserInterface.py" line="1203" />
-      <location filename="../UI/UserInterface.py" line="1062" />
-      <source>Code Documentation Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1841" />
-      <location filename="../UI/UserInterface.py" line="1207" />
-      <location filename="../UI/UserInterface.py" line="1066" />
-      <source>Debug-Viewer</source>
-      <translation>Prohlížeč debugeru</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2891" />
-      <location filename="../UI/UserInterface.py" line="2179" />
-      <location filename="../UI/UserInterface.py" line="2178" />
-      <location filename="../UI/UserInterface.py" line="1212" />
-      <location filename="../UI/UserInterface.py" line="1070" />
-      <source>Plugin Repository</source>
-      <translation>Repozitář pluginů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2197" />
-      <location filename="../UI/UserInterface.py" line="2196" />
-      <location filename="../UI/UserInterface.py" line="1217" />
-      <location filename="../UI/UserInterface.py" line="1074" />
-      <source>Virtual Environments</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2125" />
-      <location filename="../UI/UserInterface.py" line="2124" />
-      <location filename="../UI/UserInterface.py" line="1222" />
-      <location filename="../UI/UserInterface.py" line="1078" />
-      <source>PyPI</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2143" />
-      <location filename="../UI/UserInterface.py" line="2142" />
-      <location filename="../UI/UserInterface.py" line="1227" />
-      <location filename="../UI/UserInterface.py" line="1083" />
-      <source>Conda</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1232" />
-      <location filename="../UI/UserInterface.py" line="1088" />
-      <source>Cooperation</source>
-      <translation>Spolupráce</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2048" />
-      <location filename="../UI/UserInterface.py" line="1237" />
-      <location filename="../UI/UserInterface.py" line="1093" />
-      <source>IRC</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2161" />
-      <location filename="../UI/UserInterface.py" line="2160" />
-      <location filename="../UI/UserInterface.py" line="1243" />
-      <location filename="../UI/UserInterface.py" line="1098" />
-      <source>MicroPython</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1911" />
-      <location filename="../UI/UserInterface.py" line="1251" />
-      <location filename="../UI/UserInterface.py" line="1106" />
-      <source>Task-Viewer</source>
-      <translation>Prohlížeč úloh</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1893" />
-      <location filename="../UI/UserInterface.py" line="1255" />
-      <location filename="../UI/UserInterface.py" line="1110" />
-      <source>Log-Viewer</source>
-      <translation>Prohlížeč logu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1260" />
-      <location filename="../UI/UserInterface.py" line="1115" />
-      <source>Numbers</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1859" />
-      <location filename="../UI/UserInterface.py" line="1275" />
-      <location filename="../UI/UserInterface.py" line="1130" />
+      <location filename="../UI/UserInterface.py" line="1292" />
+      <location filename="../UI/UserInterface.py" line="1141" />
       <source>Shell</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1660" />
+      <location filename="../UI/UserInterface.py" line="1677" />
       <source>{0} - Passive Mode</source>
       <translation>{0} - Pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1667" />
-      <location filename="../UI/UserInterface.py" line="1663" />
+      <location filename="../UI/UserInterface.py" line="1684" />
+      <location filename="../UI/UserInterface.py" line="1680" />
       <source>{0} - {1} - Passive Mode</source>
       <translation>{0} - {1} - pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1671" />
+      <location filename="../UI/UserInterface.py" line="1688" />
       <source>{0} - {1} - {2} - Passive Mode</source>
       <translation>{0} - {1} - {2} - pasivní mód</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1694" />
+      <location filename="../UI/UserInterface.py" line="1711" />
       <source>Quit</source>
       <translation>Konec</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1696" />
-      <source>&amp;Quit</source>
-      <translation>&amp;Konec</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1697" />
-      <source>Ctrl+Q</source>
-      <comment>File|Quit</comment>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1699" />
-      <source>Quit the IDE</source>
-      <translation>Ukončit IDE</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1700" />
-      <source>&lt;b&gt;Quit the IDE&lt;/b&gt;&lt;p&gt;This quits the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Ukončit IDE&lt;/b&gt;&lt;p&gt;Ukončí se IDE. Nejdříve by se měly uložit neuložené změny. Python programy běžící v debug procesu budou ukončeny a nastavení budou uložena.&lt;/p&gt;</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1713" />
-      <location filename="../UI/UserInterface.py" line="1711" />
-      <source>Restart</source>
-      <translation type="unfinished" />
+      <source>&amp;Quit</source>
+      <translation>&amp;Konec</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1714" />
-      <source>Ctrl+Shift+Q</source>
+      <source>Ctrl+Q</source>
       <comment>File|Quit</comment>
-      <translation type="unfinished" />
+      <translation />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1716" />
-      <source>Restart the IDE</source>
-      <translation type="unfinished" />
+      <source>Quit the IDE</source>
+      <translation>Ukončit IDE</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1717" />
-      <source>&lt;b&gt;Restart the IDE&lt;/b&gt;&lt;p&gt;This restarts the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Quit the IDE&lt;/b&gt;&lt;p&gt;This quits the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Ukončit IDE&lt;/b&gt;&lt;p&gt;Ukončí se IDE. Nejdříve by se měly uložit neuložené změny. Python programy běžící v debug procesu budou ukončeny a nastavení budou uložena.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1730" />
-      <location filename="../UI/UserInterface.py" line="1727" />
-      <source>Save session</source>
-      <translation>Uložit relaci</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1728" />
-      <source>Save session...</source>
+      <source>Restart</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1731" />
+      <source>Ctrl+Shift+Q</source>
+      <comment>File|Quit</comment>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1733" />
+      <source>Restart the IDE</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1734" />
+      <source>&lt;b&gt;Restart the IDE&lt;/b&gt;&lt;p&gt;This restarts the IDE. Any unsaved changes may be saved first. Any Python program being debugged will be stopped and the preferences will be written to disc.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1747" />
+      <location filename="../UI/UserInterface.py" line="1744" />
+      <source>Save session</source>
+      <translation>Uložit relaci</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1745" />
+      <source>Save session...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1748" />
       <source>&lt;b&gt;Save session...&lt;/b&gt;&lt;p&gt;This saves the current session to disk. A dialog is opened to select the file name.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="6727" />
-      <location filename="../UI/UserInterface.py" line="1743" />
-      <location filename="../UI/UserInterface.py" line="1740" />
+      <location filename="../UI/UserInterface.py" line="6763" />
+      <location filename="../UI/UserInterface.py" line="1760" />
+      <location filename="../UI/UserInterface.py" line="1757" />
       <source>Load session</source>
       <translation type="unfinished">Načíst relaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1741" />
-      <source>Load session...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1744" />
-      <source>&lt;b&gt;Load session...&lt;/b&gt;&lt;p&gt;This loads a session saved to disk previously. A dialog is opened to select the file name.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1753" />
-      <source>New Window</source>
-      <translation type="unfinished">Nové okno</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1755" />
-      <source>New &amp;Window</source>
-      <translation type="unfinished">&amp;Nové okno</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1756" />
-      <source>Ctrl+Shift+N</source>
-      <comment>File|New Window</comment>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1758" />
+      <source>Load session...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1761" />
+      <source>&lt;b&gt;Load session...&lt;/b&gt;&lt;p&gt;This loads a session saved to disk previously. A dialog is opened to select the file name.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1770" />
+      <source>New Window</source>
+      <translation type="unfinished">Nové okno</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1772" />
+      <source>New &amp;Window</source>
+      <translation type="unfinished">&amp;Nové okno</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1773" />
+      <source>Ctrl+Shift+N</source>
+      <comment>File|New Window</comment>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1775" />
       <source>Open a new eric instance</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1760" />
-      <source>&lt;b&gt;New Window&lt;/b&gt;&lt;p&gt;This opens a new instance of the eric IDE.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1774" />
-      <location filename="../UI/UserInterface.py" line="1772" />
-      <source>Edit Profile</source>
-      <translation>Editační profil</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1777" />
-      <source>Activate the edit view profile</source>
-      <translation>Aktivovat profil editace</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1779" />
-      <source>&lt;b&gt;Edit Profile&lt;/b&gt;&lt;p&gt;Activate the "Edit View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Editační profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Editační profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
+      <source>&lt;b&gt;New Window&lt;/b&gt;&lt;p&gt;This opens a new instance of the eric IDE.&lt;/p&gt;</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1791" />
       <location filename="../UI/UserInterface.py" line="1789" />
-      <source>Debug Profile</source>
-      <translation>Debugovací profil</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1795" />
-      <source>Activate the debug view profile</source>
-      <translation>Aktivovat debugovací profil</translation>
+      <source>Edit Profile</source>
+      <translation>Editační profil</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1794" />
+      <source>Activate the edit view profile</source>
+      <translation>Aktivovat profil editace</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1796" />
-      <source>&lt;b&gt;Debug Profile&lt;/b&gt;&lt;p&gt;Activate the "Debug View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Debugovací profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Debugovací profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1807" />
-      <source>&amp;Project-Viewer</source>
-      <translation>Prohlížeč &amp;projektu</translation>
+      <source>&lt;b&gt;Edit Profile&lt;/b&gt;&lt;p&gt;Activate the "Edit View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Editační profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Editační profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1808" />
-      <source>Alt+Shift+P</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1811" />
-      <source>Switch the input focus to the Project-Viewer window.</source>
-      <translation type="unfinished" />
+      <location filename="../UI/UserInterface.py" line="1806" />
+      <source>Debug Profile</source>
+      <translation>Debugovací profil</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1812" />
+      <source>Activate the debug view profile</source>
+      <translation>Aktivovat debugovací profil</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1813" />
-      <source>&lt;b&gt;Activate Project-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Project-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Debug Profile&lt;/b&gt;&lt;p&gt;Activate the "Debug View Profile". Windows being shown, if this profile is active, may be configured with the "View Profile Configuration" dialog.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Debugovací profil&lt;/b&gt;&lt;p&gt;Aktivování skupiny 'Debugovací profil'. Okna, která se v tomto profilu zobrazí lze nastavit v dialogu 'Konfigurace profilu pohledů'.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1824" />
-      <source>&amp;Multiproject-Viewer</source>
-      <translation>Prohlížeč &amp;multiprojektu</translation>
+      <source>&amp;Project-Viewer</source>
+      <translation>Prohlížeč &amp;projektu</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1825" />
-      <source>Alt+Shift+M</source>
+      <source>Alt+Shift+P</source>
       <translation />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1828" />
-      <source>Switch the input focus to the Multiproject-Viewer window.</source>
+      <source>Switch the input focus to the Project-Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1830" />
-      <source>&lt;b&gt;Activate Multiproject-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Multiproject-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Activate Project-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Project-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1841" />
+      <source>&amp;Multiproject-Viewer</source>
+      <translation>Prohlížeč &amp;multiprojektu</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1842" />
+      <source>Alt+Shift+M</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1845" />
+      <source>Switch the input focus to the Multiproject-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1847" />
+      <source>&lt;b&gt;Activate Multiproject-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Multiproject-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1859" />
       <source>&amp;Debug-Viewer</source>
       <translation>Prohlížeč &amp;debugeru</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1843" />
-      <source>Alt+Shift+D</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1846" />
-      <source>Switch the input focus to the Debug-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1848" />
-      <source>&lt;b&gt;Activate Debug-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Debug-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1860" />
-      <source>&amp;Shell</source>
-      <translation>&amp;Shell</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1861" />
-      <source>Alt+Shift+S</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1864" />
-      <source>Switch the input focus to the Shell window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1866" />
-      <source>&lt;b&gt;Activate Shell&lt;/b&gt;&lt;p&gt;This switches the input focus to the Shell window.&lt;/p&gt;</source>
+      <source>Alt+Shift+D</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1863" />
+      <source>Switch the input focus to the Debug-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1865" />
+      <source>&lt;b&gt;Activate Debug-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Debug-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1877" />
-      <source>&amp;File-Browser</source>
-      <translation type="unfinished" />
+      <source>&amp;Shell</source>
+      <translation>&amp;Shell</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1878" />
-      <source>Alt+Shift+F</source>
+      <source>Alt+Shift+S</source>
       <translation />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1881" />
-      <source>Switch the input focus to the File-Browser window.</source>
+      <source>Switch the input focus to the Shell window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1883" />
-      <source>&lt;b&gt;Activate File-Browser&lt;/b&gt;&lt;p&gt;This switches the input focus to the File-Browser window.&lt;/p&gt;</source>
+      <source>&lt;b&gt;Activate Shell&lt;/b&gt;&lt;p&gt;This switches the input focus to the Shell window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1894" />
-      <source>Lo&amp;g-Viewer</source>
+      <source>&amp;File-Browser</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1895" />
-      <source>Alt+Shift+G</source>
+      <source>Alt+Shift+F</source>
       <translation />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1898" />
-      <source>Switch the input focus to the Log-Viewer window.</source>
+      <source>Switch the input focus to the File-Browser window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1900" />
-      <source>&lt;b&gt;Activate Log-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Log-Viewer window.&lt;/p&gt;</source>
+      <source>&lt;b&gt;Activate File-Browser&lt;/b&gt;&lt;p&gt;This switches the input focus to the File-Browser window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1911" />
+      <source>Lo&amp;g-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1912" />
+      <source>Alt+Shift+G</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1915" />
+      <source>Switch the input focus to the Log-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1917" />
+      <source>&lt;b&gt;Activate Log-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Log-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1929" />
       <source>&amp;Task-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1913" />
+      <location filename="../UI/UserInterface.py" line="1930" />
       <source>Alt+Shift+T</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1916" />
+      <location filename="../UI/UserInterface.py" line="1933" />
       <source>Switch the input focus to the Task-Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1918" />
-      <source>&lt;b&gt;Activate Task-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Task-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1931" />
-      <source>Templ&amp;ate-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1932" />
-      <source>Alt+Shift+A</source>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1935" />
-      <source>Switch the input focus to the Template-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1937" />
-      <source>&lt;b&gt;Activate Template-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Template-Viewer window.&lt;/p&gt;</source>
+      <source>&lt;b&gt;Activate Task-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Task-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1948" />
+      <source>Templ&amp;ate-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1949" />
+      <source>Alt+Shift+A</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1952" />
+      <source>Switch the input focus to the Template-Viewer window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1954" />
+      <source>&lt;b&gt;Activate Template-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Template-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1966" />
       <source>&amp;Left Toolbox</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1950" />
+      <location filename="../UI/UserInterface.py" line="1967" />
       <source>Toggle the Left Toolbox window</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1951" />
+      <location filename="../UI/UserInterface.py" line="1968" />
       <source>&lt;b&gt;Toggle the Left Toolbox window&lt;/b&gt;&lt;p&gt;If the Left Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="1961" />
-      <source>&amp;Right Toolbox</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1963" />
-      <source>Toggle the Right Toolbox window</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1964" />
-      <source>&lt;b&gt;Toggle the Right Toolbox window&lt;/b&gt;&lt;p&gt;If the Right Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1974" />
-      <source>&amp;Horizontal Toolbox</source>
-      <translation>&amp;Horizontální lista nástrojů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1976" />
-      <source>Toggle the Horizontal Toolbox window</source>
-      <translation>Přepnout na vodorovnou lištu nástrojů</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="1978" />
-      <source>&lt;b&gt;Toggle the Horizontal Toolbox window&lt;/b&gt;&lt;p&gt;If the Horizontal Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Přepnout vodorovnou nástrojovou lištu&lt;/b&gt;&lt;p&gt;Pokud je vodorovná nástrojová lišta skryta, tak se zobrazí. Je-li zobrazena, skryje se.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1987" />
-      <source>Left Sidebar</source>
-      <translation>Levé menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1988" />
-      <source>&amp;Left Sidebar</source>
-      <translation>&amp;Levé menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="1990" />
-      <source>Toggle the left sidebar window</source>
-      <translation>Přepnout okno levého menu</translation>
+      <source>&amp;Right Toolbox</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1980" />
+      <source>Toggle the Right Toolbox window</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1981" />
+      <source>&lt;b&gt;Toggle the Right Toolbox window&lt;/b&gt;&lt;p&gt;If the Right Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="1991" />
-      <source>&lt;b&gt;Toggle the left sidebar window&lt;/b&gt;&lt;p&gt;If the left sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Přepnout okno levého menu&lt;/b&gt;&lt;p&gt;Je-li okno levého menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2000" />
-      <source>Right Sidebar</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2001" />
-      <source>&amp;Right Sidebar</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2003" />
-      <source>Toggle the right sidebar window</source>
-      <translation type="unfinished" />
+      <source>&amp;Horizontal Toolbox</source>
+      <translation>&amp;Horizontální lista nástrojů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1993" />
+      <source>Toggle the Horizontal Toolbox window</source>
+      <translation>Přepnout na vodorovnou lištu nástrojů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="1995" />
+      <source>&lt;b&gt;Toggle the Horizontal Toolbox window&lt;/b&gt;&lt;p&gt;If the Horizontal Toolbox window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Přepnout vodorovnou nástrojovou lištu&lt;/b&gt;&lt;p&gt;Pokud je vodorovná nástrojová lišta skryta, tak se zobrazí. Je-li zobrazena, skryje se.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2004" />
+      <source>Left Sidebar</source>
+      <translation>Levé menu</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2005" />
-      <source>&lt;b&gt;Toggle the right sidebar window&lt;/b&gt;&lt;p&gt;If the right sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2014" />
-      <source>Bottom Sidebar</source>
-      <translation>Dolní menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2015" />
-      <source>&amp;Bottom Sidebar</source>
-      <translation>&amp;Dolní menu</translation>
+      <source>&amp;Left Sidebar</source>
+      <translation>&amp;Levé menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2007" />
+      <source>Toggle the left sidebar window</source>
+      <translation>Přepnout okno levého menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2008" />
+      <source>&lt;b&gt;Toggle the left sidebar window&lt;/b&gt;&lt;p&gt;If the left sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Přepnout okno levého menu&lt;/b&gt;&lt;p&gt;Je-li okno levého menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2017" />
-      <source>Toggle the bottom sidebar window</source>
-      <translation>Přepnout okno dolního menu</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2019" />
-      <source>&lt;b&gt;Toggle the bottom sidebar window&lt;/b&gt;&lt;p&gt;If the bottom sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Přepnout okno dolního menu&lt;/b&gt;&lt;p&gt;Je-li okno dolního menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2029" />
-      <source>Cooperation-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2030" />
-      <source>Co&amp;operation-Viewer</source>
+      <source>Right Sidebar</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2018" />
+      <source>&amp;Right Sidebar</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2020" />
+      <source>Toggle the right sidebar window</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2022" />
+      <source>&lt;b&gt;Toggle the right sidebar window&lt;/b&gt;&lt;p&gt;If the right sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2031" />
-      <source>Alt+Shift+O</source>
-      <translation />
+      <source>Bottom Sidebar</source>
+      <translation>Dolní menu</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2032" />
+      <source>&amp;Bottom Sidebar</source>
+      <translation>&amp;Dolní menu</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2034" />
-      <source>Switch the input focus to the Cooperation-Viewer window.</source>
-      <translation type="unfinished" />
+      <source>Toggle the bottom sidebar window</source>
+      <translation>Přepnout okno dolního menu</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2036" />
-      <source>&lt;b&gt;Activate Cooperation-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Cooperation-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2049" />
-      <source>&amp;IRC</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2050" />
-      <source>Ctrl+Alt+Shift+I</source>
+      <source>&lt;b&gt;Toggle the bottom sidebar window&lt;/b&gt;&lt;p&gt;If the bottom sidebar window is hidden then display it. If it is displayed then close it.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Přepnout okno dolního menu&lt;/b&gt;&lt;p&gt;Je-li okno dolního menu skryto, tak se zobrazí. Je-li zobrazeno, skryje se.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2046" />
+      <source>Cooperation-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2047" />
+      <source>Co&amp;operation-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2048" />
+      <source>Alt+Shift+O</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2051" />
+      <source>Switch the input focus to the Cooperation-Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2053" />
-      <source>Switch the input focus to the IRC window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2055" />
-      <source>&lt;b&gt;Activate IRC&lt;/b&gt;&lt;p&gt;This switches the input focus to the IRC window.&lt;/p&gt;</source>
+      <source>&lt;b&gt;Activate Cooperation-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Cooperation-Viewer window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2066" />
-      <source>Symbols-Viewer</source>
+      <source>&amp;IRC</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2067" />
+      <source>Ctrl+Alt+Shift+I</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2070" />
+      <source>Switch the input focus to the IRC window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2072" />
+      <source>&lt;b&gt;Activate IRC&lt;/b&gt;&lt;p&gt;This switches the input focus to the IRC window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2083" />
+      <source>Symbols-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2084" />
       <source>S&amp;ymbols-Viewer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2068" />
-      <source>Alt+Shift+Y</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2071" />
-      <source>Switch the input focus to the Symbols-Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2073" />
-      <source>&lt;b&gt;Activate Symbols-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Symbols-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2085" />
-      <source>Numbers-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2086" />
-      <source>Num&amp;bers-Viewer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2087" />
-      <source>Alt+Shift+B</source>
+      <source>Alt+Shift+Y</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2088" />
+      <source>Switch the input focus to the Symbols-Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2090" />
+      <source>&lt;b&gt;Activate Symbols-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Symbols-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2102" />
+      <source>Numbers-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2103" />
+      <source>Num&amp;bers-Viewer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2104" />
+      <source>Alt+Shift+B</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2107" />
       <source>Switch the input focus to the Numbers-Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2092" />
-      <source>&lt;b&gt;Activate Numbers-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Numbers-Viewer window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2106" />
-      <source>Ctrl+Alt+Shift+D</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2109" />
-      <source>Switch the input focus to the Code Documentation Viewer window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2112" />
-      <source>&lt;b&gt;Code Documentation Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Code Documentation Viewer window.&lt;/p&gt;</source>
+      <source>&lt;b&gt;Activate Numbers-Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Numbers-Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2123" />
+      <source>Ctrl+Alt+Shift+D</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2126" />
-      <source>Ctrl+Alt+Shift+P</source>
+      <source>Switch the input focus to the Code Documentation Viewer window.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2129" />
+      <source>&lt;b&gt;Code Documentation Viewer&lt;/b&gt;&lt;p&gt;This switches the input focus to the Code Documentation Viewer window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2143" />
+      <source>Ctrl+Alt+Shift+P</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2146" />
       <source>Switch the input focus to the PyPI window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2131" />
+      <location filename="../UI/UserInterface.py" line="2148" />
       <source>&lt;b&gt;PyPI&lt;/b&gt;&lt;p&gt;This switches the input focus to the PyPI window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2144" />
+      <location filename="../UI/UserInterface.py" line="2161" />
       <source>Ctrl+Alt+Shift+C</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2147" />
+      <location filename="../UI/UserInterface.py" line="2164" />
       <source>Switch the input focus to the Conda window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2149" />
+      <location filename="../UI/UserInterface.py" line="2166" />
       <source>&lt;b&gt;Conda&lt;/b&gt;&lt;p&gt;This switches the input focus to the Conda window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2162" />
+      <location filename="../UI/UserInterface.py" line="2179" />
       <source>Ctrl+Alt+Shift+M</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2165" />
+      <location filename="../UI/UserInterface.py" line="2182" />
       <source>Switch the input focus to the MicroPython window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2167" />
+      <location filename="../UI/UserInterface.py" line="2184" />
       <source>&lt;b&gt;MicroPython&lt;/b&gt;&lt;p&gt;This switches the input focus to the MicroPython window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2180" />
+      <location filename="../UI/UserInterface.py" line="2197" />
       <source>Ctrl+Alt+Shift+R</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2183" />
+      <location filename="../UI/UserInterface.py" line="2200" />
       <source>Switch the input focus to the Plugin Repository window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2185" />
+      <location filename="../UI/UserInterface.py" line="2202" />
       <source>&lt;b&gt;Plugin Repository&lt;/b&gt;&lt;p&gt;This switches the input focus to the Plugin Repository window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2198" />
-      <source>Ctrl+Alt+V</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2201" />
-      <source>Switch the input focus to the Virtual Environments Manager window.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2204" />
-      <source>&lt;b&gt;Virtual Environments&lt;/b&gt;&lt;p&gt;This switches the input focus to the Virtual Environments Manager window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2215" />
-      <source>What's This?</source>
-      <translation>Co je to?</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2217" />
-      <source>&amp;What's This?</source>
-      <translation>&amp;Co je to?</translation>
+      <source>Ctrl+Alt+V</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2218" />
-      <source>Shift+F1</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2220" />
-      <source>Context sensitive help</source>
-      <translation>Kontextově senzitivní nápověda</translation>
+      <source>Switch the input focus to the Virtual Environments Manager window.</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2221" />
+      <source>&lt;b&gt;Virtual Environments&lt;/b&gt;&lt;p&gt;This switches the input focus to the Virtual Environments Manager window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2234" />
+      <source>Ctrl+Alt+Shift+F</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2237" />
+      <source>Switch the input focus to the Find/Replace In Files window.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2239" />
+      <source>&lt;b&gt;Find/Replace In Files&lt;/b&gt;&lt;p&gt;This switches the input focus to the Find/Replace In Files window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2250" />
+      <source>What's This?</source>
+      <translation>Co je to?</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2252" />
+      <source>&amp;What's This?</source>
+      <translation>&amp;Co je to?</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2253" />
+      <source>Shift+F1</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2255" />
+      <source>Context sensitive help</source>
+      <translation>Kontextově senzitivní nápověda</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2256" />
       <source>&lt;b&gt;Display context sensitive help&lt;/b&gt;&lt;p&gt;In What's This? mode, the mouse cursor shows an arrow with a question mark, and you can click on the interface elements to get a short description of what they do and how to use them. In dialogs, this feature can be accessed using the context help button in the titlebar.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Zobrazit kontextově senzitivní nápovědu&lt;/b&gt;&lt;p&gt;V režimu "Co je to?" se nad různými prvky aplikace u kurzoru zobrazí otazník. Když pak kliknete na tyto prvky, zobrazí se krátký popis co daný prvek znamená a jak jej použít. V dialogových oknech se tato funkce spustí tlačítkem kontextové nápovědy na horní liště.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2233" />
+      <location filename="../UI/UserInterface.py" line="2268" />
       <source>Helpviewer</source>
       <translation>Prohlížeč nápovědy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2235" />
+      <location filename="../UI/UserInterface.py" line="2270" />
       <source>&amp;Helpviewer...</source>
       <translation>Pro&amp;hlížeč nápovědy...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2236" />
+      <location filename="../UI/UserInterface.py" line="2271" />
       <source>F1</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2238" />
-      <source>Open the helpviewer window</source>
-      <translation>Otevřít okno prohlížeče nápovědy</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2240" />
-      <source>&lt;b&gt;Helpviewer&lt;/b&gt;&lt;p&gt;Display the eric web browser. This window will show HTML help files and help from Qt help collections. It has the capability to navigate to links, set bookmarks, print the displayed help and some more features. You may use it to browse the internet as well&lt;/p&gt;&lt;p&gt;If called with a word selected, this word is search in the Qt help collection.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2259" />
-      <source>Show Versions</source>
-      <translation>Zobrazit verze</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2260" />
-      <source>Show &amp;Versions</source>
-      <translation>Zobrazit &amp;verze</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2262" />
-      <source>Display version information</source>
-      <translation>Zobrazit informace o verzích</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2264" />
-      <source>&lt;b&gt;Show Versions&lt;/b&gt;&lt;p&gt;Display version information.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Zobrazit verze&lt;/b&gt;&lt;p&gt;Zobrazí informace o verzích.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2274" />
-      <location filename="../UI/UserInterface.py" line="2272" />
-      <source>Check for Updates</source>
-      <translation>Zjistit aktualizace</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2273" />
-      <source>Check for &amp;Updates...</source>
-      <translation>Zjistit akt&amp;ualizace...</translation>
+      <source>Open the helpviewer window</source>
+      <translation>Otevřít okno prohlížeče nápovědy</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2275" />
-      <source>&lt;b&gt;Check for Updates...&lt;/b&gt;&lt;p&gt;Checks the internet for updates of eric.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2283" />
-      <source>Show downloadable versions</source>
-      <translation>Zobrazit verze ke stažení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2284" />
-      <source>Show &amp;downloadable versions...</source>
-      <translation>Zobrazit verze pro &amp;download...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2287" />
-      <source>Show the versions available for download</source>
-      <translation>Zobrazit dostupné verze ke stažení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2288" />
-      <source>&lt;b&gt;Show downloadable versions...&lt;/b&gt;&lt;p&gt;Shows the eric versions available for download from the internet.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2301" />
-      <location filename="../UI/UserInterface.py" line="2298" />
-      <source>Show Error Log</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Helpviewer&lt;/b&gt;&lt;p&gt;Display the eric web browser. This window will show HTML help files and help from Qt help collections. It has the capability to navigate to links, set bookmarks, print the displayed help and some more features. You may use it to browse the internet as well&lt;/p&gt;&lt;p&gt;If called with a word selected, this word is search in the Qt help collection.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2294" />
+      <source>Show Versions</source>
+      <translation>Zobrazit verze</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2295" />
+      <source>Show &amp;Versions</source>
+      <translation>Zobrazit &amp;verze</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2297" />
+      <source>Display version information</source>
+      <translation>Zobrazit informace o verzích</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2299" />
-      <source>Show Error &amp;Log...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2302" />
-      <source>&lt;b&gt;Show Error Log...&lt;/b&gt;&lt;p&gt;Opens a dialog showing the most recent error log.&lt;/p&gt;</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Show Versions&lt;/b&gt;&lt;p&gt;Display version information.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Zobrazit verze&lt;/b&gt;&lt;p&gt;Zobrazí informace o verzích.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2309" />
+      <location filename="../UI/UserInterface.py" line="2307" />
+      <source>Check for Updates</source>
+      <translation>Zjistit aktualizace</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2308" />
+      <source>Check for &amp;Updates...</source>
+      <translation>Zjistit akt&amp;ualizace...</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2310" />
-      <source>Show Install Info</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2311" />
-      <source>Show Install &amp;Info...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2313" />
-      <source>Show Installation Information</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2315" />
-      <source>&lt;b&gt;Show Install Info...&lt;/b&gt;&lt;p&gt;Opens a dialog showing some information about the installation process.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="3875" />
-      <location filename="../UI/UserInterface.py" line="2324" />
-      <source>Report Bug</source>
-      <translation>Reportovat Bugy</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2325" />
-      <source>Report &amp;Bug...</source>
-      <translation>Reportovat &amp;Bugy...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2327" />
-      <source>Report a bug</source>
-      <translation>Reportovat bug</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2328" />
-      <source>&lt;b&gt;Report Bug...&lt;/b&gt;&lt;p&gt;Opens a dialog to report a bug.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Reportovat bug...&lt;/b&gt;&lt;p&gt;Otevře se dialog pro reportování bugu.&lt;/p&gt;</translation>
+      <source>&lt;b&gt;Check for Updates...&lt;/b&gt;&lt;p&gt;Checks the internet for updates of eric.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2318" />
+      <source>Show downloadable versions</source>
+      <translation>Zobrazit verze ke stažení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2319" />
+      <source>Show &amp;downloadable versions...</source>
+      <translation>Zobrazit verze pro &amp;download...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2322" />
+      <source>Show the versions available for download</source>
+      <translation>Zobrazit dostupné verze ke stažení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2323" />
+      <source>&lt;b&gt;Show downloadable versions...&lt;/b&gt;&lt;p&gt;Shows the eric versions available for download from the internet.&lt;/p&gt;</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2336" />
-      <source>Request Feature</source>
-      <translation>Požadavek na vlastnost</translation>
+      <location filename="../UI/UserInterface.py" line="2333" />
+      <source>Show Error Log</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2334" />
+      <source>Show Error &amp;Log...</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2337" />
+      <source>&lt;b&gt;Show Error Log...&lt;/b&gt;&lt;p&gt;Opens a dialog showing the most recent error log.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2345" />
+      <source>Show Install Info</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2346" />
+      <source>Show Install &amp;Info...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2348" />
+      <source>Show Installation Information</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2350" />
+      <source>&lt;b&gt;Show Install Info...&lt;/b&gt;&lt;p&gt;Opens a dialog showing some information about the installation process.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3911" />
+      <location filename="../UI/UserInterface.py" line="2359" />
+      <source>Report Bug</source>
+      <translation>Reportovat Bugy</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2360" />
+      <source>Report &amp;Bug...</source>
+      <translation>Reportovat &amp;Bugy...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2362" />
+      <source>Report a bug</source>
+      <translation>Reportovat bug</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2363" />
+      <source>&lt;b&gt;Report Bug...&lt;/b&gt;&lt;p&gt;Opens a dialog to report a bug.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Reportovat bug...&lt;/b&gt;&lt;p&gt;Otevře se dialog pro reportování bugu.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2371" />
+      <source>Request Feature</source>
+      <translation>Požadavek na vlastnost</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2372" />
       <source>Request &amp;Feature...</source>
       <translation>&amp;Požadavek na vlastnost...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2339" />
+      <location filename="../UI/UserInterface.py" line="2374" />
       <source>Send a feature request</source>
       <translation>Poslat požadavek na vlastnost</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2341" />
+      <location filename="../UI/UserInterface.py" line="2376" />
       <source>&lt;b&gt;Request Feature...&lt;/b&gt;&lt;p&gt;Opens a dialog to send a feature request.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Požadavek na vlastnost...&lt;/b&gt;&lt;p&gt;Otevře dialog pro odeslání požadavku.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3423" />
-      <location filename="../UI/UserInterface.py" line="3400" />
-      <location filename="../UI/UserInterface.py" line="2351" />
+      <location filename="../UI/UserInterface.py" line="3459" />
+      <location filename="../UI/UserInterface.py" line="3436" />
+      <location filename="../UI/UserInterface.py" line="2386" />
       <source>Unittest</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2353" />
+      <location filename="../UI/UserInterface.py" line="2388" />
       <source>&amp;Unittest...</source>
       <translation>&amp;Unittest...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2355" />
+      <location filename="../UI/UserInterface.py" line="2390" />
       <source>Start unittest dialog</source>
       <translation>Otevřít dialog unittestu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2356" />
+      <location filename="../UI/UserInterface.py" line="2391" />
       <source>&lt;b&gt;Unittest&lt;/b&gt;&lt;p&gt;Perform unit tests. The dialog gives you the ability to select and run a unittest suite.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Unittest&lt;/b&gt;&lt;p&gt;Provést unittesty. V dialogovém okně se nastaví který test se má provést.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2365" />
+      <location filename="../UI/UserInterface.py" line="2400" />
       <source>Unittest Restart</source>
       <translation>Restart unittestu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2367" />
+      <location filename="../UI/UserInterface.py" line="2402" />
       <source>&amp;Restart Unittest...</source>
       <translation>&amp;Restart unittestu...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2369" />
+      <location filename="../UI/UserInterface.py" line="2404" />
       <source>Restart last unittest</source>
       <translation>Restart posledního unittestu</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2370" />
+      <location filename="../UI/UserInterface.py" line="2405" />
       <source>&lt;b&gt;Restart Unittest&lt;/b&gt;&lt;p&gt;Restart the unittest performed last.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Restart unittestu&lt;/b&gt;&lt;p&gt;Restartuje se poslední provedený unittest.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2379" />
-      <source>Unittest Rerun Failed</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2381" />
-      <source>Rerun Failed Tests...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2383" />
-      <source>Rerun failed tests of the last run</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2385" />
-      <source>&lt;b&gt;Rerun Failed Tests&lt;/b&gt;&lt;p&gt;Rerun all tests that failed during the last unittest run.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2395" />
-      <source>Unittest Script</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2397" />
-      <source>Unittest &amp;Script...</source>
-      <translation>Unittest &amp;Script...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2399" />
-      <source>Run unittest with current script</source>
-      <translation>Spustit unittest s aktuálním skriptem</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2401" />
-      <source>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Run unittest with current script.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Spustit unittest s aktuálním skriptem.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2410" />
-      <source>Unittest Project</source>
-      <translation>Unittest Projekt</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2412" />
-      <source>Unittest &amp;Project...</source>
-      <translation>Unittest &amp;Projekt...</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2414" />
-      <source>Run unittest with current project</source>
-      <translation>Spustit unittest s aktuálním projektem</translation>
+      <source>Unittest Rerun Failed</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2416" />
+      <source>Rerun Failed Tests...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2418" />
+      <source>Rerun failed tests of the last run</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2420" />
+      <source>&lt;b&gt;Rerun Failed Tests&lt;/b&gt;&lt;p&gt;Rerun all tests that failed during the last unittest run.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2430" />
+      <source>Unittest Script</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2432" />
+      <source>Unittest &amp;Script...</source>
+      <translation>Unittest &amp;Script...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2434" />
+      <source>Run unittest with current script</source>
+      <translation>Spustit unittest s aktuálním skriptem</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2436" />
+      <source>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Run unittest with current script.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Unittest Script&lt;/b&gt;&lt;p&gt;Spustit unittest s aktuálním skriptem.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2445" />
+      <source>Unittest Project</source>
+      <translation>Unittest Projekt</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2447" />
+      <source>Unittest &amp;Project...</source>
+      <translation>Unittest &amp;Projekt...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2449" />
+      <source>Run unittest with current project</source>
+      <translation>Spustit unittest s aktuálním projektem</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2451" />
       <source>&lt;b&gt;Unittest Project&lt;/b&gt;&lt;p&gt;Run unittest with current project.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Unittest projekt&lt;/b&gt;&lt;p&gt;Spustit unittest s aktuálním projektem.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2437" />
+      <location filename="../UI/UserInterface.py" line="2472" />
       <source>Qt-Designer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2439" />
+      <location filename="../UI/UserInterface.py" line="2474" />
       <source>Qt-&amp;Designer...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2441" />
+      <location filename="../UI/UserInterface.py" line="2476" />
       <source>Start Qt-Designer</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2442" />
+      <location filename="../UI/UserInterface.py" line="2477" />
       <source>&lt;b&gt;Qt-Designer&lt;/b&gt;&lt;p&gt;Start Qt-Designer.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2463" />
+      <location filename="../UI/UserInterface.py" line="2498" />
       <source>Qt-Linguist</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2465" />
+      <location filename="../UI/UserInterface.py" line="2500" />
       <source>Qt-&amp;Linguist...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2467" />
+      <location filename="../UI/UserInterface.py" line="2502" />
       <source>Start Qt-Linguist</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2468" />
+      <location filename="../UI/UserInterface.py" line="2503" />
       <source>&lt;b&gt;Qt-Linguist&lt;/b&gt;&lt;p&gt;Start Qt-Linguist.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2478" />
+      <location filename="../UI/UserInterface.py" line="2513" />
       <source>UI Previewer</source>
       <translation />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2480" />
+      <location filename="../UI/UserInterface.py" line="2515" />
       <source>&amp;UI Previewer...</source>
       <translation>&amp;UI Previewer...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2482" />
+      <location filename="../UI/UserInterface.py" line="2517" />
       <source>Start the UI Previewer</source>
       <translation>Spustit UI Previewer</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2483" />
-      <source>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Start the UI Previewer.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Spustit UI Previewer.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2491" />
-      <source>Translations Previewer</source>
-      <translation>Náhled překladů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2493" />
-      <source>&amp;Translations Previewer...</source>
-      <translation>Náhled &amp;překladů...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2495" />
-      <source>Start the Translations Previewer</source>
-      <translation>Spustit Previewer překladů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2497" />
-      <source>&lt;b&gt;Translations Previewer&lt;/b&gt;&lt;p&gt;Start the Translations Previewer.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Previewer překladů&lt;/b&gt;&lt;p&gt;Spustit Previewer překladů.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2505" />
-      <source>Compare Files</source>
-      <translation>Porovnat soubory</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2507" />
-      <source>&amp;Compare Files...</source>
-      <translation>&amp;Porovnat soubory...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2522" />
-      <location filename="../UI/UserInterface.py" line="2509" />
-      <source>Compare two files</source>
-      <translation>Porovnat dva soubory</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2510" />
-      <source>&lt;b&gt;Compare Files&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Porovnat soubory&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání dvou souborů.&lt;/p&gt;</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2518" />
-      <source>Compare Files side by side</source>
-      <translation>Porovnat soubory stranu proti straně</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2520" />
-      <source>Compare &amp;Files side by side...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2523" />
-      <source>&lt;b&gt;Compare Files side by side&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files and show the result side by side.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Porovnat soubory stranu proti straně&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání souborů a zobrazení rozdílů strany proti straně.&lt;/p&gt;</translation>
+      <source>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Start the UI Previewer.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;UI Previewer&lt;/b&gt;&lt;p&gt;Spustit UI Previewer.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2526" />
+      <source>Translations Previewer</source>
+      <translation>Náhled překladů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2528" />
+      <source>&amp;Translations Previewer...</source>
+      <translation>Náhled &amp;překladů...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2530" />
+      <source>Start the Translations Previewer</source>
+      <translation>Spustit Previewer překladů</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2532" />
-      <source>SQL Browser</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2534" />
-      <source>SQL &amp;Browser...</source>
-      <translation>SQL &amp;Browser...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2536" />
-      <source>Browse a SQL database</source>
-      <translation>Procházet SQL databázi</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2537" />
-      <source>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Browse a SQL database.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Procházet SQL databázi.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2549" />
+      <source>&lt;b&gt;Translations Previewer&lt;/b&gt;&lt;p&gt;Start the Translations Previewer.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Previewer překladů&lt;/b&gt;&lt;p&gt;Spustit Previewer překladů.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2540" />
+      <source>Compare Files</source>
+      <translation>Porovnat soubory</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2542" />
+      <source>&amp;Compare Files...</source>
+      <translation>&amp;Porovnat soubory...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2557" />
+      <location filename="../UI/UserInterface.py" line="2544" />
+      <source>Compare two files</source>
+      <translation>Porovnat dva soubory</translation>
+    </message>
+    <message>
       <location filename="../UI/UserInterface.py" line="2545" />
-      <source>Mini Editor</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2547" />
-      <source>Mini &amp;Editor...</source>
-      <translation>Mini &amp;Editor...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2550" />
-      <source>&lt;b&gt;Mini Editor&lt;/b&gt;&lt;p&gt;Open a dialog with a simplified editor.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Mini editor&lt;/b&gt;&lt;p&gt;Otevře se okno s jednoduchým editorem&lt;/p&gt;</translation>
+      <source>&lt;b&gt;Compare Files&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Porovnat soubory&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání dvou souborů.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2553" />
+      <source>Compare Files side by side</source>
+      <translation>Porovnat soubory stranu proti straně</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2555" />
+      <source>Compare &amp;Files side by side...</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2558" />
-      <source>Hex Editor</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2560" />
-      <source>&amp;Hex Editor...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2562" />
-      <source>Start the eric Hex Editor</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2564" />
-      <source>&lt;b&gt;Hex Editor&lt;/b&gt;&lt;p&gt;Starts the eric Hex Editor for viewing or editing binary files.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2573" />
-      <source>eric Web Browser</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2575" />
-      <source>eric &amp;Web Browser...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2577" />
-      <source>Start the eric Web Browser</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2579" />
-      <source>&lt;b&gt;eric Web Browser&lt;/b&gt;&lt;p&gt;Browse the Internet with the eric Web Browser.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2587" />
-      <source>Icon Editor</source>
-      <translation>Editor ikon</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2589" />
-      <source>&amp;Icon Editor...</source>
-      <translation>Editor &amp;ikon...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2591" />
-      <source>Start the eric Icon Editor</source>
-      <translation type="unfinished" />
+      <source>&lt;b&gt;Compare Files side by side&lt;/b&gt;&lt;p&gt;Open a dialog to compare two files and show the result side by side.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Porovnat soubory stranu proti straně&lt;/b&gt;&lt;p&gt;Otevře dialog pro porovnání souborů a zobrazení rozdílů strany proti straně.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2567" />
+      <source>SQL Browser</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2569" />
+      <source>SQL &amp;Browser...</source>
+      <translation>SQL &amp;Browser...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2571" />
+      <source>Browse a SQL database</source>
+      <translation>Procházet SQL databázi</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2572" />
+      <source>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Browse a SQL database.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;SQL Browser&lt;/b&gt;&lt;p&gt;Procházet SQL databázi.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2584" />
+      <location filename="../UI/UserInterface.py" line="2580" />
+      <source>Mini Editor</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2582" />
+      <source>Mini &amp;Editor...</source>
+      <translation>Mini &amp;Editor...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2585" />
+      <source>&lt;b&gt;Mini Editor&lt;/b&gt;&lt;p&gt;Open a dialog with a simplified editor.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Mini editor&lt;/b&gt;&lt;p&gt;Otevře se okno s jednoduchým editorem&lt;/p&gt;</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2593" />
-      <source>&lt;b&gt;Icon Editor&lt;/b&gt;&lt;p&gt;Starts the eric Icon Editor for editing simple icons.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2601" />
-      <source>Snapshot</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2603" />
-      <source>&amp;Snapshot...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2605" />
-      <source>Take snapshots of a screen region</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2607" />
-      <source>&lt;b&gt;Snapshot&lt;/b&gt;&lt;p&gt;This opens a dialog to take snapshots of a screen region.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2616" />
-      <source>Preferences</source>
-      <translation>Nastavení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2618" />
-      <source>&amp;Preferences...</source>
-      <translation>Na&amp;stavení...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2620" />
-      <source>Set the prefered configuration</source>
-      <translation>Nastavení konfigurace</translation>
+      <source>Hex Editor</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2595" />
+      <source>&amp;Hex Editor...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2597" />
+      <source>Start the eric Hex Editor</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2599" />
+      <source>&lt;b&gt;Hex Editor&lt;/b&gt;&lt;p&gt;Starts the eric Hex Editor for viewing or editing binary files.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2608" />
+      <source>eric Web Browser</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2610" />
+      <source>eric &amp;Web Browser...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2612" />
+      <source>Start the eric Web Browser</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2614" />
+      <source>&lt;b&gt;eric Web Browser&lt;/b&gt;&lt;p&gt;Browse the Internet with the eric Web Browser.&lt;/p&gt;</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2622" />
-      <source>&lt;b&gt;Preferences&lt;/b&gt;&lt;p&gt;Set the configuration items of the application with your prefered values.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Nastavení&lt;/b&gt;&lt;p&gt;Upravit konfiguraci aplikace podle požadavků uživatele.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2632" />
-      <source>Export Preferences</source>
-      <translation>Exportovat předvolby</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2634" />
-      <source>E&amp;xport Preferences...</source>
-      <translation>E&amp;xportovat předvolby...</translation>
+      <source>Icon Editor</source>
+      <translation>Editor ikon</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2624" />
+      <source>&amp;Icon Editor...</source>
+      <translation>Editor &amp;ikon...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2626" />
+      <source>Start the eric Icon Editor</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2628" />
+      <source>&lt;b&gt;Icon Editor&lt;/b&gt;&lt;p&gt;Starts the eric Icon Editor for editing simple icons.&lt;/p&gt;</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2636" />
-      <source>Export the current configuration</source>
-      <translation>Export aktuální konfigurace</translation>
+      <source>Snapshot</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2638" />
+      <source>&amp;Snapshot...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2640" />
+      <source>Take snapshots of a screen region</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2642" />
+      <source>&lt;b&gt;Snapshot&lt;/b&gt;&lt;p&gt;This opens a dialog to take snapshots of a screen region.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2651" />
+      <source>Preferences</source>
+      <translation>Nastavení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2653" />
+      <source>&amp;Preferences...</source>
+      <translation>Na&amp;stavení...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2655" />
+      <source>Set the prefered configuration</source>
+      <translation>Nastavení konfigurace</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2657" />
+      <source>&lt;b&gt;Preferences&lt;/b&gt;&lt;p&gt;Set the configuration items of the application with your prefered values.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Nastavení&lt;/b&gt;&lt;p&gt;Upravit konfiguraci aplikace podle požadavků uživatele.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2667" />
+      <source>Export Preferences</source>
+      <translation>Exportovat předvolby</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2669" />
+      <source>E&amp;xport Preferences...</source>
+      <translation>E&amp;xportovat předvolby...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2671" />
+      <source>Export the current configuration</source>
+      <translation>Export aktuální konfigurace</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2673" />
       <source>&lt;b&gt;Export Preferences&lt;/b&gt;&lt;p&gt;Export the current configuration to a file.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Export předvoleb&lt;/b&gt;&lt;p&gt;Export aktuální konfigurace do souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2646" />
+      <location filename="../UI/UserInterface.py" line="2681" />
       <source>Import Preferences</source>
       <translation>Import předvoleb</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2648" />
+      <location filename="../UI/UserInterface.py" line="2683" />
       <source>I&amp;mport Preferences...</source>
       <translation>I&amp;mport předvoleb...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2650" />
+      <location filename="../UI/UserInterface.py" line="2685" />
       <source>Import a previously exported configuration</source>
       <translation>Import dříve exportované konfigurace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2652" />
+      <location filename="../UI/UserInterface.py" line="2687" />
       <source>&lt;b&gt;Import Preferences&lt;/b&gt;&lt;p&gt;Import a previously exported configuration.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Import předvoleb&lt;/b&gt;&lt;p&gt;Import dříve exportované konfigurace.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2660" />
-      <source>Reload APIs</source>
-      <translation>Obnovit API</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2661" />
-      <source>Reload &amp;APIs</source>
-      <translation>Obnovit &amp;API</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2663" />
-      <source>Reload the API information</source>
-      <translation>Obnovit API nastavení</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2665" />
-      <source>&lt;b&gt;Reload APIs&lt;/b&gt;&lt;p&gt;Reload the API information.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Obnovit API&lt;/b&gt;&lt;p&gt;Obnovit API nastavení.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2677" />
-      <location filename="../UI/UserInterface.py" line="2673" />
-      <source>Show external tools</source>
-      <translation>Zobrazit externí nástroje</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2675" />
-      <source>Show external &amp;tools</source>
-      <translation>Zobrazit externí nás&amp;troje</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2679" />
-      <source>&lt;b&gt;Show external tools&lt;/b&gt;&lt;p&gt;Opens a dialog to show the path and versions of all extenal tools used by eric.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2689" />
-      <source>View Profiles</source>
-      <translation>Profily pohledů</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2691" />
-      <source>&amp;View Profiles...</source>
-      <translation>Profily &amp;pohledů...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2693" />
-      <source>Configure view profiles</source>
-      <translation>Konfigurace profilů pohledů</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2695" />
-      <source>&lt;b&gt;View Profiles&lt;/b&gt;&lt;p&gt;Configure the view profiles. With this dialog you may set the visibility of the various windows for the predetermined view profiles.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Profily pohledů&lt;/b&gt;&lt;p&gt;Konfigurace profilu pohledů. V tomto dialogu můžete nastavit zobrazování různých typů pohledů - editačních oken.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2706" />
-      <source>Toolbars</source>
-      <translation>Lišty nástrojů</translation>
-    </message>
-    <message>
+      <source>Reload APIs</source>
+      <translation>Obnovit API</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2696" />
+      <source>Reload &amp;APIs</source>
+      <translation>Obnovit &amp;API</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2698" />
+      <source>Reload the API information</source>
+      <translation>Obnovit API nastavení</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2700" />
+      <source>&lt;b&gt;Reload APIs&lt;/b&gt;&lt;p&gt;Reload the API information.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Obnovit API&lt;/b&gt;&lt;p&gt;Obnovit API nastavení.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2712" />
       <location filename="../UI/UserInterface.py" line="2708" />
-      <source>Tool&amp;bars...</source>
-      <translation>&amp;Lišty nástrojů...</translation>
+      <source>Show external tools</source>
+      <translation>Zobrazit externí nástroje</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2710" />
+      <source>Show external &amp;tools</source>
+      <translation>Zobrazit externí nás&amp;troje</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2714" />
+      <source>&lt;b&gt;Show external tools&lt;/b&gt;&lt;p&gt;Opens a dialog to show the path and versions of all extenal tools used by eric.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2724" />
+      <source>View Profiles</source>
+      <translation>Profily pohledů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2726" />
+      <source>&amp;View Profiles...</source>
+      <translation>Profily &amp;pohledů...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2728" />
+      <source>Configure view profiles</source>
+      <translation>Konfigurace profilů pohledů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2730" />
+      <source>&lt;b&gt;View Profiles&lt;/b&gt;&lt;p&gt;Configure the view profiles. With this dialog you may set the visibility of the various windows for the predetermined view profiles.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Profily pohledů&lt;/b&gt;&lt;p&gt;Konfigurace profilu pohledů. V tomto dialogu můžete nastavit zobrazování různých typů pohledů - editačních oken.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2741" />
+      <source>Toolbars</source>
+      <translation>Lišty nástrojů</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2743" />
+      <source>Tool&amp;bars...</source>
+      <translation>&amp;Lišty nástrojů...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2745" />
       <source>Configure toolbars</source>
       <translation>Konfigurace lišt nástrojů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2711" />
+      <location filename="../UI/UserInterface.py" line="2746" />
       <source>&lt;b&gt;Toolbars&lt;/b&gt;&lt;p&gt;Configure the toolbars. With this dialog you may change the actions shown on the various toolbars and define your own toolbars.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Listy nástrojů&lt;/b&gt;&lt;p&gt;Konfigurace lišt nástrojů. S tímto dialogem můžete změnit akce zobrazené v různých nástrojových lištách nebo definovat své vlastní nástrojové lišty.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2721" />
-      <source>Keyboard Shortcuts</source>
-      <translation>Klávesové zkratky</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2723" />
-      <source>Keyboard &amp;Shortcuts...</source>
-      <translation>Klávesové &amp;zkratky...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2725" />
-      <source>Set the keyboard shortcuts</source>
-      <translation>Nastavení klávesových zkratek</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2727" />
-      <source>&lt;b&gt;Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Set the keyboard shortcuts of the application with your prefered values.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Klávesové zkratky&lt;/b&gt;&lt;p&gt;Nastavení klávesových zkratek aplikace podle zvyklostí uživatele.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="6403" />
-      <location filename="../UI/UserInterface.py" line="6385" />
-      <location filename="../UI/UserInterface.py" line="2736" />
-      <source>Export Keyboard Shortcuts</source>
-      <translation>Exportovat klávesové zkratky</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2738" />
-      <source>&amp;Export Keyboard Shortcuts...</source>
-      <translation>&amp;Exportovat klávesové zkratky...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2740" />
-      <source>Export the keyboard shortcuts</source>
-      <translation>Export klávesových zkratek</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2742" />
-      <source>&lt;b&gt;Export Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Export the keyboard shortcuts of the application.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Export klávesových zkratek&lt;/b&gt;&lt;p&gt;Exportují se klávesové zkratky z aplikace.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="6420" />
-      <location filename="../UI/UserInterface.py" line="2750" />
-      <source>Import Keyboard Shortcuts</source>
-      <translation>Import klávesových zkratek</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2752" />
-      <source>&amp;Import Keyboard Shortcuts...</source>
-      <translation>&amp;Import klávesových zkratek...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2754" />
-      <source>Import the keyboard shortcuts</source>
-      <translation>Import klávesových zkratek</translation>
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2756" />
-      <source>&lt;b&gt;Import Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Import the keyboard shortcuts of the application.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Import klávesových zkratek&lt;/b&gt;&lt;p&gt;Do aplikace se importují klávesové zkratky.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2765" />
-      <source>Manage SSL Certificates</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2767" />
-      <source>Manage SSL Certificates...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2769" />
-      <source>Manage the saved SSL certificates</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
+      <source>Keyboard Shortcuts</source>
+      <translation>Klávesové zkratky</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2758" />
+      <source>Keyboard &amp;Shortcuts...</source>
+      <translation>Klávesové &amp;zkratky...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2760" />
+      <source>Set the keyboard shortcuts</source>
+      <translation>Nastavení klávesových zkratek</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2762" />
+      <source>&lt;b&gt;Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Set the keyboard shortcuts of the application with your prefered values.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Klávesové zkratky&lt;/b&gt;&lt;p&gt;Nastavení klávesových zkratek aplikace podle zvyklostí uživatele.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="6439" />
+      <location filename="../UI/UserInterface.py" line="6421" />
       <location filename="../UI/UserInterface.py" line="2771" />
-      <source>&lt;b&gt;Manage SSL Certificates...&lt;/b&gt;&lt;p&gt;Opens a dialog to manage the saved SSL certificates.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2781" />
-      <source>Edit Message Filters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2783" />
-      <source>Edit Message Filters...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
+      <source>Export Keyboard Shortcuts</source>
+      <translation>Exportovat klávesové zkratky</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2773" />
+      <source>&amp;Export Keyboard Shortcuts...</source>
+      <translation>&amp;Exportovat klávesové zkratky...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2775" />
+      <source>Export the keyboard shortcuts</source>
+      <translation>Export klávesových zkratek</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2777" />
+      <source>&lt;b&gt;Export Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Export the keyboard shortcuts of the application.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Export klávesových zkratek&lt;/b&gt;&lt;p&gt;Exportují se klávesové zkratky z aplikace.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="6456" />
       <location filename="../UI/UserInterface.py" line="2785" />
-      <source>Edit the message filters used to suppress unwanted messages</source>
-      <translation type="unfinished" />
+      <source>Import Keyboard Shortcuts</source>
+      <translation>Import klávesových zkratek</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2787" />
-      <source>&lt;b&gt;Edit Message Filters&lt;/b&gt;&lt;p&gt;Opens a dialog to edit the message filters used to suppress unwanted messages been shown in an error window.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2803" />
+      <source>&amp;Import Keyboard Shortcuts...</source>
+      <translation>&amp;Import klávesových zkratek...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2789" />
+      <source>Import the keyboard shortcuts</source>
+      <translation>Import klávesových zkratek</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2791" />
+      <source>&lt;b&gt;Import Keyboard Shortcuts&lt;/b&gt;&lt;p&gt;Import the keyboard shortcuts of the application.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Import klávesových zkratek&lt;/b&gt;&lt;p&gt;Do aplikace se importují klávesové zkratky.&lt;/p&gt;</translation>
+    </message>
+    <message>
       <location filename="../UI/UserInterface.py" line="2800" />
-      <location filename="../UI/UserInterface.py" line="2798" />
-      <source>Clear private data</source>
-      <translation type="unfinished">Smazat soukromá data</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2805" />
-      <source>&lt;b&gt;Clear private data&lt;/b&gt;&lt;p&gt;Clears the private data like the various list of recently opened files, projects or multi projects.&lt;/p&gt;</source>
+      <source>Manage SSL Certificates</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2802" />
+      <source>Manage SSL Certificates...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2804" />
+      <source>Manage the saved SSL certificates</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2806" />
+      <source>&lt;b&gt;Manage SSL Certificates...&lt;/b&gt;&lt;p&gt;Opens a dialog to manage the saved SSL certificates.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2816" />
-      <location filename="../UI/UserInterface.py" line="2815" />
+      <source>Edit Message Filters</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2818" />
+      <source>Edit Message Filters...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2820" />
+      <source>Edit the message filters used to suppress unwanted messages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2822" />
+      <source>&lt;b&gt;Edit Message Filters&lt;/b&gt;&lt;p&gt;Opens a dialog to edit the message filters used to suppress unwanted messages been shown in an error window.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2838" />
+      <location filename="../UI/UserInterface.py" line="2835" />
+      <location filename="../UI/UserInterface.py" line="2833" />
+      <source>Clear private data</source>
+      <translation type="unfinished">Smazat soukromá data</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2840" />
+      <source>&lt;b&gt;Clear private data&lt;/b&gt;&lt;p&gt;Clears the private data like the various list of recently opened files, projects or multi projects.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2851" />
+      <location filename="../UI/UserInterface.py" line="2850" />
       <source>Activate current editor</source>
       <translation>Aktivovat aktuální editor</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2817" />
-      <source>Alt+Shift+E</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2826" />
-      <location filename="../UI/UserInterface.py" line="2825" />
-      <source>Show next</source>
-      <translation>Zobrazit další</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2827" />
-      <source>Ctrl+Alt+Tab</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2835" />
-      <location filename="../UI/UserInterface.py" line="2834" />
-      <source>Show previous</source>
-      <translation>Zobrazit předchozí</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2836" />
-      <source>Shift+Ctrl+Alt+Tab</source>
-      <translation />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2844" />
-      <location filename="../UI/UserInterface.py" line="2843" />
-      <source>Switch between tabs</source>
-      <translation>Přepnout mezi taby</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2845" />
-      <source>Ctrl+1</source>
-      <translation />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2852" />
-      <source>Plugin Infos</source>
-      <translation>Plugin Infa</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2854" />
-      <source>&amp;Plugin Infos...</source>
-      <translation>&amp;Plugin Infa...</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2855" />
-      <source>Show Plugin Infos</source>
-      <translation>Zobrazit Plugin infa</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2856" />
-      <source>&lt;b&gt;Plugin Infos...&lt;/b&gt;&lt;p&gt;This opens a dialog, that show some information about loaded plugins.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Plugin Infa&lt;/b&gt;&lt;p&gt;Otevře dialog, který zobrazí informace o načtených pluginech.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2869" />
-      <location filename="../UI/UserInterface.py" line="2865" />
-      <source>Install Plugins</source>
-      <translation>Instalovat pluginy</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2867" />
-      <source>&amp;Install Plugins...</source>
-      <translation>&amp;Instalovat pluginy...</translation>
+      <source>Alt+Shift+E</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2861" />
+      <location filename="../UI/UserInterface.py" line="2860" />
+      <source>Show next</source>
+      <translation>Zobrazit další</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2862" />
+      <source>Ctrl+Alt+Tab</source>
+      <translation />
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2870" />
-      <source>&lt;b&gt;Install Plugins...&lt;/b&gt;&lt;p&gt;This opens a dialog to install or update plugins.&lt;/p&gt;</source>
-      <translation>&lt;b&gt;Instalovat pluginy...&lt;/b&gt;&lt;p&gt;Otevře dialog pro instalaci nebo aktualizaci pluginů.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2882" />
+      <location filename="../UI/UserInterface.py" line="2869" />
+      <source>Show previous</source>
+      <translation>Zobrazit předchozí</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2871" />
+      <source>Shift+Ctrl+Alt+Tab</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2879" />
       <location filename="../UI/UserInterface.py" line="2878" />
-      <source>Uninstall Plugin</source>
-      <translation>Odinstalovat plugin</translation>
+      <source>Switch between tabs</source>
+      <translation>Přepnout mezi taby</translation>
     </message>
     <message>
       <location filename="../UI/UserInterface.py" line="2880" />
+      <source>Ctrl+1</source>
+      <translation />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2887" />
+      <source>Plugin Infos</source>
+      <translation>Plugin Infa</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2889" />
+      <source>&amp;Plugin Infos...</source>
+      <translation>&amp;Plugin Infa...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2890" />
+      <source>Show Plugin Infos</source>
+      <translation>Zobrazit Plugin infa</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2891" />
+      <source>&lt;b&gt;Plugin Infos...&lt;/b&gt;&lt;p&gt;This opens a dialog, that show some information about loaded plugins.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Plugin Infa&lt;/b&gt;&lt;p&gt;Otevře dialog, který zobrazí informace o načtených pluginech.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2904" />
+      <location filename="../UI/UserInterface.py" line="2900" />
+      <source>Install Plugins</source>
+      <translation>Instalovat pluginy</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2902" />
+      <source>&amp;Install Plugins...</source>
+      <translation>&amp;Instalovat pluginy...</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2905" />
+      <source>&lt;b&gt;Install Plugins...&lt;/b&gt;&lt;p&gt;This opens a dialog to install or update plugins.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Instalovat pluginy...&lt;/b&gt;&lt;p&gt;Otevře dialog pro instalaci nebo aktualizaci pluginů.&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2917" />
+      <location filename="../UI/UserInterface.py" line="2913" />
+      <source>Uninstall Plugin</source>
+      <translation>Odinstalovat plugin</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="2915" />
       <source>&amp;Uninstall Plugin...</source>
       <translation>&amp;Odinstalovat plugin...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2883" />
+      <location filename="../UI/UserInterface.py" line="2918" />
       <source>&lt;b&gt;Uninstall Plugin...&lt;/b&gt;&lt;p&gt;This opens a dialog to uninstall a plugin.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Odinstalovat plugin...&lt;/b&gt;&lt;p&gt;Otevře dialog pro odinstalaci pluginu.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2893" />
+      <location filename="../UI/UserInterface.py" line="2928" />
       <source>Plugin &amp;Repository...</source>
       <translation>&amp;Repozitář pluginů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2895" />
+      <location filename="../UI/UserInterface.py" line="2930" />
       <source>Show Plugins available for download</source>
       <translation>Zobrazit pluginy dostupné ke stažení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2897" />
+      <location filename="../UI/UserInterface.py" line="2932" />
       <source>&lt;b&gt;Plugin Repository...&lt;/b&gt;&lt;p&gt;This opens a dialog, that shows a list of plugins available on the Internet.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Repozitář pluginů...&lt;/b&gt;&lt;p&gt;Otevře se dialog, který zobrazí seznam pluginů dostupných ke stažení přes internet.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2923" />
-      <location filename="../UI/UserInterface.py" line="2922" />
+      <location filename="../UI/UserInterface.py" line="2958" />
+      <location filename="../UI/UserInterface.py" line="2957" />
       <source>Qt5 Documentation</source>
       <translation type="unfinished">Qt4 dokumentace {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2925" />
+      <location filename="../UI/UserInterface.py" line="2960" />
       <source>Open Qt5 Documentation</source>
       <translation type="unfinished">Otevřít Qt4 dokumentaci {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2926" />
+      <location filename="../UI/UserInterface.py" line="2961" />
       <source>&lt;b&gt;Qt5 Documentation&lt;/b&gt;&lt;p&gt;Display the Qt5 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2938" />
-      <location filename="../UI/UserInterface.py" line="2937" />
+      <location filename="../UI/UserInterface.py" line="2973" />
+      <location filename="../UI/UserInterface.py" line="2972" />
       <source>Qt6 Documentation</source>
       <translation type="unfinished">Qt4 dokumentace {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2940" />
+      <location filename="../UI/UserInterface.py" line="2975" />
       <source>Open Qt6 Documentation</source>
       <translation type="unfinished">Otevřít Qt4 dokumentaci {6 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2941" />
+      <location filename="../UI/UserInterface.py" line="2976" />
       <source>&lt;b&gt;Qt6 Documentation&lt;/b&gt;&lt;p&gt;Display the Qt6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2953" />
-      <location filename="../UI/UserInterface.py" line="2952" />
+      <location filename="../UI/UserInterface.py" line="2988" />
+      <location filename="../UI/UserInterface.py" line="2987" />
       <source>PyQt5 Documentation</source>
       <translation type="unfinished">PyQt4 dokumentace {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2955" />
+      <location filename="../UI/UserInterface.py" line="2990" />
       <source>Open PyQt5 Documentation</source>
       <translation type="unfinished">Otevřít PyQt4 dokumentaci {5 ?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2957" />
-      <source>&lt;b&gt;PyQt5 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt5 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2970" />
-      <location filename="../UI/UserInterface.py" line="2969" />
-      <source>PyQt6 Documentation</source>
-      <translation type="unfinished">PyQt4 dokumentace {6 ?}</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2972" />
-      <source>Open PyQt6 Documentation</source>
-      <translation type="unfinished">Otevřít PyQt4 dokumentaci {6 ?}</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="2974" />
-      <source>&lt;b&gt;PyQt6 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../UI/UserInterface.py" line="2992" />
-      <location filename="../UI/UserInterface.py" line="2991" />
+      <source>&lt;b&gt;PyQt5 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt5 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3005" />
+      <location filename="../UI/UserInterface.py" line="3004" />
+      <source>PyQt6 Documentation</source>
+      <translation type="unfinished">PyQt4 dokumentace {6 ?}</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3007" />
+      <source>Open PyQt6 Documentation</source>
+      <translation type="unfinished">Otevřít PyQt4 dokumentaci {6 ?}</translation>
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3009" />
+      <source>&lt;b&gt;PyQt6 Documentation&lt;/b&gt;&lt;p&gt;Display the PyQt6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../UI/UserInterface.py" line="3027" />
+      <location filename="../UI/UserInterface.py" line="3026" />
       <source>Python 3 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2994" />
+      <location filename="../UI/UserInterface.py" line="3029" />
       <source>Open Python 3 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="2996" />
+      <location filename="../UI/UserInterface.py" line="3031" />
       <source>&lt;b&gt;Python 3 Documentation&lt;/b&gt;&lt;p&gt;Display the Python 3 documentation. If no documentation directory is configured, the location of the Python 3 documentation is assumed to be the doc directory underneath the location of the Python 3 executable on Windows and &lt;i&gt;/usr/share/doc/packages/python/html&lt;/i&gt; on Unix. Set PYTHON3DOCDIR in your environment to override this.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3014" />
-      <location filename="../UI/UserInterface.py" line="3013" />
+      <location filename="../UI/UserInterface.py" line="3049" />
+      <location filename="../UI/UserInterface.py" line="3048" />
       <source>Eric API Documentation</source>
       <translation>Eric API dokumentace</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3016" />
+      <location filename="../UI/UserInterface.py" line="3051" />
       <source>Open Eric API Documentation</source>
       <translation>Otevřít Eric API dokumentaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3018" />
+      <location filename="../UI/UserInterface.py" line="3053" />
       <source>&lt;b&gt;Eric API Documentation&lt;/b&gt;&lt;p&gt;Display the Eric API documentation. The location for the documentation is the Documentation/Source subdirectory of the eric installation directory.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3035" />
-      <location filename="../UI/UserInterface.py" line="3034" />
+      <location filename="../UI/UserInterface.py" line="3070" />
+      <location filename="../UI/UserInterface.py" line="3069" />
       <source>PySide2 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3037" />
+      <location filename="../UI/UserInterface.py" line="3072" />
       <source>Open PySide2 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3039" />
+      <location filename="../UI/UserInterface.py" line="3074" />
       <source>&lt;b&gt;PySide2 Documentation&lt;/b&gt;&lt;p&gt;Display the PySide2 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3055" />
-      <location filename="../UI/UserInterface.py" line="3054" />
+      <location filename="../UI/UserInterface.py" line="3090" />
+      <location filename="../UI/UserInterface.py" line="3089" />
       <source>PySide6 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3057" />
+      <location filename="../UI/UserInterface.py" line="3092" />
       <source>Open PySide6 Documentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3059" />
+      <location filename="../UI/UserInterface.py" line="3094" />
       <source>&lt;b&gt;PySide6 Documentation&lt;/b&gt;&lt;p&gt;Display the PySide6 Documentation. Dependent upon your settings, this will either show the help in Eric's internal help viewer/web browser, or execute a web browser or Qt Assistant. &lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3161" />
+      <location filename="../UI/UserInterface.py" line="3196" />
       <source>E&amp;xtras</source>
       <translation>E&amp;xtra funkce</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3171" />
+      <location filename="../UI/UserInterface.py" line="3206" />
       <source>Wi&amp;zards</source>
       <translation>&amp;Průvodci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3190" />
+      <location filename="../UI/UserInterface.py" line="3225" />
       <source>P&amp;lugins</source>
       <translation>P&amp;luginy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3200" />
+      <location filename="../UI/UserInterface.py" line="3235" />
       <source>Configure...</source>
       <translation>Konfigurovat...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3209" />
+      <location filename="../UI/UserInterface.py" line="3244" />
       <source>&amp;Unittest</source>
       <translation>&amp;Unittest</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3226" />
+      <location filename="../UI/UserInterface.py" line="3261" />
       <source>Select Tool Group</source>
       <translation>Vybrat skupinu nástrojů</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3237" />
+      <location filename="../UI/UserInterface.py" line="3272" />
       <source>Se&amp;ttings</source>
       <translation>Nas&amp;tavení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3267" />
+      <location filename="../UI/UserInterface.py" line="3302" />
       <source>&amp;Window</source>
       <translation>O&amp;kno</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3276" />
+      <location filename="../UI/UserInterface.py" line="3311" />
       <source>&amp;Windows</source>
       <translation type="unfinished">&amp;Windows</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3281" />
+      <location filename="../UI/UserInterface.py" line="3316" />
       <source>Central Park</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3285" />
+      <location filename="../UI/UserInterface.py" line="3320" />
       <source>Left Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3298" />
+      <location filename="../UI/UserInterface.py" line="3333" />
       <source>Bottom Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3307" />
+      <location filename="../UI/UserInterface.py" line="3342" />
       <source>Right Side</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3329" />
+      <location filename="../UI/UserInterface.py" line="3365" />
       <source>Plug-ins</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3336" />
+      <location filename="../UI/UserInterface.py" line="3372" />
       <source>&amp;Toolbars</source>
       <translation>&amp;Toolbary</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3349" />
+      <location filename="../UI/UserInterface.py" line="3385" />
       <source>&amp;Help</source>
       <translation>&amp;Nápověda</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3422" />
-      <location filename="../UI/UserInterface.py" line="3399" />
+      <location filename="../UI/UserInterface.py" line="3458" />
+      <location filename="../UI/UserInterface.py" line="3435" />
       <source>Tools</source>
       <translation>Nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3424" />
-      <location filename="../UI/UserInterface.py" line="3403" />
+      <location filename="../UI/UserInterface.py" line="3460" />
+      <location filename="../UI/UserInterface.py" line="3439" />
       <source>Settings</source>
       <translation>Nastavení</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5278" />
-      <location filename="../UI/UserInterface.py" line="3425" />
-      <location filename="../UI/UserInterface.py" line="3404" />
+      <location filename="../UI/UserInterface.py" line="5314" />
+      <location filename="../UI/UserInterface.py" line="3461" />
+      <location filename="../UI/UserInterface.py" line="3440" />
       <source>Help</source>
       <translation>Nápověda</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3426" />
-      <location filename="../UI/UserInterface.py" line="3405" />
+      <location filename="../UI/UserInterface.py" line="3462" />
+      <location filename="../UI/UserInterface.py" line="3441" />
       <source>Profiles</source>
       <translation>Profily</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3427" />
-      <location filename="../UI/UserInterface.py" line="3406" />
+      <location filename="../UI/UserInterface.py" line="3463" />
+      <location filename="../UI/UserInterface.py" line="3442" />
       <source>Plugins</source>
       <translation>Pluginy</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3589" />
+      <location filename="../UI/UserInterface.py" line="3625" />
       <source>&lt;p&gt;This part of the status bar displays the current editors language.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje aktuální jazyk editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3596" />
+      <location filename="../UI/UserInterface.py" line="3632" />
       <source>&lt;p&gt;This part of the status bar displays the current editors encoding.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje aktuální kódování editorů.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3603" />
+      <location filename="../UI/UserInterface.py" line="3639" />
       <source>&lt;p&gt;This part of the status bar displays the current editors eol setting.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje eol nastavení v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3610" />
+      <location filename="../UI/UserInterface.py" line="3646" />
       <source>&lt;p&gt;This part of the status bar displays an indication of the current editors files writability.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje indikátor práva zápisu editoru do souboru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3617" />
+      <location filename="../UI/UserInterface.py" line="3653" />
       <source>&lt;p&gt;This part of the status bar displays the line number of the current editor.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje číslo řádku v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3624" />
+      <location filename="../UI/UserInterface.py" line="3660" />
       <source>&lt;p&gt;This part of the status bar displays the cursor position of the current editor.&lt;/p&gt;</source>
       <translation>&lt;p&gt;Tato část status baru zobrazuje pozici kurzoru v aktuálním editoru.&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3635" />
+      <location filename="../UI/UserInterface.py" line="3671" />
       <source>&lt;p&gt;This part of the status bar allows zooming the current editor or shell.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3700" />
-      <location filename="../UI/UserInterface.py" line="3660" />
+      <location filename="../UI/UserInterface.py" line="3736" />
+      <location filename="../UI/UserInterface.py" line="3696" />
       <source>External Tools/{0}</source>
       <translation>Externí nástroje/{0}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3806" />
+      <location filename="../UI/UserInterface.py" line="3842" />
       <source>&lt;h2&gt;Version Numbers&lt;/h2&gt;&lt;table&gt;</source>
       <translation type="unfinished">&lt;h3&gt;Čísla verzí&lt;/h3&gt;&lt;table&gt; {2&gt;?} {2&gt;?}</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="7412" />
-      <location filename="../UI/UserInterface.py" line="3842" />
+      <location filename="../UI/UserInterface.py" line="7452" />
+      <location filename="../UI/UserInterface.py" line="3878" />
       <source>&lt;/table&gt;</source>
       <translation>&lt;/table&gt;</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="3876" />
+      <location filename="../UI/UserInterface.py" line="3912" />
       <source>Email address or mail server address is empty. Please configure your Email settings in the Preferences Dialog.</source>
       <translation>Emailová adresa nebo mail server adresa jsou prázdné. Prosím, nastavte váš email v dialogovém okně Nastavení.</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4187" />
+      <location filename="../UI/UserInterface.py" line="4223" />
       <source>Restart application</source>
       <translation>Restartovat aplikaci</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4188" />
+      <location filename="../UI/UserInterface.py" line="4224" />
       <source>The application needs to be restarted. Do it now?</source>
       <translation>Aplikace potřebuje restartovat. Má se provést nyní?</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4222" />
+      <location filename="../UI/UserInterface.py" line="4258" />
       <source>&amp;Builtin Tools</source>
       <translation>&amp;Vestavěné nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4239" />
+      <location filename="../UI/UserInterface.py" line="4275" />
       <source>&amp;Plugin Tools</source>
       <translation>&amp;Plugin nástroje</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4242" />
+      <location filename="../UI/UserInterface.py" line="4278" />
       <source>&amp;User Tools</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4268" />
+      <location filename="../UI/UserInterface.py" line="4304" />
       <source>Configure Tool Groups ...</source>
       <translation>Konfigurace Skupin nástrojů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4272" />
+      <location filename="../UI/UserInterface.py" line="4308" />
       <source>Configure current Tool Group ...</source>
       <translation>Konfigurace aktuální skupiny nástrojů...</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4313" />
-      <location filename="../UI/UserInterface.py" line="4293" />
+      <location filename="../UI/UserInterface.py" line="4349" />
+      <location filename="../UI/UserInterface.py" line="4329" />
       <source>No User Tools Configured</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4386" />
+      <location filename="../UI/UserInterface.py" line="4422" />
       <source>&amp;Show all</source>
       <translation>&amp;Zobrazit vše</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="4388" />
+      <location filename="../UI/UserInterface.py" line="4424" />
       <source>&amp;Hide all</source>
       <translation>&amp;Skrýt vše</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5406" />
-      <location filename="../UI/UserInterface.py" line="5396" />
-      <location filename="../UI/UserInterface.py" line="5349" />
-      <location filename="../UI/UserInterface.py" line="5340" />
-      <location filename="../UI/UserInterface.py" line="5179" />
-      <location filename="../UI/UserInterface.py" line="5170" />
-      <location filename="../UI/UserInterface.py" line="5109" />
-      <location filename="../UI/UserInterface.py" line="5100" />
+      <location filename="../UI/UserInterface.py" line="5442" />
+      <location filename="../UI/UserInterface.py" line="5432" />
+      <location filename="../UI/UserInterface.py" line="5385" />
+      <location filename="../UI/UserInterface.py" line="5376" />
+      <location filename="../UI/UserInterface.py" line="5215" />
+      <location filename="../UI/UserInterface.py" line="5206" />
+      <location filename="../UI/UserInterface.py" line="5145" />
+      <location filename="../UI/UserInterface.py" line="5136" />
       <source>Problem</source>
       <translation>Problém</translation>
     </message>
     <message>
-      <location filename="../UI/UserInterface.py" line="5407" />
-      <location filename="../UI/UserInterface.py" line="5397" />
-      <location filename="../UI/UserInterface.py" line="5350" />
-      <location filename="../UI/UserInterface.py" line="5341" />
-      <location filename="../UI/UserInterface.py" line="5180" />
-      <location filename="../UI/UserInterface.py" line="5171" />
-      <location filename="../UI/UserInterface.py" line="5110" />
-      <location filename="../UI/UserInterface.py" line="5101" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; does not exist or is zero length.&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Soubor &lt;b&gt;{0}&lt;/b&gt; neexistuje nebo má nulovou délku.&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../UI/UserInterface.py" line="5614" />
-      <location filename="../UI/UserInterface.py" line="5527" />
-      <location filename="../UI/UserInterface.py" line="5442" />
-      <location filename="../UI/UserInterface.py" line="5419" />
-      <location filename="../UI/UserInterface.py" line="5362" />
-      <location filename="../UI/UserInterface.py" line="5312" />
-      <location filename="../UI/UserInterface.py" line="5292" />
-      <location filename="../UI/UserInterface.py" line="5254" />
-      <location filename="../UI/UserInterface.py" line="5245" />
-      <location filename="../UI/UserInterface.py" line="5210" />
-      <location filename="../UI/UserInterface.py" line="5201" />
-      <location filename="../UI/UserInterface.py" line="5140" />
-      <location filename="../UI/UserInterface.py" line="5131" />
-      <source>Process Generation Error</source>
-      <translation>Chyba v procesu generování</translation>
-    &l