diff -r ea9ba9277670 -r c0a3a6e40815 eric7/UI/FindFileWidget.py --- a/eric7/UI/FindFileWidget.py Sat Sep 25 18:07:20 2021 +0200 +++ b/eric7/UI/FindFileWidget.py Sat Sep 25 18:08:10 2021 +0200 @@ -10,8 +10,8 @@ import os import re -from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QPoint -from PyQt6.QtGui import QCursor +from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QPoint, QUrl +from PyQt6.QtGui import QCursor, QDesktopServices, QImageReader from PyQt6.QtWidgets import ( QWidget, QApplication, QMenu, QTreeWidgetItem, QComboBox ) @@ -42,10 +42,19 @@ @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 + @signal linguistFile(str) emitted to open a Qt-Linguist (*.ts) file + @signal trpreview([str]) emitted to preview Qt-Linguist (*.qm) files + @signal pixmapFile(str) emitted to open a pixmap file + @signal svgFile(str) emitted to open a SVG file + @signal umlFile(str) emitted to open an eric UML file """ - # TODO: add more signals sourceFile = pyqtSignal(str, int, str, int, int) designerFile = pyqtSignal(str) + linguistFile = pyqtSignal(str) + trpreview = pyqtSignal(list) + pixmapFile = pyqtSignal(str) + svgFile = pyqtSignal(str) + umlFile = pyqtSignal(str) lineRole = Qt.ItemDataRole.UserRole + 1 startRole = Qt.ItemDataRole.UserRole + 2 @@ -87,7 +96,7 @@ self.findProgressLabel.setMaximumWidth(550) self.searchHistory = Preferences.toList( - Preferences.Prefs.settings.value( + Preferences.getSettings().value( "FindFileWidget/SearchHistory")) self.findtextCombo.lineEdit().setClearButtonEnabled(True) self.findtextCombo.lineEdit().returnPressed.connect(self.__doSearch) @@ -96,7 +105,7 @@ self.findtextCombo.setEditText("") self.replaceHistory = Preferences.toList( - Preferences.Prefs.settings.value( + Preferences.getSettings().value( "FindFileWidget/ReplaceHistory")) self.replacetextCombo.lineEdit().setClearButtonEnabled(True) self.replacetextCombo.lineEdit().returnPressed.connect(self.__doSearch) @@ -105,13 +114,13 @@ self.replacetextCombo.setEditText("") self.dirHistory = Preferences.toList( - Preferences.Prefs.settings.value( + Preferences.getSettings().value( "FindFileWidget/DirectoryHistory")) self.dirPicker.addItems(self.dirHistory) self.dirPicker.setText("") self.excludeHiddenCheckBox.setChecked(Preferences.toBool( - Preferences.Prefs.settings.value( + Preferences.getSettings().value( "FindFileWidget/ExcludeHidden", True) )) @@ -534,10 +543,10 @@ self.searchHistory.insert(0, ct) self.findtextCombo.clear() self.findtextCombo.addItems(self.searchHistory) - Preferences.Prefs.settings.setValue( + Preferences.getSettings().setValue( "FindFileWidget/SearchHistory", self.searchHistory[:30]) - Preferences.Prefs.settings.setValue( + Preferences.getSettings().setValue( "FindFileWidget/ExcludeHidden", self.excludeHiddenCheckBox.isChecked()) @@ -560,7 +569,7 @@ self.dirPicker.clear() self.dirPicker.addItems(self.dirHistory) self.dirPicker.setText(self.dirHistory[0]) - Preferences.Prefs.settings.setValue( + Preferences.getSettings().setValue( "FindFileWidget/DirectoryHistory", self.dirHistory[:30]) @@ -582,7 +591,7 @@ self.findProgressLabel.setPath(file) fn = ( - os.path.join(self.project.ppath, file) + os.path.join(self.project.getProjectPath(), file) if self.projectButton.isChecked() else file ) @@ -652,8 +661,7 @@ """ Private slot to handle the double click on a file item. - It emits the signal sourceFile or designerFile depending on the file - extension. + It emits a signal depending on the file extension. @param itm the double clicked tree item @type QTreeWidgetItem @@ -671,11 +679,30 @@ 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) + fileName = ( + os.path.join(self.project.getProjectPath(), file) + if self.project.isOpen() else + file + ) + fileExt = os.path.splitext(fileName)[1] + + if fileExt == ".ui": + self.designerFile.emit(fileName) + elif fileExt == ".ts": + self.linguistFile.emit(fileName) + elif fileExt == ".qm": + self.trpreview.emit([fileName]) + elif fileExt in (".egj", ".e5g"): + self.umlFile.emit(fileName) + elif fileExt == ".svg": + self.svgFile.emit(fileName) + elif fileExt[1:] in QImageReader.supportedImageFormats(): + self.pixmapFile.emit(fileName) else: - self.sourceFile.emit(fn, line, "", start, end) + if Utilities.MimeTypes.isTextFile(fileName): + self.sourceFile.emit(fileName, line, "", start, end) + else: + QDesktopServices.openUrl(QUrl(fileName)) def __getFileList(self, path, filterRe, excludeHiddenDirs=False, excludeHiddenFiles=False): @@ -743,7 +770,7 @@ self.findProgressLabel.setPath(file) if self.projectButton.isChecked(): - fn = os.path.join(self.project.ppath, file) + fn = os.path.join(self.project.getProjectPath(), file) else: fn = file